43 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 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 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 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 a184dbc1c1 live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-02 10:03:33 -04:00
jaxperro 0f6d308eec live: daily refresh — skilled + sharp wallets [skip ci] 2026-07-02 07:03:53 -06: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 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 37817d380a live: precompute all sharp-table stats into watch_sharps.json
validate_timing.py now writes name, conv_win, conv_won/lost, conv_pnl,
realized_pnl, last_conv_bet and last_trade per sharp, so the dashboard
reads everything from the feed in ONE request instead of 3 data-api
calls per wallet (no more rate-limit storms). Stats come from the cache
(survivorship-correct): conviction win%/record/P&L over ALL of the
wallet's top-20%-stake bets; realized P&L over the last 500 resolved
bets. Resolved P&L per bet = stake*(1-p)/p if won else -stake.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 15:51:18 -06:00
jaxperro 1cbe1a67b9 conviction = per-wallet top-20% stake (p80), not flat $200
Swap the flat $200 conviction cutoff for a per-wallet percentile (top
20% of each wallet's own stake sizes) everywhere it was used:

- cache.py: canonical CONV_PCTILE=0.80 + conv_cutoff() helper (matches
  the dashboard's pctl: filter >0, sort, linear interp)
- conviction_scan.py: per-wallet quantile_cont(size,0.8) in SQL, was
  `size >= 200`
- validate_timing.py, pnl_focused.py: use cache.conv_cutoff

Rationale + validation: p80 reproduces flat-$200's win-rate lift on the
sharps while adapting to scale (a whale's $200 isn't conviction, a
minnow's is). Re-running the pipeline under p80: scan finds 218 profile
wallets (was 69), forward 62/83 profitable (p~0), +16% pooled ROI — edge
persists out-of-sample. Regenerated conviction_wallets.json /
watch_sharps.json; docs updated. skill.py/strategy.py/insider.py
untouched (score over all bets / size as copyability heuristic only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 14:47:39 -06:00
jaxperro d116b25d52 live: conviction-profile scan + insider-vs-sharp timing validation
conviction_scan.py finds wallets whose high-conviction (>=$200) bets win on
uncertain (~0.4-0.6) markets — real edge, not favorite-riding — trained pre-June
and validated June (25/37 stayed profitable forward, p=0.024). validate_timing.py
applies the entry->resolution lead-time gate that separates copyable sharps from
uncopyable insiders: of 69 matches, 21 were insiders (lead <6h), leaving 23
validated copyable sharps (watch_sharps.json) now shown on jaxperro.com/trading.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 17:22:50 -06:00