System.exit(success ? 0 : 1);
}
//-------------------------------------------------------------------------
protected ManageablePortfolio generatePortfolio(final String portfolioName) {
final ReferenceDataProvider referenceDataProvider = getToolContext().getBloombergReferenceDataProvider();
final ManageablePortfolio portfolio = new ManageablePortfolio(portfolioName);
//Is this a hack?
final ManageablePortfolioNode rootNode = portfolio.getRootNode();
portfolio.setRootNode(rootNode);
// String indexTickerSuffix = " Index";
final Set<String> memberEquities = new HashSet<String>();
for (final Entry<String, String> entry : INDEXES_TO_EXCHANGE.entrySet()) {
final String indexTickerSuffix = " Index";
final String underlying = entry.getKey();
final String ticker = underlying + indexTickerSuffix;
//don't add index (delete at some point)
// addNodes(rootNode, ticker, false, INDEX_OPTION_PERIODS);
final Set<String> indexMembers = BloombergDataUtils.getIndexMembers(referenceDataProvider, ticker);
for (final String member : indexMembers) {
final String symbol = getBloombergEquitySymbol(entry.getValue(), member);
//time series errors for Walmart
//Todo: investegate & fix
if ("WMT US Equity".equals(symbol)) {
continue;
}
memberEquities.add(symbol);
}
}
// Sort the symbols for the current index by market cap (highest to lowest), skipping any in the list of EXCLUDED_SECTORS
final TreeMap<Double, String> equityByMarketCap = new TreeMap<Double, String>();
final Map<String, FudgeMsg> refDataMap = referenceDataProvider.getReferenceData(memberEquities,
Sets.newHashSet(BloombergFields.CURRENT_MARKET_CAP_FIELD, BloombergConstants.FIELD_GICS_SUB_INDUSTRY));
for (final String equity : memberEquities) {
final FudgeMsg fieldData = refDataMap.get(equity);
if (fieldData == null) {
throw new OpenGammaRuntimeException("Information not found for equity: " + equity);