Live Strategy Audit

Two Information Coefficients, because they can disagree and the disagreement is the point: IC (return) asks whether the score ranks how much is gained or lost; IC (win/loss) whether it ranks whether the trade wins at all. A strategy scoring well on the first and badly on the second is sorting the severity of its losses, not finding winners. Information Coefficient measures whether each strategy's own score ranks its outcomes — positive means higher-scored signals did better, negative means the scoring is working against itself. It is a separate question from profitability: a strategy can rank well and still lose, or win while scoring at random. Both columns are shown so neither can hide the other.

Strategy Signals IC (return) IC (win/loss) Score quality Win rate Avg outcome
EMA_PULL 35 -0.593 -0.441 Inverted 11.4% (4W/31L) -0.64%
MOM 149 +0.391 -0.119 ⚠ splits Moderate 5.4% (8W/141L) -1.18%
FIB_BOUNCE 38 -0.241 -0.317 Weak 13.2% (5W/33L) -0.23%
HOD_BREAK 38 -0.207 -0.027 Weak 7.9% (3W/35L) -0.92%
VWAP 87 +0.132 +0.100 Weak 12.6% (11W/76L) -1.02%
CANDLE 115 -0.126 +0.105 Weak 26.1% (30W/85L) -0.20%
PM_HIGH 47 +0.110 +0.186 Weak 29.8% (14W/33L) -0.40%
GAP 65 +0.050 +0.100 Weak 33.8% (22W/43L) -0.35%
SETUP 78 -0.016 +0.058 Weak 43.6% (34W/44L) -0.22%
BULL_FLAG 4 +0.258 Thin (4/20) 0.0% (0W/4L) -1.94%
BREAKOUT 16 -0.168 -0.132 Thin (16/20) 37.5% (6W/10L) -2.11%

Built from every resolved signal this screener has logged — including ones never auto-traded, so this measures signal quality, not portfolio P&L. A negative IC is a finding, not a bug: it says that strategy's ranking is upside-down and worth fixing before its win rate is.

The Loop

3
Hypothesis
6
Backtest
0
Scored
0
Decay Checked
0
Out Of Sample
0
Paper
0
Live

Counts are live and ideas advance automatically — but only when the measurement for the next stage exists. A hypothesis can also be entered at a stage its offline work already reached; those are marked as recorded and the loop has not verified the steps behind them.

Scoring Mix

0
Strong
ICIR > 0.5
0
Moderate
0.3–0.5
0
Weak
< 0.3
9
Not scored yet
no real IC

Hypotheses


