53 Commits

Author SHA1 Message Date
jaxperro dbfc77bfe3 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-27 11:26:40 -04:00
jaxperro 74704cd99d live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-24 13:38:58 -04:00
jaxperro 7f33c66a5c live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-23 10:43:47 -04:00
jaxperro 4015cf0230 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-22 12:48:54 -04:00
jaxperro 6892aa5b1e live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-21 12:19:03 -04:00
jaxperro 8987bceb42 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-20 13:19:59 -04:00
jaxperro dfb562645f live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-19 12:54:10 -04:00
jaxperro 0d608103d3 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-18 10:36:27 -04:00
jaxperro 80ebdb6616 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-17 21:39:05 -04:00
jaxperro adbbb784c3 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-16 15:36:43 -04:00
jaxperro 954a2c8a21 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-15 11:25:19 -04:00
jaxperro 709faa2bca live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-15 00:59:11 -04:00
jaxperro 7334de070f live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-13 10:59:39 -04:00
jaxperro 3c300f48e2 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-12 10:58:08 -04:00
jaxperro 74508304a6 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-11 14:51:50 -04:00
jaxperro a813ab7cb8 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-10 11:29:25 -04:00
jaxperro cece7d7d3c live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-09 12:42:29 -04:00
jaxperro e979e07f59 sharps: publish sold-split records (W/L held-only, S and R split out)
First list on the aligned taxonomy. Notable: 0xb0E43B and
ArbTraderRookie's records reveal refund-harvesting (~800/1150 EXACT-0.5
redeems on ITF totals bought under 50c — $148k of 0xb0E43B's $218k) —
real edge, but 1-2c/share margins that taker copies can't clear.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 16:10:05 -04:00
jaxperro d02fb05e9d live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-08 10:55:02 -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 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 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
jaxperro fb462b7168 exits: fix the 50-row page cap + incremental exits cache in duckdb
/closed-positions serves 50-row pages regardless of limit; stepping by the
requested size truncated every wallet's exit history to its most recent ~50
closes (1% coverage for hyperactive wallets) — sold-mirroring was silently
falling back to the hold-to-res ceiling almost everywhere. Now: page by
returned size, cache exits incrementally in duckdb (immutable events —
deep backfill once, a page or two per refresh; title/outcome columns for
display). Deep-exit 30d replay: $18,270 (+1727%), 259W/79L/29R/284S,
misses 253 -> 1 (mirrored exits recycle capital as fast as the signal does).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:27:30 -04:00
jaxperro c5c5c50b8d feeds: sold-aware sharps refresh (exit-mirrored records)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 03:38:51 -04:00
jaxperro 0de033398a feeds: first truth-scored refresh + refunds counted apart in the replay
The honest 30d backtest: $1k -> $2,538 (+154%), 78W/18L/112R — not the
refund-inflated +8,627%. Sharp list: 33 copy-positive holders under truth
gates; 0x4bFb-whale and ArbTrader no longer qualify (their conviction
records were carried by 50/50 refunds counted as wins). portfolio.py now
reports refunds as R, not L (a scratch is not a loss).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 02:50:46 -04:00
jaxperro a7b782cda8 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-06 14:50:42 -04:00
jaxperro cb4a33279a sharps feed: all-time trusted stats (every bet); bot feed: wallet classes
* validate_timing.display_stats adds all_win/all_won/all_lost/all_pnl —
  the wallet's record and own P&L over EVERY resolved bet ever cached,
  trusted rows only, deduped one-per-market (feeds the dashboard's new
  All-Time columns); consensus temp table now built before the pool
* copybot write_feed adds classes {name: volume|whale} so the dashboard
  can badge whale-class wallets

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 22:43:56 -04:00
jaxperro 306fece6a7 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-05 12:57:42 -04:00
jaxperro 971204d58d live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-04 19:29:22 -04:00
jaxperro 8c07343735 discord: retire per-trade pings, add daily sharp digest; trust: v2 self-certify + invalidated-wallet fallback
* per-trade Discord pings removed everywhere: copybot placement/settle/startup
  alerts silenced (engine.webhook forced off), webhook_receiver.py archived,
  Procfile removed. The ONLY Discord output is now live/discord_daily.py at the
  end of the daily pipeline: one embed listing every watch_sharps wallet with a
  Polymarket profile link + 30D conviction win% / record / P&L.

