plans(017) Phase 0: GO — ask-overhang-above-break separates winners AUC 0.80

First genuine selection signal in the project. 40 real fires, Databento
XNAS.ITCH book at each trigger: naive imbalance = noise (AUC 0.45/0.50), but
ask-size resting within 1% ABOVE the break separates winners at AUC 0.80
(winner median 0.276 vs loser 0.005; median split 27% vs 67% win). Inverted
from supply-trap intuition = absorption/fuel mechanism, invisible in OHLCV.
n=23 single-day sniff -> GO to Phase 1 recorder, not to trading. Cost: pennies.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
momentum devandClaude Fable 5 committed 2026-07-18 09:26:50 -05:00
1 parent 17870872ca
commit b9828e5e06
2 files changed
+19 -1

No files matched your search

+18
View File
@@ -133,6 +133,24 @@ trials and free tiers only.
write the negative result in `plans/README.md`, recommend the human-selector
fork instead. This is a legitimate, cheap, correct place to end.**
> **PHASE 0 RESULT — 2026-07-18 — GO. First genuine signal in the project.**
> Ran the sniff on 40 real v1 fires ($2-20, 07-17), pulled the actual Databento
> XNAS.ITCH order book at each trigger (23/40 covered; 17 missing = NYSE names
> needing DBEQ.BASIC — a Phase-1 coverage fix). Total spend: pennies.
> - Naive book imbalance (full + near-touch): **NOISE** (AUC 0.45 / 0.50) — the
> obvious "bid-heavy = good" idea is dead, as it was in bar data.
> - **Ask-overhang above the break: AUC 0.80.** Winners' median resting ask-size
> within 1% above the break = 0.276 vs losers' 0.005 (~50x). Median split:
> low-overhang fires won 27%, high-overhang 67% (+40pts, robust to outliers).
> - Direction is INVERTED from the supply-trap intuition: a thick ask wall above
> the break predicts WINNING — the absorption/fuel mechanism (a break that
> clears visible resting supply ignites; a break into thin air fizzles). This
> is invisible in OHLCV — the first feature that needed the order book to see.
> CAVEATS: n=23, single day (regime confound); must rule out price/liquidity
> proxying at Phase 3 (stratify by price/rvol); a sniff, NOT a verdict. GO to
> Phase 1 (build recorder), NOT to trading. The lead feature to record and test:
> `ask_overhang = Σ ask_sz at px in (break, break*1.01] / Σ bid_sz`.
### Phase 1 — Build the recorder against the free/trial feed, log-only ($0 or trial credit)
If Phase 0 passed the sniff test, build the pipe — still on free/trial data
+1 -1
View File
@@ -33,7 +33,7 @@ your row when done.
| 014 | Live decision trace — gate-receipt feed (value→threshold per gate) + chart reject markers | P2 | M | 013 (chart overlay half; feed panel standalone) | **DONE (2026-07-17, review-APPROVED first pass, zero revisions; commit dd81dbb on `worktree-agent-acb00535650deac1a` — awaiting owner merge). Decision Trace panel (lazy-load + SSE-throttled), /api/decisions (clamped 500, case-insensitive, server-side epoch), collapsed reject markers merged into the chart's single markers primitive.** |
| 015 | Backtest replay dashboard (/backtest) — theoretical entries/exits over past sessions under CURRENT settings, via Experiment-OS replay | P2 | L | 013 (chart component) | **DONE (2026-07-17, review-APPROVED first pass; commit 8ac222a on `worktree-agent-ae4d3f36e18c6e7a5` — awaiting owner merge). replay_window = assembly-only over harness primitives (same _entry_index/adverse-fill/R math); /api/backtest 45-session clamp + 10-min cache behind a dedicated lock; /backtest page with THEORETICAL banner + X-of-Y coverage line + per-trade drill-in (blue entry/purple exit markers). Deviations accepted: /api/chart gained backward-compatible date= anchor (72h cap couldn't reach old sessions); batching idiom taken from regime.py (plan's run() pointer was wrong).** |
| 016 | EDGAR dilution enrichment — unbreak silent nightly refresh (UTC current_date bug + missing float_cache DDL) + pre-register dilution_veto_v1 keep-or-zero experiment | P2 | M | 006 | **DONE (2026-07-17, review-APPROVED first pass; f6999c7 merged). iv_dilution_gate keep-or-zero (fail-open on unfetched symbols, early results biased toward zero never inflated), dilution_veto_v1 self-registers via the experiments/*.json glob, nightly adjudication live. Prod backfill seeded same day (304 symbols swept, 245 filings / 91 symbols). FIRST ADJUDICATION 2026-07-17: **FAIL** (n=2044, expR_delta +0.0012 vs +0.05 bar) — but only 64/2069 fires (3%) had filing coverage (backfill covers recent actives only; historical fires read unflagged by fail-open design), AND the flagged fires ran BETTER than unflagged (baseline −0.038 vs −0.377, n=64): early evidence points AGAINST the dilution-trap thesis, not merely underpowered. Bar-design lesson: min_n counted ALL fires not flagged ones. Verdict terminal (no goalpost-moving); filings keep accruing nightly. IF revisited: dilution_veto_v2 with a flagged-fire min_n metric, after ~3-4 weeks coverage.** |
| 017 | L2 order-book depth recorder — the one untested selection axis; FREE-first (Phase 0-1 = $0 sniff test + recorder), paid feed only after the data earns it, pre-registered verdict before any live use | P1 | L | 006 | TODO (owner-approved to plan, no spend yet) |
| 017 | L2 order-book depth recorder **[Phase 0 DONE 2026-07-18: GO — ask-overhang-above-break AUC 0.80 on 23 fires, first real signal; needs recorder+n>=300 to confirm]** — the one untested selection axis; FREE-first (Phase 0-1 = $0 sniff test + recorder), paid feed only after the data earns it, pre-registered verdict before any live use | P1 | L | 006 | TODO (owner-approved to plan, no spend yet) |
Status values: TODO | IN PROGRESS | DONE | BLOCKED (with one-line reason) | REJECTED (with one-line rationale)