as recorded
as recorded
as recorded
as recorded
as recorded
Hypothesis Stage Progress Mean IC ICIR Rating Half-life Out-of-sample Rounds Paper
MOM outperforms when restricted to the opening window User hypothesis 2026-08-21. Mechanism supported by prior root-cause work: fix #211 found MOM systematically buys already-exhausted intraday spikes (96% of 100 losses never neared target). Observed MOM signals cluster at 11:42-11:52 ET - the tail of its own 9:45-12:00 morning window, ~2h after the open, by which point a spike has had time to exhaust. Predicts MOM restricted to ~9:45-10:30 ET shows materially better continuation. BLOCKERS: (1) 72 of 86 historical MOM signals predate the logged_at field so cannot be time-sliced; testable sample is 14, all losses. (2) MOM is currently suppressed (fix #498) so it generates no new data - needs a shadow test, not a live re-enable. (3) 2 of 14 timestamps fall outside the documented scan gate (17:51, 18:48 ET) - timestamp reliability must be confirmed before any time-of-day result is trusted. BACKTEST
-0.0349 -1.020 Thin (2/20) 0/5 0/4w
SETUP swing strategy has a tradeable edge TESTED AND REJECTED 2026-08-21. Replayed the real SETUP detection (breakout_screener's own _evaluate_setup and helpers, 62-bar window matching LOOKBACK_DAYS=90) over 1,976 symbols x 3y Polygon daily bars; 708 de-clustered signals, 2024-05 to 2026-05, with the live stock exit ladder modelled (breakeven +0.6R, trail 1R behind peak from +1.0R, gap-through-stop fills at the open) and 15bps round-trip costs. Expectancy -0.462%/trade (t=-2.32) on the full set. Every slice is negative or zero: top-1/day -0.556%, top-3 -0.608%, top-5 -0.256%, top-10 -0.363%. The relative-strength ranking the screener sorts by has NO skill - rank 1 (-0.556%) is worse than rank 4-10 (+0.066%), so the limit=10 cap does not rescue it. Geometry is the mechanism: median risk 5.71% of price against a median current-target reward of 4.49%, so wins average +3.4% while losses average -5.9% and a 58% win rate still loses. IS -0.785% / OOS +0.293% is a sign flip = FAIL by this board's own rule; both arms turned positive in the last 30%, which is regime, not edge. CONSEQUENCE: the min_rr>=1.5 gate is not a bottleneck worth opening - it passes trades at -0.474% and rejects them at -0.460%, i.e. it selects FEWER trades, not better ones. Do not loosen it to raise stock volume. CAVEATS: one strategy, one 2-year window, current watchlist only (survivorship); earnings blackout and halal compliance not replayed (identical across arms, cannot change the comparison). RETIRED
Fail 1/5 0/4w
Measured-move target beats the 20d-high*1.03 target for SETUPs SUPPORTED but INSUFFICIENT, 2026-08-21. breakout_screener already computes _compute_measured_move() for every SETUP and passes it through as measured_move_target, but it is only ever DISPLAYED (discord_bot.py ~2206/2233) - auto_trader never uses it, trading twenty_day_high*1.03 instead. Paired test on an identical 708-signal set (same entries, same stops, only the target differs): measured move is +0.560%/trade better, t=+2.69, bootstrap 95% CI [+0.158%, +0.998%]. Median reward goes 4.49% -> 22.81% against median risk 5.71%, and the R:R>=1.5 pass rate goes 12% -> 98%. BUT it only moves SETUP from significantly negative (-0.462%) to statistically zero (+0.089%, t=+0.29) - it stops a bleed, it does not create an edge, and it is NOT a reason to trade more SETUPs (see setup-swing-edge, RETIRED). Note only 21/706 trades ever reach the measured-move target; outcomes are decided by the stop, so this is really a test of not-capping-winners. NOT YET SHIPPED - needs a decision. UPDATED 2026-08-21 (fix #680): the +0.560% figure above UNDERSTATES this, because it was measured with the harmful 1R trail still attached. Re-measured with breakeven inert at 1.0R, the target alone is +0.873%/trade (t=+3.61) against the original live config, and +1.344% (t=+4.50) when the trail is widened to 3R at the same time. See [[setup-target-plus-trail-package]] - this should not be shipped on its own. BACKTEST
1/5 0/4w
Breakeven at +0.6R destroys more winners than it saves losers SUPPORTED 2026-08-21, and the most actionable finding of the SETUP backtest because it is one config value and is not SETUP-specific. Paired (breakeven-only vs no management, measured-move target, 706 signals): breakeven costs -0.637%/trade, t=+3.00 in favour of dropping it. Consistent in BOTH halves (IS +0.323%, OOS +1.379%) and in the same direction on the current target too (+0.156%, t=+2.06) - no sign flip anywhere, which is what separates this from the sweep's other results. MECHANISM is directly visible, not just statistical: breakeven takes trades ending within +/-1% from 3.7% to 37.5% of all trades, and cuts >+10% winners from 19.8% to 13.9%. It buys win rate (39.1% -> 51.4%) and pays for it in expectancy. SPECIFICALLY the 0.6R trigger is the problem: the trigger curve is FLAT at every value >=1.0R, because the trail activates at 1.0R sitting 1R behind peak, which already parks the stop at entry. So breakeven only ever acts BELOW where the trail takes over. PROPOSED: breakeven_trigger_r 0.6 -> 1.0 (set_breakeven_trigger_r exists; no code change, reversible). Risk cost is small: worst decile -10.64% -> -11.16%, full-size losses 33.4% -> 39.4%, and the longest consecutive-loss run is UNCHANGED (14 vs 15), so circuit-breaker exposure is not materially different. CAVEAT / BLOCKER: breakeven_trigger_r is SHARED with the crypto path, where most real volume is and where partial_profit at 1.0R parks the stop at entry too - a related mechanic this test did NOT cover. Evidence here is stock swing daily bars only. Test on crypto before changing it globally. CRYPTO BLOCKER RESOLVED 2026-08-21 (same session): re-simulated the 110 real crypto trades in journal.db (join trades->signals to recover stop/target, which are 0/122 populated on the crypto trades themselves) over binance.com 1m bars, modelling the REAL crypto ladder - 5-minute polling against a spot price rather than bar extremes (the monitor is @tasks.loop(minutes=5) and compares price to stop, so a wick between polls triggers nothing), partial 50% at +1R moving the stop to entry, TP2 at +2R, trail 1R behind peak, 120-min scalp stale timeout. RESULT: breakeven is very nearly a NO-OP on crypto - it changed the outcome on 2 of 107 trades (1 scalp, 1 swing), and dropping it costs -0.020%/trade (t=-1.30), i.e. noise. The reason is STRUCTURAL, not statistical, so it does not depend on this month's market: partial_profit fires at +1.0R and sets stop=entry (doing breakeven's job), and the breakeven branch is skipped once partial_taken, so breakeven can only ever act in the 0.6R-1.0R band AND only if price then reverses into the stop - rare inside a 120-minute scalp. Fidelity: binance.com bars agree with the bot's own recorded entry prices to a median 0.043% (p90 0.099%), so the venue swap is immaterial; 107 of 110 simulated (BDX/BEAT dropped, no Binance pair - the same real gap fix #469 documents for BEAT). Caveats: n=107 over one month (2026-07-21 to 08-21), all LONG, BTC/ETH/SOL-dominated; smc_tp1/smc_tp2 can override the R-ladder per position (fix #476) and are not journalled, so the configured 1R/2R ladder was used throughout. CONCLUSION: the shared-parameter objection no longer blocks the change - stocks gain +0.637%/trade against a crypto cost indistinguishable from zero. Still a live-behaviour change, so still the user's call. BACKTEST
2/5 0/4w
Measured-move target AND a wider trail, shipped together, make SETUP positive SUPPORTED, and the strongest result of the 2026-08-21 work - but NOT shipped, deliberately. Measured against the ORIGINAL live config (current target, breakeven 0.6R, trail 1R): breakeven alone +0.117%/trade (t=+1.70); the measured-move target alone +0.873% (t=+3.61); target PLUS widening the trail to 3R +1.344% (t=+4.50, IS +1.056% / OOS +2.023%, no sign flip). That last configuration is the only one in the whole investigation that puts SETUP at a genuinely positive LEVEL: +1.023%/trade, level t=+2.28. THE COUPLING IS THE POINT: against the near current target the trail is a no-op (it changed the outcome on 23 of 708 signals, every setting within 0.004%), but against the measured-move target it binds on 221 of 706 and becomes the dominant exit - so shipping the far target while the trail stays at its hardcoded 1R hands the exit to a stop that is too tight for it and captures only about two-thirds of the benefit. Turning the trail off is +0.476% (t=+3.16) and 1R->2R is +0.388% (t=+2.78), both positive in both halves - the same 'stop caps winners early' mechanism as [[breakeven-06r-costs-money]]. WHY THIS IS NOT SHIPPED: it is the best configuration out of a wide search (22 exit configs x 2 targets x 4 trail distances) and the out-of-sample window was a period where letting winners run paid - BOTH arms improved in it. The paired DIFFERENCES are the robust part; the positive LEVEL is fragile. It does not un-retire [[setup-swing-edge]]. Next step is a shadow run modelled on momentum_shadow_v2.py (log both exits per real SETUP, resolve both, compare at n>=20 per evidence_engine.INSUFFICIENT_N), which also requires making the trail distance configurable - it is hardcoded at peak_price-risk (auto_trader.py:2066) and new_peak-risk (:1652). Crypto is not a blocker here: on real crypto scalps trailing binds on 7 of 86 trades and every activation from 1.0R-3.0R sits within 0.006%; crypto swings hint the same direction as stocks (trail off +0.410% vs live +0.083%) but at n=21 that is not evidence. BACKTEST
1/5 0/4w
12-month momentum, skipping the most recent month, beats our short-horizon signals SOURCE: Jegadeesh & Titman (1993), and the cross-country replications since. The single most-replicated equity anomaly there is: rank on the return from 12 months ago to 1 month ago, hold the winners. The one-month skip is not decoration - it exists to avoid the short-term REVERSAL effect, which runs the other way and cancels the signal if included. WHY HERE: every momentum signal this site runs is intraday-to-daily. MOM scores IC +0.461 on return but -0.135 on win/loss, and fix #211 found it systematically buys already-exhausted spikes. A 12-1 horizon is a different mechanism entirely - it is not trying to catch a move in progress. TEST: rank the watchlist monthly on (price 21d ago / price 252d ago). Score IC against forward 21-day return. Needs only daily bars. WOULD FALSIFY: an ICIR below 0.3 over the available history, or a decay half-life under 5 days - which would mean the effect, if present, is not harvestable at a monthly rebalance. HYPOTHESIS
0/5 0/4w
Nearness to the 52-week high predicts continuation better than a high-of-day break SOURCE: George & Hwang (2004). Ranking on price/52-week-high predicts returns, and the ratio is also cited in later work as explaining much of the idiosyncratic-volatility anomaly. The mechanism is anchoring: traders treat the 52-week high as a reference point and under-react when it is breached. WHY HERE: this site already runs HOD_BREAK - a high-of-DAY break - which scores IC -0.194, weak and negative. The 52-week version is the same idea at a horizon where the evidence is strong rather than absent, and it is a fair test of whether the concept or the timeframe is what failed. TEST: rank on close / max(high, 252d). Score IC against forward 21-day return. Daily bars only. WOULD FALSIFY: no monotonic relationship between the ratio and forward return - particularly if the top decile does not beat the middle, which is where anchoring predicts the effect lives. HYPOTHESIS
0/5 0/4w
Last week's biggest losers outperform over the following week SOURCE: Lehmann (1990), Lo & MacKinlay (1990). Short-term reversal survives transaction costs in the replication literature, which is not true of most anomalies. WHY HERE, and this is the interesting part: **EMA_PULL currently scores IC -0.569 - strongly INVERTED.** A signal that reliably ranks backwards is not noise, it is information with the sign flipped. Short-term reversal is the published effect that would EXPLAIN an inverted short-horizon momentum signal, so this hypothesis tests a specific mechanism for something already measured rather than a new hunch. TEST: rank on the trailing 5-day return, score IC against forward 5-day return, and check the sign. Confirmation looks like a NEGATIVE IC on the raw ranking. WOULD FALSIFY: an IC near zero, which would mean EMA_PULL's inversion is specific to its own construction rather than an instance of a documented effect - and that distinction decides whether the fix is to flip one strategy or to stop trading that horizon. --- MEASURED 2026-08-30 (1,623 symbols, 60 daily bars, 10 non-overlapping 5-day periods) --- mean IC -0.0094, ICIR -0.077. The sign is the one the hypothesis predicted - reversal shows up as a NEGATIVE IC on the raw ranking - but the magnitude is indistinguishable from zero, and |ICIR| 0.077 is far below the 0.3 weak threshold. **On this evidence there is no tradeable one-week reversal in this universe.** It also does NOT explain EMA_PULL's IC of -0.569, which was the reason this hypothesis was queued. That inversion is specific to EMA_PULL's own construction rather than an instance of the documented reversal effect - which narrows the fix from 'stop trading this horizon' to 'that one strategy is built backwards'. NOT RETIRED YET: 10 periods is below loop_lab.MIN_IC_PERIODS (20), so the band is withheld rather than assigned. Re-run when the bar cache holds more history. BACKTEST
-0.0094 -0.077 Thin (10/20) 1/5 0/4w
The edge in our signals is overnight, and the intraday leg is what loses SOURCE: Lou, Polk & Skouras, on the overnight/intraday decomposition of returns - momentum accrues overnight while intraday returns run the other way. WHY HERE: this is a DIAGNOSTIC hypothesis, not a strategy, and it may be the highest-value entry on this board. Four of five live strategies score negative IC, and fix #211 found MOM buying exhausted intraday spikes. If the edge is overnight and every one of our entries is intraday, that is a single explanation for a broad pattern of failure - and it is cheap to check. TEST: decompose each historical signal's outcome into (next open / entry) and (close / open). Compare IC of the two legs separately. Needs the open, which daily OHLC already carries. WOULD FALSIFY: both legs scoring similarly, which would send the search back to signal construction rather than to timing. --- MEASURED 2026-08-30 (same window and periods) --- Trailing 5-day return scored against each leg of the SAME forward window: overnight leg (close -> next open): mean IC -0.0714, ICIR -0.395 intraday leg (open -> close): mean IC +0.0034, ICIR +0.022 **The effect is entirely in the overnight leg. The intraday leg is noise.** An |ICIR| of 0.395 would classify MODERATE at a sufficient sample; 0.022 would not register at all. Note the DIRECTION, because it is the opposite of the finding this hypothesis cites: Lou/Polk/Skouras report momentum accruing overnight, while here it is REVERSAL that is overnight - recent winners give it back before the next open. Same decomposition, opposite sign, and worth understanding before anything is built on it. Why this matters beyond the number: every entry this site takes is intraday, and the only leg carrying signal here is the one we never hold. That is a single candidate explanation for four of five live strategies scoring negative IC. NOT ACTIONABLE YET: 10 periods against a floor of 20, and holding overnight is a different risk profile from anything currently traded. Needs a longer history and its own out-of-sample gate before it is anything but a lead. BACKTEST
-0.0714 -0.395 Thin (10/20) 1/5 0/4w
One-to-four week time-series momentum predicts crypto returns SOURCE: Liu & Tsyvinski (2021), who find time-series momentum at one-to-four week horizons and investor attention among the few robust crypto predictors, and the three-factor market/size/momentum work that followed. WHY HERE: **the crypto side of this site has no trading strategy at all.** It screens 502 coins for compliance and says nothing about whether any of them is moving. That is the largest untested surface in the product, and the published evidence for crypto momentum is stronger and more recent than for most equity anomalies. TEST: rank screened coins weekly on trailing 7/14/28-day return, score IC against forward 7-day return. Blocked until the OHLC cache is filled - fix #909's prefetcher is doing that now, so this hypothesis is queued behind a known dependency rather than testable today. WOULD FALSIFY: an ICIR under 0.3, or an effect that exists only in the top few coins by market cap - which would make it a Bitcoin trend signal wearing a cross-sectional costume. HYPOTHESIS
0/5 0/4w

Gates Applied

ScoringICIR — mean IC ÷ its own volatility. Rewards consistency, not just size. Strong > 0.5, moderate 0.3–0.5, weak below 0.3.
DecayEdge half-life must be at least 5.0 days. Anything faster decays quicker than a realistic hold can harvest it.
Out-of-sample20–30% of data held back. The edge must survive it — a sign flip fails automatically, however large.
Rounds3–5 refinement rounds per hypothesis.
Paper first4–8 weeks of paper trading before any real capital.
Never automaticThis board records and scores. It does not place trades, and nothing promotes itself to live.

Research output, not advice. A strong ICIR is evidence that a signal ranked forward returns well in the data tested — it is not a prediction, and past behaviour does not guarantee future results.

Tell us what's working, what's confusing, or what you want to see next — read by a real person, not a form that goes nowhere.