/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.provider.calculator.blackbondfutures;
import com.opengamma.analytics.financial.interestrate.InstrumentDerivativeVisitorAdapter;
import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesOptionMarginTransaction;
import com.opengamma.analytics.financial.interestrate.future.derivative.BondFuturesOptionPremiumTransaction;
import com.opengamma.analytics.financial.interestrate.future.provider.BondFuturesOptionPremiumTransactionBlackBondFuturesMethod;
import com.opengamma.analytics.financial.interestrate.future.provider.FuturesSecurityIssuerMethod;
import com.opengamma.analytics.financial.interestrate.future.provider.FuturesTransactionBlackBondFuturesMethod;
import com.opengamma.analytics.financial.provider.description.interestrate.BlackBondFuturesProviderInterface;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MultipleCurrencyMulticurveSensitivity;
/**
* Calculator of the present value as a multiple currency amount.
*/
public final class PresentValueCurveSensitivityBlackBondFuturesOptionCalculator extends
InstrumentDerivativeVisitorAdapter<BlackBondFuturesProviderInterface, MultipleCurrencyMulticurveSensitivity> {
private final FuturesTransactionBlackBondFuturesMethod _methodFutures;
private static final BondFuturesOptionPremiumTransactionBlackBondFuturesMethod METHOD_OPT_BND_FUT_PREMIUM =
BondFuturesOptionPremiumTransactionBlackBondFuturesMethod.getInstance();
/**
* Default constructor.
*/
public PresentValueCurveSensitivityBlackBondFuturesOptionCalculator() {
_methodFutures = new FuturesTransactionBlackBondFuturesMethod();
}
/**
* Constructor from a futures method.
*/
public PresentValueCurveSensitivityBlackBondFuturesOptionCalculator(FuturesSecurityIssuerMethod methodFutures) {
_methodFutures = new FuturesTransactionBlackBondFuturesMethod(methodFutures);
}
// ----- Futures ------
@Override
public MultipleCurrencyMulticurveSensitivity visitBondFuturesOptionMarginTransaction(
final BondFuturesOptionMarginTransaction futures, final BlackBondFuturesProviderInterface black) {
return _methodFutures.presentValueCurveSensitivity(futures, black);
}
@Override
public MultipleCurrencyMulticurveSensitivity visitBondFutureOptionPremiumTransaction(
final BondFuturesOptionPremiumTransaction futures, final BlackBondFuturesProviderInterface black) {
return METHOD_OPT_BND_FUT_PREMIUM.presentValueCurveSensitivity(futures, black);
}
}