Verdict: Swing Target Odds Model (M-021) is rated “NOT FIT” in its validation review dated 8 Sep 2026.
Key result: Top-10 net plan return (WF, every-4th-session cohorts): -0.25% [-0.70%, +0.20%].
Key result: Precision@10 vs ATR%-rank vs base: 0.71 vs 0.73 vs 0.37.
How it was tested: training data 1998-01→2025-08, test data 2016-01→2025-08; out-of-sample design (how it was checked on data it never saw while being built): walk-forward yearly.
Horizon: 10 sessions. Coverage: US listings ≥$10M/day, ≥$5, ≥6m listed (~2,300 names); trained on ≥$2M/day incl. 241 recovered delistings.
Forward record: 33 of 33 published lists have reached their 10-session horizon. Average pick return minus SPY's over the same dates: -0.33 percentage points (standard error 1.08). 46% of the matured picks beat SPY over the horizon. Mean rank IC of the matured lists: -0.136.
Stage: Retired 2026-10-26 (owner decision D-007) — NOT FIT; shadow job stopped, 33 vintages kept as the record. Version v1; the hub record is as of 6 Nov 2026.
The verdict
NOT FIT for the capability-ranker use; NOT FIT as a profit ranker for the tested plan.
Development summary: Ranks the hit rate well (precision 0.71 vs 0.37) but under a +5%/1.5×ATR/10-session plan the top-10 nets -0.25% per trade; money gate not passed — use as a capability ranker with a wider exit plan.
What the review allows
As a documented negative result: evidence that the +5% target / 1.5xATR stop / 10-session plan is structurally unprofitable in the liquid US universe (P(hit) below break-even in every ATR decile).
As evidence for the tested plan design: wider targets and longer holds dominate tight-target/wide-stop combinations, and gap-ups are worth vetoing - both reproducible without the model.
As a research artefact and a worked example of a pre-registered gate honestly failed.
What the review rules out
Rank names for entry, or be consumed as a daily candidate list, in any sleeve.
Be described as a 'capability ranker' without the atr_pct14 control: the paired test says the model is significantly worse than that one free variable on precision.
Quote precision 0.710 or lift 1.92x as a property of the model - the ATR rank delivers 0.727 and 1.97x, and both are measured on a panel with 100% five-year survival before 2017.
Use the published target_px / stop_px as order levels (they are computed off the last close, not the next open).
Rely on the earnings screen (vacuous for 48.4% of the screened list) or on 'no RED on the monitor' as evidence the model is working.
What it predicts
Item
Detail
Question it answers
Does any ranking make a swing plan (+5% target, −1.5×ATR stop, 10 sessions, next-open entry) pay net of costs in liquid US names? Answer: no (NOT FIT).
Shadow-scored daily list (NOT a candidate list — rank ≈ ATR%); lift bands; plan-design evidence
Horizon
10 sessions
Coverage
US listings ≥$10M/day, ≥$5, ≥6m listed (~2,300 names); trained on ≥$2M/day incl. 241 recovered delistings
Markets
US
Model type
Model · ML/Stat
Stage
Retired 2026-10-26 (owner decision D-007) — NOT FIT; shadow job stopped, 33 vintages kept as the record
Version
v1, first recorded 7 Sep 2026
Validation evidence
Training data: 1998-01→2025-08. Test data: 2016-01→2025-08. Out-of-sample design: walk-forward yearly.
Headline results from the model's development record, as the hub publishes them.
Measure
Result
Compared with
Note
Top-10 net plan return, walk-forward 2016–25
-0.25%
ATR rank -0.46% · random -0.09%
Precision@10 (hit before stop)
0.710
base 0.370 · ATR rank 0.727
Years with positive top-10 plan return
5/10
years beating the ATR rank 7/10
Acceptance window 2025-09→2026-08
-0.65%
precision 0.763 vs base 0.456
CSCV probability of backtest overfitting
0.31
38 configurations; deflated-Sharpe p 0.05
The hub's standard metrics for this model class (only those the record measured).
Metric
Sample / window
Compared with
Value
Range (CI)
Rank IC (headline)
WF 2016–25 · ≥$10M/day
ATR% rank −0.0291
-0.0266
n/a
Excess return at horizon
WF 2016–25 · top-10 · gross
ATR% rank +0.74
+1.03 pp
n/a
Precision at k
WF 2016–25 · top-10 · +5% before stop
36.97
71.02%
[69.08%, 72.70%]
Forward record: 33 of 33 published lists have reached their 10-session horizon. Average pick return minus SPY's over the same dates: -0.33 percentage points (standard error 1.08). 46% of the matured picks beat SPY over the horizon. Mean rank IC of the matured lists: -0.136.
What the validation review found
Is the design sound? The triple-barrier label fits the tested plan, but a BINARY classifier on it is the wrong estimand: economics are p*T-(1-p)*S with S varying 6x across names, so maximising P(hit) anti-selects on payoff. P(hit) is below break-even in all ten ATR deciles. The capability-ranker fallback was pre-registered, but carries no gate or benchmark of its own; given one, it fails.
Data quality. PIT integrity verified: three hand traces from raw bars match to float32 precision; all seven shift(-k) uses sit in the label block and are excluded from features by prefix plus META_COLS; earnings use the EDGAR acceptance date <= formation. Two real defects: survivorship unrepaired pre-2017 (100% five-year survival) and a centred 21-day median in the trading-date grid.
Backtest. Pooled walk-forward top-10 net plan return -0.247% [-0.696, +0.197]; acceptance window -0.652%, 19th of 20 configurations. Decomposition: 71.0% hit at +5.11%, 22.0% stop at -14.84%, 7.0% time-exit at -8.76%. The realised break-even hit rate for that payoff mix is 0.724 against a delivered 0.710.
Against simple benchmarks. The champion is a monotone transform of atr_pct14 (per-date Spearman 0.971). Paired month-block bootstrap: precision -0.0166 CI [-0.0286, -0.0044] (worse, significant); plan return +0.212pp CI [-0.051, +0.479] (not significant); vs random -0.158pp (wf), -0.548pp (acceptance). Inside ATR terciles the advantage is negative in the low and mid terciles.
Independent replication. Pooled, per-year and acceptance metrics for logit_rank and bench_atr reproduced with independent code to 0.00000 on precision and 0.0000pp on plan return, inside a stated tolerance of +/-0.002 and +/-0.02pp; the month-block CI reproduced to three decimals. Ten of ten MODEL_CARD numbers tie to source.
Sensitivity. 1,296 cells (cost 10/25/50bp x floor $10M/$50M x K 5/10/20 x T 3/5/10% x H 5/10/14 x four filter settings x two eras). No cell has a CI above zero. Best cell +0.528% at t=1.61 against a sqrt(2 ln 1296)=3.79 threshold (Bonferroni z 4.12); the largest |t| cells are negative (t=-5.0). The plan surface is monotone in T for the model, the ATR rank and random alike.
Monitoring. Freshness/coverage/stability layers are sensibly specified but bypassed on every failure path of the daily job. The outcomes RED threshold (90-day plan-return CI entirely below zero) will not fire at the model's own validated performance. No layer compares the list against the ATR rank, the only comparison that matters for the surviving use case.
Limitations
Under the tested plan no configuration cleared the money gate G-B (best pooled top-10 net plan return -0.25%, CI [-0.70%, +0.20%]); the list ranks capability, not direction.
Daily bars only: intraday timing is out of scope; the signal-close-entry advantage (+0.09pp) is measured but not implemented.
Regime dependence: the plan-return signal is present in up-markets (IC +0.04) and absent in down-markets (IC ~0).
Cadence (C9): walk-forward numbers are on every-4th-session cohorts; the measured cadence artefact is ~0.2pp, so configuration differences below ~0.3pp are not distinguishable.
Structural (V-01): with a fixed +5% target and a volatility-scaled stop, break-even p* = S/(T+S) rises with volatility faster than the hit rate; P(hit) is below break-even in all ten ATR deciles — no learner on this label can pay.
Questions
Is the Swing Target Odds Model validated?
Its validation review dated 8 Sep 2026 rated it NOT FIT for the capability-ranker use; NOT FIT as a profit ranker for the tested plan.
What does the Swing Target Odds Model predict?
It answers: Does any ranking make a swing plan (+5% target, −1.5×ATR stop, 10 sessions, next-open entry) pay net of costs in liquid US names? Answer: no (NOT FIT). Output: Shadow-scored daily list (NOT a candidate list — rank ≈ ATR%); lift bands; plan-design evidence. Horizon: 10 sessions. Coverage: US listings ≥$10M/day, ≥$5, ≥6m listed (~2,300 names); trained on ≥$2M/day incl. 241 recovered delistings.
How was the Swing Target Odds Model tested?
Training data 1998-01→2025-08, test data 2016-01→2025-08, out-of-sample design: walk-forward yearly. Top-10 net plan return (WF, every-4th-session cohorts): -0.25% [-0.70%, +0.20%]; Precision@10 vs ATR%-rank vs base: 0.71 vs 0.73 vs 0.37; Sensitivity cells with CI > 0: 0 of 1,296. Forward record: 33 of 33 published lists have reached their 10-session horizon. Average pick return minus SPY's over the same dates: -0.33 percentage points (standard error 1.08). 46% of the matured picks beat SPY over the horizon. Mean rank IC of the matured lists: -0.136.
Out-of-sample: results measured on data the model never saw while it was built or tuned.
Walk-forward: the model is refit on data up to a date and tested on the period after it, then the window rolls forward, so every test is out of sample.
Rank IC: information coefficient: the rank correlation between a model's scores and the returns that followed; 0 means no skill.
Precision@k: the share of the top k names on a list that met the target.
Percentage points (pp): the plain difference between two percentages: 12% against 10% is 2 pp.
Basis points (bp): hundredths of a percentage point: 25 bp is 0.25%.
Standard error (s.e.): the typical size of the error in an estimate; a result more than 2 standard errors from zero is unlikely to be luck.
Confidence interval: the range that likely contains the true value (95% unless stated); [a, b] on this page is that range.
SPY: the SPDR S&P 500 ETF, the US market benchmark used here.
ATR: average true range: a stock's typical daily price range, often expressed as a percentage of its price.
Shadow: scored and tracked on paper only; no list is published and nothing is acted on.
Point-in-time (PIT): using only data that was available on each date, so a backtest cannot see the future.
Survivorship: a sample that leaves out companies that later delisted, which flatters historical results.