Update status for using KubuntuPC
This commit is contained in:
@@ -135,8 +135,6 @@ def inspect_strategies_config(
|
||||
|
||||
overall_status = "ok"
|
||||
|
||||
log.info(f"🔥 Strategies received: {len(payload.strategies)}")
|
||||
|
||||
results: List[Dict[str, Any]] = []
|
||||
series: Dict[str, Any] = {"strategies": {}} if include_series else {}
|
||||
|
||||
@@ -154,6 +152,9 @@ def inspect_strategies_config(
|
||||
"strategy_id": sid,
|
||||
"status": "fail",
|
||||
"message": f"Unknown strategy_id: {sid}",
|
||||
"warnings": [],
|
||||
"series_available": False,
|
||||
"series_error": "Unknown strategy_id (not in registry)",
|
||||
"n_windows": 0,
|
||||
"oos_final_equity": payload.account_equity,
|
||||
"oos_total_return_pct": 0.0,
|
||||
@@ -180,6 +181,9 @@ def inspect_strategies_config(
|
||||
"strategy_id": sid,
|
||||
"status": "fail",
|
||||
"message": msg,
|
||||
"warnings": [],
|
||||
"series_available": False,
|
||||
"series_error": "Unknown strategy_id (not in registry)",
|
||||
"n_windows": 0,
|
||||
"oos_final_equity": payload.account_equity,
|
||||
"oos_total_return_pct": 0.0,
|
||||
@@ -224,6 +228,9 @@ def inspect_strategies_config(
|
||||
log.info(f"🧠 Step3 | WF run | strategy={sid}")
|
||||
|
||||
try:
|
||||
series_available = False
|
||||
series_error = None
|
||||
|
||||
wf = WalkForwardValidator(
|
||||
strategy_class=strategy_class,
|
||||
param_grid=None,
|
||||
@@ -252,11 +259,54 @@ def inspect_strategies_config(
|
||||
status = "warning"
|
||||
msg = "No closed trades in OOS"
|
||||
warnings_list.append("Walk-forward produced no closed trades.")
|
||||
|
||||
# ✅ Registrar resultado SIEMPRE (no continue silencioso)
|
||||
results.append({
|
||||
"strategy_id": sid,
|
||||
"status": status,
|
||||
"message": msg,
|
||||
"warnings": warnings_list,
|
||||
|
||||
# ✅ OPCIÓN B: serie disponible si include_series (aunque sea baseline/empty)
|
||||
"series_available": bool(include_series),
|
||||
"series_error": None if include_series else "WF produced no closed trades / empty windows",
|
||||
|
||||
"n_windows": 0,
|
||||
"oos_final_equity": float(payload.account_equity),
|
||||
"oos_total_return_pct": 0.0,
|
||||
"oos_max_dd_worst_pct": 0.0,
|
||||
"degradation_sharpe": None,
|
||||
"windows": [],
|
||||
})
|
||||
|
||||
# ✅ Serie mínima para poder renderizar algo (equity baseline)
|
||||
if include_series:
|
||||
series["strategies"][sid] = {
|
||||
"window_returns_pct": [],
|
||||
"window_equity": [float(payload.account_equity)],
|
||||
"window_trades": [],
|
||||
}
|
||||
|
||||
if overall_status == "ok":
|
||||
overall_status = "warning"
|
||||
|
||||
continue
|
||||
else:
|
||||
# 🔒 Validación explícita de columnas WF (no fallbacks silenciosos)
|
||||
required_cols = {"return_pct", "max_dd_pct", "trades", "window", "train_start", "train_end", "test_start", "test_end", "sharpe", "params"}
|
||||
missing = required_cols - set(win_df.columns)
|
||||
if missing:
|
||||
raise ValueError(f"WF windows missing required columns: {sorted(missing)}")
|
||||
|
||||
oos_returns = win_df["return_pct"].tolist()
|
||||
oos_dd = win_df["max_dd_pct"].tolist()
|
||||
n_windows = len(win_df)
|
||||
|
||||
required_cols = {"return_pct", "max_dd_pct", "trades", "window", "train_start", "train_end", "test_start", "test_end", "sharpe", "params"}
|
||||
missing = required_cols - set(win_df.columns)
|
||||
if missing:
|
||||
raise ValueError(f"WF windows missing required columns: {sorted(missing)}")
|
||||
|
||||
trades = win_df["trades"].astype(int).tolist()
|
||||
too_few = sum(t < int(payload.wf.min_trades_test) for t in trades)
|
||||
|
||||
@@ -301,7 +351,9 @@ def inspect_strategies_config(
|
||||
"strategy_id": sid,
|
||||
"status": status,
|
||||
"message": msg,
|
||||
"warnings": warnings_list if status == "warning" else [],
|
||||
"warnings": warnings_list,
|
||||
"series_available": bool(include_series),
|
||||
"series_error": None,
|
||||
"n_windows": int(len(windows_out)),
|
||||
"oos_final_equity": oos_final,
|
||||
"oos_total_return_pct": float(oos_total_return),
|
||||
@@ -323,6 +375,9 @@ def inspect_strategies_config(
|
||||
"strategy_id": sid,
|
||||
"status": "fail",
|
||||
"message": f"Exception: {e}",
|
||||
"warnings": [],
|
||||
"series_available": False,
|
||||
"series_error": f"{type(e).__name__}: {e}",
|
||||
"n_windows": 0,
|
||||
"oos_final_equity": float(payload.account_equity),
|
||||
"oos_total_return_pct": 0.0,
|
||||
|
||||
Reference in New Issue
Block a user