/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.interestrate; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureOptionMarginSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureOptionMarginTransaction; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureOptionPremiumSecurity; import com.opengamma.analytics.financial.interestrate.future.derivative.InterestRateFutureOptionPremiumTransaction; import com.opengamma.analytics.financial.interestrate.future.method.InterestRateFutureOptionMarginSecurityBlackSurfaceMethod; import com.opengamma.analytics.financial.interestrate.future.method.InterestRateFutureOptionPremiumSecurityBlackSurfaceMethod; import com.opengamma.analytics.financial.interestrate.swaption.derivative.SwaptionPhysicalFixedIbor; import com.opengamma.analytics.financial.interestrate.swaption.method.SwaptionPhysicalFixedIborBlackMethod; /** * Interpolates, for interest rate instruments using Black model, and returns the implied volatility required. * @deprecated {@link YieldCurveBundle} is deprecated */ @Deprecated public final class BlackPriceCalculator extends InstrumentDerivativeVisitorAdapter<YieldCurveBundle, Double> { /** The method unique instance.*/ private static final BlackPriceCalculator INSTANCE = new BlackPriceCalculator(); /** @return the unique instance of the class. */ public static BlackPriceCalculator getInstance() { return INSTANCE; } /** Constructor. */ BlackPriceCalculator() { } /** The physical swaption pricer */ private static final SwaptionPhysicalFixedIborBlackMethod SWAPTION_PHYSICAL = SwaptionPhysicalFixedIborBlackMethod.getInstance(); /** The margined interest rate future option pricer */ private static final InterestRateFutureOptionMarginSecurityBlackSurfaceMethod MARGINED_IR_FUTURE_OPTION_SECURITY = InterestRateFutureOptionMarginSecurityBlackSurfaceMethod.getInstance(); /** The premium interest rate future option pricer */ private static final InterestRateFutureOptionPremiumSecurityBlackSurfaceMethod PREMIUM_IR_FUTURE_OPTION_SECURITY = InterestRateFutureOptionPremiumSecurityBlackSurfaceMethod.getInstance(); @Override public Double visitSwaptionPhysicalFixedIbor(final SwaptionPhysicalFixedIbor swaption, final YieldCurveBundle curves) { return SWAPTION_PHYSICAL.presentValue(swaption, curves).getAmount(); // TODO Confirm this is the output the user would expect, wrt scaling of Annuity/PVBP } @Override public Double visitInterestRateFutureOptionMarginSecurity(final InterestRateFutureOptionMarginSecurity irFutureOption, final YieldCurveBundle curves) { return MARGINED_IR_FUTURE_OPTION_SECURITY.optionPrice(irFutureOption, curves); } @Override public Double visitInterestRateFutureOptionPremiumSecurity(final InterestRateFutureOptionPremiumSecurity irFutureOption, final YieldCurveBundle curves) { return PREMIUM_IR_FUTURE_OPTION_SECURITY.optionPrice(irFutureOption, curves); } @Override public Double visitInterestRateFutureOptionMarginTransaction(final InterestRateFutureOptionMarginTransaction irFutureOption, final YieldCurveBundle curves) { return MARGINED_IR_FUTURE_OPTION_SECURITY.optionPrice(irFutureOption.getUnderlyingSecurity(), curves); } @Override public Double visitInterestRateFutureOptionPremiumTransaction(final InterestRateFutureOptionPremiumTransaction irFutureOption, final YieldCurveBundle curves) { return PREMIUM_IR_FUTURE_OPTION_SECURITY.optionPrice(irFutureOption.getUnderlyingSecurity(), curves); } }