@Override
public HistoricalShockMarketDataProvider create(UserPrincipal user, MarketDataSpecification marketDataSpec) {
if (!(marketDataSpec instanceof HistoricalShockMarketDataSpecification)) {
throw new IllegalArgumentException("Market data spec must be a HistoricalShockMarketDataSpecification: " + marketDataSpec);
}
HistoricalShockMarketDataSpecification shockSpec = (HistoricalShockMarketDataSpecification) marketDataSpec;
MarketDataProvider provider1 = resolve(user, shockSpec.getHistoricalSpecification1());
MarketDataProvider provider2 = resolve(user, shockSpec.getHistoricalSpecification2());
MarketDataProvider baseProvider = resolve(user, shockSpec.getBaseSpecification());
return new HistoricalShockMarketDataProvider(provider1, provider2, baseProvider);
}