- java.lang.Object
-
- net.finmath.montecarlo.AbstractMonteCarloProduct
-
- net.finmath.montecarlo.interestrate.products.AbstractLIBORMonteCarloProduct
-
- net.finmath.montecarlo.interestrate.products.BermudanSwaption
-
- All Implemented Interfaces:
Product
,RegressionBasisFunctionsProvider
,TermStructureMonteCarloProduct
,MonteCarloProduct
public class BermudanSwaption extends AbstractLIBORMonteCarloProduct implements RegressionBasisFunctionsProvider
Implements the valuation of a Bermudan swaption under aLIBORModelMonteCarloSimulationModel
- Version:
- 1.3
- Author:
- Christian Fries
- Date:
- 06.12.2009
-
-
Constructor Summary
Constructors Constructor Description BermudanSwaption(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RandomVariable[]
getBasisFunctions(double fixingDate, LIBORModelMonteCarloSimulationModel model)
Return the basis functions for the regression suitable for this product.RandomVariable[]
getBasisFunctions(double fixingDate, MonteCarloSimulationModel model)
Return the basis functions for the regression suitable for this product.ConditionalExpectationEstimator
getConditionalExpectationEstimator(double fixingDate, LIBORModelMonteCarloSimulationModel model)
Return the conditional expectation estimator suitable for this product.double[]
getExerciseTimes()
double
getFinalMaturity()
double[]
getFixingDates(double evaluationTime)
boolean
getIsCallable()
double[]
getPaymentDates()
double[]
getPeriodLengths()
double[]
getPeriodNotionals()
SimpleSwap
getSwap()
double[]
getSwapRates()
RandomVariable
getValue(double evaluationTime, LIBORModelMonteCarloSimulationModel model)
This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime.Map<String,Object>
getValues(double evaluationTime, LIBORModelMonteCarloSimulationModel 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.AbstractLIBORMonteCarloProduct
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 Detail
-
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 Detail
-
getValues
public Map<String,Object> getValues(double evaluationTime, LIBORModelMonteCarloSimulationModel model) throws CalculationException
Description 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 classAbstractLIBORMonteCarloProduct
- 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, LIBORModelMonteCarloSimulationModel model) throws CalculationException
This 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 classAbstractLIBORMonteCarloProduct
- 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, LIBORModelMonteCarloSimulationModel model) throws CalculationException
Return 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 CalculationException
Return 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 CalculationException
Return 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
public SimpleSwap 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()
-
-