Class CPICouponPricer
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
capletVolCPIVolatilitySurfaceThe optionlet volatility, or null for none.
nominalTermStructureYieldTermStructureThe 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
nominalTermStructureYieldTermStructureThe 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
NominalTermStructure
Gets the nominal curve the prices discount on, or null for none.
public virtual YieldTermStructure? NominalTermStructure { get; }
Property Value
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
couponInflationCouponThe coupon.
settlementDateDateThe settlement date.
contextEvaluationContextThe 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
couponInflationCouponThe coupon.
effectiveCapdoubleThe effective cap.
contextEvaluationContextThe 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
couponInflationCouponThe coupon.
effectiveCapdoubleThe effective cap.
contextEvaluationContextThe 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
couponInflationCouponThe coupon.
effectiveFloordoubleThe effective floor.
contextEvaluationContextThe 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
couponInflationCouponThe coupon.
effectiveFloordoubleThe effective floor.
contextEvaluationContextThe 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
couponCPICouponThe coupon.
optionTypeOptionTypeA call for a caplet, a put for a floorlet.
effStrikedoubleThe effective strike.
contextEvaluationContextThe 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
optionTypeOptionTypeA call for a caplet, a put for a floorlet.
strikedoubleThe strike.
forwarddoubleThe forward.
stdDevdoubleThe 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
couponCPICouponThe coupon.
optionTypeOptionTypeA call for a caplet, a put for a floorlet.
effStrikedoubleThe effective strike.
contextEvaluationContextThe 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
capletVolCPIVolatilitySurfaceThe volatility.
Returns
- CPICouponPricer
The copy, of the pricer's own type.
Exceptions
- ArgumentNullException
capletVolis 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
couponInflationCouponThe coupon.
contextEvaluationContextThe 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
couponInflationCouponThe coupon.
contextEvaluationContextThe evaluation context.
Returns
- double
The rate.
Exceptions
- ArgumentException
The coupon isn't a CPI coupon.