You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
I Luk Kim 956cc78f1b Add 3 candidate engine classes beyond PEAD: EarningsRunup, PeerSympathy, VolBreakout52w
Adds three new synthetic-Candidate emitter engines parallel to the
existing leader_follower scheduler hook, plus look-ahead defenses
(LookaheadViolationError + per-engine assertions). Each engine is
covered by a standalone PoC config (no PEAD/parking/idle alpha) for
isolation backtests against the midlarge or broad snapshot.

Engines:

EarningsRunup (libs/backtest/earnings_runup.py)
 - Trigger: days_to_earnings ∈ [3,7] AND attention_zscore_20d ≥ 1.5
   AND dollar_volume_20d_zscore ≥ 1.0 (all evaluated at T-1 close)
 - Entry: T+1 next_open. Exit: -4% / +8% / max_holding_days =
   days_to_earnings - buffer (forced flat by close before announcement)
 - PIT calendar: PointInTimeEarningsCalendar adapter for backtest;
   oracle_surprise_prefetch fallback when parquet calendar absent
 - PoC verdict (configs/experiments/earnings_runup_poc_v1.json):
   119 trades over 1051 days, +37.27% total return, 44.46% MDD,
   SQS 45.2 (profitability=55.5, risk=23.5, robustness=50.1).
   VIABLE BUT NEEDS WORK — signal exists; standalone risk profile
   too aggressive for v7.356 baseline (8.8% MDD on v7.364). Path
   forward: per_trade_risk reduction, VIX gate, position cap, or
   integrate as PEAD sleeve adjunct (not as standalone replacement).

PeerSympathy (libs/backtest/peer_sympathy.py)
 - Trigger: leader passes PEAD filter (earnings_release / guidance_update
   / material_contract) AND leader reaction_close ≥ +5% AND peer 60d
   correlation ≥ 0.55 over [T-65, T-5]. Top-2 peers by correlation
   from leader_follower_extra_peer_symbols_by_sector + sector ETF
   holdings.
 - Entry: T+1 next_open on peer. Exit: -3.5% / +6% / max_holding=3 /
   peer-earnings blackout
 - PoC verdict (configs/experiments/peer_sympathy_poc_v1.json):
   256 trades over 1051 days, -52.92% total return, 54.47% MDD,
   SQS 19.6 (profitability=0.0, risk=5.4, robustness=100.0).
   DEAD. The leader's catalyst is already absorbed by T+1 next_open
   — peers gap up overnight before entry. robustness=100 confirms
   the negative result is not noise. Salvage paths (not implemented):
   reaction_close entry, raised-guidance-only restriction.
 - Note: initial run_id was 0 trades due to a select_candidates
   filter mismatch (engine.event_types=['peer_sympathy'] dropping
   real event_type='earnings_release' rows). The runner adapter
   was patched to bypass strategy_engine filtering for leader
   selection; the manual peer_sympathy_leader_event_types filter
   does the gating.

VolBreakout52w (libs/backtest/vol_breakout_52w.py)
 - Trigger: close_T-1 > max(high[T-252:T-2]) AND volume_T-1 ≥
   2 × median_volume_20d_T-2 AND ATR_14_T-1/close ∈ [0.015, 0.06].
   Entry T next_open, exit -3% / +5% / max_holding=2 / MOC.
 - Honest, look-ahead-safe descendant of the retired topgainer v1-v54
   family. Five layers of strict-before assertions guard the bar
   provider, candidate construction, trigger evaluation, and feature
   timestamps. A leaky-provider proof-by-contradiction test
   demonstrates the categorical catch.
 - PoC verdict (configs/experiments/vol_breakout_52w_poc_v1.json,
   broad-liquid universe): 1,332 trades, -87.28% total return,
   88.74% MDD, SQS 24.4 (profitability=0.0, robustness=100.0).
   DEAD AND HONEST. This is the most important finding of the three
   PoCs: the topgainer v1-v54 lineage's headline returns (+267%
   Sharpe 13.73 in best variants) were 100% lookahead bug. With
   the bug removed, the 52w-high + volume + ATR signal has no real
   alpha — the lookahead-corrected -4.3% from prior memory is
   confirmed and amplified to -87% on a fuller universe and longer
   horizon. Future "revive topgainer" proposals can cite this run
   (bt_return_max_long_v1_broad-liquid_20260509042903892342_3bb473d9)
   as definitive falsification.
 - Pre-open gap guard inactive (no premarket data in broad snapshot).
   skip_if_no_gap_data=true; the +4% gap-fade guard would not move
   the result given the magnitude.

