Main Content

JarrowYildirim

Create JarrowYildirim model object for YearYearInflationCap, YearYearInflationFloor, ZeroCouponInflationCap, ZeroCouponInflationFloor, YearYearInflationSwap, or ZeroCouponInflationSwap instrument

Since R2023b

Description

Create and price a YearYearInflationCap, YearYearInflationFloorZeroCouponInflationCap, ZeroCouponInflationFloor, YearYearInflationSwap, or ZeroCouponInflationSwap instrument object with a JarrowYildirim model using this workflow:

  1. Use fininstrument to create a YearYearInflationCap, YearYearInflationFloor, ZeroCouponInflationCap, ZeroCouponInflationFloor, YearYearInflationSwap, or ZeroCouponInflationSwap instrument object.

  2. Use finmodel to specify a JarrowYildirim model object for the YearYearInflationCap, YearYearInflationFloor, ZeroCouponInflationCap, ZeroCouponInflationFloor, YearYearInflationSwap, or ZeroCouponInflationSwap instrument object.

  3. Use finpricer to specify an JarrowYildirim pricing method for a YearYearInflationCap, YearYearInflationFloor, ZeroCouponInflationCap, ZeroCouponInflationFloor, YearYearInflationSwap, or ZeroCouponInflationSwap instrument object.

For more information on this workflow, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.

For more information on the available pricing methods for a YearYearInflationCap, YearYearInflationFloor, ZeroCouponInflationCapZeroCouponInflationFloor, YearYearInflationSwap, or ZeroCouponInflationSwap instrument, see Choose Instruments, Models, and Pricers.

Creation

Description

JarrowYildirimFModelObj = finmodel(ModelType,NominalVolatility=nominal_volatility_value,RealVolatility=real_volatility_value,IndexVolatility=index_volatility_value,NominalConstant=nominal_constant_value,RealConstant=real_constant_value,NominalRealCorrelation=nominal_real_correlation_value,RealIndexCorrelation=real_index_correlation_value,NominalIndexCorrelation=nominal_index_correlation_value,CurrentIndex=current_index_value), creates a JarrowYildirim model object by specifying ModelType and the required name-value arguments for NominalVolatility, RealVolatility, IndexVolatility, NominalConstant, RealConstant, NominalRealCorrelation, RealIndexCorrelation, NominalIndexCorrelation, and CurrentIndex to set properties using name-value arguments. For example, JarrowYildirimFModelObj = finmodel("JarrowYildirim",NominalVolatility=0.008,RealVolatility=0.005,IndexVolatility=0.01,NominalConstant=0.04,RealConstant=0.05,NominalRealCorrelation=0.015,RealIndexCorrelation=-0.32,NominalIndexCorrelation=0.08,CurrentIndex=101)

creates a JarrowYildirim model object.

example

Input Arguments

expand all

Model type, specified as a string with the value of "JarrowYildirim" or a character vector with the value of 'JarrowYildirim'.

Data Types: char | string

Name-Value Arguments

Specify required pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: JarrowYildirimFModelObj = finmodel("JarrowYildirim",NominalVolatility=0.008,RealVolatility=0.005,IndexVolatility=0.01,NominalConstant=0.04,RealConstant=0.05,NominalRealCorrelation=0.015,RealIndexCorrelation=-0.32,NominalIndexCorrelation=0.08,CurrentIndex=101)

Nominal rate volatility, specified as a scalar positive decimal.

Data Types: double

Real rate volatility, specified as a scalar positive decimal.

Data Types: double

Inflation index volatility, specified as a scalar positive decimal.

Data Types: double

Nominal rate constant (αn), specified as a scalar positive decimal.

Data Types: double

Real rate constant (αr), specified as a scalar positive decimal.

Data Types: double

Nominal rate and real rate correlation, specified as a scalar decimal between -1 and 1.

Data Types: double

Real rate and inflation index correlation, specified as a scalar decimal between -1 and 1.

Data Types: double

Nominal rate and inflation index correlation, specified as a scalar decimal between -1 and 1.

Data Types: double

Current inflation index, specified as a positive scalar numeric.

Data Types: double

Properties

expand all

Nominal rate volatility, returned as a scalar positive decimal.

Data Types: double

Real rate volatility, returned as a scalar positive decimal.

Data Types: double

Inflation index volatility, returned as a scalar positive decimal.

Data Types: double

Nominal rate constant (αn), returned as a scalar positive decimal.

Data Types: double

Real rate constant (αr), returned as a scalar positive decimal.

Data Types: double

Nominal rate and real rate correlation, returned as a scalar decimal.

Data Types: double

Real rate and inflation index correlation, returned as a scalar decimal.

Data Types: double

Nominal rate and inflation index correlation, returned as a scalar decimal.

Data Types: double

Current inflation index, returned as a positive scalar numeric.

Data Types: double

Examples

collapse all

This example shows the workflow to price a YearYearInflationCap instrument when using a JarrowYildirim model and a JarrowYildirim pricing method.

Create YearYearInflationCap Instrument Object

Use fininstrument to create a YearYearInflationCap instrument object.

