tape research: first sharp screen over the RTDS firehose (#2)

live/tape_sharps.py — insider.py's improbability z transplanted onto the
3-day tape (13.8M fills, ALL wallets, no survivorship bias): proxy-resolve
tokens from terminal-VWAP convergence (0.97/0.03, 2h quiet, sibling veto),
net held positions per wallet-token, z = (W - Σp)/sqrt(Σp(1-p)) over
proxy-resolved held bets, then payouts.py chain-truth overlay on the
shortlist (refunds count as neither). Copyable/algo split: discrete-entry
conviction bettors (<= 6 fills/bet, <= 90 bets, med >= $50) vs continuous
flow accounts that score huge but can't be mirrored at 3-17s lag.

First run (tape through 2026-07-20 16:59): 2,360 wallets screened, 561
score z >= 2 with pnl > 0, 25 copyable candidates at z 4.0-5.5 — chain
validation 742 payout vectors, ZERO proxy flips. Benchmark sanity: benched
sharps (LSB1 +3.28, EdwardIN +2.38) land positive, benched losers negative.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jaxperro
2026-07-20 15:36:00 -04:00
parent d35d960254
commit 008b3138cc
2 changed files with 1149 additions and 0 deletions
+854
View File
@@ -0,0 +1,854 @@
{
"tape_end": 1784566799.0,
"params": {
"min_bets": 8,
"win_t": 0.97,
"lose_t": 0.03,
"quiet_h": 2,
"min_net_sh": 5.0,
"min_net_usd": 20.0,
"p_band": [
0.05,
0.95
]
},
"candidates": [
{
"wallet": "0x37c1ff27d21b08d1cae9f38453b895eae2a78de1",
"n": 64,
"wins": 52,
"exp_wins": 31.17269217903302,
"var_sum": 14.500998511496402,
"pnl": 8582.566326,
"notional": 11141.435454999999,
"avg_p": 0.48707331529739095,
"avg_fills": 1.1875,
"med_bet": 151.335,
"top_niche": "sports",
"niches": 3,
"first_seen": 1784308249.0,
"tape_first": 1784308249.0,
"z": 5.469330678445668,
"win_pct": 81.25,
"n_chain": 64,
"wins_chain": 52,
"pnl_chain": 8582.57,
"flips": 0,
"z_chain": 5.47,
"pm_name": "sslavaga"
},
{
"wallet": "0x9ab303a355bf22a29e485d98fb88d140abb43044",
"n": 67,
"wins": 55,
"exp_wins": 34.72784570812084,
"var_sum": 14.286015857809733,
"pnl": 7967.576649999998,
"notional": 12456.08335,
"avg_p": 0.5183260553450871,
"avg_fills": 4.656716417910448,
"med_bet": 145.97359999999998,
"top_niche": "esports",
"niches": 3,
"first_seen": 1784307620.0,
"tape_first": 1784307620.0,
"z": 5.363451268529734,
"win_pct": 82.08955223880596,
"n_chain": 67,
"wins_chain": 55,
"pnl_chain": 7967.58,
"flips": 0,
"z_chain": 5.36,
"pm_name": "arahbo"
},
{
"wallet": "0x717990979ff84a32d47205a7eede94317aab7d79",
"n": 70,
"wins": 55,
"exp_wins": 33.01667519735171,
"var_sum": 17.13384599158028,
"pnl": 3751.7752760000008,
"notional": 5546.706666000001,
"avg_p": 0.47166678853359584,
"avg_fills": 1.7142857142857142,
"med_bet": 64.294399,
"top_niche": "sports",
"niches": 4,
"first_seen": 1784310711.0,
"tape_first": 1784308163.0,
"z": 5.310873379228681,
"win_pct": 78.57142857142857,
"n_chain": 70,
"wins_chain": 55,
"pnl_chain": 3751.78,
"flips": 0,
"z_chain": 5.31,
"pm_name": "Maryyyyyy"
},
{
"wallet": "0x3d3bbf5d4855ea12fbc610b4c2b49438ace728bd",
"n": 87,
"wins": 64,
"exp_wins": 41.482434545447006,
"var_sum": 19.98003739898597,
"pnl": 2806.989571573092,
"notional": 5424.999914,
"avg_p": 0.47680959247640237,
"avg_fills": 1.0459770114942528,
"med_bet": 62.999998999999995,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784307568.0,
"tape_first": 1784307508.0,
"z": 5.037595419763916,
"win_pct": 73.5632183908046,
"n_chain": 87,
"wins_chain": 64,
"pnl_chain": 2806.99,
"flips": 0,
"z_chain": 5.04,
"pm_name": "0x3d3BBF5d4855EA12fbC610b4c2b49438AcE728bD-1781226826895"
},
{
"wallet": "0x58a84177426c8be517141558baaac252153ba3c7",
"n": 28,
"wins": 28,
"exp_wins": 15.030000032620904,
"var_sum": 6.649099997464278,
"pnl": 1482.0280059999998,
"notional": 1775.955744,
"avg_p": 0.5367857154507466,
"avg_fills": 2.4642857142857144,
"med_bet": 67.2,
"top_niche": "sports",
"niches": 1,
"first_seen": 1784309512.0,
"tape_first": 1784309181.0,
"z": 5.029890640492476,
"win_pct": 100.0,
"n_chain": 28,
"wins_chain": 28,
"pnl_chain": 1482.03,
"flips": 0,
"z_chain": 5.03,
"pm_name": "dadadaji"
},
{
"wallet": "0x80d8dddcfdc075eb70f6d2d774a27bfb255ab703",
"n": 86,
"wins": 68,
"exp_wins": 45.94762000395101,
"var_sum": 19.489362345925976,
"pnl": 4559.373893,
"notional": 11881.654993,
"avg_p": 0.5342746512087326,
"avg_fills": 2.2906976744186047,
"med_bet": 118.5975,
"top_niche": "sports",
"niches": 4,
"first_seen": 1784309051.0,
"tape_first": 1784307800.0,
"z": 4.995243373805773,
"win_pct": 79.06976744186046,
"n_chain": 86,
"wins_chain": 68,
"pnl_chain": 4559.37,
"flips": 0,
"z_chain": 5.0,
"pm_name": "888ball"
},
{
"wallet": "0x00093a689df7fb09a137f9db7102d9e967c85497",
"n": 77,
"wins": 73,
"exp_wins": 54.45329227980554,
"var_sum": 13.963052987935505,
"pnl": 2140.0118469999998,
"notional": 5036.925661,
"avg_p": 0.7071856140234486,
"avg_fills": 4.285714285714286,
"med_bet": 66.19998799999999,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784310610.0,
"tape_first": 1784307375.0,
"z": 4.9633698113142515,
"win_pct": 94.8051948051948,
"n_chain": 77,
"wins_chain": 73,
"pnl_chain": 2140.01,
"flips": 0,
"z_chain": 4.96,
"pm_name": "AlligatorMarket"
},
{
"wallet": "0x81a994924efdbed20c3d360bbea3913b0b6bdf08",
"n": 60,
"wins": 53,
"exp_wins": 35.140117684949715,
"var_sum": 13.244879464928484,
"pnl": 10420.120503459717,
"notional": 18352.741468999993,
"avg_p": 0.5856686280824952,
"avg_fills": 2.7,
"med_bet": 242.35000000000002,
"top_niche": "sports",
"niches": 3,
"first_seen": 1784310333.0,
"tape_first": 1784308147.0,
"z": 4.907435357973403,
"win_pct": 88.33333333333333,
"n_chain": 60,
"wins_chain": 53,
"pnl_chain": 10420.12,
"flips": 0,
"z_chain": 4.91,
"pm_name": "zishuai"
},
{
"wallet": "0x7547479d43f4b52d892a6f2254050eea50edd158",
"n": 35,
"wins": 28,
"exp_wins": 13.945807466614802,
"var_sum": 8.259131917797692,
"pnl": 4783.999645,
"notional": 5594.672115,
"avg_p": 0.3984516419032801,
"avg_fills": 3.657142857142857,
"med_bet": 177.235712,
"top_niche": "sports",
"niches": 1,
"first_seen": 1784311152.0,
"tape_first": 1784307468.0,
"z": 4.890335979366821,
"win_pct": 80.0,
"n_chain": 35,
"wins_chain": 28,
"pnl_chain": 4784.0,
"flips": 0,
"z_chain": 4.89,
"pm_name": "clownly"
},
{
"wallet": "0x77bcf759a5bbbf604a52d839d5f68ead4c78b91b",
"n": 67,
"wins": 49,
"exp_wins": 30.784823496879497,
"var_sum": 13.933889816116611,
"pnl": 9022.304815,
"notional": 23967.503835000003,
"avg_p": 0.45947497756536565,
"avg_fills": 5.611940298507463,
"med_bet": 86.75,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784308487.0,
"tape_first": 1784307950.0,
"z": 4.8797457880260735,
"win_pct": 73.13432835820896,
"n_chain": 67,
"wins_chain": 49,
"pnl_chain": 9022.3,
"flips": 0,
"z_chain": 4.88,
"pm_name": "Poissonic"
},
{
"wallet": "0x2b358a81a9aa4904fad6981ae9ad62e52fe10bfe",
"n": 89,
"wins": 69,
"exp_wins": 47.315285765164894,
"var_sum": 19.90843753485684,
"pnl": 2967.188097,
"notional": 6258.8919080000005,
"avg_p": 0.5316324243276954,
"avg_fills": 2.808988764044944,
"med_bet": 56.00000000000001,
"top_niche": "sports",
"niches": 3,
"first_seen": 1784310946.0,
"tape_first": 1784307425.0,
"z": 4.859987082037101,
"win_pct": 77.52808988764045,
"n_chain": 89,
"wins_chain": 69,
"pnl_chain": 2967.19,
"flips": 0,
"z_chain": 4.86,
"pm_name": "xc50236afv214"
},
{
"wallet": "0x4e73d4ae46d9a9f633938144ad10c19a893dac97",
"n": 47,
"wins": 44,
"exp_wins": 29.816959683221235,
"var_sum": 9.29069411428939,
"pnl": 2420.8945584579506,
"notional": 8141.967897,
"avg_p": 0.6344033975153455,
"avg_fills": 1.4893617021276595,
"med_bet": 99.999999,
"top_niche": "sports",
"niches": 1,
"first_seen": 1784323282.0,
"tape_first": 1784323282.0,
"z": 4.653130755319805,
"win_pct": 93.61702127659575,
"n_chain": 47,
"wins_chain": 44,
"pnl_chain": 2420.89,
"flips": 0,
"z_chain": 4.65,
"pm_name": "mercury777"
},
{
"wallet": "0xd01c6c60e2a4f6b01347b6e55167d1ec08027f9d",
"n": 44,
"wins": 41,
"exp_wins": 26.93165554758803,
"var_sum": 9.507912785821265,
"pnl": 11392.22066,
"notional": 16778.354325,
"avg_p": 0.6120830806270007,
"avg_fills": 2.272727272727273,
"med_bet": 499.675,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784310115.0,
"tape_first": 1784309547.0,
"z": 4.562473956642839,
"win_pct": 93.18181818181819,
"n_chain": 44,
"wins_chain": 41,
"pnl_chain": 11392.22,
"flips": 0,
"z_chain": 4.56,
"pm_name": "jacques-chirac"
},
{
"wallet": "0x1f624696c102b99bea92c75a502fa7e4a6d676f6",
"n": 62,
"wins": 53,
"exp_wins": 37.576729645655035,
"var_sum": 13.077814968060892,
"pnl": 12601.373074,
"notional": 21239.797794,
"avg_p": 0.6060762846073393,
"avg_fills": 2.532258064516129,
"med_bet": 364.562621,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784310116.0,
"tape_first": 1784309547.0,
"z": 4.264900241066189,
"win_pct": 85.48387096774194,
"n_chain": 62,
"wins_chain": 53,
"pnl_chain": 12601.37,
"flips": 0,
"z_chain": 4.26,
"pm_name": "emacron"
},
{
"wallet": "0x42c99f38d2b951b0dc8e8bd5371fa80c9dd19623",
"n": 27,
"wins": 26,
"exp_wins": 16.376890235270196,
"var_sum": 5.146701357135145,
"pnl": 17777.377235,
"notional": 26109.185091,
"avg_p": 0.6065514901951924,
"avg_fills": 2.888888888888889,
"med_bet": 411.683447,
"top_niche": "sports",
"niches": 1,
"first_seen": 1784308269.0,
"tape_first": 1784307488.0,
"z": 4.241807496145923,
"win_pct": 96.29629629629629,
"n_chain": 27,
"wins_chain": 26,
"pnl_chain": 17777.38,
"flips": 0,
"z_chain": 4.24,
"pm_name": "TRCM"
},
{
"wallet": "0xbd938b88d81e6f93e53a0f3046401abd6c3456c0",
"n": 36,
"wins": 33,
"exp_wins": 21.959967735436692,
"var_sum": 7.072668102642087,
"pnl": 3255.7173988630807,
"notional": 9707.40033,
"avg_p": 0.6099991037621303,
"avg_fills": 3.138888888888889,
"med_bet": 62.263999999999996,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784308764.0,
"tape_first": 1784308764.0,
"z": 4.151248229286082,
"win_pct": 91.66666666666667,
"n_chain": 36,
"wins_chain": 33,
"pnl_chain": 3255.72,
"flips": 0,
"z_chain": 4.15,
"pm_name": "lebandito"
},
{
"wallet": "0x98883c610e4400dd998f81cf41658d51ff06e6fe",
"n": 32,
"wins": 29,
"exp_wins": 18.109274021683948,
"var_sum": 6.907474454318839,
"pnl": 2654.5016800000003,
"notional": 3989.219182,
"avg_p": 0.5659148131776234,
"avg_fills": 1.21875,
"med_bet": 123.7199995,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784311200.0,
"tape_first": 1784308092.0,
"z": 4.143784744115456,
"win_pct": 90.625,
"n_chain": 32,
"wins_chain": 29,
"pnl_chain": 2654.5,
"flips": 0,
"z_chain": 4.14,
"pm_name": "pt2-2804"
},
{
"wallet": "0xfb07f48542d2b655e9d0bf1cc92a8a6feee8e2cc",
"n": 74,
"wins": 56,
"exp_wins": 39.02942774495128,
"var_sum": 16.813265542431893,
"pnl": 9803.412714,
"notional": 17820.491369,
"avg_p": 0.5274246992560984,
"avg_fills": 2.7567567567567566,
"med_bet": 123.359063,
"top_niche": "sports",
"niches": 3,
"first_seen": 1784311077.0,
"tape_first": 1784307617.0,
"z": 4.138761982297566,
"win_pct": 75.67567567567568,
"n_chain": 74,
"wins_chain": 56,
"pnl_chain": 9803.41,
"flips": 0,
"z_chain": 4.14,
"pm_name": "0xfB07F48542d2b655e9D0Bf1cC92a8a6Feee8e2cC-1782415802542"
},
{
"wallet": "0xde9f7f4e77a1595623ceb58e469f776257ccd43c",
"n": 46,
"wins": 42,
"exp_wins": 29.292511414040696,
"var_sum": 9.430769698523656,
"pnl": 43582.71595499999,
"notional": 64565.132466,
"avg_p": 0.636793726392189,
"avg_fills": 5.826086956521739,
"med_bet": 466.6074225,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784307776.0,
"tape_first": 1784307776.0,
"z": 4.13795876496337,
"win_pct": 91.30434782608695,
"n_chain": 46,
"wins_chain": 42,
"pnl_chain": 43582.72,
"flips": 0,
"z_chain": 4.14,
"pm_name": "tradecraft"
},
{
"wallet": "0xb3736ecc788dd8859510378610ef146aa672d97c",
"n": 21,
"wins": 21,
"exp_wins": 12.421557549813159,
"var_sum": 4.311387392914019,
"pnl": 3936.239353,
"notional": 8132.284173,
"avg_p": 0.5915027404672932,
"avg_fills": 2.142857142857143,
"med_bet": 162.499999,
"top_niche": "esports",
"niches": 2,
"first_seen": 1784316620.0,
"tape_first": 1784316620.0,
"z": 4.131425429730045,
"win_pct": 100.0,
"n_chain": 21,
"wins_chain": 21,
"pnl_chain": 3936.24,
"flips": 0,
"z_chain": 4.13,
"pm_name": "0xb3736eCC788Dd8859510378610eF146Aa672D97C-1774580778092"
},
{
"wallet": "0x0181beadc6023c6abade42836fedf6cee08a9b5f",
"n": 15,
"wins": 14,
"exp_wins": 6.61734274823683,
"var_sum": 3.3886139794295698,
"pnl": 794.3533356661749,
"notional": 1150.379,
"avg_p": 0.44115618321578864,
"avg_fills": 4.133333333333334,
"med_bet": 64.0,
"top_niche": "esports",
"niches": 2,
"first_seen": 1784312149.0,
"tape_first": 1784312149.0,
"z": 4.010528964393875,
"win_pct": 93.33333333333333,
"n_chain": 15,
"wins_chain": 14,
"pnl_chain": 794.35,
"flips": 0,
"z_chain": 4.01,
"pm_name": "0x0181BeaDc6023C6AbaDE42836FeDf6CEE08A9B5F-1777064059464"
},
{
"wallet": "0x317149007acf6c4ac806df15ad95b2fa41aeb991",
"n": 28,
"wins": 28,
"exp_wins": 18.44348820571308,
"var_sum": 5.702317414512164,
"pnl": 6648.643561999999,
"notional": 18330.002816,
"avg_p": 0.6586960073468957,
"avg_fills": 2.75,
"med_bet": 180.99999849999998,
"top_niche": "sports",
"niches": 1,
"first_seen": 1784311886.0,
"tape_first": 1784311886.0,
"z": 4.001968869209133,
"win_pct": 100.0,
"n_chain": 28,
"wins_chain": 28,
"pnl_chain": 6648.64,
"flips": 0,
"z_chain": 4.0,
"pm_name": "Zeljko"
},
{
"wallet": "0x0fde10ef36646b3fb3eb8df2e18f0e1bc17c0258",
"n": 46,
"wins": 37,
"exp_wins": 23.752161204870898,
"var_sum": 11.085466927204862,
"pnl": 2089.971865,
"notional": 3413.249868,
"avg_p": 0.5163513305406717,
"avg_fills": 1.1956521739130435,
"med_bet": 52.88495,
"top_niche": "sports",
"niches": 3,
"first_seen": 1784336807.0,
"tape_first": 1784315160.0,
"z": 3.9789459479335165,
"win_pct": 80.43478260869566,
"n_chain": 46,
"wins_chain": 37,
"pnl_chain": 2089.97,
"flips": 0,
"z_chain": 3.98,
"pm_name": "pxxp"
},
{
"wallet": "0x8afaebae4eebe80c080b822412647244570e28f0",
"n": 42,
"wins": 35,
"exp_wins": 22.434868625795808,
"var_sum": 10.017744163882767,
"pnl": 2531.85367,
"notional": 4239.8195670000005,
"avg_p": 0.534163538709424,
"avg_fills": 1.119047619047619,
"med_bet": 80.63499949999999,
"top_niche": "sports",
"niches": 3,
"first_seen": 1784336807.0,
"tape_first": 1784320077.0,
"z": 3.969922837156092,
"win_pct": 83.33333333333333,
"n_chain": 42,
"wins_chain": 35,
"pnl_chain": 2531.85,
"flips": 0,
"z_chain": 3.97,
"pm_name": "pcjones"
},
{
"wallet": "0x37b278ab19e1cdc0e392da980dcc59ef802a8681",
"n": 37,
"wins": 29,
"exp_wins": 17.608900475729584,
"var_sum": 8.247310389671217,
"pnl": 2866.5949249627915,
"notional": 5951.356263,
"avg_p": 0.4759162290737725,
"avg_fills": 4.513513513513513,
"med_bet": 102.333333,
"top_niche": "other",
"niches": 2,
"first_seen": 1784368091.0,
"tape_first": 1784307340.0,
"z": 3.9665184296187688,
"win_pct": 78.37837837837837,
"n_chain": 37,
"wins_chain": 29,
"pnl_chain": 2866.59,
"flips": 0,
"z_chain": 3.97,
"pm_name": "taemaxx"
}
],
"benchmark": [
{
"wallet": "0x41558102a796ba971c7567cad41c307e59f8fa41",
"n": 28,
"wins": 28,
"exp_wins": 21.091997469323683,
"var_sum": 4.43798320814813,
"pnl": 9512.187731000002,
"notional": 36553.036842,
"avg_p": 0.7532856239044172,
"avg_fills": 1.0357142857142858,
"med_bet": 495.43515,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784335176.0,
"tape_first": 1784327711.0,
"z": 3.279137748229166,
"win_pct": 100.0
},
{
"wallet": "0x0c3e55cf50a00a7e74fabd8584c6fdde21603c4c",
"n": 32,
"wins": 26,
"exp_wins": 20.147737898820093,
"var_sum": 6.042616380243587,
"pnl": -1870.2261018369272,
"notional": 16132.020751,
"avg_p": 0.6296168093381279,
"avg_fills": 4.375,
"med_bet": 85.39099949999999,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784308764.0,
"tape_first": 1784308764.0,
"z": 2.3807360953321206,
"win_pct": 81.25
},
{
"wallet": "0xab417c0bacc9fe17368d5d662c957f54a1fcc453",
"n": 21,
"wins": 17,
"exp_wins": 12.615410445503775,
"var_sum": 4.238664352793026,
"pnl": 423.54093,
"notional": 1209.8768019999998,
"avg_p": 0.600733830738275,
"avg_fills": 5.619047619047619,
"med_bet": 37.2,
"top_niche": "sports",
"niches": 1,
"first_seen": 1784307870.0,
"tape_first": 1784307344.0,
"z": 2.1296803861979394,
"win_pct": 80.95238095238095
},
{
"wallet": "0x7aa7d7147ba1bf4a1df2f9db183202b6ab0cafb4",
"n": 19,
"wins": 16,
"exp_wins": 12.764197336387769,
"var_sum": 3.6660632921242584,
"pnl": 150.67549394401917,
"notional": 784.4299739999999,
"avg_p": 0.6717998598098825,
"avg_fills": 3.789473684210526,
"med_bet": 29.469996000000002,
"top_niche": "esports",
"niches": 3,
"first_seen": 1784318718.0,
"tape_first": 1784309574.0,
"z": 1.68998188308657,
"win_pct": 84.21052631578948
},
{
"wallet": "0x2d462b29127b919ae4c085e03be44ae7077e3e2d",
"n": 11,
"wins": 9,
"exp_wins": 7.109281743285661,
"var_sum": 2.0256470955566934,
"pnl": 2970.156038774078,
"notional": 9179.671193,
"avg_p": 0.6462983402986965,
"avg_fills": 8.272727272727273,
"med_bet": 122.066306,
"top_niche": "esports",
"niches": 2,
"first_seen": 1784315703.0,
"tape_first": 1784313210.0,
"z": 1.3284491184034926,
"win_pct": 81.81818181818181
},
{
"wallet": "0x0d42cc5ff0526fbb8f0bb9eafa9ebba3f23df124",
"n": 21,
"wins": 13,
"exp_wins": 10.447586146112087,
"var_sum": 3.8149546086044586,
"pnl": 620.894762903966,
"notional": 3658.3686689999995,
"avg_p": 0.49750410219581365,
"avg_fills": 13.0,
"med_bet": 102.68,
"top_niche": "other",
"niches": 3,
"first_seen": 1784311873.0,
"tape_first": 1784307874.0,
"z": 1.306791815246233,
"win_pct": 61.904761904761905
},
{
"wallet": "0x1b44945f8992fcea2b43034557e47d11827fd8de",
"n": 13,
"wins": 9,
"exp_wins": 7.157808621579969,
"var_sum": 2.5914675442187076,
"pnl": 368.3684423014988,
"notional": 4660.93776,
"avg_p": 0.5506006631984591,
"avg_fills": 10.461538461538462,
"med_bet": 142.414628,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784340198.0,
"tape_first": 1784333799.0,
"z": 1.1443578639737597,
"win_pct": 69.23076923076923
},
{
"wallet": "0x1aeebd7b0eb92037a630004f8eabc0759c36c139",
"n": 9,
"wins": 4,
"exp_wins": 3.7797900743107276,
"var_sum": 1.0971857367134408,
"pnl": 2182.6782089400936,
"notional": 10206.928695,
"avg_p": 0.4199766749234142,
"avg_fills": 11.777777777777779,
"med_bet": 400.71,
"top_niche": "sports",
"niches": 2,
"first_seen": 1784320139.0,
"tape_first": 1784319067.0,
"z": 0.21023102791071324,
"win_pct": 44.44444444444444
},
{
"wallet": "0xdebbe89ceb32828a99648bca497684f5209ceedb",
"n": 30,
"wins": 19,
"exp_wins": 18.679287812807225,
"var_sum": 4.208149270955376,
"pnl": -1732.4607049999972,
"notional": 64498.526175,
"avg_p": 0.6226429270935742,
"avg_fills": 7.133333333333334,
"med_bet": 715.645865,
"top_niche": "other",
"niches": 2,
"first_seen": 1784307961.0,
"tape_first": 1784307961.0,
"z": 0.15633992355948853,
"win_pct": 63.333333333333336
},
{
"wallet": "0x69b9bd4fa27813091fcfe726541f2fd7baa3a5d5",
"n": 14,
"wins": 8,
"exp_wins": 8.42316155589116,
"var_sum": 2.8974152337658543,
"pnl": -1081.6088567942065,
"notional": 3317.569689,
"avg_p": 0.6016543968493685,
"avg_fills": 1.7857142857142858,
"med_bet": 199.9999985,
"top_niche": "esports",
"niches": 3,
"first_seen": 1784308621.0,
"tape_first": 1784308621.0,
"z": -0.2485998347929401,
"win_pct": 57.142857142857146
},
{
"wallet": "0xc684828f6b03487759ced2ebdd975f91f3532228",
"n": 17,
"wins": 9,
"exp_wins": 9.99016755243394,
"var_sum": 2.956545338585819,
"pnl": -1909.4314810698643,
"notional": 19454.826313999998,
"avg_p": 0.5876569148490552,
"avg_fills": 9.764705882352942,
"med_bet": 614.3456199999999,
"top_niche": "other",
"niches": 2,
"first_seen": 1784387047.0,
"tape_first": 1784311232.0,
"z": -0.5758593449029813,
"win_pct": 52.94117647058823
},
{
"wallet": "0x82d2e4dbb0a849ff8e2f5380719769145648beea",
"n": 8,
"wins": 3,
"exp_wins": 4.210769706246229,
"var_sum": 1.9692381195290396,
"pnl": 2285.6253119999997,
"notional": 13711.706415,
"avg_p": 0.5263462132807786,
"avg_fills": 5.0,
"med_bet": 939.4969729999999,
"top_niche": "esports",
"niches": 2,
"first_seen": 1784329658.0,
"tape_first": 1784308119.0,
"z": -0.862804555083645,
"win_pct": 37.5
},
{
"wallet": "0x40ce68f1564f3c751b12d88a393d8cc0651dbf90",
"n": 16,
"wins": 5,
"exp_wins": 6.660000000288585,
"var_sum": 3.6314000001020643,
"pnl": -2671.6812069999996,
"notional": 9199.237341,
"avg_p": 0.4162500000180366,
"avg_fills": 1.6875,
"med_bet": 556.75,
"top_niche": "esports",
"niches": 2,
"first_seen": 1784369512.0,
"tape_first": 1784369512.0,
"z": -0.8711060770398212,
"win_pct": 31.25
}
],
"screened": 2360
}
+295
View File
@@ -0,0 +1,295 @@
#!/usr/bin/env python3
"""Tape-era sharp screen over the RTDS firehose (issue #2, first flow study).
The tape (rtds.duckdb `trades`, every CLOB fill since 2026-07-17) sees ALL
fills — including wallets that lose and vanish — so unlike the data-api
leaderboards there is NO survivorship bias to unwind ([[polymarket-smart-money]]:
displayed win rates ~92% collapse to ~50% once hidden losers count). The
screen is insider.py's improbability methodology transplanted onto tape:
1. RESOLVE FROM THE TAPE. A token is proxy-resolved when its final-30min
VWAP converged (>= 0.97 won / <= 0.03 lost) AND it stopped trading
QUIET_H before tape end AND no sibling token of the same condition
disagrees (two "winners" in one cond = still-live or bad data -> drop).
Chain truth (payouts.py) then overlays the shortlist's conditions, so
50/50 refunds and operator quirks can't survive to the report
([[polymarket-resolution-truth]]).
2. HELD NET POSITIONS, not trades. Per wallet-token: net = buys - sells;
only |net| that survives to the token's last tape print is a bet (a
scalper who round-trips out is not "holding" the resolution). Entry is
the buy VWAP; P&L = net * (payout - vwap).
3. IMPROBABILITY z. Over a wallet's proxy-resolved held bets: each entry
at price p wins with prob p under the null; z = (W - Σp)/sqrt(Σp(1-p)).
The tape's 3-day window means n is small — z >= 2 with n >= MIN_BETS
and positive P&L is a CANDIDATE, not a verdict; the bench forward
window is the verdict (bench review, issue #13).
4. CONTEXT COLUMNS for triage: niche mix (title keywords), notional,
price band, burst flag (wallet's first tape print < 48h before its
biggest bet — fresh-or-returning wallet swinging immediately, the
insider fingerprint), and the follow/bench overlap (excluded from
candidates, printed as benchmark rows so the screen can be sanity
checked against wallets we already believe in).
Outputs live/tape_sharps.json (full scored rows) and a console report.
python3 tape_sharps.py # screen + chain-validate top 25
python3 tape_sharps.py --no-chain # tape-only (no RPC)
python3 tape_sharps.py --min-bets 6 # loosen for exploration
"""
import argparse
import json
import math
import os
import time
import duckdb
HERE = os.path.dirname(os.path.abspath(__file__))
DB = os.path.join(HERE, "rtds.duckdb")
OUT = os.path.join(HERE, "tape_sharps.json")
# proxy-resolution + bet thresholds (tunable; defaults are the 2026-07-20
# first-run calibration — see FINDINGS addendum in the issue)
WIN_T, LOSE_T = 0.97, 0.03 # final-30min VWAP convergence
QUIET_H = 2 # token must be quiet this long before tape end
MIN_NET_SH = 5.0 # net shares that count as a held bet
MIN_NET_USD = 20.0 # ...and its buy notional (dust bots out)
P_LO, P_HI = 0.05, 0.95 # entry band for the z math (insider.py clamps)
BURST_H = 48 # "fresh in tape" window for the burst flag
NICHES = [ # (label, TITLE ILIKE patterns) — first match wins
("esports", ["%lol:%", "%dota%", "%cs2%", "%csgo%", "%valorant%", "%esports%",
"% vs %game %", "%bilibili%", "%map %winner%"]),
("tennis", ["%tennis%", "%atp%", "%wta%", "%wimbledon%", "%open (m)%", "%set %winner%"]),
("sports", ["% vs. %", "% vs %", "% @ %", "%mlb%", "%nba%", "%nhl%", "%ufc%",
"%world cup%", "%f1%", "%grand prix%"]),
("crypto", ["%bitcoin%", "%btc%", "%ethereum%", "%eth %", "%solana%", "%xrp%",
"%price of%", "%above%on july%", "%above%on august%"]),
("politics", ["%election%", "%president%", "%senate%", "%governor%", "%mayor%",
"%nominee%", "%impeach%", "%tariff%", "%fed %", "%rate cut%"]),
("geo", ["%iran%", "%israel%", "%russia%", "%ukraine%", "%china%", "%taiwan%",
"%ceasefire%", "%strike%", "%nato%"]),
]
def known_wallets():
"""follow set + benches + the live bot itself -> {addr_lower: label}."""
out = {"0x455e252e45ee46d6c4cc1c8fadd3899d68f245a1": "OUR-BOT"}
try:
for w in json.load(open(os.path.join(HERE, "copybot.paper.json")))["wallets"]:
out[w["wallet"].lower()] = f"follow:{w.get('name', w['wallet'][:8])}"
except Exception:
pass
for fn, tag in (("watch_sharps.json", "bench"), ("watch_skilled.json", "skilled")):
try:
for w in json.load(open(os.path.join(HERE, fn))):
out.setdefault(w["wallet"].lower(), f"{tag}:{w.get('name', '?')}")
except Exception:
pass
return out
def niche_case():
whens = []
for label, pats in NICHES:
ors = " OR ".join(f"lower(title) LIKE '{p}'" for p in pats)
whens.append(f"WHEN ({ors}) THEN '{label}'")
return "CASE " + " ".join(whens) + " ELSE 'other' END"
def screen(db, min_bets):
"""One SQL pass: proxy-resolve tokens, net held positions, wallet rollup."""
t_end = db.execute("SELECT max(ts) FROM trades").fetchone()[0]
quiet = t_end - QUIET_H * 3600
db.execute(f"""
CREATE TEMP TABLE alltok AS
WITH last AS (
SELECT asset, any_value(cond) cond, max(ts) last_ts
FROM trades WHERE cond IS NOT NULL AND cond != '' GROUP BY asset
), term AS ( -- final-30min VWAP per token
SELECT t.asset,
sum(t.price * t.size) / nullif(sum(t.size), 0) term_vwap
FROM trades t JOIN last l ON t.asset = l.asset
WHERE t.ts >= l.last_ts - 1800 GROUP BY t.asset
)
SELECT l.asset, l.cond, l.last_ts, tm.term_vwap,
l.last_ts > {quiet} AS alive,
CASE WHEN tm.term_vwap >= {WIN_T} THEN 1.0
WHEN tm.term_vwap <= {LOSE_T} THEN 0.0 END AS payout
FROM last l JOIN term tm ON l.asset = tm.asset
""")
# cond veto: any sibling still trading (in-play comebacks exist), or two
# proxy-winners (multi-outcome not actually settled) -> drop the cond
db.execute("""
CREATE TEMP TABLE badcond AS
SELECT cond FROM alltok GROUP BY cond
HAVING bool_or(alive)
OR sum(CASE WHEN payout = 1.0 THEN 1 ELSE 0 END) > 1
""")
db.execute("""
CREATE TEMP TABLE tok AS
SELECT * FROM alltok WHERE NOT alive AND payout IS NOT NULL
""")
db.execute(f"""
CREATE TEMP TABLE bets AS
SELECT tr.wallet, tr.asset, any_value(tk.cond) cond,
any_value(tk.payout) payout,
any_value(tk.term_vwap) term_vwap,
sum(CASE WHEN tr.side = 'BUY' THEN tr.size ELSE -tr.size END) net,
sum(CASE WHEN tr.side = 'BUY' THEN tr.size * tr.price END)
/ nullif(sum(CASE WHEN tr.side = 'BUY' THEN tr.size END), 0) vwap,
sum(CASE WHEN tr.side = 'BUY' THEN tr.size * tr.price END) buy_usd,
count(*) n_fills,
any_value({niche_case()}) niche,
min(tr.ts) first_ts
FROM trades tr
JOIN tok tk ON tr.asset = tk.asset
WHERE tk.payout IS NOT NULL
AND tk.cond NOT IN (SELECT cond FROM badcond)
AND tr.ts <= tk.last_ts -- nothing after the last print
GROUP BY tr.wallet, tr.asset
HAVING net >= {MIN_NET_SH}
AND buy_usd >= {MIN_NET_USD}
AND vwap BETWEEN {P_LO} AND {P_HI}
""")
rows = db.execute(f"""
WITH w AS (
SELECT wallet,
count(*) n,
sum(CASE WHEN payout = 1.0 THEN 1 ELSE 0 END) wins,
sum(vwap) exp_wins,
sum(vwap * (1 - vwap)) var_sum,
sum(net * (payout - vwap)) pnl,
sum(buy_usd) notional,
avg(vwap) avg_p,
avg(n_fills) avg_fills,
median(buy_usd) med_bet,
mode(niche) top_niche,
count(DISTINCT niche) niches,
min(first_ts) first_seen
FROM bets GROUP BY wallet HAVING n >= {min_bets}
),
life AS (SELECT wallet, min(ts) tape_first FROM trades GROUP BY wallet)
SELECT w.*, life.tape_first FROM w JOIN life USING (wallet)
""").fetchall()
cols = ["wallet", "n", "wins", "exp_wins", "var_sum", "pnl", "notional",
"avg_p", "avg_fills", "med_bet", "top_niche", "niches",
"first_seen", "tape_first"]
out = []
for r in rows:
d = dict(zip(cols, r))
d["z"] = ((d["wins"] - d["exp_wins"]) / math.sqrt(d["var_sum"])
if d["var_sum"] > 0 else 0.0)
d["win_pct"] = 100.0 * d["wins"] / d["n"]
out.append(d)
return out, t_end
def chain_validate(cands, db):
"""Overlay payouts.truth on each candidate bet; rescore. Refund (0.5)
counts as neither win nor loss; unknown keeps the tape proxy."""
import payouts
conds = sorted({c for w in cands for c in w["_conds"]})
payouts.ensure(conds)
for w in cands:
n = wins = exp = var = pnl = 0.0
flip = 0
for (cond, asset, net, vwap, proxy) in w["_bets"]:
t = payouts.truth(cond, asset)
pay = proxy if t is None else t
if pay == 0.5: # refund: stake back, no win/no loss
pnl += 0.0
continue
if t is not None and t != proxy:
flip += 1
n += 1
wins += pay
exp += vwap
var += vwap * (1 - vwap)
pnl += net * (pay - vwap)
w.update(n_chain=int(n), wins_chain=int(wins), pnl_chain=round(pnl, 2),
flips=flip,
z_chain=round((wins - exp) / math.sqrt(var), 2) if var > 0 else 0.0)
return cands
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--min-bets", type=int, default=8)
ap.add_argument("--top", type=int, default=25, help="chain-validate this many")
ap.add_argument("--no-chain", action="store_true")
ap.add_argument("--max-bets", type=int, default=90, help="copyable cadence cap")
ap.add_argument("--max-fills", type=float, default=6.0, help="avg fills/bet cap")
ap.add_argument("--min-med-usd", type=float, default=50.0, help="median bet floor")
args = ap.parse_args()
db = duckdb.connect(DB, read_only=True)
known = known_wallets()
scored, t_end = screen(db, args.min_bets)
scored.sort(key=lambda d: -d["z"])
# COPYABLE means the bot could actually mirror it at 3-17s lag: discrete
# entries (few fills per bet, not continuous flow), human cadence (<=
# max-bets held bets in the 3-day tape), conviction-sized (median bet
# clears the $25 follow floor with margin). Everything else that scores
# is ALGO FLOW — real edge, uncopyable execution (they ARE the crater).
def copyable(d):
return (d["avg_fills"] <= args.max_fills and d["n"] <= args.max_bets
and d["med_bet"] >= args.min_med_usd)
fresh = [d for d in scored if d["z"] >= 2.0 and d["pnl"] > 0
and d["wallet"].lower() not in known]
interesting = [d for d in fresh if copyable(d)][:args.top]
algos = [d for d in fresh if not copyable(d)][:8]
for d in interesting:
rows = db.execute("""
SELECT cond, asset, net, vwap, payout FROM bets WHERE wallet = ?
""", [d["wallet"]]).fetchall()
d["_conds"] = [r[0] for r in rows]
d["_bets"] = rows
if interesting and not args.no_chain:
chain_validate(interesting, db)
for d in interesting:
d.pop("_conds", None); d.pop("_bets", None)
bench = [d for d in scored if d["wallet"].lower() in known]
stamp = time.strftime("%Y-%m-%d %H:%M UTC", time.gmtime(t_end))
def fmt(d):
age_h = (t_end - d["tape_first"]) / 3600
burst = "BURST" if age_h <= BURST_H else f"{age_h:.0f}h"
chain = (f" · chain z={d['z_chain']} {d['wins_chain']}/{d['n_chain']} "
f"${d['pnl_chain']:+,.0f} ({d['flips']} flips)"
if "z_chain" in d else "")
return (f"{d['wallet'][:10]}… z={d['z']:+.2f} {d['wins']}/{d['n']} "
f"({d['win_pct']:.0f}%) avg_p {d['avg_p']:.2f} "
f"med ${d['med_bet']:,.0f} f/b {d['avg_fills']:.1f} "
f"pnl ${d['pnl']:+,.0f} vol ${d['notional']:,.0f} "
f"{d['top_niche']}({d['niches']}) {burst}{chain}")
print(f"tape through {stamp} · {len(scored)} wallets with >= "
f"{args.min_bets} proxy-resolved held bets\n")
print(f"— COPYABLE candidates (z >= 2, pnl > 0, <= {args.max_bets} bets, "
f"<= {args.max_fills:.0f} fills/bet, med >= ${args.min_med_usd:.0f}) —")
for d in interesting:
print(fmt(d))
print(f"\n— algo flow (scores, but uncopyable execution; {len(algos)} of "
f"{len(fresh) - len(interesting)}) —")
for d in algos:
print(fmt(d))
print("\n— benchmark: known wallets through the same screen —")
for d in sorted(bench, key=lambda x: -x["z"])[:15]:
print(f"[{known[d['wallet'].lower()]}] {fmt(d)}")
json.dump({"tape_end": t_end, "params": {
"min_bets": args.min_bets, "win_t": WIN_T, "lose_t": LOSE_T,
"quiet_h": QUIET_H, "min_net_sh": MIN_NET_SH,
"min_net_usd": MIN_NET_USD, "p_band": [P_LO, P_HI]},
"candidates": interesting, "benchmark": bench,
"screened": len(scored)},
open(OUT, "w"), indent=1, default=float)
print(f"\nwrote {OUT}")
if __name__ == "__main__":
main()