From 6e2c995f3a5708911c8efa15f8c5e4c6e7f2af36 Mon Sep 17 00:00:00 2001 From: jaxperro Date: Thu, 23 Jul 2026 00:52:51 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20measurement=20split=20+=20data=20moat?= =?UTF-8?q?=20(2026-07-22=20night)=20=E2=80=94=20FINDINGS=20section,=20HAN?= =?UTF-8?q?DOFF=20snapshot,=20research=20README=20data=20streams=20+=20DAT?= =?UTF-8?q?A=20LAW?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- FINDINGS.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++ HANDOFF.md | 37 ++++++++++++++++++++++++--------- research/README.md | 45 +++++++++++++++++++++++++++++++++++---- 3 files changed, 120 insertions(+), 14 deletions(-) diff --git a/FINDINGS.md b/FINDINGS.md index 24a650ec..a7041af3 100644 --- a/FINDINGS.md +++ b/FINDINGS.md @@ -561,6 +561,58 @@ assumptions (the paper harness earns its keep even when — especially when — it disagrees); (3) at 20–50× payoffs, no small sample means anything: the sub-5¢ "edge" survived a 31-fill scan and died at 38. +## The measurement split + the data moat (2026-07-22, same night) + +Round three's kill landed while a parallel line of work was rebuilding the +instruments; the two converged into an architecture change and one more +corrected verdict. + +**One instrument can't sample and rehearse at once.** The v1 surge book +halted at its pre-registered −50% line the same evening. First diagnosis +blamed the cash gate for adverse selection — the ~2% subsample it could +afford read −$9/fill vs "+$41/fill" for the full signal. Round three +dissolved that comparator (the +$41 was the resolved-only bias; chain +truth −$6/fill, right next to the subsample's −$9): the book wasn't +sampling badly, the signal was dead. The structural lesson survives the +autopsy either way: a physically cash-gated harness measures a bankroll's +shadow, not a signal. Both harnesses now run **measurement-mode** — every +trigger attempted at the ledger's stake, and bankroll specs replayed +OFFLINE over the recorded attempt stream (`surge_book_replay.py`), where +gating can never touch the sample it's judged on. + +**No scalp was hiding in the corpse.** The markout-exit study (chain-true; +its res_tok v0 self-corrected within hours — same round-three mechanism, +caught by the same law): 1,146 forward fills, hold −$5.92/fill, and every +exit horizon negative too (best −$4.18 at +30m). The cohort split is the +microstructure finding: winners drift monotonically to +$44 held; the +losses the old scorer hid bleed from minute one (−$6@60s → −$44@2h). +Surge moments are symmetric information events, priced in immediately — +after fees and worst-print entry there is nothing for a taker at ANY +horizon. Whatever earns money at those moments is on the other side of +the book (maker study: staged, tape-sim first). + +**Two more scorer artifacts, disclosed on #17 before they could bite:** +the tape scorer reads sprint strikes from the FUTURE window-open tick for +pre-window prints (live gates ts ≥ t₀; 404 such prints suppressed in an +8.5-min shakedown), and unlabeled non-sprint tokens default to the +yes-side, turning No-side dust prints into fake ~+0.99-edge events (the +harness reads labels from the trade payload itself — same rule, better +input). + +**The data moat, hardened (DATA LAW, research/README).** Everything +accrues Mac-independent on Fly volumes (recorder: 25GB at 4%, ~3+ weeks +of offline headroom; harness streams: attempts with top-5 asks + top-3 +bids + latency, markout book re-reads at +60/300/1800s per fill, durable +settle logs immune to state trims; daily volume snapshots ×5). The Mac is +only the grader/archiver, and its two offline failure modes are closed: +`forward.py` now backfills any tape-covered day the ledger has never +seen, and settle logs mean trims can never rotate evidence away. +`meta_snap.py` snapshots every active market nightly (~12k: end dates, +tags, token→outcome maps) — τ becomes knowable AT TRIGGER for every tape +trigger, and the label-gap artifact class dies at the source. Tests are +additive, never subtractive: raw streams are append-only, analysis reads +only, and a study that needs different data records a NEW stream. + ## Repo layout - `insider.py` — the detector: z-score/p-value, timing/freshness/sizing signals, diff --git a/HANDOFF.md b/HANDOFF.md index 8ec7e974..277d7b6d 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -78,22 +78,39 @@ push through. fills; identity-null stands). Study B oracle (#17): E0.04 killed, E≥0.07 accumulating slightly positive. Verdicts ONLY from research/forward_ledger.jsonl. -- **wwf-surgebot (PAPER, ~$3/mo)**: real-time surge harness — $100 book, - $5 stakes, event cap 2, paper FAK vs live CLOB, /feed endpoint → the - /surge dashboard; chain-graded nightly (grade_surge.py). THE instrument - that caught the scorer bug (its 57.5% refused to match the ledger's - 81%). Runs through Friday's read, then archive per #19. +- **wwf-surgebot (PAPER, ~$3/mo)**: THE instrument that caught the scorer + bug (its 57.5% refused to match the ledger's 81%). v1 cash-gated book + halted 2026-07-22 at its pre-registered −50% line (state + ledger frozen + as audit artifacts); relaunched same day as **A2 measurement arm** — + every trigger paper-FAK'd at $100, attempts/markouts/settles append-only + on the volume, the $100/5% spec replayed OFFLINE nightly + (surge_book_replay.py → surge_book.json). Runs through Friday's read; + its capture/depth/latency streams feed successor hypotheses per #19. +- **wwf-oraclebot (PAPER, ~$3/mo, live 2026-07-22)**: Study B real-time + harness — fair value tick-by-tick on the venue's own settlement feed, + all E-tiers tracked, $100 FAK walks, three settle layers ending in + nightly chain truth (grade_oracle.py → oracle_paper_ledger.jsonl). Early + live cells lean positive at E≥0.07 — consistent with the corrected tape + read. Same attempts/markouts/settles streams as A2. +- **Data moat (2026-07-22, DATA LAW in research/README)**: all raw streams + append-only and Mac-independent (Fly volumes + daily snapshots; recorder + has ~3+ weeks offline headroom); forward.py backfills ledger-missing + days after any Mac gap; meta_snap.py snapshots ~12k active markets + nightly (τ-at-trigger + token→outcome for every future study). Markout + study (chain-true): NO scalp inside the dead surge signal — hidden-loss + cohort bleeds from minute one; taker case closed at every horizon. - **Verdicts pending**: edge/size-up (#14, ~end of July, pre-registered) · Friday's combined read (#13 bench + #16 formal close + #17 oracle-tier decision + #19 sprint-plan disposition — every number now chain-true). -- Dashboards: jaxperro.com/{trading,live,surge,value} · daily pipeline on - the Mac at 08:00 (launchd, lockfile) — floors, bench forward table, edge - row, tape sync, Discord digest · tape mirror every 15 min +- Dashboards: jaxperro.com/{trading,live,test,value} — /test = both paper + studies on one page (old /surge + /oracle URLs redirect) · daily pipeline + on the Mac at 08:00 (launchd, lockfile) — floors, bench forward table, + edge row, tape sync, Discord digest · tape mirror every 15 min (com.jaxperro.tape-sync → sync_tape.py, sftp + base64-console fallback) · research nightly fires 09:15 then WAITS for fresh tape (com.jaxperro.research-nightly; self-commits ledger, informed set, - surge/oracle grades). All launchd agents removable with - `launchctl unload ~/Library/LaunchAgents/