All Implemented Interfaces:
Product, AssetMonteCarloProduct, MonteCarloProduct
Direct Known Subclasses:
SingleAssetMonteCarloProductFactory.DigitalOptionMonteCarlo

public class DigitalOption extends AbstractAssetMonteCarloProduct
Implements the valuation of a digital option on a single asset. Given a model for an asset S, the digital option with strike K, maturity T pays
V(T) = indicator(S(T) - K) in T.
That is 1 if S(T) > K otherwise 0. The getValue method of this class will return the random variable N(t) * V(T) / N(T), where N is the numeraire provided by the model. If N(t) is deterministic, calling getAverage on this random variable will result in the value. Otherwise a conditional expectation has to be applied.
Version:
1.3
Author:
Christian Fries
  • Constructor Details

    • DigitalOption

      public DigitalOption(double maturity, double strike, int underlyingIndex)
      Construct a product representing an digital option on an asset S (where S the asset with index underlyingIndex from the model - single asset case).
      Parameters:
      maturity - The maturity T in the option payoff indicator(S(T)-K)
      strike - The strike K in the option payoff indicator(S(T)-K).
      underlyingIndex - The index of the underlying to be fetched from the model.
    • DigitalOption

      public DigitalOption(double maturity, double strike)
      Construct a product representing an digital option on an asset S (where S the asset with index 0 from the model - single asset case).
      Parameters:
      maturity - The maturity T in the option payoff indicator(S(T)-K)
      strike - The strike K in the option payoff indicator(S(T)-K).
    • DigitalOption

      public DigitalOption(String nameOfUnderlying, double maturity, double strike)
  • 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. 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 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.
    • getMaturity

      public double getMaturity()
      Returns the maturity of the option.
      Returns:
      the maturity of the option.
    • getStrike

      public double getStrike()
      Returns the strike of the option.
      Returns:
      the strike of the option.
    • getUnderlyingIndex

      public Integer getUnderlyingIndex()
      Returns the index of the asset requested from model.getUnderlying(time, assetIndex) to get the underlying.
      Returns:
      the index of the asset requested from model.getUnderlying(time, assetIndex) to get the underlying.
    • getNameOfUnderlying

      public String getNameOfUnderlying()
      Returns a string name of the underlying (if supported), otherwise null.
      Returns:
      a string name of the underlying (if supported), otherwise null.
    • toString

      public String toString()
      Overrides:
      toString in class AbstractMonteCarloProduct