%% Price Stepped Fixed Bond Instrument Using ratecurve and Discount Pricer
% This example shows the workflow to price a stepped FixedBond instrument when you use a ratecurve and a Discount pricing method.
%% Create FixedBond Instrument Object
% Use fininstrument to create a stepped FixedBond instrument object.

Maturity = datetime(2024,1,1);
Period = 1;
CDates = datetime([2020,1,1 ; 2024,1,1]);
CRates = [.025; .03];
CouponRate = timetable(CDates,CRates);

SBond = fininstrument("FixedBond",'Maturity',Maturity,'CouponRate',CouponRate,'Period',Period) 

%
%% Create ratecurve Object
% Create a ratecurve object using ratecurve.

Settle = datetime(2018,1,1);
ZeroTimes = calyears(1:10)';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
Compounding = 1;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates, "Compounding",Compounding)

%% Create Discount Pricer Object
% Use finpricer to create a Discount pricer object and use the ratecurve object with the 'DiscountCurve' name-value pair argument.

outPricer = finpricer("Discount",'DiscountCurve',ZeroCurve)

%% Price FixedBond Instrument
% Use price to compute the price and sensitivities for the vanilla FixedBond instrument.

[Price, outPR] = price(outPricer, SBond,["all"])
outPR.Results

% Copyright 2019 The MathWorks, Inc.