Commit Graph

154 Commits

Author SHA1 Message Date
copybot[bot] 2f334dd8a0 copybot: live paper feed [skip ci] 2026-07-03 00:17:14 +00:00
copybot[bot] 9ce27cd4fd copybot: live paper feed [skip ci] 2026-07-03 00:15:08 +00:00
copybot[bot] 96805bd88f copybot: live paper feed [skip ci] 2026-07-02 23:21:39 +00:00
copybot[bot] 3b65228bb6 copybot: live paper feed [skip ci] 2026-07-02 18:22:05 +00:00
jaxperro ecb7a2183a docs: rewrite READMEs around the deployed system (July 2026)
Root README now leads with what actually runs (Mac daily pipeline, Railway
copybot worker, Discord watcher, static dashboard), the July live test, the
realism model (fees/lag/dynamic sizing/missed-bet ledger), a new-developer
quickstart, secrets map, and file map; research story condensed with current
numbers (12 fee-aware sharps, +531% in-sample backfill clearly labeled).
live/README: fee-aware selection, dynamic-sizing portfolio, three dashboard
feeds, copybot now 24/7 on Railway (was "in progress").

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:32:37 -04:00
copybot[bot] 627759f025 copybot: live paper feed [skip ci] 2026-07-02 15:26:55 +00:00
jaxperro e85809e8b1 uncap per-trade sizing: pure 4%-of-equity compounding
max_trade/max_position guards lifted in both paper configs; backtest STAKE_CAP
-> inf. June backfill uncapped: +531%, next stake $252, $195 fees.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:26:08 -04:00
copybot[bot] 5e4f8bb286 copybot: live paper feed [skip ci] 2026-07-02 15:22:12 +00:00
jaxperro e1d264ddfe event cap off: follow every conviction trade (max_per_event 0 everywhere)
Engine default + both bot configs + backtest set to 0 (cap logic stays, opt-in
via risk.max_per_event). June backfill without the cap: +465%, 237 resolved
(202W/35L), 22 missed, $170 fees.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:21:08 -04:00
jaxperro ee4e1750e6 live pipeline test kit: preflight checker, runbook, tiny-cap config template
preflight_live.py verifies key/auth, USDC balance, market access, and redeem
gas read-only (no orders). LIVE_TEST.md is the supervised $5-trade runbook.
config.live.json + copybot_state.live.json gitignored (key never committed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:18:43 -04:00
copybot[bot] 296bf55ea9 copybot: live paper feed [skip ci] 2026-07-02 15:08:36 +00:00
copybot[bot] ac016ac68d copybot: live paper feed [skip ci] 2026-07-02 15:05:22 +00:00
jaxperro b398e5d682 live bot: record + settle missed bets, publish in feed
Engine records every blocked OPEN (no free cash, event cap, price guard) with
its would-be stake; settle_resolved marks them won/lost at CLOB resolution with
hypothetical P&L (fee-inclusive) - the live counterpart of the backtest's
Missed table. Feed gains missed[] + missed_pnl.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:03:32 -04:00
copybot[bot] c4709df425 copybot: live paper feed [skip ci] 2026-07-02 14:56:44 +00:00
copybot[bot] 6992bb5229 copybot: live paper feed [skip ci] 2026-07-02 14:55:51 +00:00
jaxperro 716daeccc1 dynamic sizing: 4% of equity per bet, drawdown brake, per-event correlation cap
- engine (copytrade): stake_usd() = bankroll_pct x current equity (cash + open
  cost basis) - Kelly-style compounding both directions - halved while equity
  sits below 80% of its high-water mark; new risk.max_per_event (default 2)
  blocks stacking correlated markets on one real-world event (dated-slug prefix
  grouping; LSB1 once put 6 conviction bets on a single match).
- copybot: feed/summary report the dynamic stake, stake_pct, event_cap, hwm.
- portfolio backtest mirrors the exact same rule (PCT 4%, clamp $5-$150,
  EVENT_CAP 2, brake 80%/half), with per-bet stakes in every table row and a
  persistent CLOB slug cache for event grouping. June backfill: +426% vs +168%
  flat - compounding amplifies the in-sample month; July live is the test.
  Misses fell 62 -> 19 cash-missed (+26 deliberate event-cap skips): smaller
  early stakes capture more signals.
- configs: bankroll_pct 0.04, max_trade/max_position 150 (runaway guards),
  max_per_event 2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 10:54:07 -04:00
copybot[bot] 76c83a58da copybot: live paper feed [skip ci] 2026-07-02 14:32:32 +00:00
jaxperro fcfd41fbdd copybot: live paper feed [skip ci] 2026-07-02 10:14:02 -04:00
jaxperro a184dbc1c1 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-02 10:03:33 -04:00
jaxperro f18162058d July live test: follow Kruto/shisan/fortuneking/LSB1; fee+lag backtest; 24/7 host runner
- portfolio.py: follow set -> the fee-aware copy-positive sharps (Kruto2027,
  shisan888, fortuneking) + LSB1; entries pay the 0.03 sports taker fee and a
  +0.5%/~90s lag haircut (entry_model); backfilled from June 1; feed exposes
  fee_rate/slip/lag_est_s/fees_paid and unreal uses true cost basis.
- copybot.paper.json: same four wallets, p80 conviction floors from the cache
  (Kruto $123.08, shisan $704.33, fortuneking $970, LSB1 $231). Fresh $1k state
  committed separately by the bot - clean July book.
- host/start.sh + nixpacks: turnkey 24/7 worker for Railway/Fly/VPS - clones
  with GITHUB_TOKEN, resumes the committed state, polls 60s, publishes
  state+feed+fills back through publish_feed. Replaces the Mac poller.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 09:51:35 -04:00
jaxperro 1630d94aba copybot: live paper feed [skip ci] 2026-07-02 09:45:26 -04:00
jaxperro cc44667b7e cache schema v2: token-keyed upsert archive, provenance, raw prices, honest failures
- bets table gains asset (token id = position identity), src/ts (endpoint
  provenance + close time), resolved (False = early-sold in an unended market;
  won is a curPrice mark). Auto-migrates v1 in place (~8s, 3,697 exact dupes
  merged); legacy rows carry NULLs until their wallet refreshes.
- refresh is now an upsert by token instead of a wallet wipe: rows sliding out
  of the rolling pull window survive, so per-wallet history accumulates into a
  permanent archive. Same-asset rows from both endpoints (partially-closed
  positions) dedupe to the larger-stake row - kills the two-endpoint
  double-count class (~35k suspect pairs found in the audit).
- p stored raw (0 = avgPrice missing), clamped on read by get_bets, so missing
  prices stay distinguishable from real 0.1c longshots; insider CLI + oos clamp
  their own direct use.
- resolved_bets(strict=True): a failed page raises instead of returning a
  silently truncated history; get_bets no longer caches or marks failed pulls
  (pre-v2 an API error cached the wallet as empty-and-fresh for 14 days -
  Kruto2027 was a live victim of this last night).

Verified: migration 18,289,320 -> 18,285,623 rows; forced refreshes of two
sharps show 0 same-asset dups, 0 legacy/new mixing, clamped reads, conviction
stats intact (Kruto conv win 73%).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 09:26:41 -04:00
jaxperro 29a4bcca9e harden pipeline against dropped connections; publish fee-aware sharps
- get_json: catch OSError + http.client.HTTPException (RemoteDisconnected/
  IncompleteRead escaped the retry loop and killed last night's validate_timing
  run on a single dropped keep-alive).
- validate_timing: per-wallet retry+exclude guard so one bad wallet can't take
  out the whole selection; regenerated watch_sharps.json — the first fee-aware,
  resolved-only sharp list (10 copy-positive holders of 254).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 09:15:42 -04:00
jaxperro 0f6d308eec live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-02 07:03:53 -06:00
jaxperro 5bfe019f51 copybot: live paper feed [skip ci] 2026-07-01 23:17:18 -06:00
jaxperro 08f87c589e paper-run realism: taker fees, resolved-only scoring, bounded collect, local runner
- copybot: model Polymarket taker fees (V2, since 2026-03-30: shares*rate*p*(1-p),
  sports 0.03) on every paper/live fill; track fees_paid in state + feed; settle
  P&L nets the entry fee. publish_feed now commits state + fills ledger with the
  feed (autostash rebase) so the local poller is the sole state writer.
- validate_timing: copy_pnl/held_pnl are fee-aware -> sharp selection now requires
  clearing real copy costs; conv stats + lead profile use resolved bets only.
- conviction_scan/skill: exclude res_t>now rows (early-sold positions in
  unresolved markets scored at curPrice - a mark, not an outcome; was ~5% of the
  June test window at a 72% pseudo-win rate).
- portfolio: skip unresolved rows (stake used to vanish from equity); missed bets
  of kind=open no longer KeyError - mark-to-market hypothetical P&L.
- collect: cap stale refreshes at STALE_CAP=2500/run (bulk-aged pool turned the
  daily refresh into a ~40h pull holding the DuckDB lock).
- Actions cron disabled: GitHub ran */5 every ~1.5-2.5h and the 10-min stale
  window skipped the rest -> 1 of ~104 qualifying buys copied. launchd --poll 60
  is now the runner; workflow stays as manual backstop.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 23:15:14 -06:00
copybot[bot] 1bd67f0a55 copybot: paper poll [skip ci] 2026-07-02 01:35:35 +00:00
copybot[bot] b958ade686 copybot: paper poll [skip ci] 2026-07-01 23:39:52 +00:00
copybot[bot] 83a277eba7 copybot: paper poll [skip ci] 2026-07-01 22:09:40 +00:00
copybot[bot] d49b3d9843 copybot: paper poll [skip ci] 2026-07-01 20:55:05 +00:00
copybot[bot] 937a24b44b copybot: paper poll [skip ci] 2026-07-01 19:16:35 +00:00
copybot[bot] c93fbe07d3 copybot: paper poll [skip ci] 2026-07-01 17:28:03 +00:00
copybot[bot] 40d99990b3 copybot: paper poll [skip ci] 2026-07-01 15:29:39 +00:00
copybot[bot] 48c7cff76e copybot: paper poll [skip ci] 2026-07-01 12:46:21 +00:00
copybot[bot] 64844a72e5 copybot: paper poll [skip ci] 2026-07-01 10:12:10 +00:00
copybot[bot] 45b1f5538a copybot: paper poll [skip ci] 2026-07-01 06:13:13 +00:00
copybot[bot] 9b660dd6e4 copybot: paper poll [skip ci] 2026-07-01 01:54:20 +00:00
copybot[bot] 58bac72dad copybot: paper poll [skip ci] 2026-06-30 23:39:26 +00:00
copybot[bot] 42afe76b45 copybot: paper poll [skip ci] 2026-06-30 22:20:31 +00:00
copybot[bot] 422e121b55 copybot: paper poll [skip ci] 2026-06-30 21:05:12 +00:00
copybot[bot] 3f5696e262 copybot: paper poll [skip ci] 2026-06-30 19:16:19 +00:00
jaxperro f021016092 live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-30 11:57:44 -06:00
copybot[bot] 3cecd673b1 copybot: paper poll [skip ci] 2026-06-30 17:27:54 +00:00
copybot[bot] 37843f663d copybot: paper poll [skip ci] 2026-06-30 15:42:20 +00:00
copybot[bot] 5f4a0b437c copybot: paper poll [skip ci] 2026-06-30 13:17:02 +00:00
copybot[bot] 4587d9df4b copybot: paper poll [skip ci] 2026-06-30 11:18:17 +00:00
copybot[bot] b806edfb31 copybot: paper poll [skip ci] 2026-06-30 08:07:37 +00:00
copybot[bot] 201aa27dd8 copybot: paper poll [skip ci] 2026-06-30 04:35:50 +00:00
copybot[bot] ef1855289d copybot: paper poll [skip ci] 2026-06-30 00:17:47 +00:00
copybot[bot] 6019c85751 copybot: paper poll [skip ci] 2026-06-29 23:12:31 +00:00