/** * 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.FuturesPriceBlackSTIRFuturesCalculator; import com.opengamma.analytics.financial.interestrate.future.calculator.FuturesPriceBlackSensitivityBlackSTIRFuturesCalculator; import com.opengamma.analytics.financial.interestrate.future.calculator.FuturesPriceCurveSensitivityBlackSTIRFuturesCalculator; import com.opengamma.analytics.financial.interestrate.future.derivative.FuturesSecurity; import com.opengamma.analytics.financial.interestrate.sensitivity.PresentValueBlackSTIRFuturesCubeSensitivity; import com.opengamma.analytics.financial.provider.description.interestrate.BlackSTIRFuturesProviderInterface; import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MulticurveSensitivity; /** * Interface to generic futures security pricing method for multi-curve, issuer and Black on bond futures parameter provider. */ public class FuturesSecurityBlackSTIRFuturesMethod extends FuturesSecurityMethod { /** The futures price calculator **/ private static final FuturesPriceBlackSTIRFuturesCalculator FPC = FuturesPriceBlackSTIRFuturesCalculator.getInstance(); /** The futures price curve sensitivity calculator **/ private static final FuturesPriceCurveSensitivityBlackSTIRFuturesCalculator FPCSC = FuturesPriceCurveSensitivityBlackSTIRFuturesCalculator.getInstance(); /** The futures price Black sensitivity sensitivity calculator **/ private static final FuturesPriceBlackSensitivityBlackSTIRFuturesCalculator FPBSC = FuturesPriceBlackSensitivityBlackSTIRFuturesCalculator.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 BlackSTIRFuturesProviderInterface multicurve) { return futures.accept(FPC, 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 BlackSTIRFuturesProviderInterface multicurve) { return futures.accept(FPCSC, multicurve); } /** * Computes the price sensitivity to the Black implied volatility (point sensitivity) from the curve and volatility provider. * @param futures The futures security. * @param multicurve The multicurve provider. * @return The price Black sensitivity. */ public PresentValueBlackSTIRFuturesCubeSensitivity priceBlackSensitivity(final FuturesSecurity futures, final BlackSTIRFuturesProviderInterface multicurve) { return futures.accept(FPBSC, multicurve); } }