diff --git a/sanguo_factor/batch_eval.py b/sanguo_factor/batch_eval.py index 0fb3790..8a7a110 100644 --- a/sanguo_factor/batch_eval.py +++ b/sanguo_factor/batch_eval.py @@ -72,7 +72,7 @@ def run_batch_eval( run_id = eval_store.create_run( eval_db, label=label, universe=universe_label, symbols_count=bars["vt_symbol"].n_unique(), factors_total=len(factor_names), - start=start, end=end, params={"limit": limit, "symbols": symbols[:20] if symbols else None}, + start=start, end=end, params={"limit": limit, "symbols": symbols[:20] if symbols else None}, # 截断防 4400 只全量塞 JSON ) errors: list[str] = [] @@ -115,6 +115,10 @@ def _eval_one(name: str, alpha_df: pl.DataFrame, eval_rows: pl.DataFrame, .sort("datetime").to_pandas().set_index("datetime") ) F.index = pd.to_datetime(F.index) + if F.empty or len(F.index) == 0: + return {"factor": name, "category": factor["category"], + "expression": factor["expression"], + "metrics": {"error": "因子矩阵为空(join 后无评估窗行,检查 datetime dtype/窗口)"}} metrics = summarize_factor(F, rets[1], rets[5], rets[10]) return {"factor": name, "category": factor["category"], "expression": factor["expression"], "metrics": metrics}