From 9c85a538de6eae16f402a30da070df57ac0b2637 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sat, 18 Apr 2026 19:55:25 +0800 Subject: [PATCH] fix: resolve city_market_data undefined, p/Kelly order, best_signal None bugs --- bot_v3.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/bot_v3.py b/bot_v3.py index 7c7bb58..15cb191 100644 --- a/bot_v3.py +++ b/bot_v3.py @@ -915,6 +915,9 @@ def scan_and_trade(): new_trades = 0 errors = [] + # Collect city market data for Telegram report (top signals) + city_market_data = [] + for city_slug, loc in LOCATIONS.items(): print(f" -> {loc['name']}...", end=" ", flush=True) unit_sym = "F" @@ -993,6 +996,9 @@ def scan_and_trade(): if forecast_temp is None: continue + # Collect for Telegram top-signals report (avoid duplicate API calls later) + city_market_data.append((city_slug, loc, outcomes, forecastsnap, horizon, end_date, date)) + sigma = get_sigma(city_slug) best_signal = None @@ -1013,12 +1019,14 @@ def scan_and_trade(): if spread > MAX_SLIPPAGE: continue + # Calculate probability FIRST (needed for Kelly and EV) + p = bucket_prob(forecast_temp, t_low, t_high, sigma) + # Use adaptive EV floor and Kelly from self-learning adaptive_ev_floor = get_adjusted_ev_floor() base_kelly = calc_kelly(p, ask) adjusted_kelly = get_adjusted_kelly(base_kelly) - p = bucket_prob(forecast_temp, t_low, t_high, sigma) ev = calc_ev(p, ask) if ev < adaptive_ev_floor: continue @@ -1043,7 +1051,7 @@ def scan_and_trade(): "cost": round(shares * ask, 4), "p": round(p, 4), "ev": round(ev, 4), - "kelly": round(kelly, 4), + "kelly": round(adjusted_kelly, 4), "forecast_temp": forecast_temp, "forecast_src": best_source, "sigma": sigma,