From 3ec0c024ad5927ab8060293eb70c79130f2d8dfe Mon Sep 17 00:00:00 2001 From: OpenSquared Date: Fri, 24 Jul 2026 12:59:12 +0200 Subject: [PATCH] feat: cockpit --- backend/services/instrument_service.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/services/instrument_service.py b/backend/services/instrument_service.py index ee1b6e0..2b03e2c 100644 --- a/backend/services/instrument_service.py +++ b/backend/services/instrument_service.py @@ -44,9 +44,15 @@ _ASSET_CLASS_TO_CATEGORY = { # existing Drivers editor (update_instrument_drivers), same as any other instrument. _QUICK_ADD_DEFAULTS = { "chart": {"ma_periods": [20, 50, 200], "bollinger_period": 20, "bollinger_std": 2, "show_volume": True}, - "drivers": [], "regime_labels": [], "event_keywords": [], + "drivers": [], "event_keywords": [], "related_assets": [], "correlation_instruments": [], "ai_context": "", "currency": "USD", "description": "", + # NOT [] — _detect_regime() truncates its 5-slot score vector to len(regime_labels) + # then does np.argmax() on it; an empty list truncates to an empty vector and + # np.argmax([]) raises ValueError, an uncaught 500 for every quick-added instrument + # the moment it has enough real bars (len(df) >= 20) to reach that code path — same + # 5 generic labels _detect_regime() itself falls back to when regime_labels is absent. + "regime_labels": ["Bull", "Bear", "Transition", "Volatile", "Consolidation"], }