From b2d4ad4fbcf443acad98ec5d5e2687a506e87750 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sat, 18 Apr 2026 20:36:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20guard=20against=20invalid=20ECMWF=20temp?= =?UTF-8?q?s=20(e.g.=20-999=C2=B0C)=20in=20scan=20and=20top=5Fsignals?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot_v3.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bot_v3.py b/bot_v3.py index 0219e97..1c07122 100644 --- a/bot_v3.py +++ b/bot_v3.py @@ -985,6 +985,11 @@ def scan_and_trade(): if forecast_temp is None: continue + # Guard against invalid API readings (e.g. -999 from ECMWF) + if forecast_temp < -40 or forecast_temp > 130: + warn(f" ⚠️ Invalid forecast temp {forecast_temp}°F — skipping city") + break + # Collect for Telegram top-signals report (avoid duplicate API calls later) city_market_data.append((city_slug, loc, outcomes, forecastsnap, horizon, end_date, date)) @@ -1155,6 +1160,8 @@ def scan_and_trade(): forecast_temp = forecastsnap.get("temp") if forecast_temp is None: continue + if forecast_temp < -40 or forecast_temp > 130: + continue sigma = get_sigma(city_slug) for o in outcomes: t_low, t_high = o["range"]