Commit Graph

831 Commits

Author SHA1 Message Date
copybot[bot] 6e49f301bb copybot: live paper feed [skip ci] 2026-07-08 16:10:46 +00:00
jaxperro b5508b521b sharps: _open_split folds by the data-api redeemable flag, not price-pinning
Audit of the two biggest All-Time-vs-PM divergences (oliman2, leegunner)
proved the fold-in RIGHT and PM's leaderboard wrong: live per-position
sums reproduce our numbers to the dollar (oliman2 +181,594 closed
-160,644 abandoned = ~+19k true vs leaderboard 112k; leegunner +323,707
-58,762 = ~274k true vs 347k). redeemable is exact (set on resolution
for winners AND losers); pinning misfolded a few unresolved longshots.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 11:59:36 -04:00
copybot[bot] 24c3b9aa1e copybot: live paper feed [skip ci] 2026-07-08 15:35:33 +00:00
jaxperro 542fe700b6 portfolio: align the backtest's booking with the live bot and Polymarket truth
Three fixes from the 2026-07-08 alignment audit (bot feed vs replay,
row-by-row):
1. sold-detection no longer trusts res_t alone — for in-play markets
   res_t is endDate metadata (game-DAY midnight, pre-dates the entry) so
   the timestamp test never fired and every in-play sell booked as
   held-to-resolution. Price is the fallback truth: a redeem prints
   exactly the payout, a real sell prints a mid price (>2c off payout).
2. round trips on resolved-on-chain markets are booked, not dropped —
   when the trusted cache row never qualifies (bogus forward res_t:
   Chidekh 'unresolved until Jul 14' on a Jul-5 match) the bet used to
   vanish; now redeem-closes book at chain truth, sell-closes mirror.
3. Set-D wallets gate on the bot's PINNED floors (copybot.paper.json),
   not a recomputed p80 that drifts a few % and takes different bets.
