/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.interestrate.future.provider;
import com.opengamma.analytics.financial.interestrate.future.calculator.FuturesPriceCurveSensitivityMulticurveCalculator;
import com.opengamma.analytics.financial.interestrate.future.calculator.FuturesPriceMulticurveCalculator;
import com.opengamma.analytics.financial.interestrate.future.derivative.FuturesSecurity;
import com.opengamma.analytics.financial.provider.description.interestrate.ParameterProviderInterface;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MulticurveSensitivity;
/**
* Interface to generic futures security pricing method for multi-curve provider.
*/
public class FuturesSecurityMulticurveMethod extends FuturesSecurityMethod {
/** The futures price calculator **/
private static final FuturesPriceMulticurveCalculator FPMC = FuturesPriceMulticurveCalculator.getInstance();
/** The futures price calculator **/
private static final FuturesPriceCurveSensitivityMulticurveCalculator FPCSMC = FuturesPriceCurveSensitivityMulticurveCalculator.getInstance();
/**
* Computes the quoted price of a futures from a multicurve provider.
* @param futures The futures security.
* @param multicurve The multicurve provider.
* @return The price.
*/
public double price(final FuturesSecurity futures, final ParameterProviderInterface multicurve) {
return futures.accept(FPMC, multicurve);
}
/**
* Computes the quoted price curve sensitivity of a futures from a multicurve provider.
* @param futures The futures security.
* @param multicurve The multicurve provider.
* @return The price curve sensitivity.
*/
public MulticurveSensitivity priceCurveSensitivity(final FuturesSecurity futures, final ParameterProviderInterface multicurve) {
return futures.accept(FPCSMC, multicurve);
}
}