java.lang.Object
net.finmath.marketdata.products.AbstractAnalyticProduct
net.finmath.marketdata.products.Cap
- All Implemented Interfaces:
AnalyticProduct
,Product
- Direct Known Subclasses:
CapShiftedVol
Implements the valuation of a cap via an analytic model,
i.e. the specification of a forward curve, discount curve and volatility surface.
A cap is a portfolio of Caplets with a common strike, i.e., the strike is the same for all Caplets.
The class can value a caplet with a given strike or given moneyness. If moneyness is given,
the class calculates the ATM forward. Note that this is done by omitting the first (fixed) period,
see
getATMForward(AnalyticModel, boolean)
.
Note: A fixing in arrears is not handled correctly since a convexity adjustment is currently not applied.- Version:
- 1.0
- Author:
- Christian Fries
- To dos:
- Support convexity adjustment if fixing is in arrears.
-
Constructor Summary
ConstructorsConstructorDescriptionCap(Schedule schedule, String forwardCurveName, double strike, boolean isStrikeMoneyness, String discountCurveName, String volatilitySurfaceName)
Create a Caplet with a given schedule, strike on a given forward curve (by name) with a given discount curve and volatility surface (by name).Cap(Schedule schedule, String forwardCurveName, double strike, boolean isStrikeMoneyness, String discountCurveName, String volatilitySurfaceName, VolatilitySurface.QuotingConvention quotingConvention)
Create a Caplet with a given schedule, strike on a given forward curve (by name) with a given discount curve and volatility surface (by name). -
Method Summary
Modifier and TypeMethodDescriptiondouble
getATMForward(AnalyticModel model, boolean isFirstPeriodIncluded)
Return the ATM forward for this cap.Returns the name of the discount curve referenced by this cap.Returns the name of the forward curve references by this cap.double
getImpliedVolatility(double evaluationTime, AnalyticModel model, VolatilitySurface.QuotingConvention quotingConvention)
Returns the value of this cap in terms of an implied volatility (of a flat caplet surface).double
Returns the strike of this caplet.double
getValue(double evaluationTime, AnalyticModel model)
Return the valuation of the product using the given model.double
getValueAsPrice(double evaluationTime, AnalyticModel model)
Returns the value of this product under the given model.toString()
Methods inherited from class net.finmath.marketdata.products.AbstractAnalyticProduct
getValue, getValue
-
Constructor Details
-
Cap
public Cap(Schedule schedule, String forwardCurveName, double strike, boolean isStrikeMoneyness, String discountCurveName, String volatilitySurfaceName, VolatilitySurface.QuotingConvention quotingConvention)Create a Caplet with a given schedule, strike on a given forward curve (by name) with a given discount curve and volatility surface (by name). The valuation is performed using analytic valuation formulas for the underlying caplets.- Parameters:
schedule
- A given payment schedule, i.e., a collection ofPeriod
s with fixings, payments and period length.forwardCurveName
- The forward curve to be used for the forward of the index.strike
- The given strike (or moneyness).isStrikeMoneyness
- If true, then the strike argument is interpreted as moneyness, i.e. we calculate an ATM forward from the schedule.discountCurveName
- The discount curve to be used for discounting.volatilitySurfaceName
- The volatility surface to be used.quotingConvention
- The quoting convention of the value returned by thegetValue(double, net.finmath.marketdata.model.AnalyticModel)
-method.
-
Cap
public Cap(Schedule schedule, String forwardCurveName, double strike, boolean isStrikeMoneyness, String discountCurveName, String volatilitySurfaceName)Create a Caplet with a given schedule, strike on a given forward curve (by name) with a given discount curve and volatility surface (by name). The valuation is performed using analytic valuation formulas for the underlying caplets.- Parameters:
schedule
- A given payment schedule, i.e., a collection ofPeriod
s with fixings, payments and period length.forwardCurveName
- The forward curve to be used for the forward of the index.strike
- The given strike (or moneyness).isStrikeMoneyness
- If true, then the strike argument is interpreted as moneyness, i.e. we calculate an ATM forward from the schedule.discountCurveName
- The discount curve to be used for discounting.volatilitySurfaceName
- The volatility surface to be used.
-
-
Method Details
-
getValue
Description copied from interface:AnalyticProduct
Return the valuation of the product using the given model. The model has to implement the modes ofAnalyticModel
.- Parameters:
evaluationTime
- The evaluation time as double. Cash flows prior and including this time are not considered.model
- The model under which the product is valued.- Returns:
- The value of the product using the given model.
-
getValueAsPrice
Returns the value of this product under the given model.- Parameters:
evaluationTime
- Evaluation time.model
- The model.- Returns:
- Value of this product und the given model.
-
getATMForward
Return the ATM forward for this cap. The ATM forward is the fixed rate K such that the value of the payoffs \( F(t_i) - K \) is zero, where \( F(t_i) \) is the ATM forward of the i-th caplet. Note however that the is a convention to determine the ATM forward of a cap from the payoffs excluding the first one. The reason here is that for non-forward starting cap, the first period is already fixed, i.e. it has no vega.- Parameters:
model
- The model to retrieve the forward curve from (by name).isFirstPeriodIncluded
- If true, the forward will be determined by considering the periods after removal of the first periods (except, if the Cap consists only of 1 period).- Returns:
- The ATM forward of this cap.
-
getImpliedVolatility
public double getImpliedVolatility(double evaluationTime, AnalyticModel model, VolatilitySurface.QuotingConvention quotingConvention)Returns the value of this cap in terms of an implied volatility (of a flat caplet surface).- Parameters:
evaluationTime
- The evaluation time as double. Cash flows prior and including this time are not considered.model
- The model under which the product is valued.quotingConvention
- The quoting convention requested for the return value.- Returns:
- The value of the product using the given model in terms of a implied volatility.
-
getForwardCurveName
Returns the name of the forward curve references by this cap.- Returns:
- the forward curve name.
-
getStrike
public double getStrike()Returns the strike of this caplet.- Returns:
- the strike
-
getDiscountCurveName
Returns the name of the discount curve referenced by this cap.- Returns:
- the discount curve name
-
toString
-