fix(factor): WARMUP_BARS 60→120 恢复spec剔新口径(修夹具130根预热而非改口径)+evaluation_filter改datetime对象比较(9M行免逐行strftime) [vps]

This commit is contained in:
2026-08-25 00:09:31 +08:00
parent cfb604588c
commit d00ad7d81d
2 changed files with 11 additions and 10 deletions
+4 -5
View File
@@ -11,7 +11,7 @@ from datetime import datetime, timedelta
import polars as pl
STOCK_PREFIXES = ("60", "00", "30")
WARMUP_BARS = 60
WARMUP_BARS = 120
_CHUNK = 300 # 分块 IN 查询每块 symbol 数(控瞬时内存)
_LOOKBACK_DAYS = 300 # start 前缓冲(覆盖最大 60 日窗口 + 节假日)
_FORWARD_DAYS = 45 # end 后缓冲(覆盖 10 日前瞻收益)
@@ -98,11 +98,10 @@ def load_universe_bars(
def evaluation_filter(df: pl.DataFrame, start: str, end: str) -> pl.DataFrame:
"""IC 评估行集:窗口内 + 预热期已过."""
# Convert datetime to string (YYYY-MM-DD) for string comparison
# This avoids polars Datetime comparison issues
from datetime import datetime as _dt
return df.filter(
(pl.col("datetime").dt.strftime("%Y-%m-%d") >= pl.lit(start))
& (pl.col("datetime").dt.strftime("%Y-%m-%d") <= pl.lit(end))
(pl.col("datetime") >= _dt.strptime(start, "%Y-%m-%d"))
& (pl.col("datetime") <= _dt.strptime(end, "%Y-%m-%d"))
& (pl.col("bar_idx") >= WARMUP_BARS)
)