Shared infrastructure additions:
 - libs/backtest/domain.py: LookaheadViolationError class +
   StrategyEngineConfig fields (11 EarningsRunup + 11 PeerSympathy
   + 13 VolBreakout52w = 35 new fields)
 - apps/backtester/run.py: _BacktestAttentionZscoreAdapter,
   _RunnerPeerResolver, _schedule_earnings_runup_candidates,
   _schedule_peer_sympathy_candidates,
   _schedule_vol_breakout_52w_candidates wired into the daily
   scheduler block. PeerSympathy adapter bypasses strategy_engine
   filtering on leader selection (manual filter handles gating).

Tests: 21 (EarningsRunup) + 27 (PeerSympathy) + 38 (VolBreakout52w)
= 86 new unit tests, all passing. Broader unit suite: 1392 passed,
2 pre-existing failures unrelated.

Net engine state: EarningsRunup is the only viable new engine class.
PeerSympathy and VolBreakout52w are kept in-tree as falsification
evidence, not as production engines.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3 months ago
..
.id_lock Remove momentum breakout sleeve (overfitting, valid -31%) and revert related code 4 months ago
.index.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
earnings_runup_poc_v1.json Add 3 candidate engine classes beyond PEAD: EarningsRunup, PeerSympathy, VolBreakout52w 3 months ago
empty_strategy.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
pead_step14_diag.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
peer_sympathy_poc_v1.json Add 3 candidate engine classes beyond PEAD: EarningsRunup, PeerSympathy, VolBreakout52w 3 months ago
return_max_long_v7.1.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.2.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.3.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.4.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.5.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.6.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.7.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.8.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.9.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.10.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.11.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.12.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.13.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.14.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.15.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.16.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.17.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.18.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.19.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.20.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.21.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.22.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.23.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.24.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.25.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.26.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.27.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.28.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.29.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.30.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.31.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.32.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.33.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.34.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.35.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.36.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.37.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.38.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.39.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.40.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.41.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.42.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.43.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.44.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.45.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.46.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.48.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.49.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.50.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.51.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.52.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.53.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.56.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.57.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.59.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.60.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.61.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.62.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.64.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.66.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.67.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.69.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.70.json Remove momentum breakout sleeve (overfitting, valid -31%) and revert related code 4 months ago
return_max_long_v7.70_midwide.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.71.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.73.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.74.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.75.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.76.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.77.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.78.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.79.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.80.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.81.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.82.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.83.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.84.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.85.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.86.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.87.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.88.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.89.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.90.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.91.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.92.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.93.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.94.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.95.json Fix cash parking phantom-money bug + live engine parking liquidation for events 5 months ago
return_max_long_v7.96.json Fix cash parking phantom-money bug + live engine parking liquidation for events 5 months ago
return_max_long_v7.97.json Fix cash parking phantom-money bug + live engine parking liquidation for events 5 months ago
return_max_long_v7.98.json Fix cash parking phantom-money bug + live engine parking liquidation for events 5 months ago
return_max_long_v7.120_composed_gld.json Add v7.120 composed GLD experiment updates 4 months ago
return_max_long_v7.121.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.122.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.124.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.125.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.126.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.127.json Add ownership/risk-off sleeves, v17-v19 experiments, and web app restructure 4 months ago
return_max_long_v7.128_composed_gld.json Add v7.120 composed GLD experiment updates 4 months ago
return_max_long_v7.267_composed_gld_cp_guarded.json Optimize v7 strategy: v7.356 achieves CW 2159% + SQS 90.7 (Pareto improvement over v7.314) 4 months ago
return_max_long_v7.268_composed_gld_cp_guarded_temp100.json Clean up: reduce Oracle timeout, fix company endpoint, archive old v7/v15/v16 experiments 4 months ago
return_max_long_v7.356-mod1_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod2_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod3_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod4_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod5_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod9_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod11_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod12_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod17_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356-mod18_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.356_composed_gld.json Optimize v7 strategy: v7.356 achieves CW 2159% + SQS 90.7 (Pareto improvement over v7.314) 4 months ago
return_max_long_v7.356_composed_gld_compound.json Paper trader Phase 1 fixes: multi-session isolation, pipeline halt, snapshot refresh unblock 4 months ago
return_max_long_v7.359_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.360_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.361_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.362_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.363_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
return_max_long_v7.364_composed_gld.json Investigate compound mode: V23 is absolute champion in all modes 4 months ago
vol_breakout_52w_poc_v1.json Add 3 candidate engine classes beyond PEAD: EarningsRunup, PeerSympathy, VolBreakout52w 3 months ago