YYInflationCap = fininstrument("YearYearInflationCap",Maturity=datetime(2033, 10, 1), Strike=0.05, Notional=1000,Name="YYInflationCap")
YYInflationCap = 
  YearYearInflationCap with properties:

      Notional: 1000
        Strike: 0.0500
         Basis: 0
    IssueIndex: NaN
      Maturity: 01-Oct-2033
          Name: "YYInflationCap"

Create JarrowYildirim Model Object

Use finmodel to create a JarrowYildirim model object.

JarrowYildirimModel = finmodel("JarrowYildirim", ...
        NominalVolatility=0.008,RealVolatility=0.005,IndexVolatility=0.01, ...
        NominalConstant=0.04,RealConstant=0.05, ...
        NominalRealCorrelation=0.015,RealIndexCorrelation=-0.32, ...
        NominalIndexCorrelation=0.08,CurrentIndex=101)
JarrowYildirimModel = 
  JarrowYildirim with properties:

          NominalVolatility: 0.0080
             RealVolatility: 0.0050
            IndexVolatility: 0.0100
            NominalConstant: 0.0400
               RealConstant: 0.0500
     NominalRealCorrelation: 0.0150
       RealIndexCorrelation: -0.3200
    NominalIndexCorrelation: 0.0800
               CurrentIndex: 101

Create ratecurve Object

Create a ratecurve object using ratecurve for the NominalCurve and RealCurve.

Settle = datetime(2023,10,1);

ZeroTimes = [calmonths(6) calyears([1 2 3 5 7 10 20 30])];
NominalRates = [4.70 4.68 4.14 3.83 3.56 3.51 3.48 3.77 3.66]'./100;
RealRates = [1.47 1.55 1.31 1.30 1.33 1.28 1.25 1.33 1.42]'./100;
ZeroDates = Settle + ZeroTimes;
NominalCurve = ratecurve("zero",Settle,ZeroDates,NominalRates);
RealCurve = ratecurve("zero",Settle,ZeroDates,RealRates);

Create JarrowYildirim Pricer Object

Use finpricer to create a JarrowYildirim object and use the ratecurve object for the NominalCurve and RealCurve name-value arguments.

JarrowYildirimPricer = finpricer("analytic",Model=JarrowYildirimModel,NominalCurve=NominalCurve,RealCurve=RealCurve)
JarrowYildirimPricer = 
  JarrowYildirim with properties:

           Model: [1x1 finmodel.JarrowYildirim]
    NominalCurve: [1x1 ratecurve]
       RealCurve: [1x1 ratecurve]

Price YearYearInflationCap Instrument

Use price to compute the price for the YearYearInflationCap instrument.

YYInflationCapPrice = price(JarrowYildirimPricer,YYInflationCap)
YYInflationCapPrice = 
8.3100

More About

expand all

Algorithms

The Jarrow-Yildirim model under real-world measure P is represented as

dfn(t,T)=αn(t,T)dt+ςn(t,T)dWnP(t)dfr(t,T)=αr(t,T)dt+ςr(t,T)dWrP(t)dI(t)=I(t)μI(t)dt+σII(t)dWIP(t)ςn(t,T)=σnean(Tt)ςr(t,T)=σrear(Tt)fx(t,T)=lnPx(t,T)Tx{n,r}

where:

  • fn(t,T) Nominal instantaneous forward rate for maturity T.

  • fr(t,T) Real instantaneous forward rate for maturity T.

  • I(t) is the inflation index.

  • αn(t,T)$,$αr(t,T)$,$μI(t) is the adapted processes.

  • σn is the nominal rate volatility (positive constant).

  • σr is the real rate volatility (positive constant).

  • σI is the inflation index volatility (positive constant).

  • an, ar are the positive constants.

  • Px(t,T) is the zero coupon bond price (where n is nominal and r is real).

The Jarrow-Yildirim model under nominal risk-neutral measure Qn is represented as

dn(t)=[ϑn(t)ann(t)]dt+σndWn(t)dr(t)=[ϑr(t)ρr,IσIσrarr(t)]dt+σrdWr(t)dI(t)=I(t)[n(t)r(t)]dt+σII(t)dWI(t)n(t) =fn(t,t)r(t) = fr(t,t)ϑx(t)=fx(0,T)T+axfx(0,t)+σx22ax(1e2axt)x{n,r}

where:

  • n(t) is the instantaneous nominal rate.

  • r(t) is the instantaneous real rate.

  • I(t) is the inflation index.

  • (Wn,Wr,WI) is the Brownian motion with correlations ρn,r, ρn,I, ρr,I.

  • σn is the nominal rate volatility (positive constant).

  • σr is the real rate volatility (positive constant).

  • σI is the inflation index volatility (positive constant).

  • an, ar are the positive constants.

  • fx(t,T) is the instantaneous forward rate (where n is nominal and r is real).

References

[1] Jarrow, R. and Yildirim, Y. "Pricing Treasury Inflation Protected Securities and Related Derivatives using an HJM Model." Journal of Financial and Quantitative Analysis. Vol. 38, 2003.

Version History

Introduced in R2023b

Go to top of page