Skip to content

Fix #233: detect plot overlay period from data frequency instead of timestamp precision - #1424

Open
Geochelone666 wants to merge 2 commits into
kernc:masterfrom
Geochelone666:fix-233
Open

Geochelone666 wants to merge 2 commits into
kernc:masterfrom
Geochelone666:fix-233

Conversation

@Geochelone666

Copy link
Copy Markdown

Fixes #233.

Problem: daily bars whose last timestamp carries seconds (e.g. non-midnight
timestamps) were misdetected as intraday data, so the automatic OHLC overlay in
Backtest.plot() raised instead of superimposing.

Fix: pick the resample rule from the existing _data_period helper (median
of the last 100 datetime deltas) using period thresholds (day -> ME, hour -> D,
minute -> h, second -> min, millisecond -> s), instead of guessing the sampling
period from timestamp precision. Explicit string rules, the upsampling
ValueError, and the same-period skip behavior are unchanged.

Tests: 3 new regression tests in backtesting/test/_test.py (daily data with
seconds on the last bar plots fine; explicit hourly upsampling still rejected;
OHLC aggregation of the superimposed Bokeh source verified across 5 real periods
with microsecond offsets). Full TestPlot suite passes on master baseline
ca2e261; flake8 clean; mypy output identical to baseline.

Known limitations: the median only looks at the last 100 points, so
irregular/duplicate timestamps aren't guaranteed a unique true period
(pre-existing helper limitation).

AI disclosure: this patch was drafted with AI assistance (OpenAI Codex) and
reviewed by a human before submission.

This branch has not been deployed

No deployments
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.

ValueError: Invalid value for superimpose: Upsampling not supported.

1 participant