net.finmath.montecarlo.interestrate.LIBORModelMonteCarloSimulationModel 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 01.03.2008
*/
package net.finmath.montecarlo.interestrate;
import net.finmath.exception.CalculationException;
import net.finmath.montecarlo.BrownianMotion;
import net.finmath.montecarlo.automaticdifferentiation.IndependentModelParameterProvider;
import net.finmath.stochastic.RandomVariable;
import net.finmath.time.TimeDiscretization;
/**
* Basic interface which has to be implemented by Monte Carlo models for LIBOR processes.
*
* @author Christian Fries
* @version 1.0
*/
public interface LIBORModelMonteCarloSimulationModel extends TermStructureMonteCarloSimulationModel, IndependentModelParameterProvider {
/**
* @return Returns the numberOfFactors.
*/
int getNumberOfFactors();
/**
* Returns the libor period discretization as time discretization representing start and end dates of periods.
* @return Returns the libor period discretization
*/
TimeDiscretization getLiborPeriodDiscretization();
/**
* @return The number of LIBORs in the LIBOR discretization
*/
int getNumberOfLibors();
/**
* Returns the period start of the specified forward rate period.
*
* @param timeIndex The index corresponding to a given time (interpretation is start of period)
* @return The period start of the specified forward rate period.
*/
double getLiborPeriod(int timeIndex);
/**
* Same 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.
*
* @param time The tenor time (fixing of the forward rate) for which the index is requested.
* @return The index corresponding to a given time (interpretation is start of period)
*/
int getLiborPeriodIndex(double time);
/**
* Return the forward rate for a given simulation time index and a given forward rate index.
*
* @param timeIndex Simulation time index.
* @param liborIndex TenorFromArray time index (index corresponding to the fixing of the forward rate).
* @return The forward rate as a random variable.
* @throws net.finmath.exception.CalculationException Thrown if the valuation fails, specific cause may be available via the cause()
method.
*/
RandomVariable getLIBOR(int timeIndex, int liborIndex) throws CalculationException;
/**
* Return the forward rate curve for a given simulation time index.
*
* @param timeIndex Simulation time index.
* @return The forward rate curve for a given simulation time index.
* @throws net.finmath.exception.CalculationException Thrown if the valuation fails, specific cause may be available via the cause()
method.
*/
RandomVariable[] getLIBORs(int timeIndex) throws CalculationException;
/**
* Returns the Brownian motion used to simulate the curve.
*
* @return The Brownian motion used to simulate the curve.
*/
BrownianMotion getBrownianMotion();
/**
* Returns the underlying model.
*
* The model specifies the measure, the initial value, the drift, the factor loadings (covariance model), etc.
*
* @return The underlying model
*/
@Override
TermStructureModel getModel();
/**
* Return a clone of this model with a modified Brownian motion using a different seed.
*
* @param seed The seed
* @return Clone of this object, but having a different seed.
* @deprecated
*/
@Deprecated
Object getCloneWithModifiedSeed(int seed);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy