/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.future;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.analytics.financial.interestrate.InstrumentDerivative;
import com.opengamma.analytics.financial.interestrate.PV01Calculator;
import com.opengamma.analytics.financial.interestrate.YieldCurveBundle;
import com.opengamma.core.security.Security;
import com.opengamma.engine.value.ComputedValue;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.financial.analytics.ircurve.InterpolatedYieldCurveSpecificationWithSecurities;
import com.opengamma.financial.analytics.model.discounting.DiscountingPV01Function;
/**
* PV01 function for interest rate futures
* @deprecated Use {@link DiscountingPV01Function}
*/
@Deprecated
public class InterestRateFuturePV01Function extends InterestRateFutureCurveSpecificFunction {
private static final PV01Calculator CALCULATOR = PV01Calculator.getInstance();
public InterestRateFuturePV01Function() {
super(ValueRequirementNames.PV01);
}
@Override
protected Set<ComputedValue> getResults(final InstrumentDerivative irFuture, final String curveName, final InterpolatedYieldCurveSpecificationWithSecurities curveSpec,
final YieldCurveBundle curves, final ValueSpecification resultSpec, final Security security) {
final Map<String, Double> pv01 = CALCULATOR.visit(irFuture, curves);
if (!pv01.containsKey(curveName)) {
throw new OpenGammaRuntimeException("Could not get PV01 for curve named " + curveName + "; should never happen");
}
return Collections.singleton(new ComputedValue(resultSpec, pv01.get(curveName)));
}
}