diff --git a/live/validate_timing.py b/live/validate_timing.py index 2db6ed9a..31368d98 100644 --- a/live/validate_timing.py +++ b/live/validate_timing.py @@ -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, diff --git a/live/watch_sharps.json b/live/watch_sharps.json index d93ac778..7c5b6ecd 100644 --- a/live/watch_sharps.json +++ b/live/watch_sharps.json @@ -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,