Business license routes TickType.Trade to the FMV channel: live TradeBars are modeled fair-value with zero volume, not traded prices
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- csharp
- Domain
- fintech-quant, stream-processing
Research direction
Locate the Polygon WebSocket trade message handler and compare it with the offline AlgoSeek bar builder's Excluded Ticks and Suspicious Ticks filtering. Trace how the T channel's conditions array reaches the consolidator, then verify that equivalent auction and off-exchange trades are excluded and that live opening bars align with the historical range.
Written by the indexing model from the issue text.
Description
Summary
The Polygon live data adapter delivers opening-bar Trade ticks with non-standard trade conditions (opening-auction prints, FINRA/ATS off-exchange ticks) that are not filtered in the real-time pipeline, causing live consolidated bars to differ significantly from the historical (AlgoSeek-based) bars for the same period.
This produces incorrect opening-range readings in live algorithms — the live bar's High/Low reflect off-exchange or auction prints that the offline bar builder excludes via the Excluded/Suspicious Ticks filter.
Behaviour observed
- Symbol: SNDK
- Date: 2026-07-31
- Resolution: 1-minute / 5-minute bars
- 09:30–09:35 bar received live: Low 1321.25, High 1354.40
- Actual regular-session range: ~1365–1405
- Data provider:
PolygonDataProvider(Business license), streamed via WebSocket (FMV.SNDKtopic) - Polygon license: Business (confirmed in syslog:
Using license type = 'Business')
The gap between the live bar's High (1354.40) and the regular-session Low (1365) indicates the live bar incorporated prints from before or outside the regular-session open — most likely opening-auction fills or FINRA/dark-pool prints without a valid primary-exchange code.
The historical bar for this period shows the correct range (backtest re-run is clean), confirming the discrepancy is a live filtering gap, not a vendor data error.
Related
Intercom conversation ID: 215475307209088
This is a specific instance of the known gap documented in the US Equities Suspicious Ticks section:
https://www.quantconnect.com/docs/v2/cloud-platform/datasets/quantconnect/us-equities#05-Suspicious-Ticks
The offline bar builder applies the Excluded Ticks and Suspicious Ticks filters; the Polygon real-time adapter's PolygonDataProvider does not yet apply the equivalent filter for the T (trade) WebSocket channel — so auction/FINRA prints pass through to the live consolidator.
Proposed fix
Apply the same trade-condition exclusion logic used by the offline AlgoSeek bar builder to the Polygon WebSocket trade message handler. Specifically, exclude ticks whose c (conditions) array contains codes mapped to off-exchange or auction-only trade conditions before passing them to the consolidator.
Reference: Polygon trade-conditions dictionary — https://polygon.io/docs/stocks/get_v3_reference_conditions
- Dominant language
- C#
- Stars
- 11
- Forks
- 23
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from QuantConnect/Lean.DataSource.Polygon
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in QuantConnect/Lean.DataSource.Polygon
Similar issues
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 75/100
sillsdev/languageforge-lexbox#2665 ·
-
bug documentation frontend
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
azurenoops/spin_agent#975 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·