Class DigitalOption

  • 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 Detail

      • 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 Detail

      • 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.