Class VarianceGammaProcess

  • All Implemented Interfaces:
    Serializable, IndependentIncrements

    public class VarianceGammaProcess
    extends Object
    implements IndependentIncrements, Serializable
    Implementation of a time-discrete n-dimensional Variance Gamma process via Brownian subordination through a Gamma Process. To simulate the Variance Gamma process with paramters \( (\sigma,\theta,\nu) \) we proceed in two steps:
    • we simulate the path of a GammaProcess with parameters \( \frac{1}{\nu} and \nu \)
    • use the GammaProcess as a subordinator for a Brownian motion with drift
    \( \theta \Gamma(t) + \sigma W(\Gamma(t)) \) The class is immutable and thread safe. It uses lazy initialization.
    Version:
    1.0
    Author:
    Alessandro Gnoatto
    See Also:
    Serialized Form
    • Constructor Detail

      • VarianceGammaProcess

        public VarianceGammaProcess​(double sigma,
                                    double nu,
                                    double theta,
                                    TimeDiscretization timeDiscretization,
                                    int numberOfFactors,
                                    int numberOfPaths,
                                    int seed)
    • Method Detail

      • getIncrement

        public RandomVariable getIncrement​(int timeIndex,
                                           int factor)
        Description copied from interface: IndependentIncrements
        Return the increment for a given timeIndex and given factor. The method returns the random variable Δ Xj(ti) := Xj(ti+1)-X(ti) for the given time index i and a given factor (index) j
        Specified by:
        getIncrement in interface IndependentIncrements
        Parameters:
        timeIndex - The time index (corresponding to the this class's time discretization)
        factor - The index of the factor (independent scalar increment)
        Returns:
        The factor (component) of the increments (a random variable)
      • getSigma

        public double getSigma()
        Returns:
        the sigma
      • getNu

        public double getNu()
        Returns:
        the nu
      • getTheta

        public double getTheta()
        Returns:
        the theta
      • getBrownianMotion

        public BrownianMotion getBrownianMotion()
        Returns:
        the Brownian motion
      • getGammaProcess

        public GammaProcess getGammaProcess()
        Returns:
        the Gamma subordinator
      • getRandomVariableForConstant

        public RandomVariable getRandomVariableForConstant​(double value)
        Description copied from interface: IndependentIncrements
        Returns a random variable which is initialized to a constant, but has exactly the same number of paths or discretization points as the ones used by this BrownianMotion.
        Specified by:
        getRandomVariableForConstant in interface IndependentIncrements
        Parameters:
        value - The constant value to be used for initialized the random variable.
        Returns:
        A new random variable.
      • getCloneWithModifiedSeed

        public IndependentIncrements getCloneWithModifiedSeed​(int seed)
        Description copied from interface: IndependentIncrements
        Return a new object implementing BrownianMotion having the same specifications as this object but a different seed for the random number generator. This method is useful if you like to make Monte-Carlo samplings by changing the seed.
        Specified by:
        getCloneWithModifiedSeed in interface IndependentIncrements
        Parameters:
        seed - New value for the seed.
        Returns:
        New object implementing BrownianMotion.