Main Content


Fit Svensson model to bond market data



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.3037e-08 0.0197 0.0624 0.1391 1.3563 11.7741]

Input Arguments

collapse all

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

Data Types: double | char | string | datetime

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