optbndbybk

Price bond option from Black-Karasinski interest-rate tree

Syntax

[Price, PriceTree] = optbndbybk(BKTree, OptSpec, Strike,
ExerciseDates, AmericanOpt, CouponRate, Settle, Maturity,
Period, Basis, EndMonthRule, IssueDate, FirstCouponDate,
LastCouponDate, StartDate, Face, Options)

Arguments

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. CouponRate is a NINST-by-1 vector.

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.

  • 0 = actual/actual (default)

  • 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.

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.

IssueDate

(Optional) Date when a bond was issued.

FirstCouponDate

(Optional) 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. If you do not specify a FirstCouponDate, the cash flow payment dates are determined from other inputs.

LastCouponDate

(Optional) 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. If you do not specify a LastCouponDate, the cash flow payment dates are determined from other inputs.

StartDate

(Optional) 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

(Optional) Face or par value. Face is a NINST-by-1 vector. 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.

Description

[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.

Examples

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

See Also

| |

Was this topic helpful?