Question

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
Was it helpful?

Solution

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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top