Also: resolved display slice 60 -> 250 rows.
Cross-check: 9 settled Set-D bot bets -> 7 agree, 0 absent, 2 diffs that
are real execution gaps (bot missed the sharp's exit, rode to
resolution) — each book records what actually happened to IT.
Equity 30d: $29.1k -> $17.4k (+1636%) — the flattering artifacts are gone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 11:35:31 -04:00
jaxperro 861ba01830 cache: invalidate() clears pulled_entries too — stale entries dropped fresh bets from the backtest
The daily freshen reset the bets + exits cursors but never pulled_entries,
so a watchlist wallet's first_buy map went up to 14 days stale and
portfolio.py silently dropped every bet on conds entered since the last
pull (`if not et: continue`) — neither resolved nor open. Kruto2027's
Jul-7 Brewers bets (visible SOLD in the live bot) and two losing bets
were absent from the backtest for exactly this. Entries re-pulled for
Set D + portfolio regenerated: Kruto 43->49 bets, both Brewers rows
booked, hidden losses folded in.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 11:17:51 -04:00
jaxperro d02fb05e9d live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-08 10:55:02 -04:00
copybot[bot] e91bdc4bbd copybot: live paper feed [skip ci] 2026-07-08 14:44:01 +00:00
copybot[bot] 3818df715d copybot: live paper feed [skip ci] 2026-07-08 14:37:47 +00:00
copybot[bot] 0bdfb9fe3a copybot: live paper feed [skip ci] 2026-07-08 13:56:37 +00:00
copybot[bot] 49f671c61e copybot: live paper feed [skip ci] 2026-07-08 13:33:52 +00:00
copybot[bot] e8cca97d3b copybot: live paper feed [skip ci] 2026-07-08 13:31:43 +00:00
copybot[bot] a64aef11d2 copybot: live paper feed [skip ci] 2026-07-08 12:31:59 +00:00
copybot[bot] 5475f4378f copybot: live paper feed [skip ci] 2026-07-08 08:32:46 +00:00
copybot[bot] df662372fb copybot: live paper feed [skip ci] 2026-07-08 08:30:38 +00:00
copybot[bot] 8498d271a1 copybot: live paper feed [skip ci] 2026-07-08 08:26:33 +00:00
copybot[bot] aab27433b9 copybot: live paper feed [skip ci] 2026-07-08 08:24:25 +00:00
copybot[bot] 1e1445f4da copybot: live paper feed [skip ci] 2026-07-08 08:18:16 +00:00
copybot[bot] 66ce08aa81 copybot: live paper feed [skip ci] 2026-07-08 07:10:55 +00:00
copybot[bot] 1e2a6eefdd copybot: live paper feed [skip ci] 2026-07-08 07:06:49 +00:00
copybot[bot] 2f136ff5f3 copybot: live paper feed [skip ci] 2026-07-08 05:17:12 +00:00
copybot[bot] e27b19e4da copybot: live paper feed [skip ci] 2026-07-08 03:31:56 +00:00
copybot[bot] 9f61931fb8 copybot: live paper feed [skip ci] 2026-07-08 03:17:36 +00:00
copybot[bot] ebc58038b2 copybot: live paper feed [skip ci] 2026-07-08 03:11:28 +00:00
copybot[bot] 1a7098089f copybot: live paper feed [skip ci] 2026-07-08 02:50:27 +00:00
copybot[bot] fcfaaea431 copybot: live paper feed [skip ci] 2026-07-08 02:48:24 +00:00
copybot[bot] 425dec958a copybot: live paper feed [skip ci] 2026-07-08 02:36:11 +00:00
copybot[bot] 271da9c4de copybot: live paper feed [skip ci] 2026-07-08 02:19:05 +00:00
jaxperro 041f1c4291 follow set -> Set D: LSB1, imwalkinghere, Kruto2027, 42021, 0xbadaf319, BikesAreTheBikes
Rebuilt the live follow set from the corrected data. Dropped fortuneking
(weak copy P&L), iohihoo (negative 30d form), and Stavenson/0x4bFb-whale/
ArbTrader (no longer qualify as sharps post-truth-scoring). Added 42021,
0xbadaf319, BikesAreTheBikes. All 6 clear the 2-month copy P&L signal + the
30d conviction form + copyable lead, and are moderate-bet (fit a $1k book,
0 missed). 30d backtest: $27,799 (+2680%, 279W/75L) vs the old set's $16k.
backtest.json matched so the dashboard replays the live set.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 22:11:49 -04:00
copybot[bot] 5347b9fc2c copybot: live paper feed [skip ci] 2026-07-08 02:09:47 +00:00
jaxperro ed3880bf71 copybot: follow-set update (deploy_bot.sh) 2026-07-07 22:09:25 -04:00
copybot[bot] 19a4c402d6 copybot: live paper feed [skip ci] 2026-07-08 02:07:49 +00:00
copybot[bot] db39bc1616 copybot: live paper feed [skip ci] 2026-07-08 02:05:42 +00:00
copybot[bot] 25ef0e3ea7 copybot: live paper feed [skip ci] 2026-07-08 02:03:35 +00:00
copybot[bot] f61712a442 copybot: live paper feed [skip ci] 2026-07-08 01:51:15 +00:00
jaxperro 09e511cc2e backtest: fold in-window abandoned losers into the replay (consistency with sharps)
The replay selected trusted conviction bets + sold round-trips + chain
settlement, but abandoned losers (bets held to a decided outcome, never
redeemed — /positions at curPrice 0, not in /closed-positions, not trusted
rows on operator-resolved markets) fell out entirely, reading optimistic.
resolved_unredeemed() now pulls them; window_bets folds in the in-window,
conviction-size ones at their decided outcome (loser pays 0). Same anti-
survivorship correction as the sharps table's _open_split.

