53 Commits

Author SHA1 Message Date
jaxperro 48b51896ae nightly: stale-lock takeover via recorded PID; reconcile: wait out the tape-sync write lock
A killed nightly (pause/crash/reboot) left .nightly.lock.d behind — the
EXIT trap never fires on SIGKILL — and EVERY later run then skipped
silently (caught 2026-07-27: today's run exited in <1s). Lock now
records its PID and a run whose owner is gone takes it over.
Reconcile hit the 15-min tape-sync agent's single-writer lock and died;
now waits it out (20x30s).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 11:28:01 -04:00
jaxperro 1ce8560dfb research: forward ledger 2026-07-25 [skip ci] 2026-07-25 19:40:27 -04:00
jaxperro b9e2abd7c9 reconcile: live-realized field fix; first reconcile.csv row + replica book committed
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 13:42:46 -04:00
jaxperro 25d3dedc49 #24 v1: follow-since windows (config git history -> per-wallet clamp), reject-split buckets (REJECTED vs UNSEEN), reconcile --csv row + drift alarm, live-replica residual
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 13:30:09 -04:00
jaxperro bfd725621d #24 v0: three-book reconciliation — backtest story is 82-112% unseen+missed; +312% is decoration, rankings only
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 19:15:00 -04:00
jaxperro 54f4c511ab band-guarded mirror exits (#21 successor): mirror sells >=90c only, sub-band sells ignored+ledgered; sell-band study slice; backtest parity
Sell-band evidence: every band <90c LOSES by mirroring (<30c +$79/sell
given up, 50-70c +$7.29); >=90c SAVES (-$0.85/sell, n=68).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 18:34:20 -04:00
jaxperro f39c659edc docs: batch-three findings (T11 TTL optimal, T12 no exit rule, T14 imbalance band, T15 churn) + backtest paper-parity + Profitable bench
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 18:26:59 -04:00
jaxperro 2cfd9a6cf0 T12 verdict: STAY +$5.95/unwind (n=265) — maker-sharp unwinds are not exit signals; Study C keeps no exit rule; concentration caveat stated
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 18:23:04 -04:00
jaxperro 71194b219f T12 + T15 scripts (runs in flight; verdict headers follow with results)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 18:14:07 -04:00
jaxperro 243022deca T14: depth structure as fill filter — balanced-book band (imb .25-.47) is the one cross-harness structure; extremes adverse both ways; slope quartiles = tie artifact; l1_frac inconsistent
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 17:51:07 -04:00
jaxperro a33b885da5 T11: maker-entry patience curve — 60s TTL already optimal; patience past 60s harvests adverse selection (loser fill-rate 100% at 5m+)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 17:25:49 -04:00
jaxperro 41812b63f6 docs: lock in Study C #22 + Study D #23 state (wwf-lagbot deployed, shakedown findings, batch-two verdicts)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 17:09:09 -04:00
jaxperro d4053ee2b9 T9 Stage-2: wwf-lagbot lead-lag paper harness (Study D #23) + nightly chain grading
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 16:54:53 -04:00
jaxperro 052eda04d1 research: Study C FREEZE — maker inventory-lean pre-registration (follow arm verdict; fade failed its concentration gate)
score_lean wired into the nightly (walk-forward as-of screening, frozen
trigger, chain truth); params/study_lean.json frozen; forward window =
ledger rows dated after this commit. Fade $2k+ arm excluded by the
pre-declared gate (top event 32%, tail net-negative) — tracked
report-only. Follow $150-500: robust across 869 events (top 14%).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:49:50 -04:00
jaxperro df101db78a docs: batch-two results (T6-T10) — two survivors, the slow-repricing theme
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:17:15 -04:00
jaxperro e6287c788d research: event_leadlag (T9) — POSITIVE: same-outcome siblings reprice slowly after leader bursts
2,191 episodes (400 highest-volume event/outcome groups, name-matched
semantics only): follower drift +4.12c mean in leader direction at +5m
(43% >+2c vs 17% adverse; p50=0 — thin siblings often don't print).
Tradable leg chain-true: n=2,028 · EV +$9.73/$100 buying the follower at
its last print in the leader's direction. STATED OPTIMISM: stale-print
entry (the T4 lesson — prints are not books); resting asks may have
repriced without printing. Stage-2 = execution realism (live book reads
or a paper scanner leg). Theme with T6: edge lives where repricing is
SLOW — the far side of the requote wall.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:16:48 -04:00
jaxperro 0b12820eeb research: settle_discount (T7) — mechanism confirmed via incumbents; residual UNPROVEN (63% of volume outside tape-resolution = round-3 lower-bound caveat)
Incumbent census (volume-ranked): industrialized niche — top harvester
$3.2M vol/5,854 buys at +2.27% per ~4h hold; several ~$1M at +2.4-3.4%;
two big operators NEGATIVE (-3%) — residual risk is real, top-5 share
only 20%. Bucket returns (+6.2%/90-95c etc) are UPPER bounds: $129M of
high-price buys sit on non-tape-resolved tokens where upsets linger.
Verdict: park at our capital scale (pennies on idle cash); revisit as an
idle-cash overlay once nightly chain coverage closes the bias, or if
bankroll grows 10x.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:14:04 -04:00
jaxperro 0ea6f642d1 research: copy_age_slices (T10) — inconclusive at n<=15/cell; 6-24h bucket positive both books (age~market-type confound noted); reruns as fills accrue
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:11:33 -04:00
jaxperro aab3bc7d9e research: miss_audit (T8) — chain-only guard counterfactual (v0 fallback retracted in-file)
98 chain-graded misses. The useful inversion: crater_reject misses were
GOOD misses (-$7.74/-$6.32 per $100 both books) — unfillable entries were
adversely selected, consistent with the week's winner's-curse theme, and
puts a question mark on the 07-20 requote-retry's EV (follow-up: score
retry outcomes). Everything else outlier-dominated at n<=21/bucket (one
+1567% longshot carries depth_thin); no filter changes warranted. Ledger
deepens daily — maker-window expiries now feed it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:10:38 -04:00
jaxperro 85ef7809f0 research: maker_lean (T6) — WALK-FORWARD POSITIVE: follow small maker leans, fade whale bags
9,165 chain-graded leans, 3 walk-forward days, as-of screening (no
self-selection). FOLLOW +$2.51/lean pooled (59% hit @ 58c avg), positive
ALL THREE days (+1.60/+2.20/+3.60) — day-consistency the surge signal
never had under truth. Size structure tells the mechanism: $150-500
leans FOLLOW +$2.90 (absorbed retail flow = signal); $2k+ leans FOLLOW
-$1.73 / FADE +$13.38 n=422 (whale bags = makers getting picked off).
Caveats: last-print entry optimism, thin vs the fee hurdle as taker
(maker-entry execution is the natural pairing), $2k+ fade cell needs an
event-concentration check before pre-registration.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:08:43 -04:00
jaxperro 4cb108b801 docs: T1 maker-quoting Stage-1 kill — the wall pays speed, not formulas (FINDINGS coda + README verdict)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 14:31:04 -04:00
jaxperro 4383d250be docs: #16 formally closed (kill executed as pre-registered); T1 sim hardened (per-second vol memo + streamed progress)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 14:01:39 -04:00
jaxperro 222a750bd7 docs + audit sweep 2026-07-23: fill-model lesson, five-test day, archive pass
FINDINGS: 'The fill model is the next scorer' section (A2 chain grade
-$7.54/fill x1344 confirms the surge kill; oracle harness chain grade
vetoes the ledger-positive tiers; virtual-book +26% variance footnote;
the five tandem tests and the makers-on-the-wall through-line).
HANDOFF: snapshot -> 07-23 (7-wallet rev 5, dark flags, Friday agenda
incl #20/#21). READMEs: /test consolidation row, measurement-harness
research row, study statuses + new script inventory.
Archive: value/ (closed 07-19) + its test, ETHERSCAN_MIGRATION.md,
order_probe v1 -> archive/; replay_out/ gitignored; links repaired.
Tests: all 7 active scripts pass post-move.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 13:55:27 -04:00
jaxperro efb33e0e8b research: sell_mirror_study — reproducible basis for the hold-through pre-registration
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 13:15:26 -04:00
jaxperro 50f1f0ae12 research: maker_sharps (T2) + sibling_sum_scan (T4) exploratory passes
T2: the maker species is real and distinct — 673 wallets clear the taker
screen's z>=2.5 discipline on the orders_matched stream (~33 expected by
chance), pooled +$5.9M over 47,693 resolved bets in ~6 tape days; only
96/673 overlap the taker informed set, 3/37 watch_sharps. Not copyable by
taking (their edge IS the spread) — follow-ons: inventory-lean signal,
T1 generic maker sim.

T4: print-substrate sibling-sum scan reads 2.8%/1.5% violation minutes but
the top examples expose the artifact (resolution-time dust prints at bids,
not standing offers); persistence p50 1min. Verdict: inconclusive at v0,
needs standing-book data (L2 recording / live paired scanner) — parked
behind the T1 decision.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 12:57:19 -04:00
jaxperro f2fb8d67b7 research: copy_maker_entry (T3) — resting-bid copy entries beat taker FAKs
54 chain-graded parity+ signals @$100: maker bid at their price fills 93%
within 60s, EV/signal +$17.45 vs taker +$12.86 (+36%) — fee removal +
no pay-up. No adverse-selection asymmetry at the 60s window (winners fill
92% vs losers 94%); mild asymmetry only in patient tails, so 60s-then-
cancel is the shape. Queue-position optimism stated: maker wins while real
priority >~68%; markout re-read stream will refine. Candidate execution
change behind mirror-exactly + pre-registration.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 12:42:26 -04:00
jaxperro 896504ccea research: copy_edge_slices (T5) — parity-era copy edge by niche/lag/band/wallet, chain-true
Paper pooled +18.6% (n=35, clears hurdle+2pp). Concentration: esports +22.0%
(n=29, 83% of stake) and gkmgkldfmg +33.4% (n=19). Live pooled ~breakeven at
$1-2 stakes (rounding drag, concentrated in the esports cell) — the #14
size-up tension in one table. Slippage by lag: <=3s fills BETTER than their
print (-0.66c mean). Exploratory measurement; cells small; meta-niche
coverage 0% until snapshots accrue (title fallback used).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 12:36:34 -04:00
jaxperro 0601ce20c6 research: forward ledger 2026-07-23 [skip ci] 2026-07-23 11:19:14 -04:00
jaxperro 6e2c995f3a docs: measurement split + data moat (2026-07-22 night) — FINDINGS section, HANDOFF snapshot, research README data streams + DATA LAW
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:52:51 -04:00
jaxperro e6730ef579 research: data-moat hardening — durable settle logs, offline-proof forward backfill, nightly market-metadata snapshot
- surgebot/oraclebot: settles now append-only to /data/*_settles.jsonl
  (SETTLED_TRIM rotation can never lose a settle; graders pull them)
- forward.py: backfills any tape-covered day missing from the ledger —
  a Mac offline gap > RESCORE_DAYS no longer leaves verdict-evidence holes
- meta_snap.py: nightly gzipped snapshot of all active markets (12k, 2MB/d,
  local-only) — end dates make tau knowable at trigger for every tape
  trigger; token->outcome maps kill the label-gap scorer artifact class
- .gitignore: pulled raw streams + meta stay local (re-fetchable, lean repo)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:43:12 -04:00
jaxperro a8c5db88b1 research: markout_flow corrected to chain truth (payouts_for) — v0 verdict retracted, scalp killed properly
v0 (res_tok only) said 'hold wins everywhere, +$43/fill' — that was
resolution-timing survivorship (round 3). Chain-graded, 1,146 forward
fills: hold -$5.92/fill and EVERY exit horizon negative too (best -$4.18
at +30m). Cohort split: tape-resolved winners drift to +$44 held; the
hidden-loss cohort bleeds monotonically from minute one (-$6@60s ->
-$44@2h). No scalp, no rescue — surge moments are symmetric information
events; net of fees + worst-print entry the taker case is closed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 19:01:38 -04:00
jaxperro 5ec7455bdb research: markout_flow — exploratory markout-exit curve (VERDICT: no scalp edge; hold wins everywhere)
Forward days, 559 resolved fills: exit +60s = -$3.43/fill (burst-top entry
is briefly underwater), +30m = +$13.63, +2h = +$35.51 vs hold-to-resolution
+$43.56. Monotone accrual to resolution in every slice — the under-reaction
converges over hours, not seconds. v1's >3h 'bleed bucket' is POSITIVE on
the full signal (+$44.66/fill): another confirmation the v1 book's losses
were cash-gate selection, not hold-time. All entry bands positive forward.
No A2-scalp pre-registration warranted; markout re-reads stay on to verify
with real bids.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 18:47:30 -04:00
jaxperro fd2162b68b research: observational instrumentation — bid_top on attempts + markout book re-reads (+60/300/1800s) on both harnesses
No signal-path change (SEM_VER unchanged): records more, alters nothing.
Purpose: real exit marks for the markout-exit study (prints can't show the
bid) + book depth at mispricing moments (maker-study stage-1 groundwork).
oraclebot gains the same append-only attempts log as A2. Nightly pulls the
new files alongside state.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 18:43:12 -04:00
jaxperro 2c322419b6 research: surgebot A2 — measurement arm relaunch (every-trigger $100 FAKs + attempts stream + offline virtual-book replay)
v1's cash-gated book halted at its pre-registered -50% line; post-mortem
showed the ~2% cash-gated subsample was adversely selected (-$9/fill vs
+$41/fill full-signal, same day). A2 samples every trigger and replays
bankroll specs offline (surge_book_replay.py -> surge_book.json). Signal
semantics verbatim; grades to surge_meas_ledger.jsonl. See #19.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 18:30:55 -04:00
jaxperro aec20158af research: final surge grade before harness halt (+15 settles, book $49.39, -50% line tripped)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 18:09:06 -04:00
jaxperro 790ef42c40 docs: the 2026-07-22 lessons — resolution-timing survivorship (round 3)
FINDINGS: full round-3 section (mechanism, the 81%-vs-26% audit, how the
paper harness caught it, corrected verdicts, three standing rules) +
scorecard updates (surge dead, sub5c dead 0/38, oracle revived at E>=0.07)
+ correction banner on the 07-20 tape-era section. HANDOFF: queue +
snapshot reflect the kill, surgebot's instrument role, scorer law, Friday's
combined agenda. research/README: SCORER LAW + independent-instrument rule
+ full current layout. recorder/README: sync transport fallback. README:
/surge dashboard + research row truth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 17:39:47 -04:00
jaxperro d701937a54 research: corrected ledger recompute (chain-overlay scorer) + portfolio per-wallet missed totals [skip ci] 2026-07-22 17:33:19 -04:00
jaxperro d34a4c5ac8 forward: chain-overlay payouts — pendings were hiding the losses
THE SCORER BUG (found 2026-07-22 by the surge paper book divergence):
tape-resolution timing is win-biased. When our side LOSES, the winning
sibling keeps trading at 99c until close, the sibling-veto keeps the
market 'alive', and the loss sits in the ignored pending bucket — while
wins tape-resolve within hours and score. Jul-21 audit: tape-resolved
fills 81% hit (+$46/fill); chain-resolving the 329 'pending' fills: 26%
hit, -$49.61/fill; combined truth 53% ≈ the paper book's 57.5%. The
paper harness was the honest instrument; every ledger arm was flattered.

payouts_for(): tape proxy first, CTF chain truth for the remainder
(payouts.py cache — immutable, so nightly incremental cost is small);
refunds (0.5) now booked as scratches. Applied to flow, controls, and
oracle (sub5c inherits via score_flow). Ledger recompute follows; #16
verdict evaluates corrected numbers only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 16:56:13 -04:00
jaxperro fce6f0f2de research: oraclebot — Study B real-time paper harness (wwf-oraclebot) + nightly chain grading
Mirrors forward.py::score_oracle semantics verbatim (constants frozen from
study_oracle/tape); live-only suppress-only guards; $100 FAK walks the live
asks inside p_ref*1.05; three settle layers (own-feed tick, CLOB flags,
nightly CTF re-grade via grade_oracle.py -> oracle_paper_ledger.jsonl).
Shakedown 2026-07-22: 52 events/9 fills/43 craters at p50 541ms; 30/30
event agreement vs tape scorer on the comparable set. Verdict still binds
to forward_ledger only (#17).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 16:51:54 -04:00
jaxperro ab2f854dcc research: forward ledger 2026-07-22 [skip ci] 2026-07-22 13:11:32 -04:00
jaxperro 2960029145 surgebot: expected-resolution timestamps on positions (end_ts)
Fetched from CLOB end_date_iso at fill time; settle passes backfill
pre-ETA fills. Feeds the /surge Open tab's Resolves column.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 21:27:09 -04:00
jaxperro 1bfc91dd6a surgebot: read-only /feed endpoint for the /surge dashboard
CORS-open GET /feed serving the paper book (equity, counters, open,
settled, skips, informed-set meta) — paper data only, nothing mutable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 15:29:12 -04:00
jaxperro eeeed39e22 surgebot: Study A paper harness, deploy-ready for the Friday sprint (#16)
Real-time PAPER trader of the FROZEN surge signal on its own Fly app
(wwf-surgebot, recorder-pattern image, no keys, no bot imports):
$100 paper book · 5%-of-equity daily stakes ($1 venue floor) · cash-gated
all-or-nothing · event cap 2 · paper FAK against the live CLOB book inside
p_ref*1.05 · provisional CLOB settles re-graded nightly with CTF payout
vectors (grade_surge.py -> surge_paper_ledger.jsonl). Informed set
published daily (informed_set.py -> params/informed_set.json, frozen
method). Unit-tested: fill/crater/event-cap/cash paths exact; live smoke:
dual sockets + sizing clean. Believing any of it stays gated on the #16
forward verdict.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 15:15:53 -04:00
jaxperro a7a6706365 research: forward ledger 2026-07-21 [skip ci] 2026-07-21 14:57:03 -04:00
jaxperro 2fab0424d0 research: sub-5c surge longshots as an EXPLORATORY forward arm
Same frozen surge signal, band opened to 0.5-5c, all niches, F=$300 —
tracked nightly as flow_sub5c_EXPLORATORY (NOT pre-registered). First
tape scan: they live in in-play sports totals/blowout tails + esports
maps; ~70% crater; 31 resolved fills, 4 wins, EV sign owned entirely by
two lottery hits; sim depth-blind at longshot share counts. Accumulate
to ~100+ resolved fills before any pre-registration or kill.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 14:48:26 -04:00
jaxperro c8118a093e research: forward ledger 2026-07-21 [skip ci] 2026-07-21 13:21:59 -04:00
jaxperro 3f696a2aca research: nightly lock uses an absolute path
First run exited 1 after a successful score: the exit trap's relative
rmdir ran from the repo root (post-cd) — wrong dir, stale lock left in
research/, every future night would have skipped itself.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 13:09:20 -04:00
jaxperro 8edccda58a docs: stage-0 coherence pass across README/HANDOFF/recorder/research
- README: recorder row + architecture diagram reflect fold->parquet->
  15-min mirror (and research/ joins the diagram); cheat-sheet gains a
  'sync the tape now' row
- HANDOFF: snapshot dated 2026-07-21, launchd roster (tape-sync +
  research-nightly wait behavior), #15 back in the open queue, tape ops
  line in quick-reference
- recorder/README: ops block (sync_tape + fold health, deploy gap note),
  storage economics (/mo, mirror as Stage-1 feedstock)
- research/README: nightly.sh wait-for-fresh-tape semantics
- live/tape_sharps.json: refreshed 4-day chain-validated screen (the
  smoke run had briefly left a chain-less version)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 13:07:31 -04:00
jaxperro e3e05d62d1 research: forward ledger 2026-07-21 [skip ci] 2026-07-21 13:06:26 -04:00
jaxperro c18de39b71 research: set-replay harness — sweep wallet-set compositions over the tape
Replays candidate sets through the engine's mirrored mechanics (stake rule
+ DD halving + their-shares ceiling + one-market-one-stake adds + all-or-
nothing cash gate + proportional sell mirror, copytrade.py cited) with the
calibrated sim fill model and tape proxy-resolution. Per-wallet conviction
floors from the paper config's pinned p80s (candidates without pins get
tape-p80, same rule). Outputs per-set×bankroll: realized/open, deployment
stats, miss families (capital/crater/band), capital-miss hypothetical P&L,
per-wallet realized, and --loo leave-one-out marginals at $1k.

Validated against the real paper book on the same window: 33 replay opens
vs 26 real (backfill bias documented — pre-tape positions' adds replay as
opens), capital misses 0 vs 0, peak deploy 62% vs the era's 74%, mean
deployed $297 vs ~$360. SEARCH TOOL ONLY per the silo README — verdicts
stay with forward_ledger.jsonl.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 12:54:35 -04:00