| Financial Derivatives Toolbox™ | ![]() |
Price bond option from Black-Karasinski interest-rate tree
[Price, PriceTree] = optbndbybk(BKTree,
OptSpec, Strike,
ExerciseDates, AmericanOpt,
CouponRate, Settle, Maturity,
Period, Basis,
EndMonthRule, IssueDate, FirstCouponDate,
LastCouponDate,
StartDate, Face, Options)
BkTree | Forward-rate tree structure created by bktree. |
OptSpec | Number of instruments (NINST)-by-1 cell array of string values '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. |
AmericanOpt | NINST-by-1 vector of flags: 0 (European/Bermuda) or 1 (American). |
CouponRate | Decimal annual rate. |
Settle | Settlement date. A vector of serial date numbers or date strings. Settle must be earlier than Maturity. |
Maturity | Maturity date. A vector of serial date numbers or date strings. |
Period | (Optional) Coupons per year of the bond. A vector of integers. Allowed values are 1, 2, 3, 4, 6, and 12. Default = 2. |
Basis | (Optional) Day-count basis of the instrument. A vector of integers.
|
EndMonthRule | (Optional) End-of-month rule. A vector. This rule applies only when Maturity is an end-of-month date for a month having 30 or fewer days. 0 = ignore rule, meaning that a bond's coupon payment date is always the same numerical day of the month. 1 = set rule on (default), meaning that a bond's coupon payment date is always the last actual day of the month. |
(Optional) Date when a bond was issued. | |
FirstCouponDate | (Optional) 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 | (Optional) Last coupon date of a bond prior to 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 is followed only by the bond's maturity cash flow date. |
StartDate | Ignored. |
Face | (Optional) Face value. Default = 100. |
Options | (Optional) Derivatives pricing options structure created with derivset. |
The Settle date for every bond is set to the ValuationDate of the BK tree. The bond argument Settle is ignored.
[Price, PriceTree] = optbndbybk(BKTree, OptSpec, Strike, ExerciseDates, AmericanOpt, CouponRate, Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate, StartDate, Face, Options) computes the price of a bond option from a Black-Karasinski interest rate tree.
Price is an NINST-by-1 matrix of expected prices at time 0.
PriceTree is a tree structure with a vector of instrument prices at each node.
Example 1. Using the BK interest rate tree in the deriv.mat file, price a European call option on a 4% bond with a strike of 96. The exercise date for the option is Jan. 01, 2006. The settle date for the bond is Jan. 01, 2005, and the maturity date is Jan. 01, 2009.
Load the file deriv.mat, which provides BKTree. The BKTree structure contains the time and forward-rate information needed to price the bond.
load deriv.mat;
Use optbondbybk to compute the price of the option.
Price = optbndbybk(BKTree,'Call',96,'01-Jan-2006',...
'0','0.04','01-Jan-2005','01-Jan-2009')
Warning: OptBonds are valued at Tree ValuationDate rather than Settle
> In optbndbytrintree at 43
In optbndbybk at 88
Warning: Not all cash flows are aligned with the tree. Result will be
approximated.
> In optbndbytrintree at 151
In optbndbybk at 88
Price =
0.1512
Example 2. Now use optbndbybk to compute the price of a put option on the same bond.
Price = optbndbybk(BKTree,'Put',96,'01-Jan-2006',...
'0','0.04','01-Jan-2005','01-Jan-2009')
Warning: OptBonds are valued at Tree ValuationDate rather than Settle
> In optbndbytrintree at 43
In optbndbybk at 88
Warning: Not all cash flows are aligned with the tree. Result will be
approximated.
> In optbndbytrintree at 151
In optbndbybk at 88
Price =
0.0272
![]() | optbndbybdt | optbndbyhjm | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |