public class MonteCarloMertonModel extends Object implements AssetModelMonteCarloSimulationModel
MertonModel and a Monte-Carlo implementation of a MonteCarloProcessFromProcessModel, namely EulerSchemeFromProcessModel,
and forms a Monte-Carlo implementation of the Merton model by implementing AssetModelMonteCarloSimulationModel.
The model is
\[
dS = \mu S dt + \sigma S dW + S dJ, \quad S(0) = S_{0},
\]
\[
dN = r N dt, \quad N(0) = N_{0},
\]
where \( W \) is Brownian motion and \( J \) is a jump process (compound Poisson process).
The process \( J \) is given by \( J(t) = \sum_{i=1}^{N(t)} (Y_{i}-1) \), where
\( \log(Y_{i}) \) are i.i.d. normals with mean \( a - \frac{1}{2} b^{2} \) and standard deviation \( b \).
Here \( a \) is the jump size mean and \( b \) is the jump size std. dev.
For details on the construction of the model see MertonModel.MertonModel,
The interface for numerical schemes.,
The interface for models provinding parameters to numerical schemes.| Constructor and Description |
|---|
MonteCarloMertonModel(TimeDiscretization timeDiscretization,
int numberOfPaths,
int seed,
double initialValue,
double riskFreeRate,
double volatility,
double jumpIntensity,
double jumpSizeMean,
double jumpSizeStDev)
Create a Monte-Carlo simulation using given time discretization and given parameters.
|
| Modifier and Type | Method and Description |
|---|---|
RandomVariable |
getAssetValue(double time,
int assetIndex)
Returns the random variable representing the asset's value at a given time for a given asset.
|
RandomVariable |
getAssetValue(int timeIndex,
int assetIndex)
Returns the random variable representing the asset's value at a given time for a given asset.
|
AssetModelMonteCarloSimulationModel |
getCloneWithModifiedData(Map<String,Object> dataModified)
Create a clone of this simulation modifying some of its properties (if any).
|
AssetModelMonteCarloSimulationModel |
getCloneWithModifiedSeed(int seed)
Create a clone of the object implementing
AssetModelMonteCarloSimulationModel
using a different Monte-Carlo seed. |
RandomVariable |
getMonteCarloWeights(double time)
This method returns the weights of a weighted Monte Carlo method (the probability density).
|
RandomVariable |
getMonteCarloWeights(int timeIndex)
This method returns the weights of a weighted Monte Carlo method (the probability density).
|
int |
getNumberOfAssets()
Returns the number of asset price processes.
|
int |
getNumberOfPaths()
Returns the numberOfPaths.
|
RandomVariable |
getNumeraire(double time)
Returns the numeraire associated with the valuation measure used by this model.
|
RandomVariable |
getNumeraire(int timeIndex)
Returns the numeraire associated with the valuation measure used by this model.
|
RandomVariable |
getRandomVariableForConstant(double value)
Returns a random variable which is initialized to a constant,
but has exactly the same number of paths or discretization points as the ones used by this
MonteCarloSimulationModel. |
LocalDateTime |
getReferenceDate()
Returns the model's date corresponding to the time discretization's \( t = 0 \).
|
double |
getTime(int timeIndex)
Returns the time for a given time index.
|
TimeDiscretization |
getTimeDiscretization()
Returns the timeDiscretizationFromArray.
|
int |
getTimeIndex(double time)
Returns the time index for a given time.
|
public MonteCarloMertonModel(TimeDiscretization timeDiscretization, int numberOfPaths, int seed, double initialValue, double riskFreeRate, double volatility, double jumpIntensity, double jumpSizeMean, double jumpSizeStDev)
timeDiscretization - The time discretization.numberOfPaths - The number of Monte-Carlo path to be used.seed - The seed used for the random number generator.initialValue - Spot value.riskFreeRate - The risk free rate.volatility - The log volatility.jumpIntensity - The intensity parameter lambda of the compound Poisson process.jumpSizeMean - The mean jump size of the normal distributes jump sizes of the compound Poisson process.jumpSizeStDev - The standard deviation of the normal distributes jump sizes of the compound Poisson process.public LocalDateTime getReferenceDate()
MonteCarloSimulationModelgetReferenceDate in interface MonteCarloSimulationModelpublic RandomVariable getAssetValue(double time, int assetIndex) throws CalculationException
AssetModelMonteCarloSimulationModelgetAssetValue in interface AssetModelMonteCarloSimulationModeltime - Simulation timeassetIndex - Index of the asset (0 for a single asset model)CalculationException - Thrown if the valuation fails, specific cause may be available via the cause() method.public RandomVariable getAssetValue(int timeIndex, int assetIndex) throws CalculationException
AssetModelMonteCarloSimulationModelgetAssetValue in interface AssetModelMonteCarloSimulationModeltimeIndex - Index of simulation timeassetIndex - Index of the asset (0 for a single asset model)CalculationException - Thrown if the valuation fails, specific cause may be available via the cause() method.public RandomVariable getNumeraire(int timeIndex) throws CalculationException
AssetModelMonteCarloSimulationModelgetNumeraire in interface AssetModelMonteCarloSimulationModeltimeIndex - The time index (associated with this models time discretization).CalculationException - Thrown if calculation of numeraire fails.public RandomVariable getNumeraire(double time) throws CalculationException
AssetModelMonteCarloSimulationModelgetNumeraire in interface AssetModelMonteCarloSimulationModeltime - The time for which the numeraire is requested.CalculationException - Thrown if calculation of numeraire fails.public RandomVariable getMonteCarloWeights(double time) throws CalculationException
MonteCarloSimulationModelgetMonteCarloWeights in interface MonteCarloSimulationModeltime - Time at which the process should be observedCalculationException - Thrown if the valuation fails, specific cause may be available via the cause() method.public int getNumberOfAssets()
AssetModelMonteCarloSimulationModelgetNumberOfAssets in interface AssetModelMonteCarloSimulationModelpublic AssetModelMonteCarloSimulationModel getCloneWithModifiedData(Map<String,Object> dataModified)
AssetModelMonteCarloSimulationModelgetCloneWithModifiedData in interface AssetModelMonteCarloSimulationModelgetCloneWithModifiedData in interface MonteCarloSimulationModeldataModified - The data which should be changed in the new modelpublic AssetModelMonteCarloSimulationModel getCloneWithModifiedSeed(int seed)
AssetModelMonteCarloSimulationModelAssetModelMonteCarloSimulationModel
using a different Monte-Carlo seed.getCloneWithModifiedSeed in interface AssetModelMonteCarloSimulationModelseed - The seed of the underlying random number generator.public int getNumberOfPaths()
MonteCarloSimulationModelgetNumberOfPaths in interface MonteCarloSimulationModelpublic TimeDiscretization getTimeDiscretization()
MonteCarloSimulationModelgetTimeDiscretization in interface MonteCarloSimulationModelpublic double getTime(int timeIndex)
MonteCarloSimulationModelgetTime in interface MonteCarloSimulationModeltimeIndex - Time indexpublic int getTimeIndex(double time)
MonteCarloSimulationModelgetTimeIndex in interface MonteCarloSimulationModeltime - The time.public RandomVariable getRandomVariableForConstant(double value)
MonteCarloSimulationModelMonteCarloSimulationModel.getRandomVariableForConstant in interface MonteCarloSimulationModelvalue - The constant value to be used for initialized the random variable.public RandomVariable getMonteCarloWeights(int timeIndex) throws CalculationException
MonteCarloSimulationModelgetMonteCarloWeights in interface MonteCarloSimulationModeltimeIndex - Time index at which the process should be observedCalculationException - Thrown if the valuation fails, specific cause may be available via the cause() method.Copyright © 2019. All rights reserved.