All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.finmath.montecarlo.interestrate.models.covariance.LIBORCovarianceModel Maven / Gradle / Ivy

Go to download

finmath lib is a Mathematical Finance Library in Java. It provides algorithms and methodologies related to mathematical finance.

The newest version!
/*
 * (c) Copyright Christian P. Fries, Germany. Contact: [email protected].
 *
 * Created on 20.05.2006
 */
package net.finmath.montecarlo.interestrate.models.covariance;

import java.util.Map;

import net.finmath.exception.CalculationException;
import net.finmath.montecarlo.interestrate.models.LIBORMarketModelFromCovarianceModel;
import net.finmath.stochastic.RandomVariable;
import net.finmath.time.TimeDiscretization;

/**
 * Interface for covariance models providing a vector of (possibly stochastic) factor loadings.
 *
 * Classes implementing this interface can be used as "plug ins" for {@link LIBORMarketModelFromCovarianceModel}.
 *
 * @author Christian Fries
 * @version 1.0
 */
public interface LIBORCovarianceModel {

	/**
	 * Return the factor loading for a given time and a given component.
	 *
	 * The factor loading is the vector fi such that the scalar product 
* fjfk = fj,1fk,1 + ... + fj,mfk,m
* is the instantaneous covariance of the component j and k. * * With respect to simulation time t, this method uses a piece wise constant interpolation, i.e., * it calculates t_i such that t_i is the largest point in getTimeDiscretization * such that t_i ≤ t . * * The component here, it given via a double T which may be associated with the LIBOR fixing date. * With respect to component time T, this method uses a piece wise constant interpolation, i.e., * it calculates T_j such that T_j is the largest point in getTimeDiscretization * such that T_j ≤ T . * * @param time The time t at which factor loading is requested. * @param component The component time (as a double associated with the fixing of the forward rate) Ti. * @param realizationAtTimeIndex The realization of the stochastic process (may be used to implement local volatility/covariance/correlation models). * @return The factor loading fi(t). */ RandomVariable[] getFactorLoading(double time, double component, RandomVariable[] realizationAtTimeIndex); /** * Return the factor loading for a given time and component index. * The factor loading is the vector fi such that the scalar product
* fjfk = fj,1fk,1 + ... + fj,mfk,m
* is the instantaneous covariance of the component j and k. * * With respect to simulation time t, this method uses a piece wise constant interpolation, i.e., * it calculates t_i such that t_i is the largest point in getTimeDiscretization * such that t_i ≤ t . * * @param time The time t at which factor loading is requested. * @param component The index of the component i. Note that this class may have its own LIBOR time discretization and that this index refers to this discretization. * @param realizationAtTimeIndex The realization of the stochastic process (may be used to implement local volatility/covariance/correlation models). * @return The factor loading fi(t). */ RandomVariable[] getFactorLoading(double time, int component, RandomVariable[] realizationAtTimeIndex); /** * Return the factor loading for a given time index and component index. * The factor loading is the vector fi such that the scalar product
* fjfk = fj,1fk,1 + ... + fj,mfk,m
* is the instantaneous covariance of the component j and k. * * @param timeIndex The time index at which factor loading is requested. * @param component The index of the component i. * @param realizationAtTimeIndex The realization of the stochastic process (may be used to implement local volatility/covariance/correlation models). * @return The factor loading fi(t). */ RandomVariable[] getFactorLoading(int timeIndex, int component, RandomVariable[] realizationAtTimeIndex); /** * Returns the pseudo inverse of the factor matrix. * * @param timeIndex The time index at which factor loading inverse is requested. * @param factor The index of the factor j. * @param component The index of the component i. * @param realizationAtTimeIndex The realization of the stochastic process (may be used to implement local volatility/covariance/correlation models). * @return The entry of the pseudo-inverse of the factor loading matrix. */ RandomVariable getFactorLoadingPseudoInverse(int timeIndex, int component, int factor, RandomVariable[] realizationAtTimeIndex); /** * Returns the instantaneous covariance calculated from factor loadings. * * @param time The time t at which covariance is requested. * @param component1 Index of component i. * @param component2 Index of component j. * @param realizationAtTimeIndex The realization of the stochastic process. * @return The instantaneous covariance between component i and j. */ RandomVariable getCovariance(double time, int component1, int component2, RandomVariable[] realizationAtTimeIndex); /** * Returns the instantaneous covariance calculated from factor loadings. * * @param timeIndex The time index at which covariance is requested. * @param component1 Index of component i. * @param component2 Index of component j. * @param realizationAtTimeIndex The realization of the stochastic process. * @return The instantaneous covariance between component i and j. */ RandomVariable getCovariance(int timeIndex, int component1, int component2, RandomVariable[] realizationAtTimeIndex); /** * The simulation time discretization associated with this model. * * @return the timeDiscretizationFromArray */ TimeDiscretization getTimeDiscretization(); /** * The forward rate time discretization associated with this model (defines the components). * * @return the forward rate time discretization associated with this model. */ TimeDiscretization getLiborPeriodDiscretization(); /** * @return the numberOfFactors */ int getNumberOfFactors(); /** * 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. * * Furthermore the structure of the covariance model has to match changed data. * A change of the time discretizations may requires a change in the parameters * but this function will just insert the new time discretization without * changing the parameters. An exception may not be thrown. * * @param dataModified Key-value-map of parameters to modify. * @return A clone of this model (or a new instance of this model if no parameter was modified). * @throws CalculationException Thrown when the model could not be created. */ AbstractLIBORCovarianceModelParametric getCloneWithModifiedData(Map dataModified) throws CalculationException; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy