
net.finmath.montecarlo.interestrate.modelplugins.TermStructCovarianceModelFromLIBORCovarianceModel Maven / Gradle / Ivy
/*
* (c) Copyright Christian P. Fries, Germany. Contact: [email protected].
*
* Created on 22.12.2016
*/
package net.finmath.montecarlo.interestrate.modelplugins;
import net.finmath.montecarlo.interestrate.LIBORMarketModelWithTenorRefinement;
import net.finmath.montecarlo.interestrate.TermStructureModelInterface;
import net.finmath.stochastic.RandomVariableInterface;
import net.finmath.time.TimeDiscretizationInterface;
/**
* @author Christian Fries
*
*/
public class TermStructCovarianceModelFromLIBORCovarianceModel implements TermStructureFactorLoadingsModelInterface {
private final AbstractLIBORCovarianceModelParametric covarianceModel;
/**
* Create a term structure covariance model model implementing TermStructureCovarianceModelInterface
* using a given model implementing AbstractLIBORCovarianceModelParametric.
*
* @param covarianceModel The model implementing AbstractLIBORCovarianceModelParametric.
*/
public TermStructCovarianceModelFromLIBORCovarianceModel(AbstractLIBORCovarianceModelParametric covarianceModel) {
this.covarianceModel = covarianceModel;
}
@Override
public RandomVariableInterface[] getFactorLoading(double time, double periodStart, double periodEnd, TimeDiscretizationInterface periodDiscretization, RandomVariableInterface[] realizationAtTimeIndex, TermStructureModelInterface model) {
TimeDiscretizationInterface liborPeriodDiscretization = covarianceModel.getLiborPeriodDiscretization();
// Cache is really needed.
RandomVariableInterface[] liborAtTimeIndex = new RandomVariableInterface[liborPeriodDiscretization.getNumberOfTimeSteps()];
for(int componentIndex=0; componentIndex periodStartIndex+1) {
// Need to sum factor loadings
for(int factorIndex = 0; factorIndex
© 2015 - 2025 Weber Informatics LLC | Privacy Policy