Class BermudanDigitalOption

All Implemented Interfaces:
Product, AssetMonteCarloProduct, MonteCarloProduct

public class BermudanDigitalOption extends AbstractAssetMonteCarloProduct
This class implements the valuation of a Bermudan digital option paying
\( N_{i} \cdot \mathbb{1}(S(T_{i}) - K_{i}) \) at \( T_{i} \),
when exercised in \( T_{i} \), where \( N_{i} \) is the notional, \( \mathbb{1} \) is the indicator function, \( S \) is the underlying, \( K_{i} \) is the strike and \( T_{i} \) the exercise date. The code "demos" the two prominent methods for the valuation of Bermudan (American) products:
  • The valuation may be performed using an estimation of the conditional expectation to determine the exercise criteria. Apart from a possible foresight bias induced by the Monte-Carlo errors, this give a lower bound for the Bermudan value.
  • The valuation may be performed using the dual method based on a minimization problem, which gives an upper bound.
Version:
1.4
Author:
Christian Fries
  • Constructor Details

    • BermudanDigitalOption

      public BermudanDigitalOption(double[] exerciseDates, double[] notionals, double[] strikes, BermudanDigitalOption.ExerciseMethod exerciseMethod, Map<String,Object> properties)
      Create a Bermudan option paying N(i) * (S(T(i)) - K(i)) at T(i), when exercised in T(i), where N(i) is the notional, S is the underlying, K(i) is the strike and T(i) the exercise date.
      Parameters:
      exerciseDates - The exercise dates (T(i)), given as doubles.
      notionals - The notionals (N(i)) for each exercise date.
      strikes - The strikes (K(i)) for each exercise date.
      exerciseMethod - The exercise method to be used for the estimation of the exercise boundary.
      properties - Use this map to specify special product parameters, e.g. "orderOfRegressionPolynomial" (Integer).
  • Method Details

    • getValue

      public RandomVariable getValue(double evaluationTime, AssetModelMonteCarloSimulationModel model) throws CalculationException
      This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime. Cash-flows prior evaluationTime are not considered.
      Specified by:
      getValue in interface AssetMonteCarloProduct
      Specified by:
      getValue in class AbstractAssetMonteCarloProduct
      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.