/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.forex.option.localvol;
import java.util.List;
import com.opengamma.engine.function.FunctionDefinition;
import com.opengamma.engine.function.config.AbstractFunctionConfigurationBean;
import com.opengamma.engine.function.config.FunctionConfiguration;
import com.opengamma.engine.function.config.FunctionConfigurationSource;
import com.opengamma.financial.analytics.model.volatility.surface.black.BlackVolatilitySurfacePropertyNamesAndValues;
/**
* Function repository configuration source for the functions contained in this package.
*/
public class LocalVolFunctions extends AbstractFunctionConfigurationBean {
/**
* Default instance of a repository configuration source exposing the functions from this package.
*
* @return the configuration source exposing functions from this package
*/
public static FunctionConfigurationSource instance() {
return new LocalVolFunctions().getObjectCreating();
}
protected void addPDEFunction(final List<FunctionConfiguration> functions, final Class<? extends FunctionDefinition> function) {
functions.add(functionConfiguration(function, BlackVolatilitySurfacePropertyNamesAndValues.MIXED_LOG_NORMAL));
functions.add(functionConfiguration(function, BlackVolatilitySurfacePropertyNamesAndValues.SABR));
functions.add(functionConfiguration(function, BlackVolatilitySurfacePropertyNamesAndValues.SPLINE));
}
@Override
protected void addAllConfigurations(final List<FunctionConfiguration> functions) {
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEDualDeltaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEDualGammaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEForwardDeltaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEForwardGammaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEForwardVegaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEForwardVannaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEForwardVommaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridDualDeltaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridDualGammaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridForwardDeltaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridForwardGammaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridForwardVegaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridForwardVannaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridForwardVommaFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridImpliedVolatilityFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEGridPipsPresentValueFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEImpliedVolatilityFunction.class);
addPDEFunction(functions, FXOptionLocalVolatilityForwardPDEPipsPresentValueFunction.class);
}
}