net.finmath.montecarlo.process.MonteCarloProcess Maven / Gradle / Ivy
/*
* (c) Copyright Christian P. Fries, Germany. Contact: [email protected].
*
* Created on 29.02.2008
*/
package net.finmath.montecarlo.process;
import java.util.Map;
import net.finmath.montecarlo.IndependentIncrements;
import net.finmath.montecarlo.model.ProcessModel;
/**
* The interface for a process (numerical scheme) of a stochastic process X where
* X = f(Y) and Y is an Itô process
* \[
* dY_{j} = \mu_{j} dt + \lambda_{1,j} dW_{1} + \ldots + \lambda_{m,j} dW_{m}
* \]
*
* The parameters are provided by a model implementing {@link net.finmath.montecarlo.model.ProcessModel}:
*
* - The value of Y(0) is provided by the method {@link net.finmath.montecarlo.model.ProcessModel#getInitialState}.
*
- The value of μ is provided by the method {@link net.finmath.montecarlo.model.ProcessModel#getDrift}.
*
- The value λj is provided by the method {@link net.finmath.montecarlo.model.ProcessModel#getFactorLoading}.
*
- The function f is provided by the method {@link net.finmath.montecarlo.model.ProcessModel#applyStateSpaceTransform}.
*
* Here, μ and λj may depend on X, which allows to implement stochastic drifts (like in a LIBOR market model)
* of local volatility models.
*
* @author Christian Fries
* @see net.finmath.montecarlo.model.ProcessModel The definition of the model.
* @version 1.0
*/
public interface MonteCarloProcess extends Process {
/**
* @return Returns the numberOfPaths.
*/
int getNumberOfPaths();
/**
* @return Returns the numberOfFactors.
*/
int getNumberOfFactors();
/**
* @return Returns the stochastic driver used to generate this process
*/
IndependentIncrements getStochasticDriver();
/**
* Returns a clone of this model where the specified properties have been modified.
*
* Note that there is no guarantee that a model reacts on a specification of a properties in the
* parameter map dataModified
. If data is provided which is ignored by the model
* no exception may be thrown.
*
* @param model The model to be used.
* @return A clone of this model (or this model if no parameter was modified).
*/
MonteCarloProcess getCloneWithModifiedModel(ProcessModel model);
/**
* Returns a clone of this model where the specified properties have been modified.
*
* Note that there is no guarantee that a model reacts on a specification of a properties in the
* parameter map dataModified
. If data is provided which is ignored by the model
* no exception may be thrown.
*
* @param dataModified Key-value-map of parameters to modify.
* @return A clone of this model (or this model if no parameter was modified).
*/
MonteCarloProcess getCloneWithModifiedData(Map dataModified);
/**
* Create and return a clone of this process. The clone is not tied to any model, but has the same
* process specification, that is, if the model is the same, it would generate the same paths.
*
* @return Clone of the process
*/
@Override
MonteCarloProcess clone();
}