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
ConstructorDescriptionCap(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 ith 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 nonforward 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
