/**
* Copyright (C) 2011 - 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.swaption.derivative.SwaptionCashFixedIbor;
import com.opengamma.analytics.financial.interestrate.swaption.derivative.SwaptionPhysicalFixedIbor;
import com.opengamma.analytics.financial.interestrate.swaption.provider.SwaptionCashFixedIborBlackMethod;
import com.opengamma.analytics.financial.interestrate.swaption.provider.SwaptionPhysicalFixedIborBlackMethod;
import com.opengamma.analytics.financial.provider.description.interestrate.BlackSwaptionFlatProviderInterface;
/**
* Interpolates, for interest rate instruments using Black model, and returns the implied volatility required.
*/
public final class SwaptionBlackImpliedVolatilityCalculator extends InstrumentDerivativeVisitorAdapter<BlackSwaptionFlatProviderInterface, Double> {
/**
* The method unique instance.
*/
private static final SwaptionBlackImpliedVolatilityCalculator INSTANCE = new SwaptionBlackImpliedVolatilityCalculator();
/**
* Return the unique instance of the class.
* @return The instance.
*/
public static SwaptionBlackImpliedVolatilityCalculator getInstance() {
return INSTANCE;
}
/**
* Constructor.
*/
private SwaptionBlackImpliedVolatilityCalculator() {
}
/** The implied volatility calculator for physically-settled swaptions */
private static final SwaptionPhysicalFixedIborBlackMethod METHOD_SWAPTION_PHYSICAL = SwaptionPhysicalFixedIborBlackMethod.getInstance();
/** The implied volatility calculator for cash-settled swaptions */
private static final SwaptionCashFixedIborBlackMethod METHOD_SWAPTION_CASH = SwaptionCashFixedIborBlackMethod.getInstance();
@Override
public Double visitSwaptionPhysicalFixedIbor(final SwaptionPhysicalFixedIbor swaption, final BlackSwaptionFlatProviderInterface curves) {
return METHOD_SWAPTION_PHYSICAL.impliedVolatility(swaption, curves);
}
@Override
public Double visitSwaptionCashFixedIbor(final SwaptionCashFixedIbor swaption, final BlackSwaptionFlatProviderInterface curves) {
return METHOD_SWAPTION_CASH.impliedVolatility(swaption, curves);
}
}