Commit Graph

3217 Commits

Author SHA1 Message Date
copybot[bot] cb438fdf4e copybot: live paper feed [skip ci] 2026-07-22 05:00:53 +00: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
copybot[bot] 83389e71bd copybot: live paper feed [skip ci] 2026-07-22 01:16:36 +00:00
copybot[bot] 9f6b30dcd5 copybot: live paper feed [skip ci] 2026-07-22 01:15:43 +00:00
copybot[bot] 0af9c83f78 copybot: live paper feed [skip ci] 2026-07-22 01:07:07 +00:00
copybot[bot] 61ed166d6b copybot: live paper feed [skip ci] 2026-07-22 01:05:51 +00:00
copybot[bot] 77fdb6b422 copybot: live paper feed [skip ci] 2026-07-22 00:31:23 +00:00
copybot[bot] 44d85b73ad copybot: live paper feed [skip ci] 2026-07-22 00:16:12 +00:00
copybot[bot] ca859acf57 copybot: live paper feed [skip ci] 2026-07-22 00:14:41 +00:00
copybot[bot] 84450f1ea9 copybot: live paper feed [skip ci] 2026-07-21 23:11:23 +00:00
copybot[bot] 3a9fcba4c1 copybot: live paper feed [skip ci] 2026-07-21 23:11:17 +00:00
copybot[bot] a57d8aaec1 copybot: live paper feed [skip ci] 2026-07-21 22:25:38 +00:00
copybot[bot] 9e6fd969e8 copybot: live paper feed [skip ci] 2026-07-21 21:50:30 +00:00
copybot[bot] 77bdddc563 copybot: live paper feed [skip ci] 2026-07-21 21:49:17 +00:00
copybot[bot] b889830c17 copybot: live paper feed [skip ci] 2026-07-21 20:44:44 +00:00
copybot[bot] 354b2a938b copybot: live paper feed [skip ci] 2026-07-21 20:44:09 +00:00
copybot[bot] 103625097b copybot: live paper feed (resynced after conflicted rebase) [skip ci] 2026-07-21 20:37:55 +00:00
copybot[bot] aad2577074 copybot: live paper feed [skip ci] 2026-07-21 20:37:24 +00:00
copybot[bot] 63e6308c50 copybot: live paper feed [skip ci] 2026-07-21 19:50:02 +00:00
copybot[bot] bda2e48e72 copybot: live paper feed [skip ci] 2026-07-21 19:49:33 +00: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
copybot[bot] e8eb0a7dbd copybot: live paper feed [skip ci] 2026-07-21 19:08:11 +00:00
copybot[bot] c0caff58f0 copybot: live paper feed [skip ci] 2026-07-21 19:08:08 +00:00
copybot[bot] e5e212a0bb copybot: live paper feed [skip ci] 2026-07-21 19:05:57 +00:00
jaxperro a7a6706365 research: forward ledger 2026-07-21 [skip ci] 2026-07-21 14:57:03 -04:00
copybot[bot] 8cf5c65594 copybot: live paper feed [skip ci] 2026-07-21 18:55:02 +00: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
copybot[bot] 1877478be7 copybot: live paper feed [skip ci] 2026-07-21 18:33:35 +00:00
copybot[bot] ff3062ca92 copybot: live paper feed [skip ci] 2026-07-21 18:33:07 +00:00
jaxperro a2933bb6ba feed: per-wallet missed totals in wallet_pnl + unified name resolution
wallet_pnl gains miss_n / miss_pnl (every skip ever, state + archive).
Missed display names now resolve via current follow set THEN names stored
on bet records — a retired wallet (LSB1) was splitting into an address-
prefix twin card. Verified: per-wallet miss_pnl sums exactly to the
feed's missed_pnl (+1173.65 across 199 skips).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 14:32:38 -04:00
copybot[bot] d0e4fc4c0b copybot: live paper feed [skip ci] 2026-07-21 18:22:02 +00:00
copybot[bot] df364a1ed9 copybot: live paper feed [skip ci] 2026-07-21 18:20:17 +00:00
copybot[bot] b3bbb05ca9 copybot: live paper feed [skip ci] 2026-07-21 18:19:50 +00:00
jaxperro f4cba587cc feed: lifetime wallet_pnl, last_fill, full-history companion feed
Dashboard cards were summing the rolling 100-bet window client-side —
AIcAIc read -5.62 while lifetime (both its addresses) is -15.84/10. The
feed now publishes:
- wallet_pnl: lifetime per-NAME rollup (state + spooled archives), so
  address changes and window rotation can't skew the cards