Impact on the follow-set 30d backtest is ~0 ($16,255->$16,260): those 8
wallets are clean, AND abandoned-loser survivorship is an all-time
ACCUMULATION (oliman2: 1123 losers lifetime, only 2 in any 30d window), so a
30d period metric structurally can't surface much of it. The fix guarantees
no in-window loss is dropped and keeps the backtest consistent with the
all-time sharps view where survivorship actually lives. Verified the fold-in
fires (oliman2's 2 in-window conviction losers identified).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:44:52 -04:00
jaxperro c647e569c0 feeds: capped-exit sharps + backtest refresh; pinned paper-bot floors
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:23:33 -04:00
jaxperro c6ca8ad82c P&L: fold abandoned losers into realized (anti-survivorship) — All-Time is the truth, not PM
Resolved-but-unredeemed positions (bets that lost, went to $0, never
redeemed) were sitting in Open P&L, breaking the All-Time+Open=PM reconcile
and — worse — hiding real losses. _open_split now routes decided positions
(curPrice pinned 0/1) into the REALIZED total at their outcome, leaving only
genuinely in-flight positions in Open P&L. This is the project's founding
survivorship insight applied to P&L: PM /profit under-counts abandoned
losers unevenly, so where our All-Time reads lower than PM, PM is biased and
ours is honest. oliman2 $181k->$20k (walked from $161k of losers),
JuiceFarm $380k->$32k; clean wallets unchanged (ewww1 $409k, KBO30 ~PM).
Win% now counts abandoned losers too. Verified: Coteykens/imwalkinghere/KBO30
now ~PM; oliman2/JuiceFarm correctly far below their flattering PM.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:19:07 -04:00
copybot[bot] c3e1c36562 copybot: live paper feed [skip ci] 2026-07-08 01:06:28 +00:00
jaxperro b2a4a03d5b feeds: capped-exit sharps + backtest refresh; pinned paper-bot floors
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 20:57:17 -04:00
jaxperro 6fd2e30752 sharps: add Open P&L (unrealized open-book exposure) column
_open_pnl(w) sums cashPnl over the wallet's current positions (full paging).
Surfaces the sells-winners-holds-losers risk that the realized track record
hides: All-Time (realized) + Open P&L reconciles to PM P&L. A wallet with a
strong realized record but a large negative open book flatters live-follow
experience — now visible instead of inferred from the PM gap.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 20:42:55 -04:00
jaxperro 2395024a8f P&L mirrors PM: All-Time/Conv P&L = realized track record (realizedPnl)
The sharps table's P&L was reconstructed from won×entry×size and diverged
from PM /profit by up to 10x, with sign flips — four root causes found by
decomposing outliers against PM:
  1. bets pull capped at 2000 rows/180d -> high-volume wallets truncated
     (ewww1: 740 of 4088 positions cached -> k shown vs k real)
  2. both-sides (hedged) markets: one-per-market dedup dropped the paired
     side (suraxy: -k of dropped losing legs -> overcount)
  3. initialValue=0 on big longshot winners -> mis-sized reconstruction
  4. corrupt near-epoch res_t rows polluting sums

Fix: All-Time/Conv/30d P&L are now the sum of Polymarket's OWN realizedPnl
per closed position over FULL history (cache.closed_exits, extended to store
realized_pnl; smart_money.closed_exits captures it + relaxes the avg/tb
guard). This is the wallet's realized track record — what a copier mirroring
buy/sell/hold banks — and sums to PM. Immune to all four bugs (each asset is
its own realized row; no size/entry/res_t needed). Win% = share of closed
positions that made money. Verified vs PM: ewww1 1.00x, KBO30 0.0x->0.97x,
suraxy 2.7x->1.03x, sign flip fixed; oliman2 1.63x is correct-by-design
(realized track record vs PM's open-book unrealized marks). README gotcha 11
rewritten; dashboard tooltips reframed off the copy-ceiling language.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 20:28:09 -04:00
copybot[bot] c90c501eb3 copybot: live paper feed [skip ci] 2026-07-07 23:44:31 +00:00
jaxperro bb4ec2b905 feeds: capped-exit sharps + backtest refresh; pinned paper-bot floors
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 19:42:44 -04:00
copybot[bot] 873f4efa6c copybot: live paper feed [skip ci] 2026-07-07 22:07:52 +00:00
copybot[bot] 796149b36b copybot: live paper feed [skip ci] 2026-07-07 21:14:38 +00:00
copybot[bot] 0e57b9fd03 copybot: live paper feed [skip ci] 2026-07-07 20:53:50 +00:00
copybot[bot] b5db8f4602 copybot: live paper feed [skip ci] 2026-07-07 20:49:38 +00:00
copybot[bot] c2fdc4a888 copybot: live paper feed [skip ci] 2026-07-07 20:05:58 +00:00
copybot[bot] 3f3986c1bb copybot: live paper feed [skip ci] 2026-07-07 19:49:11 +00:00
copybot[bot] b5fc1c8480 copybot: live paper feed [skip ci] 2026-07-07 18:59:03 +00:00