www.gusucode.com > fininst 案例源码程序 matlab代码 > fininst/PriceaPortfolioofStepCallableBondsSteppedVanillaBoExample.m
%% Price a Portfolio of Stepped Callable Bonds and Stepped Vanilla Bonds %% % 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 a |RateSpec|. RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding) %% % Create an instrument portfolio of three 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 the tree with the following data: VolDates = ['1-Jan-2011'; '1-Jan-2012'; '1-Jan-2013'; '1-Jan-2014']; VolCurve = 0.01; AlphaDates = '01-01-2014'; AlphaCurve = 0.1; HWVolSpec = hwvolspec(RS.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); HWTimeSpec = hwtimespec(RS.ValuationDate, VolDates, Compounding); HWT = hwtree(HWVolSpec, RS, HWTimeSpec) %% % Compute the price of the stepped callable bonds and the stepped vanilla % bonds. PHW = hwprice(HWT, ISet) %% % The first three rows correspond to the price of the stepped callable % bonds and the last three rows correspond to the price of the stepped % vanilla bonds.