mirror of
https://github.com/jaxperro/winning-wallet-finder.git
synced 2026-07-27 15:57:47 +00:00
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>
This commit is contained in:
@@ -14,6 +14,7 @@ it doesn't matter: either way the window is too tight to mirror.
|
||||
import json
|
||||
import os
|
||||
import statistics as st
|
||||
import time
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
import cache
|
||||
@@ -46,10 +47,16 @@ def display_stats(w):
|
||||
conv = [b for b in bets if b["size"] >= thr] # ALL conviction bets
|
||||
won = sum(1 for b in conv if b["won"])
|
||||
recent = sorted(bets, key=lambda b: b["res_t"] or 0, reverse=True)[:500] # last 500 resolved
|
||||
cut30 = time.time() - 30 * 86400
|
||||
conv30 = [b for b in conv if (b["res_t"] or 0) >= cut30] # conviction bets resolved in last 30d
|
||||
won30 = sum(1 for b in conv30 if b["won"])
|
||||
out = {
|
||||
"conv_win": round(100 * won / len(conv), 1) if conv else None,
|
||||
"conv_won": won, "conv_lost": len(conv) - won,
|
||||
"conv_pnl": round(sum(_bet_pnl(b) for b in conv)),
|
||||
"conv30_win": round(100 * won30 / len(conv30), 1) if conv30 else None,
|
||||
"conv30_won": won30, "conv30_lost": len(conv30) - won30,
|
||||
"conv30_pnl": round(sum(_bet_pnl(b) for b in conv30)),
|
||||
"realized_pnl": round(sum(_bet_pnl(b) for b in recent)),
|
||||
"avg_bet": round(sum(b["size"] for b in conv) / len(conv)) if conv else 0, # avg conviction stake
|
||||
"name": None, "last_trade": 0, "last_conv_bet": 0,
|
||||
|
||||
+168
-4
@@ -16,6 +16,10 @@
|
||||
"conv_won": 91,
|
||||
"conv_lost": 24,
|
||||
"conv_pnl": 1422,
|
||||
"conv30_win": 66.7,
|
||||
"conv30_won": 4,
|
||||
"conv30_lost": 2,
|
||||
"conv30_pnl": 460,
|
||||
"realized_pnl": 1091,
|
||||
"avg_bet": 37,
|
||||
"last_trade": 1782086444,
|
||||
@@ -38,6 +42,10 @@
|
||||
"conv_won": 398,
|
||||
"conv_lost": 2,
|
||||
"conv_pnl": 410412,
|
||||
"conv30_win": 100.0,
|
||||
"conv30_won": 138,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 163104,
|
||||
"realized_pnl": 234921,
|
||||
"avg_bet": 1044,
|
||||
"last_trade": 1782231248,
|
||||
@@ -60,6 +68,10 @@
|
||||
"conv_won": 38,
|
||||
"conv_lost": 1,
|
||||
"conv_pnl": 452,
|
||||
"conv30_win": 100.0,
|
||||
"conv30_won": 8,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 109,
|
||||
"realized_pnl": 754,
|
||||
"avg_bet": 17,
|
||||
"last_trade": 1782074558,
|
||||
@@ -82,6 +94,10 @@
|
||||
"conv_won": 196,
|
||||
"conv_lost": 25,
|
||||
"conv_pnl": 14270,
|
||||
"conv30_win": 88.0,
|
||||
"conv30_won": 66,
|
||||
"conv30_lost": 9,
|
||||
"conv30_pnl": 5061,
|
||||
"realized_pnl": 11965,
|
||||
"avg_bet": 116,
|
||||
"last_trade": 1782219238,
|
||||
@@ -104,6 +120,10 @@
|
||||
"conv_won": 208,
|
||||
"conv_lost": 78,
|
||||
"conv_pnl": 109204,
|
||||
"conv30_win": 75.5,
|
||||
"conv30_won": 37,
|
||||
"conv30_lost": 12,
|
||||
"conv30_pnl": 28179,
|
||||
"realized_pnl": 41615,
|
||||
"avg_bet": 772,
|
||||
"last_trade": 1782200713,
|
||||
@@ -126,6 +146,10 @@
|
||||
"conv_won": 21,
|
||||
"conv_lost": 7,
|
||||
"conv_pnl": 28463,
|
||||
"conv30_win": 71.4,
|
||||
"conv30_won": 5,
|
||||
"conv30_lost": 2,
|
||||
"conv30_pnl": 381,
|
||||
"realized_pnl": 28463,
|
||||
"avg_bet": 143,
|
||||
"last_trade": 1781425081,
|
||||
@@ -148,6 +172,10 @@
|
||||
"conv_won": 104,
|
||||
"conv_lost": 42,
|
||||
"conv_pnl": 49192,
|
||||
"conv30_win": 86.7,
|
||||
"conv30_won": 13,
|
||||
"conv30_lost": 2,
|
||||
"conv30_pnl": 10357,
|
||||
"realized_pnl": 39533,
|
||||
"avg_bet": 1485,
|
||||
"last_trade": 1782206200,
|
||||
@@ -170,9 +198,13 @@
|
||||
"conv_won": 454,
|
||||
"conv_lost": 110,
|
||||
"conv_pnl": 8422,
|
||||
"conv30_win": 82.7,
|
||||
"conv30_won": 163,
|
||||
"conv30_lost": 34,
|
||||
"conv30_pnl": 4413,
|
||||
"realized_pnl": 4261,
|
||||
"avg_bet": 83,
|
||||
"last_trade": 1782231833,
|
||||
"last_trade": 1782233780,
|
||||
"last_conv_bet": 1782228299
|
||||
},
|
||||
{
|
||||
@@ -192,6 +224,10 @@
|
||||
"conv_won": 286,
|
||||
"conv_lost": 88,
|
||||
"conv_pnl": 116332,
|
||||
"conv30_win": 77.3,
|
||||
"conv30_won": 75,
|
||||
"conv30_lost": 22,
|
||||
"conv30_pnl": 72324,
|
||||
"realized_pnl": 105542,
|
||||
"avg_bet": 2704,
|
||||
"last_trade": 1782227731,
|
||||
@@ -214,6 +250,10 @@
|
||||
"conv_won": 235,
|
||||
"conv_lost": 101,
|
||||
"conv_pnl": 217800,
|
||||
"conv30_win": 72.4,
|
||||
"conv30_won": 97,
|
||||
"conv30_lost": 37,
|
||||
"conv30_pnl": 161996,
|
||||
"realized_pnl": 148652,
|
||||
"avg_bet": 3408,
|
||||
"last_trade": 1782232124,
|
||||
@@ -236,9 +276,13 @@
|
||||
"conv_won": 368,
|
||||
"conv_lost": 128,
|
||||
"conv_pnl": 177827,
|
||||
"conv30_win": 72.5,
|
||||
"conv30_won": 219,
|
||||
"conv30_lost": 83,
|
||||
"conv30_pnl": 138747,
|
||||
"realized_pnl": 52510,
|
||||
"avg_bet": 1225,
|
||||
"last_trade": 1782232162,
|
||||
"last_trade": 1782233770,
|
||||
"last_conv_bet": 1782218009
|
||||
},
|
||||
{
|
||||
@@ -258,6 +302,10 @@
|
||||
"conv_won": 521,
|
||||
"conv_lost": 211,
|
||||
"conv_pnl": 1324,
|
||||
"conv30_win": 68.4,
|
||||
"conv30_won": 154,
|
||||
"conv30_lost": 71,
|
||||
"conv30_pnl": 826,
|
||||
"realized_pnl": 365,
|
||||
"avg_bet": 18,
|
||||
"last_trade": 1782184066,
|
||||
@@ -280,6 +328,10 @@
|
||||
"conv_won": 245,
|
||||
"conv_lost": 33,
|
||||
"conv_pnl": 7969,
|
||||
"conv30_win": 89.7,
|
||||
"conv30_won": 52,
|
||||
"conv30_lost": 6,
|
||||
"conv30_pnl": 1772,
|
||||
"realized_pnl": -526,
|
||||
"avg_bet": 113,
|
||||
"last_trade": 1782066605,
|
||||
@@ -302,6 +354,10 @@
|
||||
"conv_won": 340,
|
||||
"conv_lost": 118,
|
||||
"conv_pnl": 82671,
|
||||
"conv30_win": 69.8,
|
||||
"conv30_won": 60,
|
||||
"conv30_lost": 26,
|
||||
"conv30_pnl": 8580,
|
||||
"realized_pnl": 15558,
|
||||
"avg_bet": 962,
|
||||
"last_trade": 1782229096,
|
||||
@@ -324,6 +380,10 @@
|
||||
"conv_won": 286,
|
||||
"conv_lost": 117,
|
||||
"conv_pnl": 13089,
|
||||
"conv30_win": 81.0,
|
||||
"conv30_won": 64,
|
||||
"conv30_lost": 15,
|
||||
"conv30_pnl": 2269,
|
||||
"realized_pnl": 8234,
|
||||
"avg_bet": 219,
|
||||
"last_trade": 1782218036,
|
||||
@@ -346,6 +406,10 @@
|
||||
"conv_won": 132,
|
||||
"conv_lost": 26,
|
||||
"conv_pnl": 10296,
|
||||
"conv30_win": 88.0,
|
||||
"conv30_won": 66,
|
||||
"conv30_lost": 9,
|
||||
"conv30_pnl": 4685,
|
||||
"realized_pnl": 12076,
|
||||
"avg_bet": 391,
|
||||
"last_trade": 1782229109,
|
||||
@@ -368,6 +432,10 @@
|
||||
"conv_won": 88,
|
||||
"conv_lost": 26,
|
||||
"conv_pnl": 366,
|
||||
"conv30_win": 76.4,
|
||||
"conv30_won": 42,
|
||||
"conv30_lost": 13,
|
||||
"conv30_pnl": 192,
|
||||
"realized_pnl": 299,
|
||||
"avg_bet": 18,
|
||||
"last_trade": 1782188413,
|
||||
@@ -390,6 +458,10 @@
|
||||
"conv_won": 303,
|
||||
"conv_lost": 116,
|
||||
"conv_pnl": 273,
|
||||
"conv30_win": 60.4,
|
||||
"conv30_won": 29,
|
||||
"conv30_lost": 19,
|
||||
"conv30_pnl": 1,
|
||||
"realized_pnl": 70,
|
||||
"avg_bet": 2,
|
||||
"last_trade": 1781678395,
|
||||
@@ -412,6 +484,10 @@
|
||||
"conv_won": 542,
|
||||
"conv_lost": 245,
|
||||
"conv_pnl": 3164,
|
||||
"conv30_win": 68.1,
|
||||
"conv30_won": 237,
|
||||
"conv30_lost": 111,
|
||||
"conv30_pnl": 2381,
|
||||
"realized_pnl": 1576,
|
||||
"avg_bet": 40,
|
||||
"last_trade": 1781962112,
|
||||
@@ -434,6 +510,10 @@
|
||||
"conv_won": 258,
|
||||
"conv_lost": 141,
|
||||
"conv_pnl": 6916,
|
||||
"conv30_win": 64.4,
|
||||
"conv30_won": 38,
|
||||
"conv30_lost": 21,
|
||||
"conv30_pnl": 886,
|
||||
"realized_pnl": 1147,
|
||||
"avg_bet": 150,
|
||||
"last_trade": 1782224383,
|
||||
@@ -456,6 +536,10 @@
|
||||
"conv_won": 357,
|
||||
"conv_lost": 101,
|
||||
"conv_pnl": 674,
|
||||
"conv30_win": 76.4,
|
||||
"conv30_won": 133,
|
||||
"conv30_lost": 41,
|
||||
"conv30_pnl": 68,
|
||||
"realized_pnl": -128,
|
||||
"avg_bet": 26,
|
||||
"last_trade": 1782184708,
|
||||
@@ -478,10 +562,14 @@
|
||||
"conv_won": 263,
|
||||
"conv_lost": 82,
|
||||
"conv_pnl": 138225,
|
||||
"conv30_win": 70.2,
|
||||
"conv30_won": 85,
|
||||
"conv30_lost": 36,
|
||||
"conv30_pnl": 35454,
|
||||
"realized_pnl": 37451,
|
||||
"avg_bet": 2484,
|
||||
"last_trade": 1782232316,
|
||||
"last_conv_bet": 1782230615
|
||||
"last_trade": 1782233554,
|
||||
"last_conv_bet": 1782233554
|
||||
},
|
||||
{
|
||||
"wallet": "0x3f3f747bbabb6eb97174c687f2a89ea32dd9c912",
|
||||
@@ -500,6 +588,10 @@
|
||||
"conv_won": 59,
|
||||
"conv_lost": 28,
|
||||
"conv_pnl": 278,
|
||||
"conv30_win": 36.4,
|
||||
"conv30_won": 4,
|
||||
"conv30_lost": 7,
|
||||
"conv30_pnl": 87,
|
||||
"realized_pnl": 198,
|
||||
"avg_bet": 20,
|
||||
"last_trade": 1782094532,
|
||||
@@ -522,6 +614,10 @@
|
||||
"conv_won": 149,
|
||||
"conv_lost": 53,
|
||||
"conv_pnl": 1361,
|
||||
"conv30_win": 56.4,
|
||||
"conv30_won": 22,
|
||||
"conv30_lost": 17,
|
||||
"conv30_pnl": -135,
|
||||
"realized_pnl": 273,
|
||||
"avg_bet": 30,
|
||||
"last_trade": 1776841226,
|
||||
@@ -544,6 +640,10 @@
|
||||
"conv_won": 264,
|
||||
"conv_lost": 149,
|
||||
"conv_pnl": 1197,
|
||||
"conv30_win": 53.5,
|
||||
"conv30_won": 54,
|
||||
"conv30_lost": 47,
|
||||
"conv30_pnl": 137,
|
||||
"realized_pnl": 602,
|
||||
"avg_bet": 30,
|
||||
"last_trade": 1781181048,
|
||||
@@ -566,6 +666,10 @@
|
||||
"conv_won": 97,
|
||||
"conv_lost": 42,
|
||||
"conv_pnl": 439,
|
||||
"conv30_win": 57.1,
|
||||
"conv30_won": 28,
|
||||
"conv30_lost": 21,
|
||||
"conv30_pnl": 206,
|
||||
"realized_pnl": 480,
|
||||
"avg_bet": 26,
|
||||
"last_trade": 1780942468,
|
||||
@@ -588,6 +692,10 @@
|
||||
"conv_won": 23,
|
||||
"conv_lost": 9,
|
||||
"conv_pnl": 6482,
|
||||
"conv30_win": 77.8,
|
||||
"conv30_won": 7,
|
||||
"conv30_lost": 2,
|
||||
"conv30_pnl": -493,
|
||||
"realized_pnl": 6481,
|
||||
"avg_bet": 105,
|
||||
"last_trade": 1781273640,
|
||||
@@ -610,6 +718,10 @@
|
||||
"conv_won": 32,
|
||||
"conv_lost": 23,
|
||||
"conv_pnl": 54,
|
||||
"conv30_win": 42.1,
|
||||
"conv30_won": 8,
|
||||
"conv30_lost": 11,
|
||||
"conv30_pnl": -195,
|
||||
"realized_pnl": 164,
|
||||
"avg_bet": 18,
|
||||
"last_trade": 1782041146,
|
||||
@@ -632,6 +744,10 @@
|
||||
"conv_won": 20,
|
||||
"conv_lost": 16,
|
||||
"conv_pnl": 52,
|
||||
"conv30_win": 46.7,
|
||||
"conv30_won": 7,
|
||||
"conv30_lost": 8,
|
||||
"conv30_pnl": -29,
|
||||
"realized_pnl": -5,
|
||||
"avg_bet": 11,
|
||||
"last_trade": 1782218137,
|
||||
@@ -654,6 +770,10 @@
|
||||
"conv_won": 13,
|
||||
"conv_lost": 2,
|
||||
"conv_pnl": 16,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": 2,
|
||||
"avg_bet": 2,
|
||||
"last_trade": 1777296238,
|
||||
@@ -676,6 +796,10 @@
|
||||
"conv_won": 57,
|
||||
"conv_lost": 8,
|
||||
"conv_pnl": 30,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": -28,
|
||||
"avg_bet": 1,
|
||||
"last_trade": 1773803415,
|
||||
@@ -698,6 +822,10 @@
|
||||
"conv_won": 55,
|
||||
"conv_lost": 14,
|
||||
"conv_pnl": 97,
|
||||
"conv30_win": 100.0,
|
||||
"conv30_won": 1,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 2,
|
||||
"realized_pnl": 37,
|
||||
"avg_bet": 9,
|
||||
"last_trade": 1779366328,
|
||||
@@ -720,6 +848,10 @@
|
||||
"conv_won": 37,
|
||||
"conv_lost": 6,
|
||||
"conv_pnl": 13,
|
||||
"conv30_win": 100.0,
|
||||
"conv30_won": 3,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 4,
|
||||
"realized_pnl": 0,
|
||||
"avg_bet": 1,
|
||||
"last_trade": 1781567076,
|
||||
@@ -742,6 +874,10 @@
|
||||
"conv_won": 66,
|
||||
"conv_lost": 31,
|
||||
"conv_pnl": 1178,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": 1003,
|
||||
"avg_bet": 54,
|
||||
"last_trade": 1776356722,
|
||||
@@ -764,6 +900,10 @@
|
||||
"conv_won": 662,
|
||||
"conv_lost": 230,
|
||||
"conv_pnl": 230,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": 169,
|
||||
"avg_bet": 1,
|
||||
"last_trade": 1776542460,
|
||||
@@ -786,6 +926,10 @@
|
||||
"conv_won": 113,
|
||||
"conv_lost": 31,
|
||||
"conv_pnl": 318,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": 79,
|
||||
"avg_bet": 14,
|
||||
"last_trade": 1774991519,
|
||||
@@ -808,6 +952,10 @@
|
||||
"conv_won": 434,
|
||||
"conv_lost": 68,
|
||||
"conv_pnl": 11348,
|
||||
"conv30_win": 85.7,
|
||||
"conv30_won": 12,
|
||||
"conv30_lost": 2,
|
||||
"conv30_pnl": 235,
|
||||
"realized_pnl": 407,
|
||||
"avg_bet": 155,
|
||||
"last_trade": 1779471986,
|
||||
@@ -830,6 +978,10 @@
|
||||
"conv_won": 295,
|
||||
"conv_lost": 132,
|
||||
"conv_pnl": 9894,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": 1065,
|
||||
"avg_bet": 218,
|
||||
"last_trade": 1775772965,
|
||||
@@ -852,6 +1004,10 @@
|
||||
"conv_won": 435,
|
||||
"conv_lost": 219,
|
||||
"conv_pnl": 17481,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": 2094,
|
||||
"avg_bet": 406,
|
||||
"last_trade": 1772982581,
|
||||
@@ -874,6 +1030,10 @@
|
||||
"conv_won": 259,
|
||||
"conv_lost": 124,
|
||||
"conv_pnl": 4147,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": 1540,
|
||||
"avg_bet": 76,
|
||||
"last_trade": 1780485735,
|
||||
@@ -896,6 +1056,10 @@
|
||||
"conv_won": 421,
|
||||
"conv_lost": 169,
|
||||
"conv_pnl": 41548,
|
||||
"conv30_win": null,
|
||||
"conv30_won": 0,
|
||||
"conv30_lost": 0,
|
||||
"conv30_pnl": 0,
|
||||
"realized_pnl": 10278,
|
||||
"avg_bet": 936,
|
||||
"last_trade": 1781531343,
|
||||
|
||||
Reference in New Issue
Block a user