Products & Services Solutions Academia Support User Community Company

Learn more about Financial Derivatives Toolbox   

optembndbyhjm - Price bonds with embedded options by Heath-Jarrow-Morton interest-rate tree

Syntax

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

Arguments

HJMTree

Interest-rate tree structure created by hjmtree.

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

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.

For an American option:

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

ExerciseDates

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.

For an American option:

NINST-by-2 vector of exercise date boundaries. For each instrument, the option can be 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 can be exercised between the underlying bond Settle and the single listed exercise date.

'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. Default is 2.

  • Basis is a day-count basis of the instrument. Basis is a vector of integers with the following supported 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)

    • 13 = BUS/252

  • 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, meaning that a bond's coupon payment date is always the same numerical day of the month. When the value is 1, the end-of-month rule is set on (default), meaning 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. 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. 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.

  • StartDate is a NINST-by-1 matrix for date when a bond actually starts (the date from which a bond cash flow is considered). To make an instrument forward-starting, specify this date as a future date. If you do not specify StartDate, the effective start date is the Settle 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] = optembndbyhjm(HJMTree, CouponRate,Settle, Maturity, OptSpec, Strike, ExerciseDates,'Name1', Value1, 'Name2', Value2, ...) prices bonds with embedded options by an HJM interest-rate tree.

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

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

Examples

Create an HJMTree with the following data:

Rates = [0.05;0.06;0.07];
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', Rates, 'StartDates', ValuationDate, 'EndDates', ...
EndDates, 'Compounding', Compounding, 'ValuationDate', ValuationDate);

Specify a VolSpec:

VolSpec = hjmvolspec('Constant', 0.01);

Specify a TimeSpec:

TimeSpec = hjmtimespec(ValuationDate, EndDates, Compounding);

Build an HJMTree:

HJMTree = hjmtree(VolSpec, RateSpec, TimeSpec);

To compute the price of an American callable bond that pays a 6% annual coupon and matures and is callable on January 1, 2010:

BondSettlement = 'jan-1-2007';
BondMaturity   = 'jan-1-2010'; 
CouponRate = 0.06;
Period = 1;
OptSpec = 'call'; 
Strike = [98];  
ExerciseDates = '01-Jan-2010'; 
AmericanOpt = 1;

[PriceCallBond,PT] = optembndbyhjm(HJMTree, CouponRate, BondSettlement, BondMaturity,...
OptSpec, Strike, ExerciseDates, 'Period', 1,'AmericanOp',1)

PriceCallBond =

95.9492

PT = 

FinObj: 'HJMPriceTree'
      tObs: [0 1 2 3]
     PBush: {[95.9492]  [1x1x2 double]  [1x2x2 double]  [98 98 98 98]}

See Also

hjmprice, hjmtree, instoptembnd

  


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-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS