Commit Graph

2949 Commits

Author SHA1 Message Date
copybot[bot] 877b3505e9 copybot: live paper feed [skip ci] 2026-07-21 01:06:16 +00:00
copybot[bot] 09f562e5ed copybot: live paper feed [skip ci] 2026-07-21 01:06:13 +00:00
gavindiaz ad0e6dd923 docs: add AGENT.md - AI agent collaboration guide for weekly wallet review
Complete guide for human-AI collaboration on weekly Friday bench review:
- Part 1: Full wallet screening chain (3 layers: watch_sharps -> backtest -> live)
  with copy_pnl vs forward realized explanation (oliman2/leegunner lesson)
- Part 2: Weekly Friday review process (5 steps with exact commands)
  - Step 1: Human pulls 6 data sets from server (exact commands)
  - Step 2: AI analyzes 5 dimensions (forward P&L, copy_pnl, conv_win, seasonal, floor)
  - Step 3: AI outputs structured recommendation
  - Step 4: Human makes final decision
  - Step 5: Human executes on server (promote/demote/pin commands)
- Part 3: Log analysis guide (how to discover wallet niches, floor drift,
  CASH!=CHAIN, RTDS issues from logs)
- Part 4: Data checklist (8 items human must provide from cloud)
- Part 5: AI agent work rules (input format, analysis rules, output format)
- Appendix: Current status snapshot (8 live + 7 bench with forward P&L)
2026-07-21 08:59:45 +08:00
gavindiaz 8656e528af feat: add bench review workflow + wallet setup script + sync-upstream fix
- live/setup_wallets.py: configures our 8 follow wallets with Kruto2027
  floor_pin=80 (matching author), plus prints bench status
- 每周Bench-Review流程.md: weekly Friday review process using 5 dimensions
  (forward P&L, copy_pnl, conv_win, seasonal catalyst, floor stability)
  with promote/demote/pin commands
- sync-upstream.sh: recreated with all our custom files including new ones
  (sync_live_floors.py, setup_wallets.py, bench review doc)
- copybot.paper.json: our 8 wallets with Kruto2027 floor_pin=80

bench area (backtest.json) already has 15 wallets from author sync:
  live: 8 (Kruto2027, 0xbadaf319, 1kto1m, Vahan88, LSB1, EdwardIN, lma0o0o0o, Coteykens)
  bench: 7 (gkmgkldfmg, AIcAIc, BikesAreTheBikes, imwalkinghere, leegunner, oliman2, JuiceFarm, 0xb0E43B)
2026-07-21 08:09:44 +08:00
gavindiaz 93d7fe76b6 docs: add 同步作者代码指南.md - upstream sync guide
Complete guide for syncing original author's code while preserving our
customizations. Covers:
- When to sync (monthly or when author publishes major updates)
- What's ours vs author's (table of files + handling)
- Why we discard our patches (author's fixes are better)
- 5-step sync process (sync-upstream.sh -> server update -> bankroll ->
  wallet config -> verify)
- Post-sync checklist (12 items)
- sync-upstream.sh OUR_FILES list (must update when adding new custom files)
- FAQ (7 common post-sync issues)
- File relationship diagram (GitHub -> Gitea -> server)
2026-07-21 07:54:44 +08:00
copybot[bot] f5e136b874 copybot: live paper feed [skip ci] 2026-07-20 23:51:45 +00:00
copybot[bot] 89f0d3fe6e copybot: live paper feed [skip ci] 2026-07-20 23:47:33 +00:00
copybot[bot] 4292ea782a copybot: live paper feed [skip ci] 2026-07-20 23:46:38 +00:00
gavindiaz 935e04e55c feat: auto-sync floors from paper to live config
sync_floors.py only updates copybot.paper.json (paper bot). The live
bot's config.live.json floors were never auto-updated (HANDOFF.md:
'nothing auto-writes it'), so manually-added wallets kept their
floor forever.

New sync_live_floors.py mirrors paper floors into config.live.json:
- Reads floors (and floor_pin overrides) from copybot.paper.json
- Updates matching wallets in config.live.json
- Only writes if something changed

