/**
* 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.FuturesPriceCurveSensitivityHullWhiteCalculator;
import com.opengamma.analytics.financial.interestrate.future.calculator.FuturesPriceHullWhiteCalculator;
import com.opengamma.analytics.financial.interestrate.future.derivative.FuturesSecurity;
import com.opengamma.analytics.financial.provider.description.interestrate.HullWhiteOneFactorProviderInterface;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MulticurveSensitivity;
/**
* Interface to generic futures security pricing method for multi-curve and Hull-White one factor paramter provider.
*/
public class FuturesSecurityHullWhiteMethod extends FuturesSecurityMethod {
/** The futures price calculator **/
private static final FuturesPriceHullWhiteCalculator FPHWC = FuturesPriceHullWhiteCalculator.getInstance();
/** The futures price curve sensitivity calculator **/
private static final FuturesPriceCurveSensitivityHullWhiteCalculator FPCSHWC = FuturesPriceCurveSensitivityHullWhiteCalculator.getInstance();
// /** The futures price and price curve sensitivity (simultaneous) calculator **/
// private static final FuturesPriceADHullWhiteCalculator FPADHWIC = FuturesPriceADHullWhiteCalculator.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 HullWhiteOneFactorProviderInterface multicurve) {
return futures.accept(FPHWC, 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 HullWhiteOneFactorProviderInterface multicurve) {
return futures.accept(FPCSHWC, multicurve);
}
// /**
// * Computes the future price and the price curve sensitivity simultaneously (Algorithmic differentiation).
// * @param futures The future security.
// * @param multicurve The multicurve provider.
// * @return The price and price curve sensitivity as a pair.
// */
// public Pair<Double, MulticurveSensitivity> priceAD(final BondFuturesSecurity futures, final HullWhiteOneFactorProviderInterface multicurve) {
// return futures.accept(FPADHWC, multicurve);
// }
}