- last_fill: stamped in _drain_fills for the bot-health strip
- <feed>_full.json: EVERY bet + EVERY miss ever (state + archives),
  written under the same change-gate, published alongside
Misses now spool to copybot_missed_archive.*.jsonl instead of silent
deletion at the 200 cap (settled rows spool first — open misses must stay
in state for the missed-settle resolver); state was at 199/200, nothing
lost. Archives join the publish set so history survives machine loss.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 14:19:20 -04:00
copybot[bot] 8add61be3b copybot: live paper feed [skip ci] 2026-07-21 17:36:27 +00:00
copybot[bot] 935db9a906 copybot: live paper feed [skip ci] 2026-07-21 17:35:45 +00: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
copybot[bot] b5166630fd copybot: live paper feed [skip ci] 2026-07-21 17:06:05 +00:00
copybot[bot] 9b17928b27 copybot: live paper feed [skip ci] 2026-07-21 17:04:37 +00:00
copybot[bot] 56cefc80f0 copybot: live paper feed [skip ci] 2026-07-21 17:04:37 +00: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
jaxperro 5c8ee5961b stage-0 warehouse: recorder folds its own tape to parquet; Mac mirrors every 15 min
The nightly Mac-coupled bulk ingest was the fragile link (today: Mac slept
through 08:00, the pipeline started 09:31, and the sftp bulk pull wedged in
timeout cascades holding the db lock — digest blocked behind it). Stage 0
moves the fold onto the box and reduces the Mac to an incremental mirror:

- recorder/fold.py (sidecar, capture stays PID 1): closed gz segments ->
  zstd parquet /data/parquet/<fam>/date=*/segment.parquet, row-parity
  verified, manifest-logged, THEN gz deleted. Deletion invariant STRONGER:
  raw needs a verified parquet; parquet needs a Mac ACK before the disk
  guard may prune it. duckdb capped 384MB; VM 256MB -> 1GB.
- recorder/sync_tape.py (com.jaxperro.tape-sync every 15 min + daily.sh):
  manifest-driven incremental sftp pull, per-file row verify, append into
  rtds.duckdb NATIVE tables (views-over-parquet rejected: sim's per-asset
  point queries would crawl), segment-keyed idempotence shared with the
  legacy ingest.py (kept as fallback), ack back to the box.
- recorder/bootstrap_parquet.py: pre-fold history exported to the mirror,
  parity OK (13.84M trades + 3.07M aux). live/parquet/ is now the complete
  durable layer Stage 1 (MotherDuck/ClickHouse) would consume.
- research/tape.py connect(): brief retry — the 15-min sync holds the
  write lock for seconds.

First run: backlog folded in <60s on the box, 36/36 files mirrored+
verified, rtds.duckdb 13.8M -> 18.2M trades, tape age 24h+ -> ~15-45 min.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 12:46:54 -04:00
copybot[bot] 803df06944 copybot: live paper feed [skip ci] 2026-07-21 16:22:46 +00:00
jaxperro 6892aa5b1e live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-21 12:19:03 -04:00
copybot[bot] 6c43d4410e copybot: live paper feed [skip ci] 2026-07-21 15:52:46 +00:00
copybot[bot] 76c7ec96ae copybot: live paper feed [skip ci] 2026-07-21 15:52:22 +00:00