Loading…

Can any stock ranking make a +5% target, 1.5×ATR stop swing plan profitable?

Swing Target Odds Model (M-021). Short answer: the hub rates it NOT FIT.

Data as of .

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

ItemDetail
Question it answersDoes 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).
MethodLogistic on ranks
How it workslogit on within-date rank inputs (89 features), every-4th-session cohorts 1998→, expanding walk-forward 2016–2025 + untouched 2025-09→2026-08 window
InputsATR% rank, Realised volatility (10–252d), Momentum returns (1d–12m), Market regime: breadth, VIX, Distance below 52w / all-time high
OutputShadow-scored daily list (NOT a candidate list — rank ≈ ATR%); lift bands; plan-design evidence
Horizon10 sessions
CoverageUS listings ≥$10M/day, ≥$5, ≥6m listed (~2,300 names); trained on ≥$2M/day incl. 241 recovered delistings
MarketsUS
Model typeModel · ML/Stat
StageRetired 2026-10-26 (owner decision D-007) — NOT FIT; shadow job stopped, 33 vintages kept as the record
Versionv1, 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.
MeasureResultCompared withNote
Top-10 net plan return, walk-forward 2016–25-0.25%ATR rank -0.46% · random -0.09%
Precision@10 (hit before stop)0.710base 0.370 · ATR rank 0.727
Years with positive top-10 plan return5/10years 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 overfitting0.3138 configurations; deflated-Sharpe p 0.05
The hub's standard metrics for this model class (only those the record measured).
MetricSample / windowCompared withValueRange (CI)
Rank IC (headline)WF 2016–25 · ≥$10M/dayATR% rank −0.0291-0.0266n/a
Excess return at horizonWF 2016–25 · top-10 · grossATR% rank +0.74+1.03 ppn/a
Precision at kWF 2016–25 · top-10 · +5% before stop36.9771.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

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.

Source: the Model Hub's public model register, as of 6 Nov 2026. The M-021 page in the live Model Hub carries the full development and validation record, monitoring and open decisions. All 30 models and their verdicts.

Terms used on this page