/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics; import java.util.List; import com.opengamma.engine.function.config.AbstractFunctionConfigurationBean; import com.opengamma.engine.function.config.CombiningFunctionConfigurationSource; import com.opengamma.engine.function.config.FunctionConfiguration; import com.opengamma.engine.function.config.FunctionConfigurationSource; import com.opengamma.engine.value.ValueRequirementNames; import com.opengamma.financial.analytics.cashflow.CashFlowFunctions; import com.opengamma.financial.analytics.covariance.CovarianceFunctions; import com.opengamma.financial.analytics.fxforwardcurve.FXForwardCurveFunctions; import com.opengamma.financial.analytics.ircurve.IRCurveFunctions; import com.opengamma.financial.analytics.model.MarketQuotePositionFunction; import com.opengamma.financial.analytics.model.ModelFunctions; import com.opengamma.financial.analytics.model.riskfactor.option.OptionGreekToValueGreekConverterFunction; import com.opengamma.financial.analytics.timeseries.TimeSeriesFunctions; import com.opengamma.financial.analytics.volatility.VolatilityFunctions; import com.opengamma.financial.security.function.DefaultSecurityAttributeFunction; import com.opengamma.financial.security.function.SecurityFunctions; import com.opengamma.financial.security.lookup.SecurityAttribute; /** * Function repository configuration source for the functions contained in this package and sub-packages. */ public class AnalyticsFunctions extends AbstractFunctionConfigurationBean { /** * Default instance of a repository configuration source exposing the functions from this package and its sub-packages. * * @return the configuration source exposing functions from this package and its sub-packages */ public static FunctionConfigurationSource instance() { return new AnalyticsFunctions().getObjectCreating(); } /** * Adds an aggregation function for the given requirement name that produces the sum of the child position values. * * @param functions the function configuration list to update, not null * @param requirementName the requirement name, not null */ public static void addSummingFunction(final List<FunctionConfiguration> functions, final String requirementName) { functions.add(functionConfiguration(FilteringSummingFunction.class, requirementName)); functions.add(functionConfiguration(SummingFunction.class, requirementName)); } public static void addValueGreekAndSummingFunction(final List<FunctionConfiguration> functions, final String requirementName) { functions.add(functionConfiguration(OptionGreekToValueGreekConverterFunction.class, requirementName)); addScalingAndSummingFunction(functions, requirementName); } /** * Adds a unit scaling function to deliver the value from position's underlying security or trade at the position level. This is normally used for positions in OTC instruments that are stored with a * quantity of 1 in OpenGamma. * * @param functions the function configuration list to update, not null * @param requirementName the requirement name, not null */ public static void addUnitScalingFunction(final List<FunctionConfiguration> functions, final String requirementName) { functions.add(functionConfiguration(UnitPositionOrTradeScalingFunction.class, requirementName)); functions.add(functionConfiguration(PositionTradeScalingFunction.class, requirementName)); } public static void addUnitScalingAndSummingFunction(final List<FunctionConfiguration> functions, final String requirementName) { addUnitScalingFunction(functions, requirementName); addSummingFunction(functions, requirementName); } /** * Adds a scaling function to deliver the value from a position's underlying security or trade multiplied by the quantity at the position level. This is used for positions in exchange traded * instruments. * * @param functions the function configuration list to update, not null * @param requirementName the requirement name, not null */ public static void addScalingFunction(final List<FunctionConfiguration> functions, final String requirementName) { functions.add(functionConfiguration(PositionOrTradeScalingFunction.class, requirementName)); functions.add(functionConfiguration(PositionTradeScalingFunction.class, requirementName)); } public static void addScalingAndSummingFunction(final List<FunctionConfiguration> functions, final String requirementName) { addScalingFunction(functions, requirementName); addSummingFunction(functions, requirementName); } public static void addLastHistoricalValueFunction(final List<FunctionConfiguration> functions, final String requirementName) { addUnitScalingFunction(functions, requirementName); functions.add(functionConfiguration(LastHistoricalValueFunction.class, requirementName)); } @Override protected void addAllConfigurations(final List<FunctionConfiguration> functions) { functions.add(functionConfiguration(AttributesFunction.class)); functions.add(functionConfiguration(ExternalIdFunction.class)); functions.add(functionConfiguration(CurrencyPairsFunction.class)); functions.add(functionConfiguration(DV01Function.class)); functions.add(functionConfiguration(NotionalFunction.class)); functions.add(functionConfiguration(PortfolioNodeWeightFunction.class)); functions.add(functionConfiguration(PositionWeightFunction.class)); functions.add(functionConfiguration(BucketedPV01Function.class)); //security attribute functions functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.DIRECTION.name(), ValueRequirementNames.PAY_REC)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.FLOAT_FREQUENCY.name(), ValueRequirementNames.FLOAT_FREQUENCY)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.FREQUENCY.name(), ValueRequirementNames.FREQUENCY)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.INDEX.name(), ValueRequirementNames.INDEX)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.MATURITY.name(), ValueRequirementNames.MATURITY)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.PRODUCT.name(), ValueRequirementNames.PRODUCT)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.QUANTITY.name(), ValueRequirementNames.QUANTITY)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.RATE.name(), ValueRequirementNames.RATE)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.START.name(), ValueRequirementNames.START)); functions.add(functionConfiguration(DefaultSecurityAttributeFunction.class, SecurityAttribute.TYPE.name(), ValueRequirementNames.TYPE)); addScalingAndSummingFunction(functions, ValueRequirementNames.ACCRUED_INTEREST); addScalingAndSummingFunction(functions, ValueRequirementNames.ASSET_LEG_PV); addUnitScalingFunction(functions, ValueRequirementNames.ATTRIBUTES); addUnitScalingFunction(functions, ValueRequirementNames.EXTERNAL_ID); addUnitScalingFunction(functions, ValueRequirementNames.BLACK_VOLATILITY_GRID_PRICE); addScalingAndSummingFunction(functions, ValueRequirementNames.BOND_COUPON_PAYMENT_TIMES); addUnitScalingFunction(functions, ValueRequirementNames.BOND_DETAILS); addUnitScalingFunction(functions, ValueRequirementNames.BOND_TENOR); addUnitScalingFunction(functions, ValueRequirementNames.CARRY_RHO); addSummingFunction(functions, ValueRequirementNames.CREDIT_SENSITIVITIES); addUnitScalingFunction(functions, ValueRequirementNames.CLEAN_PRICE); addUnitScalingFunction(functions, ValueRequirementNames.CONVEXITY); addUnitScalingFunction(functions, ValueRequirementNames.CONVEXITY_ADJUSTMENT); addLastHistoricalValueFunction(functions, ValueRequirementNames.DAILY_APPLIED_BETA); addLastHistoricalValueFunction(functions, ValueRequirementNames.DAILY_MARKET_CAP); addLastHistoricalValueFunction(functions, ValueRequirementNames.DAILY_PRICE); addLastHistoricalValueFunction(functions, ValueRequirementNames.DAILY_VOLUME); addUnitScalingFunction(functions, ValueRequirementNames.DELTA); addUnitScalingFunction(functions, ValueRequirementNames.DELTA_BLEED); addUnitScalingFunction(functions, ValueRequirementNames.DIRTY_PRICE); addUnitScalingFunction(functions, ValueRequirementNames.DRIFTLESS_THETA); addUnitScalingFunction(functions, ValueRequirementNames.DUAL_DELTA); addUnitScalingFunction(functions, ValueRequirementNames.DUAL_GAMMA); addSummingFunction(functions, ValueRequirementNames.DV01); addUnitScalingFunction(functions, ValueRequirementNames.DVANNA_DVOL); addUnitScalingFunction(functions, ValueRequirementNames.DZETA_DVOL); addUnitScalingFunction(functions, ValueRequirementNames.ELASTICITY); addSummingFunction(functions, ValueRequirementNames.EXTERNAL_SENSITIVITIES); addScalingAndSummingFunction(functions, ValueRequirementNames.FAIR_VALUE); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.FIXED_PAY_CASH_FLOWS); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.FIXED_RECEIVE_CASH_FLOWS); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.FLOATING_PAY_CASH_FLOWS); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.FLOATING_RECEIVE_CASH_FLOWS); addUnitScalingFunction(functions, ValueRequirementNames.FORWARD); addUnitScalingFunction(functions, ValueRequirementNames.FORWARD_DELTA); addUnitScalingFunction(functions, ValueRequirementNames.FORWARD_GAMMA); addUnitScalingFunction(functions, ValueRequirementNames.FORWARD_VANNA); addUnitScalingFunction(functions, ValueRequirementNames.FORWARD_VEGA); addUnitScalingFunction(functions, ValueRequirementNames.FORWARD_VOMMA); addUnitScalingFunction(functions, ValueRequirementNames.FUNDING_LEG_DETAILS); addScalingAndSummingFunction(functions, ValueRequirementNames.FUNDING_LEG_PV); addScalingAndSummingFunction(functions, ValueRequirementNames.FX_CURRENCY_EXPOSURE); addUnitScalingFunction(functions, ValueRequirementNames.FX_CURVE_SENSITIVITIES); addScalingAndSummingFunction(functions, ValueRequirementNames.FX_FORWARD_POINTS_NODE_SENSITIVITIES); addScalingAndSummingFunction(functions, ValueRequirementNames.FX_PRESENT_VALUE); addUnitScalingFunction(functions, ValueRequirementNames.FORWARD_DRIFTLESS_THETA); addUnitScalingFunction(functions, ValueRequirementNames.GAMMA); addUnitScalingFunction(functions, ValueRequirementNames.GAMMA_BLEED); addUnitScalingFunction(functions, ValueRequirementNames.GAMMA_P); addUnitScalingFunction(functions, ValueRequirementNames.GAMMA_P_BLEED); addScalingAndSummingFunction(functions, ValueRequirementNames.GAMMA_PV01); addUnitScalingFunction(functions, ValueRequirementNames.GRID_DUAL_DELTA); addUnitScalingFunction(functions, ValueRequirementNames.GRID_DUAL_GAMMA); addUnitScalingFunction(functions, ValueRequirementNames.GRID_FORWARD_DELTA); addUnitScalingFunction(functions, ValueRequirementNames.GRID_FORWARD_GAMMA); addUnitScalingFunction(functions, ValueRequirementNames.GRID_FORWARD_VANNA); addUnitScalingFunction(functions, ValueRequirementNames.GRID_FORWARD_VEGA); addUnitScalingFunction(functions, ValueRequirementNames.GRID_FORWARD_VOMMA); addUnitScalingFunction(functions, ValueRequirementNames.GRID_IMPLIED_VOLATILITY); addUnitScalingFunction(functions, ValueRequirementNames.GRID_PRESENT_VALUE); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.GROSS_BASIS); addUnitScalingFunction(functions, ValueRequirementNames.IMPLIED_VOLATILITY); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_DELTA); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_DUAL_DELTA); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_DUAL_GAMMA); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_FOREX_PV_QUOTES); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_FULL_PDE_GRID); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_GAMMA); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_GRID_IMPLIED_VOL); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_GRID_PRICE); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_PDE_BUCKETED_VEGA); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_PDE_GREEKS); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_VANNA); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_VEGA); addUnitScalingFunction(functions, ValueRequirementNames.LOCAL_VOLATILITY_VOMMA); addUnitScalingFunction(functions, ValueRequirementNames.MACAULAY_DURATION); addUnitScalingFunction(functions, ValueRequirementNames.MARKET_CLEAN_PRICE); addUnitScalingFunction(functions, ValueRequirementNames.MARKET_DIRTY_PRICE); addSummingFunction(functions, ValueRequirementNames.MTM_PNL); addUnitScalingFunction(functions, ValueRequirementNames.MTM_PNL); addUnitScalingFunction(functions, ValueRequirementNames.MARKET_YTM); addUnitScalingFunction(functions, ValueRequirementNames.MODIFIED_DURATION); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.NET_BASIS); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.NETTED_FIXED_CASH_FLOWS); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.NOTIONAL); addUnitScalingFunction(functions, ValueRequirementNames.PHI); addUnitScalingFunction(functions, ValueRequirementNames.PAR_RATE); addUnitScalingFunction(functions, ValueRequirementNames.PAR_SPREAD); addUnitScalingFunction(functions, ValueRequirementNames.PAR_RATE_CURVE_SENSITIVITY); addUnitScalingFunction(functions, ValueRequirementNames.PAR_RATE_PARALLEL_CURVE_SHIFT); addScalingAndSummingFunction(functions, ValueRequirementNames.PAY_LEG_PRESENT_VALUE); addUnitScalingFunction(functions, ValueRequirementNames.PIECEWISE_SABR_VOL_SURFACE); addScalingAndSummingFunction(functions, ValueRequirementNames.PNL); addSummingFunction(functions, ValueRequirementNames.PNL_SERIES); addScalingAndSummingFunction(functions, ValueRequirementNames.POSITION_DELTA); addScalingAndSummingFunction(functions, ValueRequirementNames.POSITION_GAMMA); addScalingAndSummingFunction(functions, ValueRequirementNames.POSITION_RHO); addScalingAndSummingFunction(functions, ValueRequirementNames.POSITION_THETA); addScalingAndSummingFunction(functions, ValueRequirementNames.POSITION_VEGA); addScalingAndSummingFunction(functions, ValueRequirementNames.POSITION_WEIGHTED_VEGA); addScalingAndSummingFunction(functions, ValueRequirementNames.PRESENT_VALUE); addScalingAndSummingFunction(functions, ValueRequirementNames.PRESENT_VALUE_CURVE_SENSITIVITY); addScalingAndSummingFunction(functions, ValueRequirementNames.PRESENT_VALUE_SABR_ALPHA_NODE_SENSITIVITY); addScalingFunction(functions, ValueRequirementNames.PRESENT_VALUE_SABR_ALPHA_SENSITIVITY); addScalingAndSummingFunction(functions, ValueRequirementNames.PRESENT_VALUE_SABR_NU_NODE_SENSITIVITY); addScalingFunction(functions, ValueRequirementNames.PRESENT_VALUE_SABR_NU_SENSITIVITY); addScalingAndSummingFunction(functions, ValueRequirementNames.PRESENT_VALUE_SABR_RHO_NODE_SENSITIVITY); addScalingFunction(functions, ValueRequirementNames.PRESENT_VALUE_SABR_RHO_SENSITIVITY); addScalingAndSummingFunction(functions, ValueRequirementNames.PRESENT_VALUE_Z_SPREAD_SENSITIVITY); addSummingFunction(functions, ValueRequirementNames.PRICE_SERIES); addScalingAndSummingFunction(functions, ValueRequirementNames.PV01); addUnitScalingFunction(functions, ValueRequirementNames.QUANTITY); addScalingAndSummingFunction(functions, ValueRequirementNames.RECEIVE_LEG_PRESENT_VALUE); addUnitScalingFunction(functions, ValueRequirementNames.RHO); addUnitScalingFunction(functions, ValueRequirementNames.SWAP_PAY_LEG_DETAILS); addUnitScalingFunction(functions, ValueRequirementNames.SWAP_RECEIVE_LEG_DETAILS); addUnitScalingFunction(functions, ValueRequirementNames.SECURITY_IMPLIED_VOLATILITY); addUnitScalingFunction(functions, ValueRequirementNames.SECURITY_MODEL_PRICE); addUnitScalingFunction(functions, ValueRequirementNames.MARK_CURRENT); addUnitScalingFunction(functions, ValueRequirementNames.SPEED); addUnitScalingFunction(functions, ValueRequirementNames.SPEED_P); addUnitScalingFunction(functions, ValueRequirementNames.SPOT); addUnitScalingFunction(functions, ValueRequirementNames.SPOT_FX_PERCENTAGE_CHANGE); addUnitScalingFunction(functions, ValueRequirementNames.SPOT_RATE_FOR_SECURITY); addUnitScalingFunction(functions, ValueRequirementNames.STRIKE_DELTA); addUnitScalingFunction(functions, ValueRequirementNames.STRIKE_GAMMA); addUnitScalingFunction(functions, ValueRequirementNames.THETA); addUnitScalingFunction(functions, ValueRequirementNames.ULTIMA); addSummingFunction(functions, ValueRequirementNames.VALUE); addScalingAndSummingFunction(functions, ValueRequirementNames.VALUE_CARRY_RHO); addValueGreekAndSummingFunction(functions, ValueRequirementNames.VALUE_DELTA); addScalingAndSummingFunction(functions, ValueRequirementNames.VALUE_DUAL_DELTA); addValueGreekAndSummingFunction(functions, ValueRequirementNames.VALUE_GAMMA); addValueGreekAndSummingFunction(functions, ValueRequirementNames.VALUE_GAMMA_P); addScalingAndSummingFunction(functions, ValueRequirementNames.VALUE_PHI); addScalingAndSummingFunction(functions, ValueRequirementNames.VALUE_RHO); addValueGreekAndSummingFunction(functions, ValueRequirementNames.VALUE_SPEED); addValueGreekAndSummingFunction(functions, ValueRequirementNames.VALUE_THETA); addScalingAndSummingFunction(functions, ValueRequirementNames.VALUE_VANNA); addValueGreekAndSummingFunction(functions, ValueRequirementNames.VALUE_VEGA); addScalingAndSummingFunction(functions, ValueRequirementNames.VALUE_VOMMA); addUnitScalingFunction(functions, ValueRequirementNames.VANNA); addUnitScalingFunction(functions, ValueRequirementNames.VARIANCE_ULTIMA); addUnitScalingFunction(functions, ValueRequirementNames.VARIANCE_VANNA); addUnitScalingFunction(functions, ValueRequirementNames.VARIANCE_VEGA); addUnitScalingFunction(functions, ValueRequirementNames.VARIANCE_VOMMA); addUnitScalingFunction(functions, ValueRequirementNames.VEGA); addUnitScalingFunction(functions, ValueRequirementNames.VEGA_BLEED); addScalingAndSummingFunction(functions, ValueRequirementNames.VEGA_MATRIX); addUnitScalingFunction(functions, ValueRequirementNames.VEGA_P); addScalingAndSummingFunction(functions, ValueRequirementNames.VEGA_QUOTE_CUBE); addScalingAndSummingFunction(functions, ValueRequirementNames.VEGA_QUOTE_MATRIX); addUnitScalingFunction(functions, ValueRequirementNames.VOMMA); addUnitScalingFunction(functions, ValueRequirementNames.VOMMA_P); addUnitScalingFunction(functions, ValueRequirementNames.WEIGHTED_VEGA); addSummingFunction(functions, ValueRequirementNames.WEIGHTED_VEGA); addScalingAndSummingFunction(functions, ValueRequirementNames.YIELD_CURVE_NODE_SENSITIVITIES); addScalingAndSummingFunction(functions, ValueRequirementNames.BLOCK_CURVE_SENSITIVITIES); addUnitScalingFunction(functions, ValueRequirementNames.YTM); addUnitScalingFunction(functions, ValueRequirementNames.ZETA); addUnitScalingFunction(functions, ValueRequirementNames.ZETA_BLEED); addUnitScalingFunction(functions, ValueRequirementNames.Z_SPREAD); addUnitScalingFunction(functions, ValueRequirementNames.ZOMMA); addUnitScalingFunction(functions, ValueRequirementNames.ZOMMA_P); addUnitScalingFunction(functions, ValueRequirementNames.BARRIER_DISTANCE); addUnitScalingFunction(functions, ValueRequirementNames.CS01); addSummingFunction(functions, ValueRequirementNames.CS01); addSummingFunction(functions, ValueRequirementNames.BUCKETED_CS01); addSummingFunction(functions, ValueRequirementNames.GAMMA_CS01); addSummingFunction(functions, ValueRequirementNames.BUCKETED_GAMMA_CS01); addSummingFunction(functions, ValueRequirementNames.RR01); addSummingFunction(functions, ValueRequirementNames.IR01); addSummingFunction(functions, ValueRequirementNames.BUCKETED_IR01); addSummingFunction(functions, ValueRequirementNames.NET_MARKET_VALUE); addUnitScalingFunction(functions, ValueRequirementNames.DV01); addUnitScalingFunction(functions, ValueRequirementNames.CS01); addUnitScalingFunction(functions, ValueRequirementNames.BUCKETED_CS01); addUnitScalingFunction(functions, ValueRequirementNames.GAMMA_CS01); addUnitScalingFunction(functions, ValueRequirementNames.BUCKETED_GAMMA_CS01); addUnitScalingFunction(functions, ValueRequirementNames.RR01); addUnitScalingFunction(functions, ValueRequirementNames.IR01); addUnitScalingFunction(functions, ValueRequirementNames.BUCKETED_IR01); addUnitScalingFunction(functions, ValueRequirementNames.JUMP_TO_DEFAULT); addUnitScalingFunction(functions, ValueRequirementNames.HAZARD_RATE_CURVE); addUnitScalingFunction(functions, ValueRequirementNames.NET_MARKET_VALUE); addScalingAndSummingFunction(functions, ValueRequirementNames.MONETIZED_VEGA); addScalingAndSummingFunction(functions, ValueRequirementNames.CLEAN_PRESENT_VALUE); addScalingAndSummingFunction(functions, ValueRequirementNames.DIRTY_PRESENT_VALUE); addUnitScalingFunction(functions, ValueRequirementNames.ACCRUED_DAYS); addUnitScalingFunction(functions, ValueRequirementNames.ACCRUED_PREMIUM); addUnitScalingFunction(functions, ValueRequirementNames.PRINCIPAL); addUnitScalingFunction(functions, ValueRequirementNames.POINTS_UPFRONT); addUnitScalingFunction(functions, ValueRequirementNames.UPFRONT_AMOUNT); addUnitScalingFunction(functions, ValueRequirementNames.QUOTED_SPREAD); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.HEDGE_NOTIONAL); addUnitScalingAndSummingFunction(functions, ValueRequirementNames.BUCKETED_PV01); functions.add(functionConfiguration(MarketQuotePositionFunction.class)); } protected FunctionConfigurationSource cashFlowFunctionConfiguration() { return CashFlowFunctions.instance(); } protected FunctionConfigurationSource covarianceFunctionConfiguration() { return CovarianceFunctions.instance(); } protected FunctionConfigurationSource irCurveFunctionConfiguration() { return IRCurveFunctions.instance(); } protected FunctionConfigurationSource fxForwardCurveFunctionConfiguration() { return FXForwardCurveFunctions.instance(); } protected FunctionConfigurationSource modelFunctionConfiguration() { return ModelFunctions.instance(); } protected FunctionConfigurationSource securityFunctionConfiguration() { return SecurityFunctions.instance(); } protected FunctionConfigurationSource timeSeriesFunctionConfiguration() { return TimeSeriesFunctions.instance(); } protected FunctionConfigurationSource volatilityFunctionConfiguration() { return VolatilityFunctions.instance(); } @Override protected FunctionConfigurationSource createObject() { return CombiningFunctionConfigurationSource.of(super.createObject(), cashFlowFunctionConfiguration(), covarianceFunctionConfiguration(), irCurveFunctionConfiguration(), fxForwardCurveFunctionConfiguration(), modelFunctionConfiguration(), securityFunctionConfiguration(), timeSeriesFunctionConfiguration(), volatilityFunctionConfiguration()); } }