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

example

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.

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