/* * (c) Copyright Christian P. Fries, Germany. All rights reserved. Contact: email@christianfries.com. * * Created on 28 Oct 2014 */ package net.finmath.marketdata.model.curves; import net.finmath.marketdata.model.AnalyticModelInterface; /** * An index curve there the value at time t is given by indexValue / discountCurve.getValue(t). * * @author Christian Fries */ public class IndexCurveFromDiscountCurve extends AbstractCurve implements CurveInterface { private final double indexValue; private final DiscountCurveInterface discountCurve; /** * @param name The name of this curve. * @param indexValue The index value at the discount curve's t=0, i.e., the reference date of the discount curve. * @param discountCurve The discont curve. */ public IndexCurveFromDiscountCurve(String name, double indexValue, DiscountCurveInterface discountCurve) { super(name, discountCurve.getReferenceDate()); this.indexValue = indexValue; this.discountCurve = discountCurve; } @Override public double[] getParameter() { return discountCurve.getParameter(); } @Override public void setParameter(double[] parameter) { discountCurve.setParameter(parameter); } @Override public double getValue(AnalyticModelInterface model, double time) { return indexValue / discountCurve.getDiscountFactor(model, time); } @Override public CurveBuilderInterface getCloneBuilder() throws CloneNotSupportedException { throw new CloneNotSupportedException(); } }