Package net.finmath.marketdata.products
Class Cap
- java.lang.Object
-
- net.finmath.marketdata.products.AbstractAnalyticProduct
-
- net.finmath.marketdata.products.Cap
-
- All Implemented Interfaces:
AnalyticProduct
,Product
- Direct Known Subclasses:
CapShiftedVol
public class Cap extends AbstractAnalyticProduct
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, seegetATMForward(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
Constructors Constructor Description 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).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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
getATMForward(AnalyticModel model, boolean isFirstPeriodIncluded)
Return the ATM forward for this cap.String
getDiscountCurveName()
Returns the name of the discount curve referenced by this cap.String
getForwardCurveName()
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
getStrike()
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.String
toString()
-
Methods inherited from class net.finmath.marketdata.products.AbstractAnalyticProduct
getValue, getValue
-
-
-
-
Constructor Detail
-
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 Detail
-
getValue
public double getValue(double evaluationTime, AnalyticModel model)
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
public double getValueAsPrice(double evaluationTime, AnalyticModel model)
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
public double getATMForward(AnalyticModel model, boolean isFirstPeriodIncluded)
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
public String 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
public String getDiscountCurveName()
Returns the name of the discount curve referenced by this cap.- Returns:
- the discount curve name
-
-