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 Details

    • 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:
      maturity - The maturity T in the option payoff maxAS(T)-K,0)
      strike - The strike K in the option payoff max(A(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:
      maturity - The maturity T in the option payoff maxAS(T)-K,0)
      strike - The strike K in the option payoff max(A(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 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.
    • 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.