I want to value convertible bonds in Matlab using cbprice
, but I'm having trouble lining it up with what result from the spreadsheet provided by this answer. This is primarily a cbprice
syntax question, I think.
For example, let's value the Intel 2.95 2035 bond using the inputs at the bottom of this question.
The bond is currently trading around 112.
Plugging into the excel spreadsheet, I get around 106. Pretty good.
Now, I'd like to do the same calculation using Matlab:
% CbMatrix = cbprice(RiskFreeRate, StaticSpread, Sigma, Price, ConvRatio, ...
% NumSteps, IssueDate, Settle, Maturity, CouponRate)
>> CbMatrix = cbprice(0.03, 0.00575, 0.236, 24.49, 34.24, ...
100, '30-Mar-2006', '20-Jun-2013', '15-Dec-2035', 0.0295);
>> disp(CbMatrix(1, 1) * 0.1)
88.3347
I wasn't sure how I should give the dividend yield to cbprice
, but the spreadsheet gives a price near 132 for a zero dividend yield for comparison.
I expect a number closer to 110, at least above 100.
How can I reproduce the calculation using cbprice
?
Spreadsheet inputs:
Bond info: Stock info: Pricing Info
Pricing Date: 6/20/2013 Current Price: 24.49 Risk Free Rate: 0.03
Maturity Date: 12/15/2035 Dividend Yield: 0.0453 Credit Spread: 0.00575
Face Value: 1000 Volatility: 0.236 Number of steps: 100
Conversion Ratio: 34.24
Coupon (%): 2.95
Frequency: 2
Communicating with the Matlab folks, they clarified that it implicitly uses a $100 face value for the bond. The conversion ratio needs to be adjusted accordingly.
The dividend yield has been specified as well in the last two lines of the invocation.
% CbMatrix = cbprice(RiskFreeRate, StaticSpread, Sigma, Price, ...
% ConvRatio, ...
% NumSteps, IssueDate, Settle, Maturity, CouponRate, ...)
>> CbMatrix = cbprice(0.03, 0.00575, 0.236, 24.49, ...
34.24 * 100 / 1000, ... % changed here
100, '30-Mar-2006', '20-Jun-2013', '15-Dec-2035', 0.0295, ...
'DividendType', 2, ...
'DividendInfo', [datenum('20-Jun-2013') 0.0453]);
>> CbMatrix(1,1)
ans =
107.3614