%% Price European Callable Embedded Option for a Floating-Rate Note Using a CIR Interest-Rate Tree
% Create a RateSpec using the intenvset function.

Rates = [0.035; 0.042147; 0.047345; 0.052707]; 
Dates = {'Jan-1-2017'; 'Jan-1-2018'; 'Jan-1-2019'; 'Jan-1-2020'; 'Jan-1-2021'}; 
ValuationDate = 'Jan-1-2017'; 
EndDates = Dates(2:end)'; 
Compounding = 1; 
RateSpec = intenvset('ValuationDate', ValuationDate, 'StartDates', ValuationDate, 'EndDates',EndDates,'Rates', Rates, 'Compounding', Compounding); 

% Create a CIR tree.

NumPeriods = length(EndDates); 
Alpha = 0.03; 
Theta = 0.02;  
Sigma = 0.1;   
Settle = '01-Jan-2017'; 
Maturity = '01-Jan-2020'; 
CIRTimeSpec = cirtimespec(Settle, Maturity, 3); 
CIRVolSpec = cirvolspec(Sigma, Alpha, Theta); 

CIRT = cirtree(CIRVolSpec, RateSpec, CIRTimeSpec)

% Define the floater instruments with the embedded call option.

Spread = 10;
Settle = 'Jan-1-2017';
Maturity =  {'Jan-1-2019';'Jan-1-2020'};
Period = 1;
OptSpec = {'call'};
Strike = 101;
ExerciseDates = 'Jan-1-2019';

% Compute the price of the floaters with the embedded call.

[Price,PriceTree] = optemfloatbycir(CIRT,Spread,Settle,Maturity,OptSpec,Strike,ExerciseDates)

% Copyright 2012 The MathWorks, Inc.