Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## umontreal.iro.lecuyer.stochprocess
Class VarianceGammaProcess

    java.lang.Object
      umontreal.iro.lecuyer.stochprocess.StochasticProcess
          umontreal.iro.lecuyer.stochprocess.VarianceGammaProcess

Direct Known Subclasses:
  VarianceGammaProcessDiff

    public class VarianceGammaProcess

extends StochasticProcess

This class represents a variance gamma (VG) process {S(t) = X(t;θ, σ, ν) : t >= 0}. This process is obtained as a subordinate of the Brownian motion process B(t;θ, σ) using the operational time G(t;1, ν) (see):

X(t;θ, σ, ν) : = B(G(t;1, ν), θ, σ).

See also for applications to modelling asset returns and option pricing.

The process is sampled as follows: when `generatePath()` is called, the method `generatePath()` of the inner `GammaProcess` is called; its path is then used to set the observation times of the `BrownianMotion`. Finally, the method `generatePath()` of the `BrownianMotion` is called. Warning: If one wants to reduced the variance as much as possible in a QMC simulation, this way of proceeding is not optimal. Use the method `generatePath(uniform01)` instead.

If one calls the `nextObservation` method, the operational time is generated first, followed by the corresponding brownian motion increment, which is then returned.

Note that if one wishes to use bridge sampling with the `nextObservation` method, both the gamma process G and the Brownian motion process B should use bridge sampling so that their observations are synchronized.

Field Summary

Fields inherited from class umontreal.iro.lecuyer.stochprocess.StochasticProcess
`path`

Constructor Summary
`VarianceGammaProcess()`
`VarianceGammaProcess(double s0, BrownianMotion BM, GammaProcess Gamma)` Constructs a new `VarianceGammaProcess`.
`VarianceGammaProcess(double s0, double theta, double sigma, double nu, RandomStream stream)` .

Method Summary
`double[]` | `generatePath()` Generates and returns the path.
`double[]` | `generatePath(double[] uniform01)` Similar to the usual `generatePath()`, but here the uniform random numbers used for the simulation must be provided to the method.
`BrownianMotion` | `getBrownianMotion()` Returns a reference to the inner `BrownianMotion`.
`GammaProcess` | `getGammaProcess()` Returns a reference to the inner `GammaProcess`.
`double` | `getNu()` Returns the value of the parameter ν.
`double` | `getSigma()` Returns the value of the parameter σ.
`RandomStream` | `getStream()` Returns the random stream of the `BrownianMotion` process, which should be the same as for the `GammaProcess`.
`double` | `getTheta()` Returns the value of the parameter θ.
`double` | `nextObservation()` Generates the observation for the next time.
`void` | `resetStartProcess()` Resets the observation index and counter to 0 and applies the `resetStartProcess` method to the `BrownianMotion` and the `GammaProcess` objects used to generate this process.
`void` | `setObservationTimes(double[] t, int d)` Sets the observation times on the `VarianceGammaProcess` as usual, but also sets the observation times of the underlying `GammaProcess`.
`void` | `setParams(double s0, double theta, double sigma, double nu)` Sets the parameters S(t0) = [tex2html_wrap_inline345], θ = [tex2html_wrap_inline347], σ = [tex2html_wrap_inline349] and ν = [tex2html_wrap_inline351] of the process.
`void` | `setStream(RandomStream stream)` Resets the `RandomStream`'s.

Methods inherited from class umontreal.iro.lecuyer.stochprocess.StochasticProcess
`generatePath, getArrayMappingCounterToIndex, getCurrentObservation, getCurrentObservationIndex, getNbObservationTimes, getObservation, getObservationTimes, getPath, getSubpath, getX0, hasNextObservation, setObservationTimes`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### VarianceGammaProcess

    public VarianceGammaProcess()

### VarianceGammaProcess

    public VarianceGammaProcess(double s0,
                                double theta,
                                double sigma,
                                double nu,
                                RandomStream stream)

  . Constructs a new `VarianceGammaProcess` with parameters θ = , σ = , ν = and initial value S(t0) = . `stream` is used to generate both the `BrownianMotion` B and the `GammaProcess` G in.

