/**
* 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.FuturesPriceCurveSensitivityIssuerCalculator;
import com.opengamma.analytics.financial.interestrate.future.calculator.FuturesPriceIssuerCalculator;
import com.opengamma.analytics.financial.interestrate.future.derivative.FuturesSecurity;
import com.opengamma.analytics.financial.provider.description.interestrate.ParameterIssuerProviderInterface;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MulticurveSensitivity;
/**
* Interface to generic futures security pricing method for multi-curve and issuer provider.
*/
public class FuturesSecurityIssuerMethod extends FuturesSecurityMethod {
/** The futures price calculator **/
private static final FuturesPriceIssuerCalculator FPIC = FuturesPriceIssuerCalculator.getInstance();
/** The futures price calculator **/
private static final FuturesPriceCurveSensitivityIssuerCalculator FPCSIC = FuturesPriceCurveSensitivityIssuerCalculator.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 ParameterIssuerProviderInterface multicurve) {
return futures.accept(FPIC, 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 ParameterIssuerProviderInterface multicurve) {
return futures.accept(FPCSIC, multicurve);
}
}