optembndbybdt

Price bonds with embedded options by Black-Derman-Toy interest rate tree

Syntax

[Price, PriceTree] = optembndbybdt(BDTTree, CouponRate,
Settle, Maturity, OptSpec, Strike, ExerciseDates,
'Name1', Value1, 'Name2', Value2, ...)

Arguments

BDTTree

Interest-rate tree structure created by bdttree.

CouponRate

NINST-by-1 matrix for the decimal annual rate.

Settle

NINST-by-1 matrix for the settlement date. A vector of serial date numbers or date strings. Settle must be earlier than Maturity.

Maturity

NINST-by-1 matrix for the maturity date. A vector of serial date numbers or date strings.

OptSpec

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

Strike

NINST-by-NSTRIKES of strike price values.

ExerciseDates

NINST-by-NSTRIKES or NINST-by-2 matrix for exercise callable/puttable dates.

'Name1', 'Value1' 'Name2', 'Value2'...

(Optional) The name/value pairs are a variable length list of parameters. All optional inputs are specified as matching parameter name/value pairs. The parameter name is specified as a character string, followed by the corresponding parameter value. Parameter name/value pairs may be specified in any order; names are case insensitive and partial string matches are allowed provided no ambiguities exist. Valid parameter names are as follows:

  • AmericanOpt is a NINST-by-1 matrix for flags options: 0 (European/Bermuda) or 1 (American). Default is 0.

  • Period is a NINST-by-1 matrix for coupons per year. The default value is 2.

  • Basis is a day-count basis of the instrument. Basis is a vector of integers with the following possible values:

    • 0 = actual/actual (default)

    • 1 = 30/360 (SIA)

    • 2 = actual/360

    • 3 = actual/365

    • 4 = 30/360 (PSA)

    • 5 = 30/360 (ISDA)

    • 6 = 30/360 (European)

    • 7 = actual/365 (Japanese)

    • 8 = actual/actual (ISMA)

    • 9 = actual/360 (ISMA)

    • 10 = actual/365 (ISMA)

    • 11 = 30/360E (ISMA)

    • 12 = actual/365 (ISDA)

  • EndMonthRule is a NINST-by-1 matrix for the end-of-month rule. This rule applies only when Maturity is an end-of-month date for a month having 30 or fewer days. When the value is 0 the end-of-month rule is ignored; this means that a bond's coupon payment date is always the same numerical day of the month. Use 1 to set the rule on; this is the default value and means that a bond's coupon payment date is always the last actual day of the month.

  • IssueDate is a NINST-by-1 matrix for the bond issue date.

  • FirstCouponDate is a NINST-by-1 matrix for an irregular first coupon date. This is the date when a bond makes its first coupon payment. When FirstCouponDate and LastCouponDate are both specified, FirstCouponDate takes precedence in determining the coupon payment structure.

  • LastCouponDate is a NINST-by-1 matrix for an irregular last coupon date. This is the last coupon date of a bond before the maturity date. 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 will be followed only by the bond's maturity cash flow date.

  • StartDateNINST-by-1 matrix (reserved input argument, currently unused) for date when a bond actually starts (the date from which a bond's cash flows can be considered). To make an instrument forward starting, specify this date as a future date. If StartDate is not explicitly specified, the effective start date is the settlement date.

  • Face is a NINST-by-1 matrix for the face value. The default value is 100.

  • Options is a derivatives pricing options structure created with derivset.

Description

[Price, PriceTree] = optembndbybdt(BDTTree, CouponRate,Settle, Maturity, OptSpec, Strike, ExerciseDates,'Name1', Value1, 'Name2', Value2, ...) prices bonds with embedded options using a BDT interest-rate tree.

Price is a number of instruments (NINST)-by-1 matrix of expected prices at time 0.

PriceTree is a MATLAB® structure of trees containing vectors of instrument prices and accrued interest, and a vector of observation times for each node. Within PriceTree

Examples

To price a callable bond using the BDT model, create a BDTTree with the following data:

ZeroRates = [ 0.035;0.04;0.045];
Compounding = 1;
StartDates = ['jan-1-2007';'jan-1-2008';'jan-1-2009'];
EndDates   = ['jan-1-2008';'jan-1-2009';'jan-1-2010'];
ValuationDate = 'jan-1-2007';

Create a RateSpec:

RateSpec = intenvset('Rates', ZeroRates, 'StartDates', ValuationDate, 'EndDates', ...
EndDates, 'Compounding', Compounding, 'ValuationDate', ValuationDate);

Specify a VolSpec:

Volatility = 0.10 * ones (3,1);
VolSpec = bdtvolspec(ValuationDate, EndDates, Volatility);

Specify a TimeSpec:

TimeSpec = bdttimespec(ValuationDate, EndDates, Compounding);

Build the BDTTree:

BDTTree = bdttree(VolSpec, RateSpec, TimeSpec);

To compute the price of an American callable bond that pays a 5.25% annual coupon, matures in Jan-1-2010, and is callable on Jan-1-2008 and 01-Jan-2010:

BondSettlement = 'jan-1-2007';
BondMaturity   = 'jan-1-2010'; 
CouponRate = 0.0525;
Period = 1;
OptSpec = 'call'; 
Strike = [100];  
ExerciseDates = {'jan-1-2008' '01-Jan-2010'}; 
AmericanOpt = 1;

PriceCallBond = optembndbybdt(BDTTree, CouponRate, BondSettlement, BondMaturity,...
OptSpec, Strike, ExerciseDates, 'Period', 1,'AmericanOp', 1)

PriceCallBond =

101.4750

See Also

bdtprice, bdttree, instoptembnd

  


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