Price convertible bonds from EQP binomial tree
[
prices convertible bonds from an EQP binomial tree using a credit spread or incorporating the
risk of bond default.Price
,PriceTree
,EquityTree
,DebtTree
]
= cbondbyeqp(___,Name,Value
)
To incorporate the risk in the form of credit spread (Tsiveriotis-Fernandes method), use
the optional name-value pair input argument Spread
. To incorporate default
risk into the algorithm, specify the optional name-value pair input arguments
DefaultProbability
and RecoveryRate
.
Create the interest-rate term structure RateSpec
.
StartDates = 'Jan-1-2014'; EndDates = 'Jan-1-2016'; Rates = 0.025; Basis = 1; RateSpec = intenvset('ValuationDate',StartDates,'StartDates',StartDates,'EndDates',EndDates,... 'Rates',Rates,'Compounding',-1,'Basis',Basis)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: -1
Disc: 0.9512
Rates: 0.0250
EndTimes: 2
StartTimes: 0
EndDates: 736330
StartDates: 735600
ValuationDate: 735600
Basis: 1
EndMonthRule: 1
Create the StockSpec
.
AssetPrice = 110;
Sigma = 0.22;
Div = 0.02;
StockSpec = stockspec(Sigma,AssetPrice,'continuous',Div)
StockSpec = struct with fields:
FinObj: 'StockSpec'
Sigma: 0.2200
AssetPrice: 110
DividendType: {'continuous'}
DividendAmounts: 0.0200
ExDividendDates: []
Create the EQP tree for the equity.
NumSteps = 6; TimeSpec = eqptimespec(StartDates,EndDates,NumSteps); EQPTree = eqptree(StockSpec,RateSpec,TimeSpec)
EQPTree = struct with fields:
FinObj: 'BinStockTree'
Method: 'EQP'
StockSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 0.3333 0.6667 1 1.3333 1.6667 2]
dObs: [735600 735721 735843 735965 736086 736208 736330]
STree: {1x7 cell}
UpProbs: [0.5000 0.5000 0.5000 0.5000 0.5000 0.5000]
Define the convertible bond. The convertible bond can be called starting on Jan 1, 2015 with a strike price of 125.
Settle = 'Jan-1-2014'; Maturity = 'Jan-1-2016'; CouponRate = 0.03; CallStrike = 125; Period = 1; CallExDates = [datenum('Jan-1-2015') datenum('Jan-1-2016')]; ConvRatio = 1.5;
Price the convertible bond.
Spread = 0.045; [Price,PriceTree,EqtTre,DbtTree] = cbondbyeqp(EQPTree,CouponRate,Settle,... Maturity,ConvRatio,'Period',Period,'Spread',Spread,'CallExDates',... CallExDates,'CallStrike',CallStrike,'AmericanCall',1)
Price = 165
PriceTree = struct with fields:
FinObj: 'BinPriceTree'
PTree: {1x7 cell}
tObs: [0 0.3333 0.6667 1 1.3333 1.6667 2]
dObs: [735600 735721 735843 735965 736086 736208 736330]
EqtTre = struct with fields:
FinObj: 'BinPriceTree'
PTree: {1x7 cell}
tObs: [0 0.3333 0.6667 1 1.3333 1.6667 2]
dObs: [735600 735721 735843 735965 736086 736208 736330]
DbtTree = struct with fields:
FinObj: 'BinPriceTree'
PTree: {1x7 cell}
tObs: [0 0.3333 0.6667 1 1.3333 1.6667 2]
dObs: [735600 735721 735843 735965 736086 736208 736330]
DefaultProbability
and RecoveryRate
Create the interest-rate term structure RateSpec
.
StartDates = 'Jan-1-2014'; EndDates = 'Jan-1-2016'; Rates = 0.025; Basis = 1; RateSpec = intenvset('ValuationDate',StartDates,'StartDates',... StartDates,'EndDates',EndDates,'Rates',Rates,'Compounding',-1,'Basis',Basis)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: -1
Disc: 0.9512
Rates: 0.0250
EndTimes: 2
StartTimes: 0
EndDates: 736330
StartDates: 735600
ValuationDate: 735600
Basis: 1
EndMonthRule: 1
Create the StockSpec
.
AssetPrice = 110;
Sigma = 0.22;
Div = 0.02;
StockSpec = stockspec(Sigma,AssetPrice,'continuous',Div)
StockSpec = struct with fields:
FinObj: 'StockSpec'
Sigma: 0.2200
AssetPrice: 110
DividendType: {'continuous'}
DividendAmounts: 0.0200
ExDividendDates: []
Create the EQP tree for the equity.
NumSteps = 6; TimeSpec = eqptimespec(StartDates,EndDates,NumSteps); EQPTree = eqptree(StockSpec,RateSpec,TimeSpec)
EQPTree = struct with fields:
FinObj: 'BinStockTree'
Method: 'EQP'
StockSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 0.3333 0.6667 1 1.3333 1.6667 2]
dObs: [735600 735721 735843 735965 736086 736208 736330]
STree: {1x7 cell}
UpProbs: [0.5000 0.5000 0.5000 0.5000 0.5000 0.5000]
Define and price the convertible bond using the optional DefaultProbability
and RecoveryRate
arguments.
Settle = 'Jan-1-2014'; Maturity = 'Jan-1-2016'; CouponRate = 0.03; CallStrike = 125; Period = 1; CallExDates = [datenum('Jan-1-2015') datenum('Jan-1-2016')]; ConvRatio = 1.5; DefaultProbability = .30; RecoveryRate = .82; [Price,PriceTree,EqtTre,DbtTree] = cbondbyeqp(EQPTree,CouponRate,Settle,... Maturity,ConvRatio,'Period',Period,'CallExDates',... CallExDates,'CallStrike',CallStrike,'AmericanCall',1,... 'DefaultProbability',DefaultProbability,'RecoveryRate',RecoveryRate)
Price = 165
PriceTree = struct with fields:
FinObj: 'BinPriceTree'
PTree: {1x7 cell}
tObs: [0 0.3333 0.6667 1 1.3333 1.6667 2]
dObs: [735600 735721 735843 735965 736086 736208 736330]
EqtTre = struct with fields:
FinObj: 'BinPriceTree'
PTree: {1x7 cell}
tObs: [0 0.3333 0.6667 1 1.3333 1.6667 2]
dObs: [735600 735721 735843 735965 736086 736208 736330]
DbtTree = struct with fields:
FinObj: 'BinPriceTree'
PTree: {1x7 cell}
tObs: [0 0.3333 0.6667 1 1.3333 1.6667 2]
dObs: [735600 735721 735843 735965 736086 736208 736330]
EQPTree
— Stock tree structureStock tree structure, specified by using eqptree
.
Data Types: struct
CouponRate
— Bond coupon rate Bond coupon rate, specified as an NINST
-by-1
decimal annual rate or NINST
-by-1
cell array, where each
element is a NumDates
-by-2
cell array. The first column
of the NumDates
-by-2
cell array is dates and the second
column is associated rates. The date indicates the last day that the coupon rate is
valid.
Data Types: double
| cell
Settle
— Settlement dateSettlement date, specified as an NINST
-by-1
scalar
using a serial date number or date character vector.
The Settle
date for every convertible bond is set to the
ValuationDate
of the EQP stock tree. The bond argument,
Settle
, is ignored.
Data Types: double
| char
Maturity
— Maturity dateMaturity date, specified as an NINST
-by-1
scalar
using a serial date number or date character vector.
Data Types: double
| char
ConvRatio
— Number of shares convertible to one bondNumber of shares convertible to one bond, specified as an
NINST
-by-1
with a nonnegative number.
Data Types: double
Specify optional
comma-separated pairs of Name,Value
arguments. Name
is
the argument name and Value
is the corresponding value.
Name
must appear inside quotes. You can specify several name and value
pair arguments in any order as
Name1,Value1,...,NameN,ValueN
.
[Price,PriceTree,EquityTree,DebtTree] = cbondbyeqp(EQPT,CouponRate,Settle,
Maturity, ConvRatio,'Spread',Spread,'CallExDates',CallExDates,
'CallStrike',CallStrike,'AmericanCall',1)
'Spread'
— Number of basis points over the reference rate0
(default) | vectorNumber of basis points over the reference rate, specified as the comma-separated pair
consisting of 'Spread'
and a
NINST
-by-1
vector.
To incorporate the risk in the form of credit spread (Tsiveriotis-Fernandes method),
use the optional input argument Spread
. To incorporate default risk into
the algorithm, specify the optional input arguments DefaultProbability
and RecoveryRate
. Do not use Spread
with
DefaultProbability
and RecoveryRate
.
Data Types: double
'Period'
— Coupons per year2
per year (default) | vectorCoupons per year, specified as the comma-separated pair consisting of
'Period'
and a NINST
-by-1
vector.
Data Types: double
'IssueDate'
— Bond issue dateBond issue date, specified as the comma-separated pair consisting of
'IssueDate'
and a NINST
-by-1
vector
using a serial date number or date character vector.
Data Types: double
| char
'FirstCouponDate'
— Irregular first coupon dateIrregular first coupon date, specified as the comma-separated pair consisting of
'FirstCouponDate'
and a NINST
-by-1
vector using a serial date number or date character vector.
Data Types: char
| double
'LastCouponDate'
— Irregular last coupon dateIrregular last coupon date, specified as the comma-separated pair consisting of
'LastCouponDate'
and a NINST
-by-1
vector using a serial date number or date character vector.
Data Types: double
| char
'Face'
— Face value100
(default) | nonnegative value | cell array of nonnegative valuesFace value, specified as the comma-separated pair consisting of
'Face'
and a NINST
-by-1
vector of
nonnegative face values or an NINST
-by-1
cell array
where each element is a NumDates
-by-2
cell array. The
first column of the NumDates
-by-2
cell array is dates
and the second column is the associated face value. The date indicates the last day that the
face value is valid.
Data Types: cell
| double
'CallStrike'
— Call strike price for European, Bermuda, or American optionCall strike price for European, Bermuda, or American option, specified as the
comma-separated pair consisting of 'CallStrike'
and one of the following
values:
For a European call option — NINST
-by-1
vector of nonnegative integers
For a Bermuda call option —
NINST
-by-NSTRIKES
matrix of strike price values,
where each row is the schedule for one call option. If an option has fewer than
NSTRIKES
exercise opportunities, the end of the row is padded with
NaN
s.
For an American call option — NINST
-by-1
vector of strike price values for each call option.
Data Types: single
| double
'CallExDates'
— Call exercise date for European, Bermuda, or American optionCall exercise date for European, Bermuda, or American option, specified as the
comma-separated pair consisting of 'CallExDates'
and one of the following
values:
For a European option — NINST
-by-1
vector of serial date numbers or date character vectors.
For a Bermuda option — NINST
-by-NSTRIKES
matrix of exercise dates, where each row is the schedule for one call option. For a
European option, there is only one CallExDate
on the option expiry
date.
For an American option — NINST
-by-1
or
NINST
-by-2
matrix of exercise date boundaries. For
each instrument, the call option can be exercised on any tree date between or including
the pair of dates on that row. If CallExDates
is
NINST
-by-1
, the call option can be exercised
between the ValuationDate
of the EQP stock tree and the single listed
CallExDate
.
Data Types: double
| char
| cell
'AmericanCall'
— Call option type indicator0
if AmericanCall
is
NaN
or not entered (default) | scalar | vector of positive integers[0,1]
Call option type, specified as the comma-separated pair consisting of
'AmericanCall'
and a NINST
-by-1
vector with positive integer flags with values 0
or
1
.
For a European or Bermuda option — AmericanCall
is
0
for each European or Bermuda option.
For an American option — AmericanCall
is
1
for each American option. The AmericanCall
argument is required to invoke American exercise rules.
Data Types: single
| double
'PutStrike'
— Put strike values for European, Bermuda, or American optionPut strike values for European, Bermuda, or American option, specified as the
comma-separated pair consisting of 'PutStrike'
and one of the following
values:
For a European put option — NINST
-by-1
vector of nonnegative integers
For a Bermuda put option —
NINST
-by-NSTRIKES
matrix of put strike price
values, where each row is the schedule for one put option. If a put option has fewer than
NSTRIKES
exercise opportunities, the end of the row is padded with
NaN
s.
For an American put option — NINST
-by-1
vector of strike price values for each put option.
Data Types: single
| double
'PutExDates'
— Put exercise date for European, Bermuda, or American optionPut exercise date for European, Bermuda, or American option, specified as the
comma-separated pair consisting of 'PutExDates'
and one of the following
values:
For a European option — NINST
-by-1
vector of serial date numbers or date character vectors.
For a Bermuda option — NINST
-by-NSTRIKES
matrix of exercise dates, where each row is the schedule for one put option. For a
European option, there is only one PutExDate
on the option expiry
date.
For an American option — NINST
-by-1
or
NINST
-by-2
matrix of exercise date boundaries. For
each instrument, the put option can be exercised on any tree date between or including the
pair of dates on that row. If PutExDates
is
NINST
-by-1
, the put option can be exercised between
the ValuationDate
of the EQP stock tree and the single listed
PutExDate
.
Data Types: double
| char
| cell
'AmericanPut'
— Put option type indicator0
if AmericanPut
is
NaN
or not entered (default) | positive integer [0,1]
| vector of positive integers [0,1]
Put option type, specified as the comma-separated pair consisting of
'AmericanPut'
and a NINST
-by-1
vector of positive integer flags with values 0
or
1
.
For a European or Bermuda option — AmericanPut
is
0
for each European or Bermuda option.
For an American option — AmericanPut
is
1
for each American option. The AmericanPut
argument is required to invoke American exercise rules.
Data Types: single
| double
'ConvDates'
— Convertible datesMaturityDate
(default) | serial date number | date character vectorConvertible dates, specified as the comma-separated pair consisting of
'ConvDates'
and a NINST
-by-1
or
NINST
-by-2
matrix of serial date numbers or date
character vectors. If ConvDates
is not specified, the bond is always
convertible until maturity.
For each instrument, the bond can be converted on any tree date between or including the pair of dates on that row.
If ConvDates
is NINST
-by-1
, the
bond can be converted between the ValuationDate
of the EQP stock tree and
the single listed ConvDates
.
Data Types: char
| single
| double
'DefaultProbability'
— Annual probability of default rate0
(default) | nonnegative decimalAnnual probability of default rate, specified as the comma-separated pair consisting of
'DefaultProbability'
and a
NINST
-by-1
nonnegative decimal value.
To incorporate default risk into the algorithm, specify the optional input arguments
DefaultProbability
and RecoveryRate
. To incorporate
the risk in the form of credit spread (Tsiveriotis-Fernandes method), use the optional input
argument Spread
. Do not use DefaultProbability
and
RecoveryRate
with Spread
.
Data Types: single
| double
'RecoveryRate'
— Recovery rate1
(default) | nonnegative decimalRecovery rate, specified as the comma-separated pair consisting of
'RecoveryRate'
and a NINST
-by-1
nonnegative decimal value.
To incorporate default risk into the algorithm, specify the optional input arguments
DefaultProbability
and RecoveryRate
. To
incorporate the risk in the form of credit spread (Tsiveriotis-Fernandes method), use the
optional input argument Spread
. Do not use
DefaultProbability
and RecoveryRate
with
Spread
.
Data Types: single
| double
Price
— Expected price at time 0
Expected price at time 0
, returned as an
NINST
-by-1
array.
PriceTree
— Structure with vector of convertible bond prices at each nodeStructure with a vector of convertible bond prices at each node, returned as a tree structure.
EquityTree
— Structure with vector of convertible bond equity component at each nodeStructure with a vector of convertible bond equity component at each node, returned as a tree structure.
DebtTree
— Structure with vector of convertible bond debt component at each nodeStructure with a vector of convertible bond debt component at each node, returned as a tree structure.
A convertible bond that is callable by the issuer. The issuer of the bond forces conversion, removing the advantage that conversion is at the discretion of the bondholder.
Upon call, the bondholder can either convert the bond or redeem at the call price. This option enables the issuer to control the price of the convertible bond and, if necessary, refinance the debt with a new cheaper one.
A convertible bond with a put feature allows the bondholder to sell back the bond at a premium on a specific date.
This option protects the holder against rising interest rates by reducing the year to maturity.
cbondbycrr
, cbondbyeqp
, cbondbyitt
, and cbondbystt
return price information in the form of a
price vector and a price tree. These functions implement the risk in the form of either a credit
spread or incorporating the risk of bond default. To incorporate the risk in the form of credit
spread (Tsiveriotis-Fernandes method), use the optional name-value pair argument
Spread
. To incorporate default risk into the algorithm, specify the
optional name-value pair arguments DefaultProbability
and
RecoveryRate
.
[1] Tsiveriotis, K., and C. Fernandes. “Valuing Convertible Bonds with Credit Risk.” Journal of Fixed Income. Vol. 8, 1998, pp. 95–102.
[2] Hull, J. Options, Futures and Other Derivatives. Fourth Edition. Prentice Hall, 2000, pp. 646–649.
cbondbycrr
| crrsens
| eqpprice
| eqpsens
| eqptree
| instadd
| instcbond
| instdisp
| intenvset
| stockspec
A modified version of this example exists on your system. Do you want to open this version instead? (ko_KR)
아래 MATLAB 명령에 해당하는 링크를 클릭하셨습니다.
이 명령을 MATLAB 명령 창에 입력해 실행하십시오. 웹 브라우저에서는 MATLAB 명령을 지원하지 않습니다.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.