Market
Class ConstantVolatilityAssetQMC

java.lang.Object
  extended byMarket.Asset
      extended byMarket.ConstantVolatilityAsset
          extended byMarket.ConstantVolatilityAssetQMC

public class ConstantVolatilityAssetQMC
extends ConstantVolatilityAsset

Constant volatility asset driven by quasi normal vectors based on a low disceapncy sequence sequence instead of standard multinormal vectors.

Overrides ConstantVolatilityAsset.newWienerIncrements(int) with quasi normal increments based on the low discrepancy sequence (see LowDiscrepancySequence.nextQuasiNormalVector()).

Warning: the single time step ConstantVolatilityAsset.timeStep(int, int) and ConstantVolatilityAsset.pathSegment(int, int, Triggers.Trigger) still use standard normal deviates. Only paths and path branches are driven by the Sobol sequence.


Field Summary
static int HALTON
           
static int SOBOL
           
static int UNIFORM
           
 
Constructor Summary
ConstantVolatilityAssetQMC(int T, double dt, int nSignChange, double S_0, double r, double q, double mu, double sigma, int lowDiscrepancySequence)
          Construtor, nSignChange is now irrelevant since super.newWienerIncrements is overriden and no longr uses sign changes.
 
Method Summary
 LowDiscrepancySequence get_Sq()
          The low discrepancy squence driving the full paths.
 void newWienerIncrements(int t)
          Computes a new sequence of standard normal increments Z[j], j=t,t+1,...T-1, needed to compute a path forward from time t to the horizon.
 void simulationInit(int t)
          Allocates a quasi normal generator of the correct dimension to drive a branch simulation.
 
Methods inherited from class Market.ConstantVolatilityAsset
get_mu, get_r, get_sigma, get_sigmaSqrtdt, markovChain, newPath, newPathBranch, pathSegment, Sigma, timeStep, timeStep
 
Methods inherited from class Market.Asset
dividendReductionFactor, forwardPrice, get_B, get_dt, get_nSignChange, get_q, get_S_0, get_S, get_T, get_volatilityIsDeterministic, get_Z
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HALTON

public static final int HALTON
See Also:
Constant Field Values

SOBOL

public static final int SOBOL
See Also:
Constant Field Values

UNIFORM

public static final int UNIFORM
See Also:
Constant Field Values
Constructor Detail

ConstantVolatilityAssetQMC

public ConstantVolatilityAssetQMC(int T,
                                  double dt,
                                  int nSignChange,
                                  double S_0,
                                  double r,
                                  double q,
                                  double mu,
                                  double sigma,
                                  int lowDiscrepancySequence)
Construtor, nSignChange is now irrelevant since super.newWienerIncrements is overriden and no longr uses sign changes.

Parameters:
T - Number of time steps to horizon.
dt - Size of time step.
nSignChange - irrelevant, value 2 is used below.
S_0 - Asset price S(0).
r - Constant short rate.
q - Constant dividend yield.
mu - Constant asset price drift.
sigma - Constant asset price volatility.
lowDiscrepancySequence - must be HALTON, SOBOL or UNIFORM.
Method Detail

get_Sq

public LowDiscrepancySequence get_Sq()

The low discrepancy squence driving the full paths.


simulationInit

public void simulationInit(int t)

Allocates a quasi normal generator of the correct dimension to drive a branch simulation.

Must be called before every new simulation run of branches of an existing path.

Overrides:
simulationInit in class ConstantVolatilityAsset
Parameters:
t - Current time (time of branching).

newWienerIncrements

public void newWienerIncrements(int t)

Computes a new sequence of standard normal increments Z[j], j=t,t+1,...T-1, needed to compute a path forward from time t to the horizon. These sequences are produced in independent groups of size nSignChange each. In each group only the signs are changed.

If t=0 a path simulation is under way while in case t>0 a simulation of branches of an existing path is taking place. Correspondingly the pathCounter or branchCounter variables are incremented.

Overrides:
newWienerIncrements in class ConstantVolatilityAsset
Parameters:
t - Current time.