public final class SabrExtrapolationReplicationCmsPeriodPricer extends Object
The extrapolation is done on call prices above a certain strike. See SabrExtrapolationRightFunction for
more details on the extrapolation method.
The replication requires numerical integration. This is completed by RungeKuttaIntegrator1D.
The consistency between RatesProvider and SabrParametersSwaptionVolatilities is not checked in this
class, but validated only once in SabrExtrapolationReplicationCmsLegPricer.
Reference: Hagan, P. S. (2003). Convexity conundrums: Pricing CMS swaps, caps, and floors. Wilmott Magazine, March, pages 38--44. OpenGamma implementation note: Replication pricing for linear and TEC format CMS, Version 1.2, March 2011. OpenGamma implementation note for the extrapolation: Smile extrapolation, version 1.2, May 2011.
| Modifier and Type | Method and Description |
|---|---|
double |
adjustedForwardRate(CmsPeriod cmsPeriod,
RatesProvider provider,
SabrSwaptionVolatilities swaptionVolatilities)
Computes the adjusted forward rate for a CMS coupon.
|
double |
adjustmentToForwardRate(CmsPeriod cmsPeriod,
RatesProvider provider,
SabrSwaptionVolatilities swaptionVolatilities)
Computes the adjustment to the forward rate for a CMS coupon.
|
void |
explainPresentValue(CmsPeriod period,
RatesProvider ratesProvider,
SabrSwaptionVolatilities swaptionVolatilities,
ExplainMapBuilder builder)
Explains the present value of the CMS period.
|
double |
getCutOffStrike()
Returns the cut-off strike.
|
double |
getMu()
Returns the tail thickness parameter.
|
DiscountingSwapProductPricer |
getSwapPricer()
Returns the underlying swap pricer.
|
static SabrExtrapolationReplicationCmsPeriodPricer |
of(DiscountingSwapProductPricer swapPricer,
double cutOffStrike,
double mu)
Obtains the pricer.
|
static SabrExtrapolationReplicationCmsPeriodPricer |
of(double cutOffStrike,
double mu)
Obtains the pricer with default swap pricer.
|
CurrencyAmount |
presentValue(CmsPeriod cmsPeriod,
RatesProvider provider,
SabrSwaptionVolatilities swaptionVolatilities)
Computes the present value by replication in SABR framework with extrapolation on the right.
|
PointSensitivityBuilder |
presentValueSensitivityModelParamsSabr(CmsPeriod cmsPeriod,
RatesProvider provider,
SabrSwaptionVolatilities swaptionVolatilities)
Computes the present value sensitivity to SABR parameters by replication in SABR framework with extrapolation on the right.
|
PointSensitivityBuilder |
presentValueSensitivityRates(CmsPeriod cmsPeriod,
RatesProvider provider,
SabrSwaptionVolatilities swaptionVolatilities)
Computes the present value curve sensitivity by replication in SABR framework with extrapolation on the right.
|
double |
presentValueSensitivityStrike(CmsPeriod cmsPeriod,
RatesProvider provider,
SabrSwaptionVolatilities swaptionVolatilities)
Computes the present value sensitivity to strike by replication in SABR framework with extrapolation on the right.
|
public static SabrExtrapolationReplicationCmsPeriodPricer of(DiscountingSwapProductPricer swapPricer, double cutOffStrike, double mu)
swapPricer - the pricer for underlying swapcutOffStrike - the cut-off strike valuemu - the tail thicknesspublic static SabrExtrapolationReplicationCmsPeriodPricer of(double cutOffStrike, double mu)
cutOffStrike - the cut-off strike valuemu - the tail thicknesspublic DiscountingSwapProductPricer getSwapPricer()
public double getMu()
public double getCutOffStrike()
public CurrencyAmount presentValue(CmsPeriod cmsPeriod, RatesProvider provider, SabrSwaptionVolatilities swaptionVolatilities)
cmsPeriod - the CMSprovider - the rates providerswaptionVolatilities - the swaption volatilitiespublic double adjustedForwardRate(CmsPeriod cmsPeriod, RatesProvider provider, SabrSwaptionVolatilities swaptionVolatilities)
The adjusted forward rate, is the number such that, multiplied by the notional, the year fraction and the payment date discount factor, it produces the present value. In other terms, it is the number which used in the same formula used for Ibor coupon pricing will provide the correct present value.
For period already fixed, this number will be equal to the swap index fixing.
For cap or floor the result is the adjusted forward rate for the coupon equivalent to the cap/floor, i.e. the coupon with the same dates and index but with no cap or floor strike.
cmsPeriod - the CMS period, which should be of the type CmsPeriodType.COUPONprovider - the rates providerswaptionVolatilities - the swaption volatilitiespublic double adjustmentToForwardRate(CmsPeriod cmsPeriod, RatesProvider provider, SabrSwaptionVolatilities swaptionVolatilities)
The adjustment to the forward rate, is the quantity that need to be added to the forward rate to obtain the adjusted forward rate. The adjusted forward rate is the number which used in the same formula used for Ibor coupon pricing (forward * notional * accrual factor * discount factor) will provide the correct present value.
For cap or floor the result is the adjustment to the forward rate for the coupon equivalent to the cap/floor, i.e. the coupon with the same dates and index but with no cap or floor strike.
cmsPeriod - the CMS period, which should be of the type CmsPeriodType.COUPONprovider - the rates providerswaptionVolatilities - the swaption volatilitiespublic PointSensitivityBuilder presentValueSensitivityRates(CmsPeriod cmsPeriod, RatesProvider provider, SabrSwaptionVolatilities swaptionVolatilities)
cmsPeriod - the CMSprovider - the rates providerswaptionVolatilities - the swaption volatilitiespublic PointSensitivityBuilder presentValueSensitivityModelParamsSabr(CmsPeriod cmsPeriod, RatesProvider provider, SabrSwaptionVolatilities swaptionVolatilities)
cmsPeriod - the CMSprovider - the rates providerswaptionVolatilities - the swaption volatilitiespublic double presentValueSensitivityStrike(CmsPeriod cmsPeriod, RatesProvider provider, SabrSwaptionVolatilities swaptionVolatilities)
cmsPeriod - the CMSprovider - the rates providerswaptionVolatilities - the swaption volatilitiespublic void explainPresentValue(CmsPeriod period, RatesProvider ratesProvider, SabrSwaptionVolatilities swaptionVolatilities, ExplainMapBuilder builder)
This returns explanatory information about the calculation.
period - the productratesProvider - the rates providerswaptionVolatilities - the volatilitiesbuilder - the builder to populateCopyright 2009-Present by OpenGamma Inc. and individual contributors
Apache v2 licensed
Additional documentation can be found at strata.opengamma.io.