Added to daily.sh right after sync_floors.py, so both configs stay
in sync every day.
2026-07-21 07:45:26 +08:00
copybot[bot] 0e12b7ba96 copybot: live paper feed (resynced after conflicted rebase) [skip ci] 2026-07-20 23:37:07 +00:00
gavindiaz 125470b24a sync: upstream + our customizations (dashboard, healthcheck, docs)
Synced from github/main: aebcfa2d copybot: live paper feed [skip ci]
Our additions: serve_dashboard.py, bot_dashboard.html, mihomo-healthcheck.sh,
中文文档, 我们的钱包配置
2026-07-21 07:35:48 +08:00
copybot[bot] aebcfa2d24 copybot: live paper feed [skip ci] 2026-07-20 23:33:52 +00:00
copybot[bot] b9faf6c3f8 copybot: live paper feed [skip ci] 2026-07-20 23:20:55 +00:00
copybot[bot] f86adc4029 copybot: live paper feed [skip ci] 2026-07-20 23:02:01 +00:00
jaxperro fb631e7ba4 live: 2026-07-20 reconcile — settle empty-cond Odyssey auto-redeem, fold $0.05 rounding (refs #18)
CASH≠CHAIN -$1.75 root-caused: the 07-16 BikesAreTheBikes copy booked with
empty title/outcome/cond, so settle_resolved could never resolve it; the
venue auto-redeemed $1.694914 on-chain (tx 0x4f303e0e…) while the book
held it open. Hand-settled exactly as settle_resolved would (won @ 1.0,
pnl +$0.68, my_pos/conds cleaned, metadata backfilled from the venue
record) and folded the +$0.050314 fill-rounding remainder as an
adjustments entry (non-trading income, zeroes CASH≠CHAIN, cash credited).
Post: cash == chain $49.324270 (3 RPCs agree), raw drift +0.0003 (0.00).
Machine stopped + heartbeats watched to cessation per the HANDOFF ops
procedure; root cause filed as #18.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 19:01:22 -04:00
jaxperro 16d8deb878 docs: tape-era findings + research silo across FINDINGS/HANDOFF/README
FINDINGS: 'The tape era opens' section (sharp screen 742/742 proxy
validation, Study A identity-null, Study B winner's curse, crater refill
clock) + scorecard rows for the two forward-window studies + research/ in
repo layout. HANDOFF: #16/#17 in the open queue, research silo + nightly
launchd in snapshot/ops. README: research/ directory row.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 18:39:19 -04:00
copybot[bot] 0f2368f049 copybot: live paper feed [skip ci] 2026-07-20 22:24:39 +00:00
copybot[bot] c5a08c7024 copybot: live paper feed [skip ci] 2026-07-20 21:45:54 +00:00
jaxperro 377192c4bf copybot: per-niche FAK re-quote waits from measured crater-refill times
The flat 10s retry was calibrated to nothing; the tape now says craters
refill at very different speeds (research requote_timing, 775k crater
prints): crypto 94% within 4s, esports 83% within 10s, sports only 70% at
10s but 76% by 25s, geo/politics tails run minutes (price guard is the
protection there, not the retry). Waits move to FAK_RETRY_NICHE_DEFAULT
{crypto 4, esports 10, sports/geo/politics/other 25}, classified by the
validated research niche patterns (esports before sports so 'LoL: A vs B'
doesn't fall through on ' vs '). cfg fak_retry_niche_s overrides per key;
fak_retry_s stays the fallback (tennis: no measurement yet) and 0 still
disables the feature. Paper-parity: same map both bots. test t8 covers the
map, first-match classing, fallback, and config override.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 17:45:32 -04:00
copybot[bot] 83d1d8397a copybot: live paper feed [skip ci] 2026-07-20 21:40:48 +00:00
copybot[bot] 528a926e7e copybot: live paper feed [skip ci] 2026-07-20 21:39:55 +00:00
copybot[bot] d8ae11624f copybot: live paper feed [skip ci] 2026-07-20 21:35:40 +00:00
jaxperro 2f4f2ccbbe research silo: edge factory — calibrated sim, Study A/B, forward ledger (#2, #16, #17)
research/ is a hard silo (README rules): read-only tape, no bot imports,
own launchd (com.jaxperro.research-nightly 09:15, after daily ingest).

- tape.py: proxy-resolution (the 742/742-validated method), niche + crypto
  strike/expiry/sprint parsers, tick loaders
- sim.py: FAK execution replayer; hold_s=3 fitted on 29 real labeled live
  attempts (79% fill/miss classification), price noise 2-4c, measured
  OPTIMISM BIAS -2c/fill carried into every verdict threshold
- requote.py: crater refill timing per niche (crypto 94% <4s, esports 83%
  <10s, sports needs ~25s, geo/politics minutes) -> params/requote_timing.json
- study_flow.py + robustness: in-play surge momentum. Identity NULL result:
  10 pooled controls +23.85/fill == informed +23.68 -> hypothesis revised at
  freeze, surge-EV primary, identity secondary (#16)
- study_oracle.py: oracle digital fair value. 86% craters, winner's-curse
  inversion at big edges, nothing frozen (no cell at 30 fills) (#17)
- forward.py + nightly.sh: re-scores frozen studies on last 3 tape days,
  appends forward_ledger.jsonl; verdicts ONLY from post-freeze rows

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 17:34:22 -04:00
copybot[bot] 832e768e75 copybot: live paper feed [skip ci] 2026-07-20 21:08:51 +00:00
copybot[bot] 3017a5831d copybot: live paper feed [skip ci] 2026-07-20 21:03:13 +00:00
copybot[bot] a9901f3fa3 copybot: live paper feed [skip ci] 2026-07-20 21:02:21 +00:00
copybot[bot] 61e66b7929 copybot: live paper feed [skip ci] 2026-07-20 20:47:54 +00:00
copybot[bot] 63f8659a99 copybot: live paper feed [skip ci] 2026-07-20 20:47:13 +00:00
copybot[bot] 20a42c8fc1 copybot: live paper feed [skip ci] 2026-07-20 20:41:22 +00:00
copybot[bot] 1ff789da99 copybot: live paper feed [skip ci] 2026-07-20 20:40:48 +00:00
copybot[bot] 545b3910fd copybot: live paper feed [skip ci] 2026-07-20 20:32:09 +00:00
jaxperro 008b3138cc tape research: first sharp screen over the RTDS firehose (#2)
live/tape_sharps.py — insider.py's improbability z transplanted onto the
3-day tape (13.8M fills, ALL wallets, no survivorship bias): proxy-resolve
tokens from terminal-VWAP convergence (0.97/0.03, 2h quiet, sibling veto),
net held positions per wallet-token, z = (W - Σp)/sqrt(Σp(1-p)) over
proxy-resolved held bets, then payouts.py chain-truth overlay on the
shortlist (refunds count as neither). Copyable/algo split: discrete-entry
conviction bettors (<= 6 fills/bet, <= 90 bets, med >= $50) vs continuous
flow accounts that score huge but can't be mirrored at 3-17s lag.

First run (tape through 2026-07-20 16:59): 2,360 wallets screened, 561
score z >= 2 with pnl > 0, 25 copyable candidates at z 4.0-5.5 — chain
validation 742 payout vectors, ZERO proxy flips. Benchmark sanity: benched
sharps (LSB1 +3.28, EdwardIN +2.38) land positive, benched losers negative.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 15:36:01 -04:00
copybot[bot] d35d960254 copybot: live paper feed [skip ci] 2026-07-20 19:25:29 +00:00
copybot[bot] 7e91b56590 copybot: live paper feed [skip ci] 2026-07-20 19:25:16 +00:00
copybot[bot] 35d9b7d96c copybot: live paper feed [skip ci] 2026-07-20 18:53:15 +00:00
copybot[bot] 497de4427f copybot: live paper feed [skip ci] 2026-07-20 18:52:53 +00:00
jaxperro 01687f4a44 copybot: one-shot 10s re-quote retry for FAK no-match OPENs
'no orders found to match with FAK order' is the #1 miss class (13 of the
last 48h's misses) — the copy lands in the crater the sharp just swept,
before makers requote. Instead of recording the miss at the first
rejection, hand the OPEN to Copybot.fak_requote_retry: sleep fak_retry_s
(default 10, 0 disables) OUTSIDE the bot lock, then re-run the whole gated
buy path (fresh quote, price guard, depth gate) exactly once, mirroring
the webhook call site's fill drain so a retry fill books lag + bet rows.
A second rejection records the miss tagged 'twice (re-quote retry)'.
Paper-parity: the hook is installed in both modes, and PaperExecutor's
FAK model re-decides on the fresh book. tests/test_fak_retry.py covers
hook scheduling, no-double-count sizing (their_size=0 re-entry), ADD and
non-FAK bypasses, and the end-to-end retry thread.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 14:52:16 -04:00
copybot[bot] 57b549abb0 copybot: live paper feed [skip ci] 2026-07-20 18:49:14 +00:00
copybot[bot] cb3aba3911 copybot: live paper feed [skip ci] 2026-07-20 18:49:08 +00:00
copybot[bot] 8e741d715c copybot: live paper feed [skip ci] 2026-07-20 18:38:24 +00:00
copybot[bot] b0b48c4168 copybot: live paper feed [skip ci] 2026-07-20 18:38:18 +00:00
jaxperro 6f6bd81cb1 fix tape ingest data loss + daily digest send
ingest: sftp needs stdin=DEVNULL under launchd (no tty) — without it, empty/partial files decoded to 0 lines and the missing integrity guard MARKED+DELETED them (36 segments lost). Guard: a >200B gz that yields 0 lines is a failed fetch, left on box to retry.
digest: retry+backoff moved INTO _post so the digest send (not just the start ping) survives the post-wake DNS gap; ingest ping gets the same.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 13:19:59 -04:00
jaxperro 8987bceb42 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-20 13:19:59 -04:00
copybot[bot] 3d04b9b875 copybot: live paper feed [skip ci] 2026-07-20 16:42:23 +00:00
copybot[bot] a719d9c3ce copybot: live paper feed [skip ci] 2026-07-20 16:38:59 +00:00
copybot[bot] 3ece385df6 copybot: live paper feed [skip ci] 2026-07-20 16:27:18 +00:00
copybot[bot] d0ad184f6d copybot: live paper feed [skip ci] 2026-07-20 16:25:48 +00:00
copybot[bot] 08e2e3fa97 copybot: live paper feed [skip ci] 2026-07-20 16:12:20 +00:00
copybot[bot] 1938f3f392 copybot: live paper feed [skip ci] 2026-07-20 16:10:51 +00:00
copybot[bot] cbcd724a80 copybot: live paper feed [skip ci] 2026-07-20 15:59:15 +00:00