Transformer 是一元函数式操作:

Panel | Graph -> Graph

它接收一个 PanelGraph,返回新的惰性 Graph

内置类别

内置 transformer 覆盖常见因子处理步骤:

  • 基础元素级操作,例如 identityabs_valuenegate
  • 缺失值处理,例如 fillnaffillbfill
  • 滚动窗口,例如 rolling_meanrolling_stdrolling_zscore
  • 标准化和排序,例如 rankrankpctzscorewinsorize
  • 极值和变换,例如 truncatetrimboxcoxfisher
  • 类别面板操作,例如 category_demeancategory_rank

完整逐项参考见英文生成目录:Transformer reference

自定义 Transformer

项目可以用 @transformer 装饰器把自定义 Polars 逻辑包装成 BagelQuant 操作:

import polars as pl

from bagelquant_core.transformer import transformer


@transformer
def demean(frame):
    means = frame.group_by("time").agg(pl.col("value").mean().alias("mean"))
    return frame.join(means, on="time").with_columns(
        (pl.col("value") - pl.col("mean")).alias("value")
    ).select("time", "asset_id", "value")