net.finmath.montecarlo.process.AbstractProcessInterface Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of finmath-lib Show documentation
Show all versions of finmath-lib Show documentation
finmath lib is a Mathematical Finance Library in Java.
It provides algorithms and methodologies related to mathematical finance.
/*
* (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.BrownianMotionInterface;
import net.finmath.montecarlo.IndependentIncrementsInterface;
import net.finmath.montecarlo.model.AbstractModelInterface;
/**
* 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.AbstractModelInterface}:
*
* - The value of Y(0) is provided by the method {@link net.finmath.montecarlo.model.AbstractModelInterface#getInitialState}.
*
- The value of μ is provided by the method {@link net.finmath.montecarlo.model.AbstractModelInterface#getDrift}.
*
- The value λj is provided by the method {@link net.finmath.montecarlo.model.AbstractModelInterface#getFactorLoading}.
*
- The function f is provided by the method {@link net.finmath.montecarlo.model.AbstractModelInterface#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.AbstractModelInterface The definition of the model.
*/
public interface AbstractProcessInterface extends ProcessInterface {
/**
* @return Returns the numberOfPaths.
*/
int getNumberOfPaths();
/**
* @return Returns the numberOfFactors.
*/
int getNumberOfFactors();
/**
* @return Returns the stochastic driver used to generate this process
*/
IndependentIncrementsInterface getStochasticDriver();
/**
* @deprecated Please use getStochasticDriver() instead.
* @return Returns the Brownian motion used to generate this process
*/
BrownianMotionInterface getBrownianMotion();
/**
* Sets the model to be used. Should be called only once (at construction).
*
* @param model The model to be used.
*/
void setModel(AbstractModelInterface 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).
*/
AbstractProcessInterface 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
*/
AbstractProcessInterface clone();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy