Found 2026-08-17 while measuring hourly trade rates per family: backtest() of PullbackContinuation on a 5-year hourly window (44,537 bars, shipped defaults, market-fill model) ran 38+ CPU-minutes at 100% single-core without completing — versus the same window's turtle backtests finishing in seconds. The measurement had to be killed; the corpus numbers were used instead (so the repo's own records are unaffected — their runs completed on the #257-era engine or with different fixtures).
Suspect: the pending-setup/offset-entry machinery's per-bar scan on long windows (the same machinery #256/#257/#258 iterated on — see strategy/engine.py's pending lifecycle).
Acceptance
Found 2026-08-17 while measuring hourly trade rates per family:
backtest()ofPullbackContinuationon a 5-year hourly window (44,537 bars, shipped defaults, market-fill model) ran 38+ CPU-minutes at 100% single-core without completing — versus the same window's turtle backtests finishing in seconds. The measurement had to be killed; the corpus numbers were used instead (so the repo's own records are unaffected — their runs completed on the #257-era engine or with different fixtures).Suspect: the pending-setup/offset-entry machinery's per-bar scan on long windows (the same machinery #256/#257/#258 iterated on — see
strategy/engine.py's pending lifecycle).Acceptance
backtest(PullbackContinuation(...), hourly_candles)on a 1-year and 5-year window; profile the hot loop.tests/timing pin if the fix lands (a smoke bound, not a benchmark suite — the repo has no perf harness and shouldn't grow one for this).