Module net.finmath.lib
Class HybridAssetLIBORModelMonteCarloSimulationFromModels
java.lang.Object
net.finmath.montecarlo.hybridassetinterestrate.HybridAssetLIBORModelMonteCarloSimulationFromModels
- All Implemented Interfaces:
Model,AssetModelMonteCarloSimulationModel,IndependentModelParameterProvider,HybridAssetLIBORModelMonteCarloSimulation,LIBORModelMonteCarloSimulationModel,TermStructureMonteCarloSimulationModel,MonteCarloSimulationModel
public class HybridAssetLIBORModelMonteCarloSimulationFromModels
extends Object
implements HybridAssetLIBORModelMonteCarloSimulation
An Equity Hybrid LIBOR Market Model composed of an object implementing
LIBORModelMonteCarloSimulationModel providing the interest
rate simulation and the numeraire and an object implementing
AssetModelMonteCarloSimulationModel providing the
asset simulation.
The interest rate model needs to be in spot measure.- Version:
- 1.0
- Author:
- Christian Fries
-
Constructor Summary
ConstructorsConstructorDescriptionHybridAssetLIBORModelMonteCarloSimulationFromModels(LIBORModelMonteCarloSimulationModel liborSimulation, AssetModelMonteCarloSimulationModel assetSimulation)HybridAssetLIBORModelMonteCarloSimulationFromModels(LIBORModelMonteCarloSimulationModel liborSimulation, AssetModelMonteCarloSimulationModel assetSimulation, DiscountCurve discountCurve)Create an Equity Hybrid LIBOR Market Model composed of an object implementingLIBORModelMonteCarloSimulationModelproviding the interest rate simulation and the numeraire and an object implementingAssetModelMonteCarloSimulationModelproviding the asset simulation. -
Method Summary
Modifier and TypeMethodDescriptiongetAssetValue(double time, int assetIndex)Returns the random variable representing the asset's value at a given time for a given asset.getAssetValue(int timeIndex, int assetIndex)Returns the random variable representing the asset's value at a given time for a given asset.Returns the Brownian motion used to simulate the curve.getCloneWithModifiedData(Map<String,Object> dataModified)Create a clone of this simulation modifying some of its properties (if any).getCloneWithModifiedSeed(int seed)Deprecated.getForwardRate(double time, double periodStart, double periodEnd)Return the forward rate for a given simulation time and a given period start and period end.getLIBOR(int timeIndex, int liborIndex)Return the forward rate for a given simulation time index and a given forward rate index.doublegetLiborPeriod(int timeIndex)Returns the period start of the specified forward rate period.Returns the libor period discretization as time discretization representing start and end dates of periods.intgetLiborPeriodIndex(double time)Same as java.util.Arrays.binarySearch(liborPeriodDiscretization,time).getLIBORs(int timeIndex)Return the forward rate curve for a given simulation time index.getModel()Returns the underlying model.Returns a map of independent model parameters of this model.getMonteCarloWeights(double time)This method returns the weights of a weighted Monte Carlo method (the probability density).getMonteCarloWeights(int timeIndex)This method returns the weights of a weighted Monte Carlo method (the probability density).intReturns the number of asset price processes.intintintReturns the numberOfPaths.getNumeraire(double time)Return the numeraire at a given time.getNumeraire(int timeIndex)Returns the numeraire associated with the valuation measure used by this model.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 thisMonteCarloSimulationModel.Returns the model's date corresponding to the time discretization's \( t = 0 \).doublegetTime(int timeIndex)Returns the time for a given time index.Returns the timeDiscretizationFromArray.intgetTimeIndex(double time)Returns the time index for a given time.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.finmath.montecarlo.interestrate.TermStructureMonteCarloSimulationModel
getForwardRate, getLIBOR, getLIBOR, getNumeraire
-
Constructor Details
-
HybridAssetLIBORModelMonteCarloSimulationFromModels
public HybridAssetLIBORModelMonteCarloSimulationFromModels(LIBORModelMonteCarloSimulationModel liborSimulation, AssetModelMonteCarloSimulationModel assetSimulation, DiscountCurve discountCurve)Create an Equity Hybrid LIBOR Market Model composed of an object implementingLIBORModelMonteCarloSimulationModelproviding the interest rate simulation and the numeraire and an object implementingAssetModelMonteCarloSimulationModelproviding the asset simulation. The interest rate model needs to be in spot measure.- Parameters:
liborSimulation- An object implementingLIBORModelMonteCarloSimulationModelproviding the interest rate simulation and the numeraire.assetSimulation- An object implementingAssetModelMonteCarloSimulationModelproviding the asset simulation.discountCurve- An optional object implementingDiscountCurveInterfaceto adjust the numeraire for a deterministic discounting spread.
-
HybridAssetLIBORModelMonteCarloSimulationFromModels
public HybridAssetLIBORModelMonteCarloSimulationFromModels(LIBORModelMonteCarloSimulationModel liborSimulation, AssetModelMonteCarloSimulationModel assetSimulation)
-
-
Method Details
-
getNumberOfPaths
public int getNumberOfPaths()Description copied from interface:MonteCarloSimulationModelReturns the numberOfPaths.- Specified by:
getNumberOfPathsin interfaceMonteCarloSimulationModel- Returns:
- Returns the numberOfPaths.
-
getReferenceDate
Description copied from interface:MonteCarloSimulationModelReturns the model's date corresponding to the time discretization's \( t = 0 \).- Specified by:
getReferenceDatein interfaceMonteCarloSimulationModel- Returns:
- The model's date corresponding to the time discretization's \( t = 0 \).
-
getTimeDiscretization
Description copied from interface:MonteCarloSimulationModelReturns the timeDiscretizationFromArray.- Specified by:
getTimeDiscretizationin interfaceMonteCarloSimulationModel- Returns:
- Returns the timeDiscretizationFromArray.
-
getNumberOfFactors
public int getNumberOfFactors()- Specified by:
getNumberOfFactorsin interfaceTermStructureMonteCarloSimulationModel- Returns:
- Returns the numberOfFactors.
-
getTime
public double getTime(int timeIndex)Description copied from interface:MonteCarloSimulationModelReturns the time for a given time index.- Specified by:
getTimein interfaceMonteCarloSimulationModel- Parameters:
timeIndex- Time index- Returns:
- Returns the time for a given time index.
-
getLiborPeriodDiscretization
Description copied from interface:LIBORModelMonteCarloSimulationModelReturns the libor period discretization as time discretization representing start and end dates of periods.- Specified by:
getLiborPeriodDiscretizationin interfaceLIBORModelMonteCarloSimulationModel- Returns:
- Returns the libor period discretization
-
getTimeIndex
public int getTimeIndex(double time)Description copied from interface:MonteCarloSimulationModelReturns the time index for a given time.- Specified by:
getTimeIndexin interfaceMonteCarloSimulationModel- Parameters:
time- The time.- Returns:
- Returns the time index for a given time.
-
getNumberOfLibors
public int getNumberOfLibors()- Specified by:
getNumberOfLiborsin interfaceLIBORModelMonteCarloSimulationModel- Returns:
- The number of LIBORs in the LIBOR discretization
-
getRandomVariableForConstant
Description copied from interface:MonteCarloSimulationModelReturns 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 thisMonteCarloSimulationModel.- Specified by:
getRandomVariableForConstantin interfaceMonteCarloSimulationModel- Parameters:
value- The constant value to be used for initialized the random variable.- Returns:
- A new random variable.
-
getLiborPeriod
public double getLiborPeriod(int timeIndex)Description copied from interface:LIBORModelMonteCarloSimulationModelReturns the period start of the specified forward rate period.- Specified by:
getLiborPeriodin interfaceLIBORModelMonteCarloSimulationModel- Parameters:
timeIndex- The index corresponding to a given time (interpretation is start of period)- Returns:
- The period start of the specified forward rate period.
-
getLiborPeriodIndex
public int getLiborPeriodIndex(double time)Description copied from interface:LIBORModelMonteCarloSimulationModelSame as java.util.Arrays.binarySearch(liborPeriodDiscretization,time). Will return a negative value if the time is not found, but then -index-1 corresponds to the index of the smallest time greater than the given one.- Specified by:
getLiborPeriodIndexin interfaceLIBORModelMonteCarloSimulationModel- Parameters:
time- The tenor time (fixing of the forward rate) for which the index is requested.- Returns:
- The index corresponding to a given time (interpretation is start of period)
-
getMonteCarloWeights
Description copied from interface:MonteCarloSimulationModelThis method returns the weights of a weighted Monte Carlo method (the probability density).- Specified by:
getMonteCarloWeightsin interfaceMonteCarloSimulationModel- Parameters:
timeIndex- Time index at which the process should be observed- Returns:
- A vector of positive weights which sums up to one
- Throws:
CalculationException- Thrown if the valuation fails, specific cause may be available via thecause()method.
-
getLIBOR
Description copied from interface:LIBORModelMonteCarloSimulationModelReturn the forward rate for a given simulation time index and a given forward rate index.- Specified by:
getLIBORin interfaceLIBORModelMonteCarloSimulationModel- Parameters:
timeIndex- Simulation time index.liborIndex- TenorFromArray time index (index corresponding to the fixing of the forward rate).- Returns:
- The forward rate as a random variable.
- Throws:
CalculationException- Thrown if the valuation fails, specific cause may be available via thecause()method.
-
getMonteCarloWeights
Description copied from interface:MonteCarloSimulationModelThis method returns the weights of a weighted Monte Carlo method (the probability density).- Specified by:
getMonteCarloWeightsin interfaceMonteCarloSimulationModel- Parameters:
time- Time at which the process should be observed- Returns:
- A vector of positive weights which sums up to one
- Throws:
CalculationException- Thrown if the valuation fails, specific cause may be available via thecause()method.
-
getForwardRate
public RandomVariable getForwardRate(double time, double periodStart, double periodEnd) throws CalculationExceptionDescription copied from interface:TermStructureMonteCarloSimulationModelReturn the forward rate for a given simulation time and a given period start and period end.- Specified by:
getForwardRatein interfaceTermStructureMonteCarloSimulationModel- Parameters:
time- Simulation timeperiodStart- Start time of periodperiodEnd- End time of period- Returns:
- The forward rate as a random variable as seen on simulation time for the specified period.
- Throws:
CalculationException- Thrown if the valuation fails, specific cause may be available via thecause()method.
-
getCloneWithModifiedData
public HybridAssetLIBORModelMonteCarloSimulationFromModels getCloneWithModifiedData(Map<String,Object> dataModified)Description copied from interface:MonteCarloSimulationModelCreate a clone of this simulation modifying some of its properties (if any). The properties that should be modified correspond to arguments of constructors. A constructor is then called with where all arguments that are not found in the key value map are being set to this objects values.- Specified by:
getCloneWithModifiedDatain interfaceAssetModelMonteCarloSimulationModel- Specified by:
getCloneWithModifiedDatain interfaceMonteCarloSimulationModel- Parameters:
dataModified- The data which should be changed in the new model. This is a key value may, where the key corresponds to the name of a property in one of the objects constructors.- Returns:
- Returns a clone of this object, with some data modified (then it is no longer a clone :-)
-
getLIBORs
Description copied from interface:LIBORModelMonteCarloSimulationModelReturn the forward rate curve for a given simulation time index.- Specified by:
getLIBORsin interfaceLIBORModelMonteCarloSimulationModel- Parameters:
timeIndex- Simulation time index.- Returns:
- The forward rate curve for a given simulation time index.
- Throws:
CalculationException- Thrown if the valuation fails, specific cause may be available via thecause()method.
-
getNumeraire
Description copied from interface:TermStructureMonteCarloSimulationModelReturn the numeraire at a given time.- Specified by:
getNumerairein interfaceAssetModelMonteCarloSimulationModel- Specified by:
getNumerairein interfaceTermStructureMonteCarloSimulationModel- Parameters:
time- Time at which the process should be observed- Returns:
- The numeraire at the specified time as
RandomVariableFromDoubleArray - Throws:
CalculationException- Thrown if the valuation fails, specific cause may be available via thecause()method.
-
getNumeraire
Description copied from interface:AssetModelMonteCarloSimulationModelReturns the numeraire associated with the valuation measure used by this model.- Specified by:
getNumerairein interfaceAssetModelMonteCarloSimulationModel- Parameters:
timeIndex- The time index (associated with this models time discretization).- Returns:
- The numeraire associated with the valuation measure used by this model.
- Throws:
CalculationException- Thrown if calculation of numeraire fails.
-
getBrownianMotion
Description copied from interface:TermStructureMonteCarloSimulationModelReturns the Brownian motion used to simulate the curve.- Specified by:
getBrownianMotionin interfaceTermStructureMonteCarloSimulationModel- Returns:
- The Brownian motion used to simulate the curve.
-
getModel
Description copied from interface:TermStructureMonteCarloSimulationModelReturns the underlying model. The model specifies the measure, the initial value, the drift, the factor loadings (covariance model), etc.- Specified by:
getModelin interfaceTermStructureMonteCarloSimulationModel- Returns:
- The underlying model
-
getProcess
- Specified by:
getProcessin interfaceTermStructureMonteCarloSimulationModel- Returns:
- The implementation of the process
-
getCloneWithModifiedSeed
@Deprecated public HybridAssetLIBORModelMonteCarloSimulationFromModels getCloneWithModifiedSeed(int seed)Deprecated.Description copied from interface:TermStructureMonteCarloSimulationModelReturn a clone of this model with a modified Brownian motion using a different seed.- Specified by:
getCloneWithModifiedSeedin interfaceAssetModelMonteCarloSimulationModel- Specified by:
getCloneWithModifiedSeedin interfaceTermStructureMonteCarloSimulationModel- Parameters:
seed- The seed- Returns:
- Clone of this object, but having a different seed.
- See Also:
TermStructureMonteCarloSimulationModel.getCloneWithModifiedSeed(int)
-
getNumberOfAssets
public int getNumberOfAssets()Description copied from interface:AssetModelMonteCarloSimulationModelReturns the number of asset price processes.- Specified by:
getNumberOfAssetsin interfaceAssetModelMonteCarloSimulationModel- Returns:
- The number of asset price processes
-
getAssetValue
Description copied from interface:AssetModelMonteCarloSimulationModelReturns the random variable representing the asset's value at a given time for a given asset.- Specified by:
getAssetValuein interfaceAssetModelMonteCarloSimulationModel- Parameters:
timeIndex- Index of simulation timeassetIndex- Index of the asset (0 for a single asset model)- Returns:
- The asset process as seen on simulation time
- Throws:
CalculationException- Thrown if the valuation fails, specific cause may be available via thecause()method.
-
getAssetValue
Description copied from interface:AssetModelMonteCarloSimulationModelReturns the random variable representing the asset's value at a given time for a given asset.- Specified by:
getAssetValuein interfaceAssetModelMonteCarloSimulationModel- Parameters:
time- Simulation timeassetIndex- Index of the asset (0 for a single asset model)- Returns:
- The asset process as seen on simulation time
- Throws:
CalculationException- Thrown if the valuation fails, specific cause may be available via thecause()method.
-
getModelParameters
Description copied from interface:IndependentModelParameterProviderReturns a map of independent model parameters of this model.- Specified by:
getModelParametersin interfaceIndependentModelParameterProvider- Returns:
- Map of independent model parameters of this model.
-