Table of Contents

Class CPICouponPricer

Namespace
NanoQL.Coupons
Assembly
NanoQL.dll

The base pricer of CPI coupons: the swaplet is the fixed rate times the index ratio; a volatility-dependent optionlet needs a derived pricer.

public class CPICouponPricer : InflationCouponPricer
Inheritance
CPICouponPricer
Inherited Members

Remarks

An empty handle is null. A price discounts on the nominal curve, at the payment date when it is after the curve's reference date, at 1 otherwise; with no nominal curve, a price refuses "no nominal term structure provided", while a rate needs none.

QuantLib casts the coupon without a check and then reads through the null pointer, which is undefined; here a coupon that isn't a CPI coupon is refused, "CPI coupon needed". An optionlet whose fixing date is at or before the evaluation date pays its intrinsic value on the index ratio, the quantity the live optionlet's forward reads, where QuantLib's reads the index's level against a strike on the ratio; both are documented divergences. An extension point.

Constructors

CPICouponPricer(CPIVolatilitySurface?, YieldTermStructure?)

Initializes a new instance of the CPICouponPricer class.

public CPICouponPricer(CPIVolatilitySurface? capletVol, YieldTermStructure? nominalTermStructure)

Parameters

capletVol CPIVolatilitySurface

The optionlet volatility, or null for none.

nominalTermStructure YieldTermStructure

The nominal curve the prices discount on, or null for none.

CPICouponPricer(YieldTermStructure?)

Initializes a new instance of the CPICouponPricer class.

public CPICouponPricer(YieldTermStructure? nominalTermStructure = null)

Parameters

nominalTermStructure YieldTermStructure

The nominal curve the prices discount on, or null for none.

Properties

CapletVolatility

Gets the optionlet volatility, or null for none.

public virtual CPIVolatilitySurface? CapletVolatility { get; }

Property Value

CPIVolatilitySurface

NominalTermStructure

Gets the nominal curve the prices discount on, or null for none.

public virtual YieldTermStructure? NominalTermStructure { get; }

Property Value

YieldTermStructure

Methods

AccruedRate(InflationCoupon, Date, EvaluationContext)

The rate accrued to a settlement date: the fixed rate times the index ratio there.

public virtual double AccruedRate(InflationCoupon coupon, Date settlementDate, EvaluationContext context)

Parameters

coupon InflationCoupon

The coupon.

settlementDate Date

The settlement date.

context EvaluationContext

The evaluation context.

Returns

double

The rate.

Exceptions

ArgumentException

The coupon isn't a CPI coupon.

CapletPrice(InflationCoupon, double, EvaluationContext)

The caplet's price at an effective cap.

public override double CapletPrice(InflationCoupon coupon, double effectiveCap, EvaluationContext context)

Parameters

coupon InflationCoupon

The coupon.

effectiveCap double

The effective cap.

context EvaluationContext

The evaluation context.

Returns

double

The price.

Exceptions

ArgumentException

The coupon isn't a CPI coupon.

CapletRate(InflationCoupon, double, EvaluationContext)

The caplet's rate at an effective cap.

public override double CapletRate(InflationCoupon coupon, double effectiveCap, EvaluationContext context)

Parameters

coupon InflationCoupon

The coupon.

effectiveCap double

The effective cap.

context EvaluationContext

The evaluation context.

Returns

double

The rate.

Exceptions

ArgumentException

The coupon isn't a CPI coupon.

FloorletPrice(InflationCoupon, double, EvaluationContext)

The floorlet's price at an effective floor.

public override double FloorletPrice(InflationCoupon coupon, double effectiveFloor, EvaluationContext context)

Parameters

coupon InflationCoupon

The coupon.

effectiveFloor double

The effective floor.

context EvaluationContext

The evaluation context.

Returns

double

The price.

Exceptions

ArgumentException

The coupon isn't a CPI coupon.

FloorletRate(InflationCoupon, double, EvaluationContext)

The floorlet's rate at an effective floor.

public override double FloorletRate(InflationCoupon coupon, double effectiveFloor, EvaluationContext context)

Parameters

coupon InflationCoupon

The coupon.

effectiveFloor double

The effective floor.

context EvaluationContext

The evaluation context.

Returns

double

The rate.

Exceptions

ArgumentException

The coupon isn't a CPI coupon.

OptionletPrice(CPICoupon, OptionType, double, EvaluationContext)

An optionlet's price: its rate, accrued and discounted on the nominal curve.

protected virtual double OptionletPrice(CPICoupon coupon, OptionType optionType, double effStrike, EvaluationContext context)

Parameters

coupon CPICoupon

The coupon.

optionType OptionType

A call for a caplet, a put for a floorlet.

effStrike double

The effective strike.

context EvaluationContext

The evaluation context.

Returns

double

The price.

Exceptions

NanoQLException

The pricer has no nominal curve.

OptionletPriceImp(OptionType, double, double, double)

An optionlet's rate, not discounted and not accrued, from the strike, the forward and the standard deviation, which a derived pricer computes; QuantLib's misleading name is kept.

protected virtual double OptionletPriceImp(OptionType optionType, double strike, double forward, double stdDev)

Parameters

optionType OptionType

A call for a caplet, a put for a floorlet.

strike double

The strike.

forward double

The forward.

stdDev double

The standard deviation.

Returns

double

The rate.

Exceptions

NanoQLException

Always, here: a volatility-dependent price needs a derived pricer.

OptionletRate(CPICoupon, OptionType, double, EvaluationContext)

An optionlet's rate: its intrinsic value on the index ratio at the accrual end when the fixing date is at or before the evaluation date, else OptionletPriceImp(OptionType, double, double, double) on that ratio and the volatility's total variance.

protected virtual double OptionletRate(CPICoupon coupon, OptionType optionType, double effStrike, EvaluationContext context)

Parameters

coupon CPICoupon

The coupon.

optionType OptionType

A call for a caplet, a put for a floorlet.

effStrike double

The effective strike.

context EvaluationContext

The evaluation context.

Returns

double

The rate.

Exceptions

NanoQLException

The optionlet isn't fixed and the pricer has no optionlet volatility.

SetCapletVolatility(CPIVolatilitySurface)

A copy of the pricer with another optionlet volatility: QuantLib's setCapletVolatility.

public virtual CPICouponPricer SetCapletVolatility(CPIVolatilitySurface capletVol)

Parameters

capletVol CPIVolatilitySurface

The volatility.

Returns

CPICouponPricer

The copy, of the pricer's own type.

Exceptions

ArgumentNullException

capletVol is null, QuantLib's "empty capletVol handle".

SwapletPrice(InflationCoupon, EvaluationContext)

The swaplet's price: the coupon's rate, accrued and discounted.

public override double SwapletPrice(InflationCoupon coupon, EvaluationContext context)

Parameters

coupon InflationCoupon

The coupon.

context EvaluationContext

The evaluation context.

Returns

double

The price.

Exceptions

ArgumentException

The coupon isn't a CPI coupon.

NanoQLException

The pricer has no nominal curve.

SwapletRate(InflationCoupon, EvaluationContext)

The swaplet's rate: the coupon's rate.

public override double SwapletRate(InflationCoupon coupon, EvaluationContext context)

Parameters

coupon InflationCoupon

The coupon.

context EvaluationContext

The evaluation context.

Returns

double

The rate.

Exceptions

ArgumentException

The coupon isn't a CPI coupon.