package org.jquantlib.legacy.libormarkets;
import org.jquantlib.QL;
import org.jquantlib.math.Ops;
import org.jquantlib.math.integrals.GaussKronrodAdaptive;
import org.jquantlib.math.matrixutilities.Array;
import org.jquantlib.math.matrixutilities.Matrix;
import org.jquantlib.processes.LfmCovarianceParameterization;
public class LfmCovarianceProxy extends LfmCovarianceParameterization {
protected LmVolatilityModel volaModel_;
protected LmCorrelationModel corrModel_;
public LfmCovarianceProxy(final LmVolatilityModel volaModel, final LmCorrelationModel corrModel){
super(corrModel.size(), corrModel.factors());
if (System.getProperty("EXPERIMENTAL") == null)
throw new UnsupportedOperationException("Work in progress");
this.volaModel_ = volaModel;
this.corrModel_ = corrModel;
}
public LmVolatilityModel volatilityModel(){
return volaModel_;
}
public LmCorrelationModel correlationModel(){
return corrModel_;
}
@Override
// TODO: review iterators
public Matrix diffusion(/*@Time*/ final double t, final Array x){
final Matrix pca = corrModel_.pseudoSqrt(t, x);
// TODO: code review :: use of clone()
final Array vol = volaModel_.volatility(t, x);
for (int i=0; i
Ads help maintain this website.