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

    %% Pricing a Portfolio Using the Black-Derman-Toy Model
%
% This example illustrates how the Financial Instruments Toolbox(TM) is used 
% to create a Black-Derman-Toy (BDT) tree and price a portfolio of instruments
% using the BDT model.
 
% Copyright 1995-2011 The MathWorks, Inc.

%% Create the Interest Rate Term Structure
%
% The structure RateSpec is an interest-rate term structure that defines the
% initial forward-rate specification from which the tree rates are derived.
% Use the information of annualized zero coupon rates in the table below
% to populate the RateSpec structure.
%
%    From             To           Rate
% 01 Jan 2005    01 Jan 2006      0.0275
% 01 Jan 2005    01 Jan 2007      0.0312
% 01 Jan 2005    01 Jan 2008      0.0363
% 01 Jan 2005    01 Jan 2009      0.0415
% 01 Jan 2005    01 Jan 2010      0.0458

StartDates = ['01 Jan 2005'];
          
EndDates =   ['01 Jan 2006';
              '01 Jan 2007'; 
              '01 Jan 2008';
              '01 Jan 2009';
              '01 Jan 2010'];
          
ValuationDate = ['01 Jan 2005'];
Rates = [0.0275; 0.0312; 0.0363; 0.0415; 0.0458];
Compounding = 1;

RateSpec = intenvset('Compounding',Compounding,'StartDates', StartDates,...
                     'EndDates', EndDates, 'Rates', Rates,'ValuationDate', ValuationDate)


%% Specify the Volatility Model
%
% Create the structure VolSpec that specifies the volatility process with 
% the following data.

Volatility = [0.005; 0.0055; 0.006; 0.0065; 0.007];
BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Volatility)


%% Specify the Time Structure of the Tree
%
% The structure TimeSpec specifies the time structure for an interest-rate
% tree. This structure defines the mapping between the observation times at 
% each level of the tree and the corresponding dates. 

Maturity = EndDates;
BDTTimeSpec = bdttimespec(ValuationDate, Maturity, Compounding)


%% Create the BDT Tree
%
% Use the previously computed values for RateSpec, VolSpec and TimeSpec
% to create the BDT tree. 

BDTTree = bdttree(BDTVolSpec, RateSpec, BDTTimeSpec)


%% Observe the Interest Rate Tree
%
% Visualize the interest-rate evolution along the tree by looking at the
% output structure BDTTree. BDTTree returns an inverse discount tree, which
% you can convert into an interest-rate tree with the |cvtree| function.

BDTTreeR = cvtree(BDTTree);

%%
% Look at the upper branch and lower branch paths of the tree:

%Rate at root node:
RateRoot      = treepath(BDTTreeR.RateTree, [0]) 

%Rates along upper branch:
RatePathUp    = treepath(BDTTreeR.RateTree, [1 1 1 1]) 

%Rates along lower branch:
RatePathDown = treepath(BDTTreeR.RateTree, [2 2 2 2]) 


%%
% You can also display a graphical representation of the tree to examine 
% interactively the rates on the nodes of the tree until maturity. 
% The function treeviewer displays the structure of the rate tree in the left pane. 
% The tree visualization in the right pane is blank, but by selecting Diagram
% and clicking on the nodes you can examine the rates along the paths.

treeviewer(BDTTreeR)


%% Create an Instrument Portfolio
%
% Create a portfolio consisting of two bond instruments and a option on the 5% Bond. 

% Bonds
CouponRate = [0.04;0.05]; 
Settle = '01 Jan 2005'; 
Maturity = ['01 Jan 2009';'01 Jan 2010'];
Period = 1;

% Option
OptSpec = {'call'};
Strike = 98;
ExerciseDates = ['01 Jan 2010'];
AmericanOpt = 1;

InstSet = instadd('Bond',CouponRate, Settle,  Maturity, Period);
InstSet = instadd(InstSet,'OptBond', 2, OptSpec, Strike, ExerciseDates, AmericanOpt);

%%
% Examine the set of instruments contained in the variable InstSet.

instdisp(InstSet)


%% Price the Portfolio Using a BDT Tree
%
% Calculate the price of each instrument in the instrument set. 

Price = bdtprice(BDTTree, InstSet)

%% 
% The prices in the output vector |Price| correspond to the prices at
% observation time zero (tObs = 0), which is defined as the Valuation Date
% of the interest-rate tree.
%
% In the Price vector, the first element, 99.6374, represents the price of
% the first instrument (4% Bond); the second element, 102.2460, represents 
% the price of the second instrument (5% Bond), and 4.2460 represents the
% price of the Option.