Skip to content
broncatwPublic

About

多因子选股研究平台:因子库(动量/波动率/量价/K线形态)+ RankIC 评价 + 分层回测 + TopK/逆波动率组合 + Markdown 报告,纯 pandas/numpy,42 测试全绿,可对接大智慧 dzh_data 快照

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

alpha-lab · 多因子选股研究平台

基于 pandas/numpy 的轻量级多因子选股研究平台,覆盖 行情面板 → 因子计算 → IC 评价 → 分层回测 → 组合回测 → 报告生成 的完整量化研究流程。零重依赖(仅 pandas/numpy),全部计算本地离线完成。

架构

alpha_lab/
├── config.py       # 全局配置(佣金、TopK、层数等)
├── data/           # 行情面板 PanelData + 合成数据 + dzh_data 快照适配器
├── factors/        # 因子基类、注册表、内置因子库
│   ├── momentum.py     动量(mom)、均线偏离(ma_bias)
│   ├── volatility.py   已实现波动率(vol)、下行波动率(downside_vol)
│   ├── volume.py       量价相关性(pv_corr)、量比(volume_ratio)
│   └── candle.py       上/下影线频率、实体占比(K线形态类)
├── evaluation/     # RankIC/ICIR、分层收益与净值、绩效指标
├── portfolio/      # 等权 / TopK / 逆波动率组合构建
├── backtest/       # 面板化向量化回测(t 日信号 t+1 日成交,无未来函数)
└── report/         # Markdown 因子研究报告生成

快速开始

pip install pandas numpy
python examples/demo_synthetic.py    # 合成数据端到端演示(不触网)

1. 构造行情面板

from alpha_lab.data import PanelData, make_synthetic_panel

# 方式一:合成数据(演示/测试)
panel, true_exposure = make_synthetic_panel(n_dates=250, n_symbols=20)

# 方式二:长表 DataFrame(列: date, symbol, open, high, low, close, volume)
panel = PanelData.from_long(long_df)

2. 计算因子

from alpha_lab.factors import list_factors, make_factor

print(list_factors())          # ['body_ratio', 'downside_vol', ..., 'volume_ratio']
mom = make_factor("mom", lookback=20)
values = mom.compute(panel)    # DataFrame[date × symbol]

自定义因子:继承 Factor 并用 @register_factor("名字") 注册。

3. IC 评价与分层回测

from alpha_lab.evaluation.ic import forward_returns, ic_series, ic_summary
from alpha_lab.evaluation.quantile import quantile_returns

fwd = forward_returns(panel.close, periods=1)       # t → t+1 前视对齐
ic = ic_series(factor_values, fwd)                  # 每日 RankIC
print(ic_summary(ic))                               # 均值/ICIR/t值/正比例
q = quantile_returns(factor_values, fwd, quantiles=5)

4. 组合回测

from alpha_lab.backtest.engine import BacktestEngine
from alpha_lab.portfolio.builder import topk_weight

weights = topk_weight(factor_values, k=5)           # 因子值前 5 名等权
result = BacktestEngine().run(panel, weights)       # t 日信号 t+1 日成交
print(result.metrics)                               # 年化/夏普/回撤/换手

5. 对接大智慧(dzh_data)快照

from alpha_lab.data.adapters import panel_from_dzh_snapshots
panel = panel_from_dzh_snapshots("path/to/snapshot_dir")   # 目录含 snapshot_*.parquet

回测语义约定

  • 无未来函数:t 日收盘后计算的因子权重,t+1 日按收盘价成交(引擎内部 shift(1))。
  • 佣金:按单边换手 × 佣金率 × 2 计提(买、卖各一次)。
  • 停牌处理:无行情的股票当日无法调仓,沿用前一日权重。
  • 因子值方向统一为"越大越好",反向因子在因子内部取负。

测试

python -m pytest tests/ -v      # 42 个用例,覆盖数据/因子/评价/组合/回测/报告

About

多因子选股研究平台:因子库(动量/波动率/量价/K线形态)+ RankIC 评价 + 分层回测 + TopK/逆波动率组合 + Markdown 报告,纯 pandas/numpy,42 测试全绿,可对接大智慧 dzh_data 快照

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages