protected MarketDataProviderResolver createMarketDataProviderResolver() {
final TypeBasedMarketDataProviderResolver providerResolver = new TypeBasedMarketDataProviderResolver();
if (getLiveMarketDataProviderFactory() != null) {
providerResolver.addProvider(LiveMarketDataSpecification.class, getLiveMarketDataProviderFactory());
}
final MarketDataProviderFactory fixedHistoricalMarketDataProviderFactory = initFixedHistoricalMarketDataProviderFactory();
providerResolver.addProvider(FixedHistoricalMarketDataSpecification.class, fixedHistoricalMarketDataProviderFactory);
final MarketDataProviderFactory latestHistoricalMarketDataProviderFactory = initLatestHistoricalMarketDataProviderFactory();
providerResolver.addProvider(LatestHistoricalMarketDataSpecification.class, latestHistoricalMarketDataProviderFactory);
final MarketDataProviderFactory userMarketDataProviderFactory = initUserMarketDataProviderFactory();
providerResolver.addProvider(UserMarketDataSpecification.class, userMarketDataProviderFactory);
final MarketDataProviderFactory combinedMarketDataProviderFactory = initCombinedMarketDataProviderFactory(providerResolver);
providerResolver.addProvider(CombinedMarketDataSpecification.class, combinedMarketDataProviderFactory);
MarketDataProviderFactory historicalShockMarketDataProviderFactory = initHistoricalShockMarketDataProviderFactory(providerResolver);
providerResolver.addProvider(HistoricalShockMarketDataSpecification.class, historicalShockMarketDataProviderFactory);
return providerResolver;
}