You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix: classify daily gaps against declared exchange sessions #89
Daily GapDetector classification counts exchange closures as missing observations. At main 28677d6, SyntheticProvider.fetch_ohlcv('SPY', '2025-07-11', '2025-07-14', 'daily') returns Friday and Monday bars; GapDetector().detect_gaps(df) incorrectly reports two missing observations. Python 3.14.3, Polars 1.43.2.
Expected behavior and implementation scope
Use the authoritative selected exchange schedule for daily observations. Canonical calendar selection is explicit calendar argument, then declared FeedSpec metadata, then NYSE, using Specs' shared resolver rather than another local resolver. Explicit None disables schedule classification; named 24/7 still detects absent days. Preserve the is_crypto=True compatibility hint only when neither an explicit calendar nor declared feed calendar is supplied.
Regressions cover Friday/Monday, July 4 closure, July 3 early close, actual missing crypto days, and an entire missing session across every asset. Detection never fills or mutates the input. Filling remains a separately requested operation; existing elapsed-grid fill behavior must not be represented as calendar-aware imputation.
Daily timestamps without declared event semantics retain their existing session-label meaning. Explicit event-time/bar-close declarations must not be silently treated as labels. Intraday clock logic, separate update-manager range planning, and futures roll calendars are separate changes, not claims of this repair. Specs source qualification is pinned to merged 701bde68744035050ede386efce498234c661c21; no new release or deployment is part of this issue.
Assistance
AI-assisted reproduction, implementation and verification under maintainer direction.
Activity
fix: classify daily gaps using declared exchange sessions (ml4t#90)