fix(factor): WARMUP_BARS 60→120 恢复spec剔新口径(修夹具130根预热而非改口径)+evaluation_filter改datetime对象比较(9M行免逐行strftime) [vps]
This commit is contained in:
@@ -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)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user