Business license routes TickType.Trade to the FMV channel: live TradeBars are modeled fair-value with zero volume, not traded prices

Open
#43 1 comment 0 reactions 0 assignees View on GitHub

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

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.SNDK topic)
  • 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from QuantConnect/Lean.DataSource.Polygon

All issues in QuantConnect/Lean.DataSource.Polygon

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.