- 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.ConditionalExpectationEstimatorgetConditionalExpectationEstimator(double fixingDate, LIBORModelMonteCarloSimulationModel model)Return the conditional expectation estimator suitable for this product.double[]getExerciseTimes()doublegetFinalMaturity()double[]getFixingDates(double evaluationTime)booleangetIsCallable()double[]getPaymentDates()double[]getPeriodLengths()double[]getPeriodNotionals()SimpleSwapgetSwap()double[]getSwapRates()RandomVariablegetValue(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:TermStructureMonteCarloProductThis 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:
getValuesin interfaceTermStructureMonteCarloProduct- Overrides:
getValuesin 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:
getValuein interfaceTermStructureMonteCarloProduct- Specified by:
getValuein 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:
getBasisFunctionsin 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()
-
-