Class 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 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 start
      fixingDates - Vector of fixing dates
      periodLength - 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 start
      fixingDates - Vector of fixing dates
      periodLength - 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 start
      fixingDates - Vector of fixing dates
      periodLength - 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 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 interface TermStructureMonteCarloProduct
      Overrides:
      getValues in class AbstractTermStructureMonteCarloProduct
      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 the cause() method.
    • getValue

      public RandomVariable getValue(double evaluationTime, TermStructureMonteCarloSimulationModel 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 interface TermStructureMonteCarloProduct
      Specified by:
      getValue in class AbstractTermStructureMonteCarloProduct
      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 the cause() method.
    • getConditionalExpectationEstimator

      public ConditionalExpectationEstimator getConditionalExpectationEstimator(double fixingDate, TermStructureMonteCarloSimulationModel 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 the cause() 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 interface RegressionBasisFunctionsProvider
      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 the cause() 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 the cause() 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()