Under forward testweek 1.9 of 52 since 2026-10-06 · stamp 2026-10-19 12:14 GMT+8
P1 PULLBACK rows · net vs all coins +0.41 ± 0.39 per trade · n 980 · collecting
S1 PULLBACK top 10 · net vs all coins +0.42 ± 1.10 per trade · n 457 · collecting
S2 faded attention · net vs all coins +0.04 ± 0.38 per trade · n 240 · collecting
S3 ML EV model · net vs all coins +3.96 ± 0.83 per trade · n 240 · collecting
Legend
Chart
daily candles: hollow = up day, filled = down day, dashed = today's forming bar; a line where only closes are stored
EMA20 (blue) and EMA50 (pink), daily closes; value and % from live in the right gutter
TP1 (green), ref (the level the percentages are measured from) and stop (red), each with its price and % from live; faint washes span ref to TP1 and to stop
grey rectangle: the box from box.json over its own bars (top / bottom = highest / lowest candle body); solid squares = the bars whose bodies set the top / bottom; shaded strips = the touch bands (a wick reaching into one touches); dots = the touches, drawn at that bar's high / low with a dashed stem to the edge (hollow orange = a wick-only touch: that bar closed on the far side of the box midpoint); after a break the broken edge continues dashed; 'top set 27 Apr' at the left edge = the bar that set that edge is older than the bars on the chart; a label reading wide range = 40% tall or more, or 100 bars or more
triangle = break close with its date (the first close of a breakout run, as the backtest counts it); diamond = retest bar (filled = held); purple dot = cohort stamp; 'tp 24 Sep' = the box rule's closed trade, on the level it reached that day (when another rule's levels are drawn it reads 'box tp' and its own level is a dashed stub from the retest)
volume: quote volume per daily bar; the break bar is highlighted with its multiple of the box average; dashed = 20-bar average
rank strip: place among the scan's candidates as a percentile, 100 x (1 - rank / candidates), one point per hourly scan, gaps = not a candidate; hollow dot = the scan 7 days back (the nearest one within 6 h where the symbol was ranked); solid line = an IGNITION scan, dashed line = a RE-ENTRY scan; rank.json keeps 168 h (the 7D button shows that week on 1h closes)
evidence rows: dot = mean, whisker = mean ± 2 SE; the figure after ± is that 2 SE; n and verdict at the right; hollow dot = thin (under the family's minimum n)
history markers (events.json): numbered circles in a lane above the price, in time order, each with a stem to the price at that time; colour = family: blue board alerts (top 20, Telegram top 3, entered zone, and one 'Telegram:' marker per alert a sent message carried, at its send time and price), orange cohort rule / MET / cohort picks, green box, amber rank states, magenta runners; filled = recorded (A) or rebuilt from recorded fields (B), hollow = replayed later with today's code (C); '+3' = three markers collapsed where they do not fit at this width (hover lists them and counts their Telegram status); the 'history' button on each chart hides them
cohort pick: a square at the stamp, a dashed line to the close (a cross) with the pick's result %; an open pick ends at the last price, marked
faint grey band: rolling 24 h quote volume below the $400K floor
magenta dashed line = a RUNNING trigger close; magenta solid step line (Runners page) = the trail level, ratcheting up only; dotted = the RETRACE high (the exit study's peak definition: the highest 1h high from the trigger bar itself through 168 h, the one the retrace bands were measured from); grey dashed = the run start (the 10-day low at the trigger)
Lanes and filters
MET NOW: entry conditions met at the scan price (MOMENTUM cohort rule, or a box retest held on the last close with live still within 0.5 ATR of it); provisional
TONIGHT: a box retest bar that decides at the 08:00 GMT+8 daily close
BOX RETEST: every symbol with a box retest state in MET NOW, TONIGHT or WATCH
WATCH: a named trigger has not happened yet (one cohort check away, a zone setup, or a box awaiting its retest within 1 ATR of the top)
IN COHORT: open forward cohort picks, marked at the last hourly bar
EVERYTHING ELSE: no lane matches; grouped by what blocks it
ALL: every symbol once, under its first lane
Screen states (dashed)
IGNITION: into the top 10% (the scan before outside it; one missing scan is bridged), its last ranked scan before that outside the top 50% or unranked at ≥ 24 of the previous 36 scans; in the last 24 hourly scans; confirmed = that 1h bar rose ≥ 1% with volume ratio ≥ 1.2, rank-only = without it; in the top 10% at its last ranked scan = RE-ENTRY instead
RE-ENTRY: back in the top 10% after N unranked scans (at least 2; one missing scan is not an exit), having been in the top 10% at its last ranked scan before them ('back after Nh out, was #k'); in the last 24 hourly scans; not an ignition, no price check
STAIRCASE: the rank percentile improved by ≥ 0.2 across 6 blocks of the last 36 hourly scans (block means of the ranked scans only: an unranked scan is a gap, not the bottom; each block needs 3 ranked), spread over the blocks (no block step above 50% of the move), now in the top 50%; the last 24 closed 1h bars show rising block lows and a close above a rising 1h EMA20
FADING: the mirror of STAIRCASE (ranked scans only); the rank percentile worsened by ≥ 0.2 from the top 50%, spread over the blocks (no block step above 50% of the move), with falling 1h block highs and a close below a falling 1h EMA20
ON SUPPORT: daily EMA20 above EMA50 on closed daily bars and the last 1h close within 0.5 daily ATR14 of the daily EMA20 (else EMA50)
BOX LOW: an active daily box with live within 0.5 ATR of its bottom; measured from live, provisional until the 08:00 GMT+8 close
RUNNERS: on the runners list (runners.json): a SURGE or LOWRUN trigger on a completed 1h bar in the last 168 h; RUNNING (last 1h close at or above the trigger close and the trail level) or COOLING (below either); sub = the lateness band, or 'below trigger' (last 1h close under the trigger close; set at the 1h close, as the status); dropped after 168 h or a 1h low back at the 10-day low the run started from
Flags
EXT: closed RSI ≥ 75 or more than 3 ATR above the live EMA20
THIN: fewer than 12 decided analogs
BE−: analog win share below the breakeven from live by more than 2 SE (at least 12 decided)
GEO: live geometry differs from the one the study measured
STALE: conditions not re-verified since the scan
BAR: a daily bar has closed since box.json; states await the next scan
UNV: 'not an open cohort pick' not verified (database unreachable)
CLU: one of a cluster of box breaks on the same close
HELD: open cohort pick
BRK: the box broke on the last completed daily close
Evidence
verdict: positive or negative when the mean is at least 2 SE from zero, else no edge detectable; thin = under the family's minimum n (box 30, rank 10, analog 12 decided, forward 2)
dot = mean, whisker = mean ± 2 SE; the figure printed after ± is 2 SE (the same span), n beside it; R = multiples of the stop distance, % = percentage points, pts = points of a share (the analog win share minus breakeven; for the chase rows the P(-15% before +30%) difference, where higher is worse and reads in the risk colour); each block's axis title says per what (pick, trigger or signal event)
[forward] cohort picks stamped once at a live price, after the rule was fixed on 2026-09-02
[out-of-sample] daily-bar backtest with 2025-01-01..2026-08-28 held out
[in-sample] measured on the data the rule was chosen on: a base rate, not a forecast
[geometry] level arithmetic (distance to TP1 and stop, payoff, breakeven), not an outcome
backtest: daily-bar backtest, 2021-26 with 2025-01-01..2026-08-28 held out (386 symbols), measured 2026-08-30, DB table bt_signals; survivorship-flattered; limit = limit at band mid, close = market at the close; R per trade, 1R = the stop
box stats: in-sample 2024-26, 285 symbols, daily bars, R units, fees 0.2%, SE clustered by week; SE = the larger of naive and week-clustered; No edge detectable in any state. Quote these as base rates, never as a forecast for one symbol.
rank stats: 2026-08-30..2026-09-27, 681 hourly scans, one event per symbol per 24 h; mean excess over the point-in-time universe mean (race R: TP +2.4 / stop −2.6 ATR within 7 d); SE = the larger of naive and UTC-day clustered
forward: cohort A = the MOMENTUM cohort rule, top 3 by velocity per day, 336h horizon, no costs; means use picks whose 336h horizon has elapsed (stamped on or before 2026-10-05); R = result / stop distance at the stamp
edge check: cohort A minus every candidate on the same scans, held over the same windows, % per pick
analog: win share at today's ATR geometry over ~2.7 years of daily bars minus the breakeven from live, in points; the share is shown only with at least 12 decided analogs
race (no longer drawn on the pages, owner 2026-10-05): empirical first-touch shares over ~41 days of hourly base rates; against the forward record it was far off (race top 5: TP1 first predicted 0.55–0.59 vs 0.36–0.38 observed; cohort A stop first predicted 0.7% vs 22.8% realised, n 57), so its numbers stay inside the cohort rule and are not shown as odds
Levels and conditions
measured entry: the retest-bar close (R1)
for reference: the entry at the retest-bar close (R1)
measured entry: the next daily close, if still at or above the top and within 0.5 ATR of the retest close (R1L)
applies only if today's daily close ends at or above the top (R1)
applies only if today's daily close ends back at or above the top (R1)
applies only if a later retest bar closes at or above the top (R1)
measured entry: the break-bar close, the last completed daily bar
measured entry: the first close within 0.5 ATR above the bottom of an active box; invalidated 1 ATR under the bottom; TP 0.25 ATR under the top
box: the maximal flat range of 15-160 completed daily bars; top / bottom = highest / lowest candle body; 2+ touches a side, 3 crossings; each third within 40% of the height of both edges (no U, no spike top); no body in its last 3 bars beyond the earlier ones (a breakout candle is the break, never the top); break = the first close outside (one per breakout run) (boxes.py 1.4)
ref = live at the scan
ref = the trigger level (the setup exists only there)
ref = the retest-bar close
ref = live, the provisional entry until today's close
ref = the box top (a retest close must reach it)
ref = the cohort pick's stamped entry
MOMENTUM: TP1 = entry-zone mid + 2.4 ATR, floored at 1.03 × the entry-zone top ez[1]
PULLBACK: TP1 = max(hi20, entry-zone mid + 1.6 ATR), floored at 1.03 × the entry-zone top ez[1]
RECLAIM: TP1 = max(hi20, entry-zone mid + 1.6 ATR), floored at 1.03 × the entry-zone top ez[1]
SQUEEZE: TP1 = max(hi20, entry-zone mid + 1.6 ATR), floored at 1.03 × the entry-zone top ez[1] (= 1.0403 × the trigger)
BASE_BREAK: TP1 = max(1.06 × hi60, entry-zone mid + 1.6 ATR), floored at 1.03 × the entry-zone top ez[1]
the chase bucket the symbol is in now: % above its 20-day low (early <= +40%, extended <= +100%, late above), measured on S1 speed-signal events at the signal hour (24 h change in the top 3%, 1h volume >= 3x its 20-day mean), 7d excess over the same-hour universe; not on runner members later; last 1h close under the trigger close: no bucket ('below trigger', its lateness fell with the price)
rank = place among the scan's candidates (1 = best); p = rank / candidates, plotted as the percentile 100 x (1 - p); the 7 d comparison uses the scan closest to 168 h before the latest: ▲ / ▼ only when the percentile moved at least 10 points, 'new' = not a candidate at that scan (the candidate count differs from scan to scan)
History markers
history markers (events.json): numbered in time order, colour = family; drawn by default: the kinds at priority <= 2; a Telegram alert only when its message was sent; A = recorded at the time, B = rebuilt from recorded fields, C = replayed later (hollow); the history window starts 20 Aug 16:07 GMT+8 (60 days)
board: board alerts (listing, top 20, Telegram)
cohort: cohort rule / MET NOW / cohort picks
box: box (daily)
rank: rank states
runner: runners (runners.json), history since 28 Aug 13:00 GMT+8 (the first replay's start); no magenta marker before that date is not the same as no trigger
A = recorded at the time
B = rebuilt from recorded fields
C = replayed later with today's code on re-fetched prices (drawn hollow)
faint band: rolling 24 h quote volume below the $400K floor
thin lanes under the price: 'listed' = on the board's candidate list with that setup (db.candidates, A = recorded); 'support' = the ON SUPPORT screen state at the daily EMA20 / EMA50 (C = replayed, hollow); each ends at the first of 3 consecutive off-scans
cohort pick: stamp to close with its result %; an open pick is marked at the last hourly bar
Telegram: each alert a sent message carried is its own marker at the send scan and its price, named by what it carried (new in top 20, top 3, entered zone, dropped out); sends of one kind within 24 scans are one marker at the first (xN); a top 20 / top 3 / entered-zone start reads sent only for its own scan; a marker holding several events counts them (k sent of n); unknown = no send log
seen then (events.json ui / tg / ui_dates): 'seen on board' (the row, badge, lane or chip), 'sent on Telegram', 'seen on the Runners page', 'ends a state shown then'; 'reconstructed, not shown then' = rebuilt afterwards, drawn faded; first on screen: ELIGIBLE badge 2 Sep 20:07 GMT+8, MET NOW lane 27 Sep 01:07 GMT+8, v1.4 boxes 28 Sep 11:07 GMT+8, rank chips 28 Sep 11:07 GMT+8
Runners
the Runners list's orderings (freshest, fastest, earliest, deepest) are views of the list; none was tested as predictive [in-sample]; earliest lists the members at or above their trigger close first (lowest lateness first), then those under it at the last 1h close
distances: every chart gutter gives a level's price and its distance from the live price (level vs live, as every level on the board); chips and cards give the live price against a level in words (above / below)
exit rules on the RUNNING triggers (325 triggers 2026-07-20..2026-09-20): mean net % per trigger, entry at the next 1h open after the trigger bar, 0.2% round trip, 168 h cap; 'minus hold 168 h' = the paired difference per trigger; SE clustered by trigger UTC date; a rule 'better than the others' needs > 3 SE (19 exits tested); none reached 2 SE
entry lag: the same exit rule entered 1 / 4 / 12 / 24 h after the next open minus at it, paired per trigger, % per trigger; the waiting chips give the median price move while waiting
early-entry signals S1-S5 over the whole universe (2026-08-06 20:00 → 2026-09-21 02:00, 340 symbols): 7d forward return minus the same-hour universe mean (7d excess), SE clustered by UTC date; S5 rank leap, 29 Aug–21 Sep only: 2026-08-29 11:00 → 2026-09-21 02:00 (second of the window's two periods), 22 days
chase buckets: S1 speed events split by % above the 20-day low at the signal (<= +40%, +40-100%, > +100%), 7d excess over the same-hour universe mean; '-15% before +30%' = share whose low reached -15% before the high reached +30% within 14 d
pump anatomy of the RUNNING triggers (325 triggers 2026-07-20..2026-09-20): peak timing, extension and give-back within 7 d of the peak; retrace bands p50 27.91% / p75 35.23% / p90 50.24%
runner evidence: in-sample, one regime, 2026-07-20..2026-09-20 triggers; thin under n 30; |mean| < 2 SE none; ≥ +2 SE positive; ≤ −2 SE negative
SURGE: 24 h close change >= +20% and 24 h quote volume >= 3x the prior 7-day daily average
LOWRUN: close >= 1.30x the 10-day low, with that low set within the last 72 h
trigger: SURGE or LOWRUN on a completed 1h bar, 24 h quote volume >= $400K, one per symbol per 168 h
RUNNING: last completed 1h close at or above both the trigger close and the trail level
COOLING: last completed 1h close below the trail level or below the trigger close
trail level: highest high since the trigger (the trigger close, then the highs of the bars after the trigger bar) minus 3x ATR(14, 1h), ratchets up only (TRAIL_1H_3)
dropped: 168 h after the trigger, or a 1h low back at the 10-day low the run started from
lateness: % above the 20-day low (480 1h bars); bands +40% / +100% as the entry study measured, on speed-signal entries at the signal hour (24 h change in the top 3% that hour); a member below its trigger close reads 'below trigger' instead of a band
below trigger: the last completed 1h close is under the trigger close (COOLING), so its % above the 20-day low fell with the price; a low lateness here is not an early run, and the early / +40-100% / late buckets (measured at speed-signal hours) do not describe it; decided at the 1h close, as the status (a live tick only moves the distance to the trigger close)
retrace: % below the RETRACE high, which uses the exit study's own peak definition (the highest 1h high from the trigger bar itself through 168 h, the trigger bar's wick included), the same peak the 7 d post-peak retrace p50 / p75 / p90 were measured from (the trail level keeps its own highest high)
A = recorded by this step within 2 h of the bar close; C = replayed later from Binance 1h klines
recon: rebuilt on the first run (or when a symbol joins the $400K universe) by replaying up to 1,000 1h klines, the 168 h refractory chain from the first evaluable bar (about 31 days back); its RUNNING on / off are kept for the chart history (60 days at most), marked C; not seen live
runner history (the magenta chart markers) is complete from the first run's replay start; before that date the charts carry no runner markers, which is not the same as no trigger
symbols whose name is not plain A-Z / 0-9 are left out of the list: the live price stream, the Watch page and the chart history cannot carry them
all figures in-sample, one bull regime (breadth ~91%), 0.2% round-trip costs; no holdout
outcome-conditioned view, post-hoc and not knowable live: each exit rule's mean on the triggers grouped by how far they ran within 7 d (MFE); tight trails lose less on the triggers that never ran and keep little of the big runners, and the two cancel (only 16% reach +50%)
Data
scan 2026-10-19 16:07 GMT+8 (board.json) · box.json 2026-10-19 16:09 GMT+8, bars to 2026-10-18 · rank.json 2026-10-19 16:07 GMT+8 · runners.json 1h bar 2026-10-19 16:00 GMT+8 · events.json through the 2026-10-19 16:07 GMT+8 scan · forward record from the database · page built 2026-10-19 16:10 GMT+8; live prices: Binance public API in the browser
A written brief from 22 Sep 2026 08:07 GMT+8, 611 scans behind the board is archived in the database (table briefs). It is not shown here: its figures carry no n, tag or verdict and are not re-verified.