| Financial Toolbox | Search  Help Desk |
| bdtbond | Examples See Also |
Black-Derman-Toy pricing of option-embedded bonds.
Syntax
[Price, Sensitivities, DiscTree, PriceTree] = bdtbond(OptBond,
ZeroCurve, VolatilityCurve, Accuracy, CreditCurve,
ComputeSensitivity)
Arguments
All arguments exceptAccuracy are structures. The name of the argument variable can be substituted, but the fieldnames must be reproduced exactly. The variables and the fields are listed below in Variable.fieldname format. An optional field or variable may be set to the empty matrix[] to invoke defaults. An optional field in a structure may also be left unspecified.
Description
[Price, Sensitivities, DiscTree, PriceTree] = bdtbond(OptBond,
ZeroCurve, VolatilityCurve, Accuracy, CreditCurve,
ComputeSensitivity)
computes price and sensitivity measures of a bond with embedded call or put options. Valuation is based on the Black-Derman-Toy model for pricing interest rate options given an input yield curve (and possibly a credit spread) and volatility curve.
Price is the value of the bond with and without the options.
Price.OptionFreePrice: Scalar price of the bond without any options.
Price.OptionEmbedPrice: Scalar price (value to the holder of the bond) of the bond with options.
Price.OptionValue: scalar value of the options to the holder of the bond .
Sensitivities refer to the effect that changes in the yield curve and volatility term structure have on option-free and option-embedded bond prices.
Sensitivities.Duration: Sensitivity of option-free bond price to parallel shifts of the yield curve.
Sensitivities.EffDuration: Sensitivity of the option-embedded price to shifts in the yield curve.
Sensitivities.Convexity: Sensitivity of Duration to shifts in the yield curve.
Sensitivities.EffConvexity: Sensitivity of EffDuration to shifts in the yield curve.
Sensitivities.Vega: Sensitivity of the option-embedded price to parallel shifts of the volatility curve.
DiscTree is the recombining binomial tree of the interest rate structure. The tree covers NPERIODS times from Settlement to Maturity, where there are Accuracy steps in each coupon period. The short rate at settlement and between settlement and the first time is deterministic.
DiscTree.Values: NSTATES-by-NPERIODS matrix of short discount factors. The NPERIODS columns of Values correspond to successive times. The NSTATES rows correspond to states in the rate process. Unused states are masked by NaN.
Multiplication of a cash amount at time Dates(i) by the discount Values(j,i) gives the price at Dates(i-1) after traversing the (j,i) edge of the tree. The short rate R(j,i) prevailing at node (j,i) satisfies:
( 1 + R(j,i)/Frequency)^(-(Times(j)-Times(j-1))) = Values(j,i)
DiscTree.Times: 1-by-NPERIODS vector of tree node times in units of coupon intervals. (Type help ftbTFactors for more information.)
DiscTree.Dates: 1-by-NPERIODS vector of tree node times as serial date numbers.
DiscTree.Type:'Short Discount'
DiscTree.Frequency: Compounding frequency of the input bond.
DiscTree.ErrorFlag: (0 or 1). Set to 1 if any short rate becomes negative.
PriceTree is the recombining binomial tree of cash amounts at tree nodes. PriceTree is computed from the bond cash flows and the option payoffs. The clean price of the bond is the PriceTree value minus the coupon payment and the accrued interest.
PriceTree.Values: NSTATES-by-NPERIODS matrix of price states.
PriceTree.Times: 1-by-NPERIODS vector of tree node times in units of coupon intervals. (Type help ftbTFactors for more information.)
PriceTree.Dates: 1-by-NPERIODS vector of tree node times as serial date numbers.
PriceTree.AccrInt: 1-by-NPERIODS vector of accrued interest payable at each time.
PriceTree.Coupons: 1-by-NPERIODS vector of coupon payments at each time.
DiscTree.Type:'Price'
Example
Given a bond with the characteristicsOptBond.Settle = '15-Jul-1996'; OptBond.Maturity = '15-Jan-1998'; OptBond.CouponRate = 0.06; OptBond.Period = 2Specify an American put option on the bond. Make the bond putable by the holder between 15-Jan-1997 and maturity for a strike of 98.
OptBond.PutType = 1; OptBond.PutStartDate = '15-Jan-1997'; OptBond.PutExpiryDate = '15-Jan-1998'; OptBond.PutStrike = 98Build zero curve term structure.
ZeroCurve.ZeroRates = [0.05; 0.06; 0.065]; ZeroCurve.CurveDates = ['01-Jan-1996'; '01-Jan-1997'; '01-Jan-1998']Build volatility curve term structure.
VolCurve.VolatilityRates = [0.15; 0.13]; VolCurve.CurveDates = [729025; 729756]The coupon interval is 1/2 year; use 10 tree periods per year.
Accuracy = 5Specify a constant credit spread of 200 basis points (0.02).
CreditCurve.CreditRates = [200]; CreditCurve.CurveDates = ['01-Jan-1996']Ask for duration and vega.
SensChoice.Duration = 1; SensChoice.Convexity = 0; SensChoice.Vega = 1; [Price, Sensitivities, DiscTree, PriceTree] = ... bdtbond(OptBond, ZeroCurve, VolCurve, Accuracy, CreditCurve,... SensChoice); Price = OptionFreePrice: 96.5565 OptionEmbedPrice: 97.1769 OptionValue: 0.6204 Sensitivities = Duration: 1.3959 EffDuration: 0.6848 Convexity: NaN EffConvexity: NaN Vega: -0.0194To look at the rate and clean price trees, use the
bdttrans function.
bdttrans(DiscTree) bdttrans(PriceTree)
See Also
bdttrans