/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.var;
import java.util.List;
import com.opengamma.analytics.financial.schedule.ScheduleCalculatorFactory;
import com.opengamma.analytics.financial.schedule.TimeSeriesSamplingFunctionFactory;
import com.opengamma.analytics.math.statistics.descriptive.StatisticsCalculatorFactory;
import com.opengamma.engine.function.config.AbstractFunctionConfigurationBean;
import com.opengamma.engine.function.config.FunctionConfiguration;
import com.opengamma.engine.function.config.FunctionConfigurationSource;
import com.opengamma.util.ArgumentChecker;
/**
* Function repository configuration source for the functions contained in this package and sub-packages.
*/
public class VaRFunctions 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 VaRFunctions().getObjectCreating();
}
/**
* Function repository configuration source for the default functions contained in this package.
*/
public static class Defaults extends AbstractFunctionConfigurationBean {
private String _samplingPeriodName = "P2Y";
private String _scheduleName = ScheduleCalculatorFactory.DAILY;
private String _samplingCalculatorName = TimeSeriesSamplingFunctionFactory.PREVIOUS_AND_FIRST_VALUE_PADDING;
private String _meanCalculatorName = StatisticsCalculatorFactory.MEAN;
private String _stdDevCalculatorName = StatisticsCalculatorFactory.SAMPLE_STANDARD_DEVIATION;
private double _confidenceLevel = 0.99;
private double _horizon = 1d;
public String getSamplingPeriodName() {
return _samplingPeriodName;
}
public void setSamplingPeriodName(final String samplingPeriodName) {
_samplingPeriodName = samplingPeriodName;
}
public String getScheduleName() {
return _scheduleName;
}
public void setScheduleName(final String scheduleName) {
_scheduleName = scheduleName;
}
public String getSamplingCalculatorName() {
return _samplingCalculatorName;
}
public void setSamplingCalculatorName(final String samplingCalculatorName) {
_samplingCalculatorName = samplingCalculatorName;
}
public String getMeanCalculatorName() {
return _meanCalculatorName;
}
public void setMeanCalculatorName(final String meanCalculatorName) {
_meanCalculatorName = meanCalculatorName;
}
public String getStdDevCalculatorName() {
return _stdDevCalculatorName;
}
public void setStdDevCalculatorName(final String stdDevCalculatorName) {
_stdDevCalculatorName = stdDevCalculatorName;
}
public double getConfidenceLevel() {
return _confidenceLevel;
}
public void setConfidenceLevel(final double confidenceLevel) {
_confidenceLevel = confidenceLevel;
}
public double getHorizon() {
return _horizon;
}
public void setHorizonName(final double horizon) {
_horizon = horizon;
}
@Override
public void afterPropertiesSet() {
ArgumentChecker.notNull(getSamplingPeriodName(), "samplingPeriodName");
ArgumentChecker.notNull(getScheduleName(), "scheduleName");
ArgumentChecker.notNull(getSamplingCalculatorName(), "samplingCalculatorName");
ArgumentChecker.notNull(getMeanCalculatorName(), "meanCalculatorName");
ArgumentChecker.notNull(getStdDevCalculatorName(), "stdDevCalculatorName");
super.afterPropertiesSet();
}
@Override
protected void addAllConfigurations(final List<FunctionConfiguration> functions) {
functions.add(functionConfiguration(NormalHistoricalVaRDefaultPropertiesFunction.class, getSamplingPeriodName(), getScheduleName(), getSamplingCalculatorName(), getMeanCalculatorName(),
getStdDevCalculatorName(), Double.toString(getConfidenceLevel()), Double.toString(getHorizon())));
functions.add(functionConfiguration(EmpiricalHistoricalVaRDefaultPropertiesFunction.class, getSamplingPeriodName(), getScheduleName(), getSamplingCalculatorName(),
Double.toString(getConfidenceLevel()), Double.toString(getHorizon())));
}
}
@Override
protected void addAllConfigurations(final List<FunctionConfiguration> functions) {
functions.add(functionConfiguration(EmpiricalHistoricalConditionalVaRFunction.class));
functions.add(functionConfiguration(EmpiricalHistoricalVaRFunction.class));
functions.add(functionConfiguration(NormalHistoricalVaRFunction.class));
}
}