www.gusucode.com > fininst 案例源码程序 matlab代码 > fininst/PriceaCallableBondUsingaBKInterestRateTreeModelExample.m

    %% Price a Callable Bond Using a BK Interest-Rate Tree Model  

% Copyright 2015 The MathWorks, Inc.


%% 
% Create a |BKTree| with the following  data: 
ZeroRates = [ 0.035;0.04;0.045];
Compounding = 1;
StartDates = ['jan-1-2007';'jan-1-2008';'jan-1-2009'];
EndDates   = ['jan-1-2008';'jan-1-2009';'jan-1-2010'];
ValuationDate = 'jan-1-2007';  

%% 
% Create a |RateSpec|. 
RateSpec = intenvset('Rates', ZeroRates, 'StartDates', ValuationDate, 'EndDates', ...
EndDates, 'Compounding', Compounding, 'ValuationDate', ValuationDate)  

%% 
% Create a |VolSpec|. 
VolDates = ['jan-1-2008';'jan-1-2009';'jan-1-2010'];
VolCurve = 0.01;
AlphaDates = 'jan-1-2010';
AlphaCurve = 0.1;
BKVolSpec = bkvolspec(ValuationDate, VolDates, VolCurve, AlphaDates, AlphaCurve)  

%% 
% Create a |TimeSpec|. 
BKTimeSpec = bktimespec(ValuationDate, EndDates, Compounding);  

%% 
% Build the |BKTree|. 
BKTree = bktree(BKVolSpec, RateSpec, BKTimeSpec)  

%% 
% To compute the price of an American puttable bond that pays an annual
% coupon of 5.25% , matures on January 1, 2010, and is callable on January
% 1, 2008 and January 1, 2010. 
BondSettlement = 'jan-1-2007';
BondMaturity   = 'jan-1-2010'; 
CouponRate = 0.0525;
Period = 1;
OptSpec = 'put'; 
Strike = [100];  
ExerciseDates = {'jan-1-2008' '01-Jan-2010'}; 
AmericanOpt = 1;

PricePutBondBK = optembndbybk(BKTree, CouponRate, BondSettlement, BondMaturity,...
OptSpec, Strike, ExerciseDates,'Period', 1, 'AmericanOpt', 1)