用途:在同一时间横截面上为多只股票计算多个因子值,标准化后合成综合评分,选出排名靠前的股票构建组合。
信号逻辑:为每只股票计算N个因子(如动量、价值、质量);对每个因子做横截面Z-score标准化(减均值、除标准差);按等权或自定义权重求和得到综合分;做多TopN,每只权重为1/N。
内置因子:momentum(过去N日收益,正向)、reversal(过去5日收益,负向)、volatility(过去N日收益标准差,负向)、volume_ratio(当日成交量/N日均量,正向)。若extra_fields可用(中国A股),还可加入pe_factor(1/PE,越大越便宜)、pb_factor(1/PB)、roe_factor(ROE,越大越好)。
参数:momentum_window默认20,vol_window默认20,top_n默认3,rebalance_freq默认20(交易日)。
常见陷阱:横截面标准化至少需要3只股票,否则Z-score无意义;调仓日之间保持上一信号不变,不要每日重新排序;因子方向不同,标准化前须对齐方向;组合权重须归一化,TopN各1/N,其余为0。
依赖:pip install pandas numpy
信号约定:1/N表示入选TopN(等权多头),0表示未入选。
Zoo Signal Engine(0.1.8新增):当用户想把Alpha Zoo(450+预置因子)中的1-N个alpha组合成多因子策略时,使用zoo_signal_engine.py中的ZooSignalEngine.from_zoo(...),而非旧的逐标的example_signal_engine.py。新引擎基于宽面板dict[str, pd.DataFrame]输入(与registry的Alpha.compute(panel)契约形状一致),在任一alpha失败或被跳过时重新分配权重,支持long-only(top_n)、short-only(bottom_n)和long-short(top_n + bottom_n)模式,并提供generate(data_map)适配器以接入现有run_backtest流程。
from src.factors.registry import Registry from zoo_signal_engine import ZooSignalEngine
registry = Registry() alpha_ids = ["alpha101_001", "alpha101_012", "guotai_191_003"] engine = ZooSignalEngine.from_zoo(alpha_ids, top_n=10, bottom_n=10, standardize=True) signal_panel = engine.compute_signal(panel)
交叉引用:浏览alpha目录、按主题/股票池过滤及查看__alpha_meta__记录,参见alpha-zoo技能。example_signal_engine.py保留用于从原始OHLCV直接计算因子的旧版逐标的流程;新代码应优先使用zoo_signal_engine.py,以利用450+ zoo alpha、registry级NaN/inf防护和逐alpha跳过隔离。