Main Content


Fit Svensson model to bond market data

Since R2020a



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


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);...
  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),...

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