/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.value;
import com.opengamma.engine.function.FunctionDefinition;
import com.opengamma.engine.marketdata.availability.MarketDataAvailabilityProvider;
import com.opengamma.util.PublicAPI;
/**
* Standard names used to refer to particular value properties.
* <p>
* These name are used as keys to define specific value properties for the engine.
* They should be used by a {@link FunctionDefinition} to annotate their requirements
* or provide additional context about their outputs.
*/
@PublicAPI
public final class ValuePropertyNames {
// Please see http://jira.opengamma.com/browse/PLAT-2330 for information about this constant.
/** Property name of the contribution to the P&L (e.g. yield curve, FX rate) */
public static final String PROPERTY_PNL_CONTRIBUTIONS = "PnLContribution";
/**
* Restricted constructor.
*/
private ValuePropertyNames() {
}
/**
* The aggregation approach used to produce the output value from the inputs.
* <p>
* This should be used where there are multiple possible behaviors from functions to produce an aggregate
* value. For example, input values that cannot be combined directly might either be discarded or converted;
* this property will indicate which. Note that in such circumstances the priority of each function in the
* repository is important to force "default" behaviors if no explicit aggregation constraint is made
* when requesting the produced value
*/
public static final String AGGREGATION = "Aggregation";
/**
* The country of a value, specified as an ISO 2 digit code.
* <p>
* This should only be used where it is meaningful to describe a value with a single country
* instead of a currency (e.g. a bond issued by a euro-zone country).
*/
public static final String COUNTRY = "Country";
/**
* The symbolic name of a volatility cube used to produce a value, valid within the naming context of
* the function repository containing the function definition used.
* <p>
* This should only be used where it is meaningful to describe a value based on a single
* cube. If produced by functions requiring multiple cube inputs, a suitable prefix should
* be used to differentiate the input cubes.
*/
public static final String CUBE = "Cube";
/**
* The currency of a value, specified as an ISO code.
* <p>
* This should only be used where it is meaningful to describe a value with a single currency.
* For example, an exchange rate should not make use of this property.
*/
public static final String CURRENCY = "Currency";
/**
* The symbolic name of a curve used to produce a value, valid within the naming context of
* the function repository containing the function definition used.
* <p>
* This should only be used where it is meaningful to describe a value based on a single
* curve. If produced by functions requiring multiple curve inputs, a suitable prefix should
* be used to differentiate the input curves.
*/
public static final String CURVE = "Curve";
/**
* The currency of the curve used to produce a value. This does not necessarily imply anything about the currency
* of the output value.
*/
public static final String CURVE_CURRENCY = "CurveCurrency";
/**
* The data provider used to source external values into the view cycle. This may be used by {@link MarketDataAvailabilityProvider} instances that work with multiple underlying providers to indicate
* which data provider should be queried for the value. In the case of a "route" of nested data providers existing, the {@code /} character can be used as a separator between elements.
*/
public static final String DATA_PROVIDER = "DataProvider";
/**
* The function identifier that produced a value.
* <p>
* If there are multiple functions in a repository that can compute a given value, this can
* be used as a constraint to force a particular one to be used.
* <p>
* The result {@link ValueSpecification} objects created by functions must always include an
* appropriate function identifier.
*/
public static final String FUNCTION = "Function";
/**
* The symbolic name of a curve used to produce an analytic value from an instrument that requires
* more than one curve (e.g. FX forwards, where the pay curve is the curve used to discount
* the pay amount, or FX options, where the pay curve is the curve used to discount the
* put amount).
*/
public static final String PAY_CURVE = "PayCurve";
/**
* The symbolic name of a curve used to produce an analytic value from an instrument that requires
* more than one curve (e.g. FX forwards, where the receive curve is the curve used to discount
* the receive amount, or FX options, where the receive curve is the curve used to discount the
* call amount).
*/
public static final String RECEIVE_CURVE = "ReceiveCurve";
/**
* The name of the curve calculation configuration used for the pay leg of an instrument (e.g.
* an FX forward or a cross-currency swap).
*/
public static final String PAY_CURVE_CALCULATION_CONFIG = "PayCurveCalculationConfig";
/**
* The name of the curve calculation configuration used for the receive leg of an instrument
* (e.g. an FX forward or a cross-currency swap).
*/
public static final String RECEIVE_CURVE_CALCULATION_CONFIG = "ReceiveCurveCalculationConfig";
/**
* The symbolic name of a surface used to produce a value, valid within the naming context of
* the function repository containing the function definition used.
* <p>
* This should only be used where it is meaningful to describe a value based on a single
* surface. If produced by functions requiring multiple surface inputs, a suitable prefix should
* be used to differentiate the input surfaces.
*/
public static final String SURFACE = "Surface";
/**
* The symbolic name of the calculation method used to produce a curve
*/
public static final String CURVE_CALCULATION_METHOD = "CurveCalculationMethod";
/**
* A general name for a property describing how a value was calculated
*/
public static final String CALCULATION_METHOD = "CalculationMethod";
/**
* A general name for a property describing how a surface was calculated
*/
public static final String SURFACE_CALCULATION_METHOD = "SurfaceCalculationMethod";
/**
* A general name for a property describing how a surface was calculated
*/
public static final String CUBE_CALCULATION_METHOD = "CubeCalculationMethod";
/**
* A general name for a property describing how volatility smiles were modelled (e.g. Heston, SABR)
*/
public static final String SMILE_FITTING_METHOD = "SmileFittingMethod";
/**
* A reserved output prefix. No function should ever produce output values with properties that start
* with this. It is therefore safe for functions to use it to prefix an optional constraint on inputs
* that can never influence resolution, but serve to distinguish one from the other.
*/
public static final String OUTPUT_RESERVED_PREFIX = ".";
/**
* A general name for a property describing the period of time over which a time-series applies (e.g. P2Y).
*/
// NOTE jonathan 2013-03-12 -- PERIOD would be a better name
public static final String SAMPLING_PERIOD = "SamplingPeriod";
/**
* A general name for a property describing how to calculate the returns of a given timeseries
*/
public static final String RETURN_CALCULATOR = "ReturnMethod";
/**
* A general name for a property describing how to generate a schedule (e.g. daily, weekly)
*/
public static final String SCHEDULE_CALCULATOR = "ScheduleMethod";
/**
* A general name for a property describing how to sample a series (e.g. pad missing data with that of the previous entry in the series)
*/
public static final String SAMPLING_FUNCTION = "SamplingMethod";
/**
* A general name for a property describing how to calculate the mean of a series
*/
public static final String MEAN_CALCULATOR = "MeanMethod";
/**
* A general name for a property describing how to calculate the standard deviation of a series
*/
public static final String STD_DEV_CALCULATOR = "StandardDeviationMethod";
/**
* A general name for a property describing the confidence level to use for VaR calculations
*/
public static final String CONFIDENCE_LEVEL = "Percentile";
/**
* A general name for a property describing the horizon in sampling periods to use for VaR calculations
*/
public static final String HORIZON = "Horizon";
/**
* A general name for a property describing how to calculate the covariance of two time series
*/
public static final String COVARIANCE_CALCULATOR = "CovarianceMethod";
/**
* A general name for a property describing how to calculate the variance of a series
*/
public static final String VARIANCE_CALCULATOR = "VarianceMethod";
/**
* A general name for a property describing the maximum order of sensitivities to use when calculating VaR
*/
public static final String ORDER = "Order";
/**
* A general name for a property describing how the calculate the excess return of a series
*/
public static final String EXCESS_RETURN_CALCULATOR = "ExcessReturnMethod";
/**
* The name for a property describing the curve calculation configuration
*/
public static final String CURVE_CALCULATION_CONFIG = "CurveCalculationConfig";
/**
* The name for a property describing the curve calculation configuration name.
*/
public static final String CURVE_CONSTRUCTION_CONFIG = "CurveConstructionConfiguration";
/**
* The name for a property describing the currencies used in constructing curves.
*/
public static final String CURVE_SENSITIVITY_CURRENCY = "CurveSensitivityCurrency";
/**
* The name for a property describing the shift of the strike
* when approximating a binary option as a call or put spread
*/
public static final String BINARY_OVERHEDGE = "BinaryOverhedge";
/**
* The name for a property describing the full width of the spread between the two calls or puts
* used when approximating a binary option as a call or put spread
*/
public static final String BINARY_SMOOTHING_FULLWIDTH = "BinarySmoothingFullWidth";
/**
* The amount to shift DV01 by in basis points
*/
public static final String SHIFT = "Shift";
/**
* The amount to shift DV01 by in basis points
*/
public static final String SCALING_FACTOR = "ScalingFactor";
// REVIEW 2012-08-29 andrew -- The Javadoc for SHIFT above is bad; it's a common name that will be used for things other than DV01.
// REVIEW 2012-10-13 casey -- One doesn't even shift DV01. The shift in DV01 is in its name - Delta Value of One Basis Point..
// REVIEW 2013-01-02 emcleod -- In the case of DV01, "Shift" refers to the scale factor applied (1 or -1). It was added to allow comparisons of results
// from other libraries. The general point about the javadoc is valid.
/**
*
*/
public static final String VALUE_AGGREGATION = "ValueAggregation";
/**
* The underlying ticker is used in Equity Options to tie results to the vol surface used,
* such that each column may represent, for example, the vega of all positions sensitive to changes in that specific surface
*/
public static final String UNDERLYING_TICKER = "UnderlyingTicker";
/**
* Controls the number formatting of the barrier distance - e.g. abs, percentage
*/
public static final String BARRIER_DISTANCE_OUTPUT_FORMAT = "BarrierDistanceOutputFormat";
/**
* The name of a property that provides the name of a forward curve.
*/
public static final String FORWARD_CURVE_NAME = "ForwardCurveName";
/**
* The name of a property that provides the name of a discounting curve.<p>
* Used to differentiate this from {@link ValuePropertyNames#FORWARD_CURVE_NAME}
*/
public static final String DISCOUNTING_CURVE_NAME = "DiscountingCurveName";
/**
* A general name for a property describing a transformation method to use.
*/
public static final String TRANSFORMATION_METHOD = "TransformationMethod";
/**
* The name of a property that provides the type of dividends, be they Continuous, Discrete or None
*/
public static final String DIVIDEND_TYPE = "DividendType";
/**
* Instance of DIVIDEND_TYPE_PROPERTY representing a continuous dividend yield
*/
public static final String DIVIDEND_TYPE_CONTINUOUS = "Continuous";
/**
* Instance of DIVIDEND_TYPE_PROPERTY representing discrete dividend payments. See { @link DiscreteDividendFunction}
*/
public static final String DIVIDEND_TYPE_DISCRETE = "Discrete";
/**
* Instance of DIVIDEND_TYPE_PROPERTY representing no dividends
*/
public static final String DIVIDEND_TYPE_NONE = "None";
/**
* The name of a general property that scales results.
*/
public static final String SCALE = "Scale";
/**
* The name of a property representing the exposure configuration used for pricing
*/
public static final String CURVE_EXPOSURES = "CurveExposures";
/**
* The name of the conversion method.
*/
public static final String CONVERSION_METHOD = "ConversionMethod";
/**
* Property used to choose whether market data is to be snapped Live or at last Close. <p>
* See {@link ValuePropertyNames#SNAP_TIME_LIVE} and {@link ValuePropertyNames#SNAP_TIME_CLOSE}
*/
public static final String SNAP_TIME = "SnapTime";
/**
* Property used to choose whether market data is to be snapped Live or at last Close. <p>
* See {@link ValuePropertyNames#SNAP_TIME_LIVE} and {@link ValuePropertyNames#SNAP_TIME_CLOSE}
*/
public static final String SNAP_TIME_VOL = "VolSnapTime";
/**
* Value for {@link ValuePropertyNames#SNAP_TIME} when data is to be snapped at current, Live, time
*/
public static final String SNAP_TIME_LIVE = "Live";
/**
* Value for {@link ValuePropertyNames#SNAP_TIME} when data is to be snapped at time of previous Close
*/
public static final String SNAP_TIME_CLOSE = "Close";
/**
* Value for a name.
*/
public static final String NAME = "Name";
}