/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.model.volatility.smile.fitting.interpolation;
import com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData;
import com.opengamma.analytics.financial.model.volatility.smile.function.VolatilityFunctionProvider;
import com.opengamma.analytics.math.function.Function1D;
/**
* Left and right extrapolation used with SABR smile interpolation model,
* {@link SmileInterpolatorSABRWithExtrapolation}
*/
public abstract class SmileExtrapolationFunctionSABRProvider {
/**
* @param sabrDataLow The SABR data for the leftmost subinterval
* @param sabrDataHigh The SABR data for the rightmost subinterval. If interpolated globally,
* we have sabrDataLow == sabrDataHigh
* @param volatilityFunction The volatility formula
* @param forward The forward
* @param expiry The expiry
* @param cutOffStrikeLow The left cutoff
* @param cutOffStrikeHigh The right cutoff
* @return Volatility function of the extrapolation
*/
abstract Function1D<Double, Double> getExtrapolationFunction(final SABRFormulaData sabrDataLow,
final SABRFormulaData sabrDataHigh,
final VolatilityFunctionProvider<SABRFormulaData> volatilityFunction, final double forward, final double expiry,
final double cutOffStrikeLow, final double cutOffStrikeHigh);
}