* trust.py fixes found on the first scheduled run (sharp list collapsed 25->7):
  - Polymarket rewrites endDate after resolution, so freshly re-pulled wallets'
    corrected res_t stopped matching the stale cross-wallet consensus
    (374/454 of iohihoo's rows wrongly distrusted). v2 rows with resolved=TRUE
    are now self-certifying (resolved=TRUE implies endDate-based res_t observed
    post-end) — consensus only gates legacy rows.
  - daily.sh invalidates watchlist wallets by DELETING their pulled row; a
    transiently failed re-pull then dropped the wallet's entire history from
    the trusted set (the 0x73afc816 whale vanished). Legacy rows of wallets
    missing from pulled now fall back to trusting markets resolved >=14d ago.
  Re-run: 85 conviction wallets, 34 copy-positive sharps — whale/iohihoo/
  Stavenson/LSB1/Kruto all recovered.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 18:31:30 -04:00
jaxperro 0b83a5c81e live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-04 10:47:44 -04:00
jaxperro 1d754353c2 selection: trusted-row layer + holder-gate fix — the holder blind spot
Two data bugs were hiding the best copy targets (FINDINGS 'The holder
blind spot'):

* live/trust.py (new): only score rows whose res_t matches the market's
  consensus resolution time across >=2 wallets, pulled after resolution,
  resolved != False. Kills the res_t=ts fallback poison that let scalpers
  masquerade as 99%-win holders (ArbTraderRookie's rows were 100% this).
* conviction_scan.py: trusted rows only; p80 conviction cutoff from the
  train window only (look-ahead leak); new gates z_all>2 (whole-book z,
  ~doubles pooled forward copy-ROI) and median conviction stake >=$50
  (dust filter). 55 wallets selected, forward 30/38 profitable, +21.4%
  pooled (was 284 selected, +16.0%).
* validate_timing.py: the held-edge gates now read the trailing-90d
  trusted conviction record via trust.conviction_record instead of the
  replay's held leg, which is structurally ~all-unresolved for week-lead
  holders (whale 0x73afc816 showed 'held 0-0, 21 unresolved' and was
  rejected at 100% fwd win). 25 copy-positive holders now, including
  Stavenson (51-0), the whale (112-4) and iohihoo (98-10).
* cache.py: query() helper so trust.py shares the single in-process
  connection instead of fighting the single-writer lock.
* README: gotcha 8 (fake res_t/won) + candidate next data sources
  (Goldsky pipelines, PolymarketData order books, Pinnacle CLV,
  Polysights); FINDINGS: dated section correcting the iohihoo/ArbTrader
  scalper-trap verdicts as winner=False-bug artifacts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:08:35 -04:00
jaxperro 6c3c966418 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-03 21:40:57 -04:00
jaxperro 2c59c2994b live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-02 23:12:37 -04:00
jaxperro a184dbc1c1 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-02 10:03:33 -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 f021016092 live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-30 11:57:44 -06:00
jaxperro 41282f2629 live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-29 11:38:12 -06:00
jaxperro ead741584a live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-28 11:46:13 -06:00
jaxperro c119ed8668 live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-27 11:15:38 -06:00
jaxperro ecd629fd5a live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-26 11:21:47 -06:00
jaxperro 9afa759c2d live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-25 10:12:26 -06:00
jaxperro 7f70cbee06 live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-24 10:30:39 -06:00
jaxperro 4b9488be9d live: select sharps by copyability, not lead time (surfaces new holders)
Replace the blunt 24h lead gate with a copy-replay selection run on EVERY
conviction wallet: keep only those that are copy-positive AND have a
genuine hold-to-resolution edge (held_pnl>0, held win-rate>=55% over >=8
resolved held bets), active in 30d, with a light >=1h lead floor vs true
snipers. display_stats now splits copy P&L into scalp vs held legs and
uses fresh-positions resolution (clob fallback) so it's cheap enough to
run on all ~229 wallets.

Effect: drops scalper-traps whose win% looked great but lose copied
(ArbTrader, iohihoo, S888, ttj01) and the old lead gate's discards;
surfaces fast-resolving copy-positive holders it used to throw away
(raid3r, 0x6d1A94f4, 0xec1d07e5, mantaray, earthisgood, shisan...).
14 copy-positive holders now in watch_sharps.json.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 13:31:41 -06:00
jaxperro 66f4229e3d live: add authoritative Copy P&L to the sharp feed
display_stats now computes copy_pnl: what a flat-$50 copier of a wallet's
conviction bets ACTUALLY realizes since Jun 1 — replays their entries,
mirrors their exits, and settles held bets at AUTHORITATIVE clob
resolution (winner by token_id). This is the truth for copyability and
exposes scalpers whose position win% looks great but lose when copied
(ArbTrader 99.5% conv win but -$793 copy; iohihoo 88.7% but -$749).

Position win%/record/P&L stay on the cache (large 180d sample). Added a
clob resolver (_clob_winner) + activity-replay; only Kruto2027 (+1184),
S888, oliman2, fortuneking (+430) etc. are positive to copy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 12:13:42 -06:00
jaxperro 8a07d0d365 live: drop sharps inactive >30d from the feed
validate_timing now filters the sharp list to wallets that have traded in
the last 30 days (last_trade from the /activity pull), so watch_sharps.json
only lists currently-active sharps — not just hidden client-side. Dropped
10 of 41 on this run (-> 31 active). The dashboard keeps its own 30d filter
as a safety net for daily-stale feeds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:18:41 -06:00
jaxperro 8dc00e44b3 live: add 30-day conviction stats to the sharp feed
display_stats now emits conv30_win/won/lost/pnl — conviction (top-20%)
bets resolved in the last 30 days — for a new "30 Day Conv Record" column
on the dashboard alongside the lifetime record.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 10:57:22 -06:00
jaxperro 902fcc525a live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-23 10:33:29 -06:00
jaxperro 3fe29a63aa live: daily refresh — skilled + sharp wallets [skip ci] 2026-06-22 21:56:32 -06:00
jaxperro ee3d3d1e9a live: add avg_bet (mean conviction stake) to the sharp feed
display_stats now emits avg_bet = average stake of the wallet's
conviction (top-20%) bets, for a new dashboard column after the P&L
columns.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 21:19:34 -06:00