Main Content

fitSvensson

Fit Svensson model to bond market data

Description

example

outCurve = fitSvensson(Settle,Instruments,CleanPrice) fits a Svensson model to bond data.

Examples

collapse all

Define the bond data and use fininstrument to create FixedBond instrument objects.

 Settle = datetime(2017,9,15);
  Maturity = [datetime(2019,9,15);datetime(2021,9,15);...
      datetime(2023,9,15);datetime(2026,9,7);...
      datetime(2035,9,15);datetime(2047,9,15)];
  
  CleanPrice = [100.1;100.1;100.8;96.6;103.3;96.3];
  CouponRate = [0.0400;0.0425;0.0450;0.0400;0.0500;0.0425];
 
nInst = numel(CouponRate);
Bonds(nInst,1) = fininstrument.FinInstrument;
for ii=1:nInst
    Bonds(ii) = fininstrument("FixedBond",'Maturity',Maturity(ii),...
        'CouponRate',CouponRate(ii));
end

Use fitSvensson to create a parametercurve object.

SvenModel = fitSvensson(Settle,Bonds,CleanPrice)
Local minimum possible.

lsqnonlin stopped because the final change in the sum of squares relative to 
its initial value is less than the value of the function tolerance.
SvenModel = 
  parametercurve with properties:

              Type: "zero"
            Settle: 15-Sep-2017
       Compounding: -1
             Basis: 0
    FunctionHandle: @(t)fitF(Params,t)
        Parameters: [3.2984e-08 0.0197 0.0624 0.1391 1.3563 11.7741]

Input Arguments

collapse all

Settlement date, specified as a scalar datetime, string, or date character vector.

To support existing code, fitSvensson also accepts serial date numbers as inputs, but they are not recommended.

Bond instrument objects, specified as an array of bond instrument objects.

Data Types: object

Observed market prices, specified as a vector.

Data Types: double

Output Arguments

collapse all

Fitted Svensson model, returned as a parametercurve object.

Version History

Introduced in R2020a

expand all