returnValue.add(StandardRules.getNoNormalization());
final List<NormalizationRule> openGammaRules = new ArrayList<NormalizationRule>();
// Filter out non-price updates
openGammaRules.add(new FieldFilter(STANDARD_FIELDS_LIST));
// Standardize field names.
openGammaRules.add(new FieldNameChange("BID", MarketDataRequirementNames.BID));
openGammaRules.add(new FieldNameChange("ASK", MarketDataRequirementNames.ASK));
openGammaRules.add(new FieldNameChange("LAST_PRICE", MarketDataRequirementNames.LAST));
openGammaRules.add(new FieldNameChange("PX_SETTLE", MarketDataRequirementNames.SETTLE_PRICE));
openGammaRules.add(new FieldNameChange("VOLUME", MarketDataRequirementNames.VOLUME));
openGammaRules.add(new FieldNameChange("OPT_IMPLIED_VOLATILITY_BID_RT", MarketDataRequirementNames.BID_IMPLIED_VOLATILITY));
openGammaRules.add(new FieldNameChange("OPT_IMPLIED_VOLATILITY_ASK_RT", MarketDataRequirementNames.ASK_IMPLIED_VOLATILITY));
openGammaRules.add(new FieldNameChange("OPT_IMPLIED_VOLATILITY_LAST_RT", MarketDataRequirementNames.LAST_IMPLIED_VOLATILITY));
openGammaRules.add(new FieldNameChange("OPT_IMPLIED_VOLATILITY_MID_RT", MarketDataRequirementNames.MID_IMPLIED_VOLATILITY));
openGammaRules.add(new FieldNameChange("YLD_CNV_MID", MarketDataRequirementNames.YIELD_CONVENTION_MID));
openGammaRules.add(new FieldNameChange("YLD_YTM_MID", MarketDataRequirementNames.YIELD_YIELD_TO_MATURITY_MID));
openGammaRules.add(new FieldNameChange("PX_DIRTY_MID", MarketDataRequirementNames.DIRTY_PRICE_MID));
openGammaRules.add(new FieldNameChange("EQY_DVD_YLD_EST", MarketDataRequirementNames.DIVIDEND_YIELD));
// Calculate market value
openGammaRules.add(new MarketValueCalculator());
// Normalize the market value
if (referenceDataProvider != null) {
final BloombergRateClassifier rateClassifier = new BloombergRateClassifier(referenceDataProvider, cacheManager, bbgScheme);
final SecurityRuleProvider quoteRuleProvider = new BloombergRateRuleProvider(rateClassifier);
openGammaRules.add(new SecurityRuleApplier(quoteRuleProvider));
}
openGammaRules.add(new UnitChange(0.01, MarketDataRequirementNames.DIVIDEND_YIELD, MarketDataRequirementNames.YIELD_YIELD_TO_MATURITY_MID)); // returned as % from bbg
// Calculate implied vol value
openGammaRules.add(new ImpliedVolatilityCalculator());
// At this point, BID, ASK, LAST, MARKET_VALUE, Volume and various Bloomberg implied vol fields are stored in the history.
openGammaRules.add(new FieldHistoryUpdater());
// Filter out non-OpenGamma fields (i.e., BID, ASK, various Bloomberg implied vol fields)
openGammaRules.add(new FieldFilter(
MarketDataRequirementNames.MARKET_VALUE,
MarketDataRequirementNames.SETTLE_PRICE,
MarketDataRequirementNames.VOLUME,
MarketDataRequirementNames.IMPLIED_VOLATILITY,
MarketDataRequirementNames.YIELD_CONVENTION_MID,