www.gusucode.com > fininst 案例源码程序 matlab代码 > fininst/PriceaPortfolioofSteppedCallableBondsandSteppedVanillaBoExample.m
%% Price a Portfolio of Stepped Callable Bonds and Stepped Vanilla Bonds % Copyright 2015 The MathWorks, Inc. %% % Price a portfolio of stepped callable bonds and stepped vanilla bonds % using the following data: % The data for the interest rate term structure is as follows: Rates = [0.035; 0.042147; 0.047345; 0.052707]; ValuationDate = 'Jan-1-2010'; StartDates = ValuationDate; EndDates = {'Jan-1-2011'; 'Jan-1-2012'; 'Jan-1-2013'; 'Jan-1-2014'}; Compounding = 1; %Create RateSpec RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding); % Create an instrument portfolio of 3 stepped callable bonds and three % stepped vanilla bonds Settle = '01-Jan-2010'; Maturity = {'01-Jan-2012';'01-Jan-2013';'01-Jan-2014'}; CouponRate = {{'01-Jan-2011' .042;'01-Jan-2012' .05; '01-Jan-2013' .06; '01-Jan-2014' .07}}; OptSpec='call'; Strike=100; ExerciseDates='01-Jan-2011'; %Callable in one year % Bonds with embedded option ISet = instoptembnd(CouponRate, Settle, Maturity, OptSpec, Strike,... ExerciseDates, 'Period', 1); % Vanilla bonds ISet = instbond(ISet, CouponRate, Settle, Maturity, 1); % Display the instrument portfolio instdisp(ISet) %% % Build a |BDTTree| and price the instruments. % Build the tree % Assume the volatility to be 10% Sigma = 0.1; BDTTimeSpec = bdttimespec(ValuationDate, EndDates, Compounding); BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Sigma*ones(1, length(EndDates))'); BDTT = bdttree(BDTVolSpec, RS, BDTTimeSpec); %The first three rows corresponds to the price of the stepped callable bonds and the %last three rows corresponds to the price of the stepped vanilla bonds. PBDT = bdtprice(BDTT, ISet)