
vnpy Alpha 回测链路实战拆解从因子信号到组合绩效【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpy本文拆解 vnpyVeighNavnpy/alpha/模块的回测链路说明因子数据集—机器学习模型—组合回测三块如何拼接以及历史 K 线如何变成夏普、最大回撤这类组合级指标。面向想验证机器学习选股策略的开发者示例贯穿沪深300日频信号轮动场景。对齐因子研究与组合回测的职责多数回测停留在单品种技术策略而持有哪些标的、仓位如何分配、何时调仓这类组合问题需要单独的信号层。vnpy/alpha/把链路拆成三个抽象AlphaDataset负责特征计算与 train/valid/test 分段AlphaModel负责拟合与预测AlphaStrategy负责把预测值转成目标持仓AlphaLab则是文件化的研究工作区数据与产物以 parquet 形式落盘。全链路只依赖少数核心库polars 做特征计算lightgbm 做树模型plotly 出图pyarrow 存 parquet。研究阶段与回测阶段共用同一份数据和信号文件回测区间或策略改变时不必重训模型。加载指数成分与 K 线数据AlphaLab初始化时自动建子目录daily/minute 存 K 线每个合约一个 parquetcomponent 存指数成分变化dataset/model/signal 分别存放研究产物。先建工作区再按指数历史成分批量拉取日线数据lab AlphaLab(./lab/csi300) symbols lab.load_component_symbols(000300.SSE, 2008-01-01, 2023-12-31) df lab.load_bar_df(symbols, Interval.DAILY, 2008-01-01, 2023-12-31, extended_days100)成分股按时间变化取数是避免幸存者偏差的关键extended_days100额外向前取 100 天预热窗口防止期初滚动特征样本不足。计算特征并生成每日信号用字符串表达式描述特征与标签可以直接使用内置的Alpha158特征集价格、量、RSV 及截面统计共 158 个特征标签同样写成一个表达式并给训练段配置归一化处理器dataset Alpha158(df, (2008-01-01, 2015-12-31), (2016-01-01, 2019-12-31), (2020-01-01, 2023-12-31)) dataset.set_label(ts_mean(close / ts_delay(close, 1) - 1, 5)) dataset.add_processor(learn, process_robust_zscore_norm) dataset.prepare_data() dataset.process_data()处理器区分 infer/learn 两类任务归一化这类依赖样本统计量的操作放在 learn 段拟合推理段走 infer 流程避免引入未来信息。处理完可用lab.save_dataset缓存省去重复计算。训练段拟合、测试段预测在训练段拟合模型再对测试段输出逐日信号model LgbModel(seed42) model.fit(dataset) pre model.predict(dataset, Segment.TEST)预测结果是含日期、合约代码、信号值的 polars DataFramelab.save_signal(300_lgb, signal)落盘后即可被多次回测复用。用信号数据驱动组合回测设置目标仓位并批量调仓BacktestingEngine按日回放历史策略只需告诉引擎应该持有多少。内置EquityDemoStrategy是多空受限的轮动策略每日按信号排序保留 top_k 只、剔除末尾 n_drop 只持仓不足 min_days 不卖出最后统一调仓。装配引擎与策略engine BacktestingEngine(lab) engine.set_parameters(symbols, Interval.DAILY, datetime(2020, 1, 1), datetime(2023, 12, 31), capital100_000_000) engine.add_strategy(EquityDemoStrategy, {top_k: 30, n_drop: 3}, signal) engine.run_backtesting()撮合委托并结算成本委托不在发出瞬间成交而是走cross_order限价撮合下一根 bar 的价格区间覆盖委托价才成交。set_parameters的fill_pricevwap可按该 bar 的 VWAPturnover/volume成交更接近真实执行。手续费按合约配置long_rate/short_rate计算持仓按当日收盘价盯市calculate_result()汇总出逐日盈亏表。对照基准评估超额收益与回撤calculate_statistics()输出夏普比率、最大回撤、收益回撤比等组合指标show_performance(000300.SSE)画基准指数超额曲线并给出扣除累计交易成本后的超额收益及其回撤两条线两线差距即换手成本。复盘结果时净超额收益与换手率比毛收益更值得盯。扩展参数优化与单因子诊断多核并行参数优化vnpy/trader/optimize.py提供run_bf_optimization与run_ga_optimization前者穷举、后者基于 deap 遗传算法评估函数返回单个标量指标即可参数空间由OptimizationSetting.add_parameter定义回测评估天然适合并行。单因子分层图单个特征未进模型前可先调dataset.show_feature_performance(name)生成分位数分层图IC、单调性、换手率快速筛掉无效因子再谈组合。第一次跑建议先用examples/alpha_research/目录下的 notebook 配EquityDemoStrategy走通一遍日频数据得到一整套回测输出再替换模型或特征对比同一回测配置下的指标变化。【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考