### VarianceGammaProcess

    public VarianceGammaProcess(double s0,
                                BrownianMotion BM,
                                GammaProcess Gamma)

  Constructs a new `VarianceGammaProcess`. The parameters θ and σ are set to the parameters μ and σ, respectively, of the `BrownianMotion` `BM` and the parameter ν is set to the parameter ν of the `GammaProcess` `Gamma`. The parameters μ and x0 of the `GammaProcess` are overwritten to equal 1 and 0 respectively. The initial value of the process is S(t0) = [tex2html_wrap_inline342].

Method Detail

### nextObservation

    public double nextObservation()

  Generates the observation for the next time. It also works with bridge sampling; however both `BrownianMotionBridge` and `GammaProcessBridge` must be used in the constructor in that case. Furthermore, for bridge sampling, the order of the observations is that of the bridge, not sequential order.

  Overrides:
    `nextObservation` in class `StochasticProcess`

### generatePath

    public double[] generatePath()

  Generates and returns the path. To do so, it first generates the complete path of the inner `GammaProcess` and sets the observation times of the inner `BrownianMotion` to this path. This method is not optimal to reduce the variance in QMC simulations; use `generatePath(double[] uniform01)` for that.

  Specified by:
    `generatePath` in class `StochasticProcess`

### generatePath

    public double[] generatePath(double[] uniform01)

  Similar to the usual `generatePath()`, but here the uniform random numbers used for the simulation must be provided to the method. This allows to properly use the uniform random variates in QMC simulations. This method divides the table of uniform random numbers `uniform01` in two smaller tables, the first one, containing the odd indices of `uniform01` which are used to generate the path of the inner `GammaProcess`, and the even indices (in the second table) are used to generate the path of the inner `BrownianMotion`. This way of proceeding reduces the variance as much as possible for QMC simulations.

### resetStartProcess

    public void resetStartProcess()

  Resets the observation index and counter to 0 and applies the `resetStartProcess` method to the `BrownianMotion` and the `GammaProcess` objects used to generate this process.

  Overrides:
    `resetStartProcess` in class `StochasticProcess`

### setParams

    public void setParams(double s0,
                          double theta,
                          double sigma,
                          double nu)

  Sets the parameters S(t0) = [tex2html_wrap_inline345], θ = [tex2html_wrap_inline347], σ = [tex2html_wrap_inline349] and ν = [tex2html_wrap_inline351] of the process. Warning: This method will recompute some quantities stored internally, which may be slow if called repeatedly.

### getTheta

    public double getTheta()

  Returns the value of the parameter θ.

### getSigma

    public double getSigma()

  Returns the value of the parameter σ.

### getNu

    public double getNu()

  Returns the value of the parameter ν.

### setObservationTimes

    public void setObservationTimes(double[] t,
                                    int d)

  Sets the observation times on the `VarianceGammaProcess` as usual, but also sets the observation times of the underlying `GammaProcess`. It furthermore sets the starting value of the `GammaProcess` to `t[0]`.

  Overrides:
    `setObservationTimes` in class `StochasticProcess`

### setStream

    public void setStream(RandomStream stream)

  Resets the `RandomStream`'s. Warning: this method sets both the `RandomStream` of the `BrownianMotion` and of the `GammaProcess` to the same `RandomStream`.

  Specified by:
    `setStream` in class `StochasticProcess`

### getStream

    public RandomStream getStream()

  Returns the random stream of the `BrownianMotion` process, which should be the same as for the `GammaProcess`.

  Specified by:
    `getStream` in class `StochasticProcess`

### getBrownianMotion

    public BrownianMotion getBrownianMotion()

  Returns a reference to the inner `BrownianMotion`.

### getGammaProcess

    public GammaProcess getGammaProcess()

  Returns a reference to the inner `GammaProcess`.

Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.