fix(factor): 批量评估空因子矩阵守卫——join静默空集记error行不再产全None淘汰假数据 [vps]

This commit is contained in:
2026-08-25 00:25:30 +08:00
parent 3f9a4fc681
commit d3226ebe71
+5 -1
View File
@@ -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}