Skip to Main Content Skip to Search
Product Documentation

oasbybdt - Determine option adjusted spread using Black-Derman-Toy model

Syntax

[OAS, OAD, OAC] = oasbybdt(BDTTree, Price, CouponRate, Settle,
Maturity, OptSpec, Strike, ExerciseDates)
[OAS, OAD, OAC] = oasbybdt(BDTTree, Price, CouponRate, Settle,
Maturity, OptSpec, Strike, ExerciseDates, Name,Value)

Description

[OAS, OAD, OAC] = oasbybdt(BDTTree, Price, CouponRate, Settle, Maturity, OptSpec, Strike, ExerciseDates) calculates option adjusted spread (OAS), duration (OAD), and convexity (OAC) using a BDT model.

[OAS, OAD, OAC] = oasbybdt(BDTTree, Price, CouponRate, Settle, Maturity, OptSpec, Strike, ExerciseDates, Name,Value) calculates option adjusted spread (OAS), duration (OAD), and convexity (OAC) using a BDT model with additional options specified by one or more Name,Value pair arguments.

Input Arguments

BDTTree

Interest-rate tree structure created by bdttree.

Price

NINST-by-1 vector of market prices of bonds with embedded options.

CouponRate

NINST-by-1 vector for decimal annual rate.

Settle

NINST-by-1 vector for settlement date.

Maturity

NINST-by-1 vector for maturity date.

OptSpec

NINST-by-1 cell array of strings for 'call' or 'put'.

Strike

Matrix of strike price values for supported option types:

  • European option: NINST-by-1 vector of strike price values.

  • Bermuda option: NINST by number of strikes (NSTRIKES) matrix of strike price values.

    Each row is the schedule for one option. If an option has fewer than NSTRIKES exercise opportunities, the end of the row is padded with NaNs.

  • American option: NINST-by-1 vector of strike price values for each option.

ExerciseDates

Matrix of exercise callable or puttable dates for supported option types:

  • NINST-by-1 (European option) or NINST-by-NSTRIKES (Bermuda option) matrix of exercise dates. Each row is the schedule for one option. For a European option, there is only one exercise date, the option expiry date.

  • American option: NINST-by-2 vector of exercise date boundaries. For each instrument, the option is exercised on any coupon date between or including the pair of dates on that row. If only one non-NaN date is listed, or if ExerciseDates is NINST-by-1, the option is exercised between the underlying bond Settle and the single listed exercise date.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments, where Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

'AmericanOpt'

NINST-by-1 vector for option flags: 0 (European/Bermuda) or 1 (American).

Default: 0 (European/Bermuda)

'Basis'

Day-count basis of the instrument. A vector of integers.

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (BMA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ICMA)

  • 9 = actual/360 (ICMA)

  • 10 = actual/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = actual/actual (ISDA)

  • 13 = BUS/252

For more information, see basis.

Default: 0 (actual/actual)

'EndMonthRule'

NINST-by-1 vector for end-of-month rule. Values are 1 (in effect) and 0 (not in effect).

Default: 1 (in effect)

'IssueDate'

NINST-by-1 vector of bond issue date.

Default: If you do not specify an IssueDate, the cash flow payment dates are determined from other inputs.

'Face'

NINST-by-1 vector for face value.

Default: 100

'FirstCouponDate'

NINST-by-1 vector. Date when a bond makes its first coupon payment; used when bond has an irregular first coupon period. When FirstCouponDate and LastCouponDate are both specified, FirstCouponDate takes precedence in determining the coupon payment structure.

Default: If you do not specify a FirstCouponDate, the cash flow payment dates are determined from other inputs.

'LastCouponDate'

NINST-by-1 vector. Last coupon date of a bond before the maturity date; used when bond has an irregular last coupon period. In the absence of a specified FirstCouponDate, a specified LastCouponDate determines the coupon structure of the bond. The coupon structure of a bond is truncated at the LastCouponDate, regardless of where it falls, and is followed only by the bond's maturity cash flow date.

Default: If you do not specify a LastCouponDate, the cash flow payment dates are determined from other inputs.

'Period'

NINST-by-1 vector for coupons per year.

Default: 2 per year

'Options'

Structure created with derivset containing derivatives pricing options.

Default: None

Output Arguments

OAS

NINST-by-1 vector for option adjusted spread.

OAD

NINST-by-1 vector for option adjusted duration.

OAC

NINST-by-1 vector for option adjusted convexity.

Definitions

Bond with Embedded Options

A bond with embedded option allows the issuer to buy back (callable) or redeem (puttable) the bond at a predetermined price at specified future dates. Financial Derivatives Toolbox software supports American, European, and Bermuda callable and puttable bonds.

The pricing for a bond with embedded options is as follows:

Examples

Compute OAS using the Black-Derman-Toy (BDT) model with:

ValuationDate = 'Oct-1-2010';
Rates = [0.035; 0.042; 0.047; 0.052];
StartDates = ValuationDate;
EndDates = datemnth(ValuationDate, 12:12:48)';
Compounding = 1;
% Define RateSpec
RateSpec = intenvset('ValuationDate', ValuationDate,...
'StartDates', StartDates, 'EndDates', EndDates, ...
'Rates', Rates, 'Compounding', Compounding); 

% Specify VolsSpec and TimeSpec
Sigma = 0.20;
VS = bdtvolspec(ValuationDate, EndDates, Sigma*ones(size(EndDates)));
TS = bdttimespec(ValuationDate, EndDates, Compounding);

% Build the BDT tree
BDTTree = bdttree(VS, RateSpec, TS);
BDTTreenew = cvtree(BDTTree);

% Instrument information
CouponRate = 0.065;
Settle = ValuationDate;
Maturity = '01-Oct-2014';
OptSpec = 'call';
Strike = 100;
ExerciseDates ='01-Oct-2011';
Period = 1;
Price = 101.58;

% Compute the OAS
OAS = oasbybdt(BDTTree, Price, CouponRate, Settle, Maturity,...
OptSpec, Strike, ExerciseDates, 'Period', Period)

OAS =

   36.5591

Use treeviewer to observe the tree you created:

treeviewer(BDTTree)

References

Fabozzi, F., Handbook of Fixed Income Securities, McGraw-Hill, 7th edition, 2005.

Windas, T., Introduction to Option-Adjusted Spread Analysis, Bloomberg Press, 3rd edition, 2007.

See Also

bdtprice | bdttree | instoptembnd | oasbybk | oasbyhjm | oasbyhw | optembndbybdt

  


Free Interactive Computational Finance CD

View demos and recorded presentations led by industry experts.

Now On Demand
Network with industry peers and learn the latest applications of the leading software product for computational finance.

 © 1984-2012- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS