Class LogNormalProcess

  • Direct Known Subclasses:
    MonteCarloBlackScholesModel2

    public abstract class LogNormalProcess
    extends Object
    This class is an abstract base class to implement an Euler scheme of a multi-dimensional multi-factor log-normal Ito process. The dimension is called numberOfComponents here. The default for numberOfFactors is 1.
    Version:
    1.5
    Author:
    Christian Fries
    Date:
    19.04.2008
    • Constructor Detail

      • LogNormalProcess

        public LogNormalProcess​(int numberOfComponents,
                                BrownianMotion brownianMotion)
        Create a log normal process.
        Parameters:
        numberOfComponents - The number of components (scalar processes).
        brownianMotion - A Brownian motion
      • LogNormalProcess

        public LogNormalProcess​(TimeDiscretization timeDiscretization,
                                int numberOfComponents,
                                int numberOfPaths)
        Create a simulation of log normal process.
        Parameters:
        timeDiscretization - The time discretization of the process.
        numberOfComponents - The number of components (the dimension of the process).
        numberOfPaths - The number of path of the simulation.
      • LogNormalProcess

        public LogNormalProcess​(TimeDiscretization timeDiscretization,
                                int numberOfComponents,
                                int numberOfFactors,
                                int numberOfPaths,
                                int seed)
        Create a simulation of log normal process.
        Parameters:
        timeDiscretization - The time discretization of the process.
        numberOfComponents - The number of components (the dimension of the process).
        numberOfFactors - The number of factors of the process.
        numberOfPaths - The number of path of the simulation.
        seed - The seed of the underlying random number generator.
    • Method Detail

      • getInitialValue

        public abstract RandomVariable[] getInitialValue()
      • getDrift

        public RandomVariable[] getDrift​(int timeIndex,
                                         RandomVariable[] realizationAtTimeIndex,
                                         RandomVariable[] realizationPredictor)
        Get the the drift.
        Parameters:
        timeIndex - The time index (related to the model times discretization).
        realizationAtTimeIndex - The given realization at timeIndex
        realizationPredictor - The given realization at timeIndex+1 or null of no predictor is available.
        Returns:
        The (average) drift from timeIndex to timeIndex+1
      • getFactorLoading

        public abstract RandomVariable getFactorLoading​(int timeIndex,
                                                        int factor,
                                                        int component,
                                                        RandomVariable[] realizationAtTimeIndex)
        This method should be overwritten and return the factor loading, i.e. the coeffient λ(i,j) such that
        dS(j) = (...) dt + S(j) * (λ(1,j) dW(1) + ... + λ(m,j) dW(m))
        in an m-factor model. Here j denotes index of the component of the resulting log-normal process and i denotes the index of the factor.

        Overwrite this method if you would like to implement a multi factor model.

        Parameters:
        timeIndex - The time index of the simulation time discretization.
        factor - The factor index.
        component - The component index.
        realizationAtTimeIndex - The realization at the current time index.
        Returns:
        factor loading for given factor and component
      • getProcessValue

        public RandomVariable[] getProcessValue​(int timeIndex)
        This method returns the realization of the process at a certain time index.
        Parameters:
        timeIndex - Time index at which the process should be observed
        Returns:
        A vector of process realizations (on path)
      • getProcessValue

        public RandomVariable getProcessValue​(int timeIndex,
                                              int componentIndex)
        This method returns the realization of the process at a certain time index.
        Parameters:
        timeIndex - Time index at which the process should be observed
        componentIndex - Component of the process vector
        Returns:
        A vector of process realizations (on path)
      • getMonteCarloWeights

        public RandomVariable getMonteCarloWeights​(int timeIndex)
        This method returns the weights of a weighted Monte Carlo method (the probability density).
        Parameters:
        timeIndex - Time index at which the process should be observed
        Returns:
        A vector of positive weights which sums up to one
      • getNumberOfComponents

        public int getNumberOfComponents()
        Returns:
        Returns the numberOfComponents.
      • getNumberOfPaths

        public int getNumberOfPaths()
        Returns:
        Returns the numberOfPaths.
      • getNumberOfFactors

        public int getNumberOfFactors()
        Returns:
        Returns the numberOfFactors.
      • getTimeDiscretization

        public TimeDiscretization getTimeDiscretization()
        Returns:
        Returns the timeDiscretizationFromArray.
      • getTime

        public double getTime​(int timeIndex)
        Returns the time for a given simulation time index.
        Parameters:
        timeIndex - Time index
        Returns:
        Returns the time for a given time index.
      • getTimeIndex

        public int getTimeIndex​(double time)
        Returns the time index for a given simulation time.
        Parameters:
        time - A simulation time
        Returns:
        Returns the time index for a given time.
      • getBrownianMotion

        public BrownianMotion getBrownianMotion()
        Returns:
        Returns the Brownian motion used in the generation of the process
      • setBrownianMotion

        protected void setBrownianMotion​(BrownianMotion brownianMotion)
        A derived class may change the Brownian motion. This is only allowed prior to lazy initialization. The method should be used only while constructing new object. Do not use in flight.
        Parameters:
        brownianMotion - The brownianMotion to set.