/* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections.Generic; namespace QuantConnect.Securities.Index { /// /// Helper methods for Index Symbols /// public static class IndexSymbol { private static readonly Dictionary _indexExchange = new(StringComparer.InvariantCultureIgnoreCase) { { "SPX", Market.CBOE }, { "NDX", "NASDAQ" }, { "VIX", Market.CBOE }, { "SPXW", Market.CBOE }, { "NQX", "NASDAQ" }, { "VIXW", Market.CBOE }, { "RUT", "RUSSELL" }, { "BKX", "PHLX" }, { "BXD", Market.CBOE }, { "BXM", Market.CBOE }, { "BXN", Market.CBOE }, { "BXR", Market.CBOE }, { "CLL", Market.CBOE }, { "COR1M", Market.CBOE }, { "COR1Y", Market.CBOE }, { "COR30D", Market.CBOE }, { "COR3M", Market.CBOE }, { "COR6M", Market.CBOE }, { "COR9M", Market.CBOE }, { "DJX", Market.CBOE }, { "DUX", Market.CBOE }, { "DVS", Market.CBOE }, { "DXL", Market.CBOE }, { "EVZ", Market.CBOE }, { "FVX", Market.CBOE }, { "GVZ", Market.CBOE }, { "HGX", "PHLX" }, { "MID", "PSE" }, { "MIDG", Market.CBOE }, { "MIDV", Market.CBOE }, { "MRUT", "RUSSELL" }, { "NYA", "PSE" }, { "NYFANG", "NYSE" }, { "NYXBT", "NYSE" }, { "OEX", Market.CBOE }, { "OSX", "PHLX" }, { "OVX", Market.CBOE }, { "XDA", "PHLX" }, { "XDB", "PHLX" }, { "XEO", Market.CBOE }, { "XMI", "PSE" }, { "XNDX", "NASDAQ" }, { "XSP", Market.CBOE }, { "BRR", Market.CME }, { "BRTI", Market.CME }, { "CEX", Market.CBOE }, { "COMP", "NASDAQ" }, { "DJCIAGC", Market.CME }, { "DJCICC", Market.CME }, { "DJCIGC", Market.CME }, { "DJCIGR", Market.CME }, { "DJCIIK", Market.CME }, { "DJCIKC", Market.CME }, { "DJCISB", Market.CME }, { "DJCISI", Market.CME }, { "DJR", Market.CBOE }, { "DRG", "PSE" }, { "PUT", Market.CBOE }, { "RUA", "RUSSELL" }, { "RUI", "RUSSELL" }, { "RVX", Market.CBOE }, { "SET", Market.CBOE }, { "SGX", Market.CBOE }, { "SKEW", Market.CBOE }, { "SPSIBI", "PSE" }, { "SVX", Market.CBOE }, { "TNX", Market.CBOE }, { "TYX", Market.CBOE }, { "UKX", "ISE" }, { "UTY", "PHLX" }, { "VIF", Market.CBOE }, { "VIN", Market.CBOE }, { "VIX1D", Market.CBOE }, { "VIX1Y", Market.CBOE }, { "VIX3M", Market.CBOE }, { "VIX6M", Market.CBOE }, { "VIX9D", Market.CBOE }, { "VOLI", "NASDAQ" }, { "VPD", Market.CBOE }, { "VPN", Market.CBOE }, { "VVIX", Market.CBOE }, { "VWA", Market.CBOE }, { "VWB", Market.CBOE }, { "VXD", Market.CBOE }, { "VXN", Market.CBOE }, { "VXO", Market.CBOE }, { "VXSLV", Market.CBOE }, { "VXTH", Market.CBOE }, { "VXTLT", Market.CBOE }, { "XAU", "PHLX" }, { "DJI", Market.CME }, { "DWCPF", Market.CME }, { "UTIL", Market.CME }, { "DAX", Market.EUREX }, { "DXY", "NYBOT" }, { "RLS", Market.CBOE }, { "SMLG", "PSE" }, { "SPGSCI", Market.CME }, { "VAF", Market.CBOE }, { "VRO", Market.CBOE }, { "AEX", "FTA" }, { "DJINET", Market.CBOE }, { "DTX", Market.CBOE }, { "SP600", Market.CBOE }, { "SPSV", "PSE" }, { "FTW5000", "AMEX" }, { "DWCF", "PSE" }, }; private static readonly Dictionary _indexMarket = new(StringComparer.InvariantCultureIgnoreCase) { { "HSI", Market.HKFE }, { "N225", Market.OSE }, { "SX5E", Market.EUREX }, { "DAX", Market.EUREX } }; /// /// Gets the actual exchange the index lives on /// /// Useful for live trading /// The exchange of the index public static string GetIndexExchange(Symbol symbol) { return _indexExchange.TryGetValue(symbol.Value, out var market) ? market : symbol.ID.Market; } /// /// Gets the lean market for this index ticker /// /// The market of the index public static bool TryGetIndexMarket(string ticker, out string market) { return _indexMarket.TryGetValue(ticker, out market); } } }