Skip to content

feature: add NASDAQ_SC and NASDAQ_INT equity exchanges#9422

Open
Romazes wants to merge 2 commits intoQuantConnect:masterfrom
Romazes:feature-add-equity-exchanges
Open

feature: add NASDAQ_SC and NASDAQ_INT equity exchanges#9422
Romazes wants to merge 2 commits intoQuantConnect:masterfrom
Romazes:feature-add-equity-exchanges

Conversation

@Romazes
Copy link
Copy Markdown
Collaborator

@Romazes Romazes commented Apr 20, 2026

Description

Extends the equity branch of Exchanges.GetPrimaryExchange to recognise tape letters that previously fell through to Exchange.UNKNOWN or were mis-routed, adds NASDAQ_SC and NASDAQ_INT as new Exchange entries, and fixes a copy-paste typo in the Exchange.MEMX description.

Code Maps to Previous behaviour
S NASDAQ_SC UNKNOWN
T NASDAQ_INT NASDAQ (conflated)
V IEX only long-form "IEX" recognised
H MIAX_PEARL UNKNOWN
U MEMX UNKNOWN

Related PR(s)

N/A

Related Issue

N/A

Motivation and Context

Brokerage and market-data feeds emit these tape letters in primary-exchange fields, but the equity switch in GetPrimaryExchange did not cover them. S (NASDAQ Small Cap) and T (NASDAQ Intermarket) were missing or conflated with generic NASDAQ, V (IEX) required the long-form alias, and H/U fell through to UNKNOWN. The Exchange.MEMX description was also a leftover copy of the LTSE string.

Behaviour change: "T".GetPrimaryExchange(SecurityType.Equity) now returns Exchange.NASDAQ_INT instead of Exchange.NASDAQ.

Evidence for each mapping
Code Exchange Sources
S NASDAQ SC (NASDAQ Small Cap, renamed "Nasdaq Capital Market" in 2006) thinkorswim Exchange Codes (link); Nasdaq IR "NASDAQ SmallCap Market is Renamed NASDAQ Capital Market" (link)
T NASDAQ INT (NASDAQ Intermarket) thinkorswim (link)
V IEX (Investors Exchange, MIC IEXG) dxFeed (link); UTP Vendor Alert 2015-18 (link); NYSE Daily TAQ Client Spec Appendix F (doc)
H MIAX Pearl Exchange dxFeed (link); NYSE Daily TAQ Client Spec Appendix F (doc); Alpaca PR#57
U Members Exchange (MEMX) dxFeed (link); NYSE Daily TAQ Client Spec Appendix F (doc); Alpaca PR#57

Requires Documentation Change

No

How Has This Been Tested?

Extended Tests/Common/ExchangeTest.cs:

  • ExchangeCorrectlyReturnedAsSingleLetter — new [TestCase] rows for NASDAQ_SC and NASDAQ_INT exercise the round-trip assertion primaryExchange.Code.GetPrimaryExchange().
  • ExchangeCases — new rows asserting "S"Exchange.NASDAQ_SC and "T"Exchange.NASDAQ_INT through both StringExchangeCorrectlyReturnedAsSingleLetter and ExchangeAsString.

VIEX, HMIAX_PEARL, and UMEMX are one-way string aliases onto existing Exchange entries (no new round-trip to assert) and are not covered by additional test cases.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • Refactor (non-breaking change which improves implementation)
  • Performance (non-breaking change which improves performance)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Non-functional change (xml comments/documentation/etc)

Checklist:

  • My code follows the code style of this project.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • My branch follows the naming convention `bug-<issue#>-` or `feature-<issue#>-`

- map primary exchange codes S and T to new NASDAQ tier exchanges
- T was previously folded into NASDAQ, now returns NASDAQ_INT
- add V as alias for IEX in equity switch
- fix MEMX description (was copy of LTSE)
@Romazes Romazes requested a review from Martin-Molinero April 20, 2026 22:34
@Romazes Romazes self-assigned this Apr 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant