Commit Graph

133 Commits

Author SHA1 Message Date
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
copybot[bot] 6c66a36546 copybot: paper poll [skip ci] 2026-06-29 22:07:39 +00:00
copybot[bot] fd80bcbf00 copybot: paper poll [skip ci] 2026-06-29 20:59:51 +00:00
copybot[bot] fd992335c4 copybot: paper poll [skip ci] 2026-06-29 19:22:10 +00:00
jaxperro 41282f2629 live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-29 11:38:12 -06:00
copybot[bot] 90db0c8273 copybot: paper poll [skip ci] 2026-06-29 17:31:48 +00:00
copybot[bot] b9bae6361a copybot: paper poll [skip ci] 2026-06-29 14:58:09 +00:00
copybot[bot] fb6941da07 copybot: paper poll [skip ci] 2026-06-29 11:29:20 +00:00
copybot[bot] b916563ecf copybot: paper poll [skip ci] 2026-06-29 06:26:46 +00:00
copybot[bot] 26911c8493 copybot: paper poll [skip ci] 2026-06-29 01:55:59 +00:00
copybot[bot] daaecafdac copybot: paper poll [skip ci] 2026-06-28 23:47:21 +00:00
copybot[bot] f802d1eed0 copybot: paper poll [skip ci] 2026-06-28 22:44:52 +00:00
copybot[bot] 8fafd78254 copybot: paper poll [skip ci] 2026-06-28 21:47:48 +00:00
copybot[bot] 0cf56a8167 copybot: paper poll [skip ci] 2026-06-28 20:52:05 +00:00
copybot[bot] a1aaf026f5 copybot: paper poll [skip ci] 2026-06-28 19:56:37 +00:00
copybot[bot] 6de4ff9d80 copybot: paper poll [skip ci] 2026-06-28 18:38:08 +00:00
jaxperro ead741584a live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-28 11:46:13 -06:00
copybot[bot] 72d765dff5 copybot: paper poll [skip ci] 2026-06-28 17:22:39 +00:00
copybot[bot] 0f13af4747 copybot: paper poll [skip ci] 2026-06-28 16:05:22 +00:00
copybot[bot] c300e5923a copybot: paper poll [skip ci] 2026-06-28 14:57:51 +00:00
copybot[bot] 6c3abfa5d7 copybot: paper poll [skip ci] 2026-06-28 13:17:20 +00:00
copybot[bot] 2db533c9a2 copybot: paper poll [skip ci] 2026-06-28 11:56:42 +00:00