Class AsianOption

  • All Implemented Interfaces:
    Product, AssetMonteCarloProduct, MonteCarloProduct

    public class AsianOption
    extends AbstractAssetMonteCarloProduct
    Implements the valuation of an Asian option. Given a model for an asset S, the Asian option with strike K, maturity T and averaging points Ti for i = 1,...,n pays
    max(A(T) - K , 0) in T
    where
    A(T) = 1/n (S(T1)+ ... + S(Tn))
    Version:
    1.2
    Author:
    Christian Fries
    • Constructor Detail

      • AsianOption

        public AsianOption​(double maturity,
                           double strike,
                           TimeDiscretization timesForAveraging,
                           Integer underlyingIndex)
        Construct a product representing an Asian option on an asset S (where S the asset with index 0 from the model - single asset case). A(T) = 1/n sum_{i=1,...,n} S(t_i), where t_i are given observation times.
        Parameters:
        strike - The strike K in the option payoff max(A(T)-K,0).
        maturity - The maturity T in the option payoff maxAS(T)-K,0)
        timesForAveraging - The times t_i used in the calculation of A(T) = 1/n sum_{i=1,...,n} S(t_i).
        underlyingIndex - The index of the asset S to be fetched from the model
      • AsianOption

        public AsianOption​(double maturity,
                           double strike,
                           TimeDiscretization timesForAveraging)
        Construct a product representing an Asian option on an asset S (where S the asset with index 0 from the model - single asset case). A(T) = 1/n sum_{i=1,...,n} S(t_i), where t_i are given observation times.
        Parameters:
        strike - The strike K in the option payoff max(A(T)-K,0).
        maturity - The maturity T in the option payoff maxAS(T)-K,0)
        timesForAveraging - The times t_i used in the calculation of A(T) = 1/n sum_{i=1,...,n} S(t_i).
    • 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.
      • getTimesForAveraging

        public TimeDiscretization getTimesForAveraging()
        Returns the TimeDiscretization used for averaging in the asian option.
        Returns:
        the TimeDiscretization used for averaging in the asian 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.