/*
* (c) Copyright Christian P. Fries, Germany. All rights reserved. Contact: email@christian-fries.de.
*
* Created on 20.05.2005
*/
package net.finmath.marketdata.model.curves;
import java.io.Serializable;
import java.util.Calendar;
import net.finmath.marketdata.model.AnalyticModelInterface;
/**
* A discount curve derived from other discount curves
* by multiplying the discount factors.
*
* @author Christian Fries
*/
public class DiscountCurveFromProductOfCurves extends AbstractCurve implements Serializable, DiscountCurveInterface {
private static final long serialVersionUID = 8850409340966149755L;
private DiscountCurveInterface[] curves;
/**
* Create a discount curve using one or more curves.
*
* @param name The name of this curve.
* @param referenceDate The reference date of this curve.
* @param curves Argument list or array of curves.
*/
public DiscountCurveFromProductOfCurves(String name, Calendar referenceDate, DiscountCurveInterface... curves) {
super(name, referenceDate);
this.curves = curves;
}
@Override
public double getDiscountFactor(double maturity) {
return getDiscountFactor(null, maturity);
}
@Override
public double getDiscountFactor(AnalyticModelInterface model, double maturity) {
double discountFactor = 1.0;
for(DiscountCurveInterface curve : curves) discountFactor *= curve.getDiscountFactor(model, maturity);
return discountFactor;
}
@Override
public double getValue(AnalyticModelInterface model, double time) {
return getDiscountFactor(model, time);
}
@Override
public double[] getParameter() {
return null;
}
@Override
public void setParameter(double[] parameter) {
}
/* (non-Javadoc)
* @see net.finmath.marketdata.model.curves.CurveInterface#getCloneBuilder()
*/
@Override
public CurveBuilderInterface getCloneBuilder()
throws CloneNotSupportedException {
// TODO Auto-generated method stub
return null;
}
}
Ads help maintain this website.