java.lang.Object
net.finmath.montecarlo.AbstractMonteCarloProduct
net.finmath.montecarlo.interestrate.products.AbstractTermStructureMonteCarloProduct
net.finmath.montecarlo.interestrate.products.BermudanSwaption
- All Implemented Interfaces:
Product
,RegressionBasisFunctionsProvider
,TermStructureMonteCarloProduct
,MonteCarloProduct
public class BermudanSwaption
extends AbstractTermStructureMonteCarloProduct
implements RegressionBasisFunctionsProvider
Implements the valuation of a Bermudan swaption under a
LIBORModelMonteCarloSimulationModel
- Version:
- 1.3
- Author:
- Christian Fries
- Date:
- 06.12.2009
-
Constructor Summary
ConstructorsConstructorDescriptionBermudanSwaption(boolean[] isPeriodStartDateExerciseDate, double[] fixingDates, double[] periodLength, double[] paymentDates, double[] periodNotionals, double[] swaprates)
BermudanSwaption(boolean[] isPeriodStartDateExerciseDate, double[] fixingDates, double[] periodLength, double[] paymentDates, double[] periodNotionals, double[] swaprates, boolean isCallable)
BermudanSwaption(boolean[] isPeriodStartDateExerciseDate, double[] fixingDates, double[] periodLength, double[] paymentDates, double[] periodNotionals, double[] swaprates, boolean isCallable, RegressionBasisFunctionsProvider regressionBasisFunctionsProvider)
-
Method Summary
Modifier and TypeMethodDescriptiongetBasisFunctions(double fixingDate, LIBORModelMonteCarloSimulationModel model)
Return the basis functions for the regression suitable for this product.getBasisFunctions(double fixingDate, MonteCarloSimulationModel model)
Return the basis functions for the regression suitable for this product.getConditionalExpectationEstimator(double fixingDate, TermStructureMonteCarloSimulationModel model)
Return the conditional expectation estimator suitable for this product.double[]
double
double[]
getFixingDates(double evaluationTime)
boolean
double[]
double[]
double[]
getSwap()
double[]
getValue(double evaluationTime, TermStructureMonteCarloSimulationModel model)
This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime.getValues(double evaluationTime, TermStructureMonteCarloSimulationModel model)
This method returns the valuation of the product within the specified model, evaluated at a given evalutationTime.Methods inherited from class net.finmath.montecarlo.interestrate.products.AbstractTermStructureMonteCarloProduct
getFactorDrift, getValue, getValueForModifiedData
Methods inherited from class net.finmath.montecarlo.AbstractMonteCarloProduct
getCurrency, getValue, getValue, getValues, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface net.finmath.montecarlo.MonteCarloProduct
getCurrency, getValue, getValue, getValues, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData
-
Constructor Details
-
BermudanSwaption
public BermudanSwaption(boolean[] isPeriodStartDateExerciseDate, double[] fixingDates, double[] periodLength, double[] paymentDates, double[] periodNotionals, double[] swaprates, boolean isCallable, RegressionBasisFunctionsProvider regressionBasisFunctionsProvider)- Parameters:
isPeriodStartDateExerciseDate
- If true, we may exercise at period startfixingDates
- Vector of fixing datesperiodLength
- Period lengths (must have same length as fixing dates)paymentDates
- Vector of payment dates (must have same length as fixing dates)periodNotionals
- Period notionals (must have same length as fixing dates)swaprates
- Vector of strikes (must have same length as fixing dates)isCallable
- If true, the product represent the Bermudan right to enter into a swap. If false the product represents the Bermudan right to terminate a running swap.regressionBasisFunctionsProvider
- Used to determine the regression basis functions for the conditional expectation operator.
-
BermudanSwaption
public BermudanSwaption(boolean[] isPeriodStartDateExerciseDate, double[] fixingDates, double[] periodLength, double[] paymentDates, double[] periodNotionals, double[] swaprates, boolean isCallable)- Parameters:
isPeriodStartDateExerciseDate
- If true, we may exercise at period startfixingDates
- Vector of fixing datesperiodLength
- Period lengths (must have same length as fixing dates)paymentDates
- Vector of payment dates (must have same length as fixing dates)periodNotionals
- Period notionals (must have same length as fixing dates)swaprates
- Vector of strikes (must have same length as fixing dates)isCallable
- If true, the product represent the Bemrudan right to enter into a swap. If false the product represents the Bermudan right to terminate a running swap.
-
BermudanSwaption
public BermudanSwaption(boolean[] isPeriodStartDateExerciseDate, double[] fixingDates, double[] periodLength, double[] paymentDates, double[] periodNotionals, double[] swaprates)- Parameters:
isPeriodStartDateExerciseDate
- If true, we may exercise at period startfixingDates
- Vector of fixing datesperiodLength
- Period lengths (must have same length as fixing dates)paymentDates
- Vector of payment dates (must have same length as fixing dates)periodNotionals
- Period notionals (must have same length as fixing dates)swaprates
- Vector of strikes (must have same length as fixing dates)
-
-
Method Details
-
getValues
public Map<String,Object> getValues(double evaluationTime, TermStructureMonteCarloSimulationModel model) throws CalculationExceptionDescription copied from interface:TermStructureMonteCarloProduct
This method returns the valuation of the product within the specified model, evaluated at a given evalutationTime. The valuation is returned in terms of a map. The map may contain additional information. Note: For a lattice this is often the value conditional to evalutationTime, for a Monte-Carlo simulation this is the (sum of) value discounted to evaluation time. Cashflows prior evaluationTime are not considered.- Specified by:
getValues
in interfaceTermStructureMonteCarloProduct
- Overrides:
getValues
in classAbstractTermStructureMonteCarloProduct
- Parameters:
evaluationTime
- The time on which this products value should be observed.model
- The model used to price the product.- Returns:
- The random variable representing the value of the product discounted to evaluation time
- Throws:
CalculationException
- Thrown if the valuation fails, specific cause may be available via thecause()
method.
-
getValue
public RandomVariable getValue(double evaluationTime, TermStructureMonteCarloSimulationModel model) throws CalculationExceptionThis method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime. Note: For a lattice this is often the value conditional to evalutationTime, for a Monte-Carlo simulation this is the (sum of) value discounted to evaluation time. Cashflows prior evaluationTime are not considered.- Specified by:
getValue
in interfaceTermStructureMonteCarloProduct
- Specified by:
getValue
in classAbstractTermStructureMonteCarloProduct
- Parameters:
evaluationTime
- The time on which this products value should be observed.model
- The model used to price the product.- Returns:
- The random variable representing the value of the product discounted to evaluation time
- Throws:
CalculationException
- Thrown if the valuation fails, specific cause may be available via thecause()
method.
-
getConditionalExpectationEstimator
public ConditionalExpectationEstimator getConditionalExpectationEstimator(double fixingDate, TermStructureMonteCarloSimulationModel model) throws CalculationExceptionReturn the conditional expectation estimator suitable for this product.- Parameters:
fixingDate
- The condition time.model
- The model- Returns:
- The conditional expectation estimator suitable for this product
- Throws:
CalculationException
- Thrown if the valuation fails, specific cause may be available via thecause()
method.
-
getBasisFunctions
public RandomVariable[] getBasisFunctions(double fixingDate, MonteCarloSimulationModel model) throws CalculationExceptionReturn the basis functions for the regression suitable for this product.- Specified by:
getBasisFunctions
in interfaceRegressionBasisFunctionsProvider
- Parameters:
fixingDate
- The condition time.model
- The model- Returns:
- The basis functions for the regression suitable for this product.
- Throws:
CalculationException
- Thrown if the valuation fails, specific cause may be available via thecause()
method.
-
getBasisFunctions
public RandomVariable[] getBasisFunctions(double fixingDate, LIBORModelMonteCarloSimulationModel model) throws CalculationExceptionReturn the basis functions for the regression suitable for this product.- Parameters:
fixingDate
- The condition time.model
- The model- Returns:
- The basis functions for the regression suitable for this product.
- Throws:
CalculationException
- Thrown if the valuation fails, specific cause may be available via thecause()
method.
-
getExerciseTimes
public double[] getExerciseTimes() -
getFixingDates
public double[] getFixingDates(double evaluationTime) -
getSwap
-
getPaymentDates
public double[] getPaymentDates() -
getPeriodNotionals
public double[] getPeriodNotionals() -
getSwapRates
public double[] getSwapRates() -
getPeriodLengths
public double[] getPeriodLengths() -
getFinalMaturity
public double getFinalMaturity() -
getIsCallable
public boolean getIsCallable()
-