/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.volatility.local;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.financial.analytics.model.InstrumentTypeProperties;
import com.opengamma.financial.analytics.model.volatility.surface.black.BlackVolatilitySurfacePropertyNamesAndValues;
/**
*
*/
public abstract class ForexDupireLocalVolatilitySurfaceFunction extends DupireLocalVolatilitySurfaceFunction {
private static final Logger s_logger = LoggerFactory.getLogger(ForexDupireLocalVolatilitySurfaceFunction.class);
@Override
public ComputationTargetType getTargetType() {
return ComputationTargetType.UNORDERED_CURRENCY_PAIR;
}
@Override
protected String getInstrumentType() {
return InstrumentTypeProperties.FOREX;
}
/**
* Function producing a local volatility surface using a Black volatility surface with spline interpolation
*/
public static class Spline extends ForexDupireLocalVolatilitySurfaceFunction {
@Override
protected String getBlackSmileInterpolatorName() {
return BlackVolatilitySurfacePropertyNamesAndValues.SPLINE;
}
}
/**
* Function producing a local volatility surface using a Black volatility surface with SABR interpolation
*/
public static class SABR extends ForexDupireLocalVolatilitySurfaceFunction {
@Override
protected String getBlackSmileInterpolatorName() {
return BlackVolatilitySurfacePropertyNamesAndValues.SABR;
}
}
/**
* Function producing a local volatility surface using a Black volatility surface with mixed log-normal interpolation
*/
public static class MixedLogNormal extends ForexDupireLocalVolatilitySurfaceFunction {
@Override
protected String getBlackSmileInterpolatorName() {
return BlackVolatilitySurfacePropertyNamesAndValues.MIXED_LOG_NORMAL;
}
}
}