
vn.py 量化交易框架完整指南四步跑通事件驱动与 AI 选股流水线【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpyvn.py 是一个基于 Python 的开源量化交易框架把行情接入、订单管理、数据存储和策略回测全部标准化并内置一条 AI 选股流水线。新手照着两分钟能跑通有基础的研究者可以直接拿它做机器学习选股。它是什么vn.py 的定位是框架而不是终端。行情网关、策略引擎、回测器、数据库、GUI 应用它都给了标准实现你的工作只剩写策略本身。适用人群分两类刚入门、想要一套能实盘也能回测的起点的人以及有 Python 基础、想把因子研究搬进生产的人。下面按先跑起来再讲为什么的顺序走。两条命令跑通第一个实例先装核心包加你要用的网关和应用插件。CTP 是国内期货最常用的网关CTA 策略与回测器、数据管理器是配套插件pip install vnpy vnpy_ctp vnpy_ctastrategy vnpy_ctabacktester vnpy_datamanager然后拉一份仓库代码运行带界面的示例几秒钟就能看到行情窗口git clone https://gitcode.com/vnpy/vnpy cd vnpy python examples/veighna_trader/run.py不想开 GUI 的话examples/ 里还有一个no_ui/run.py不到一百行演示了主引擎 CTP 网关 CTA 策略引擎的组合顺带写了按交易时段启停子进程的守护逻辑值得逐行读。接下来看它底层凭什么稳。事件驱动架构怎么扛住行情把 vn.py 想象成一条工厂产线行情网关是进料口策略是工人数据库是仓库中间隔着一台中央分拣台。EventEngine就是这台分拣台vnpy/event/跑在一个独立线程里。每个Event只有两样东西type说明消息归谁管data装具体内容。网关收到行情把事件扔进分拣台就走人绝不在回调里顺手写数据库或算策略。策略、应用各自订阅自己关心的type分拣台按类型投递。生产者和消费者从此解耦慢消费者只会让队列变长不会拖住进料口。from vnpy.event import EventEngine, Event, EVENT_TIMER engine EventEngine() def on_timer(event: Event): print(收到定时事件) engine.register(EVENT_TIMER, on_timer) engine.start()引擎默认每秒投递一次EVENT_TIMER。vnpy/trader/engine.py 里的MainEngine再往上一层负责统一挂接网关和应用。看懂这套消息流下面的 AI 选股模块就好接手了。四步搭出 AI 选股流水线vnpy/alpha/模块把数据落盘 → 因子与标签 → 训练模型 → 回测验证串成一条标准流水线。第一步数据落盘AlphaLabvnpy/alpha/lab.py是研究数据的中转站按合约把日线、分钟线写成 parquet 文件之后取数、回测都从 lab 读from vnpy.alpha import AlphaLab lab AlphaLab(lab_data) lab.save_bar_data(bars)第二步因子与标签AlphaDataset接收 polars 的 DataFrame把时间段切成Segment.TRAIN / VALID / TEST三段。因子直接写表达式也可以批量引入内置的 158 个经典 Alpha 因子from vnpy.alpha.dataset import AlphaDataset from vnpy.alpha.dataset.datasets.alpha_158 import Alpha158 dataset Alpha158( dfdf, train_period(2019-01-01, 2021-12-31), valid_period(2022-01-01, 2022-12-31), test_period(2023-01-01, 2023-12-31), ) dataset.set_label(ts_future_return(close, 5)) dataset.prepare_data()prepare_data()会用多进程并行算完所有表达式。它内置process_cs_norm、process_robust_zscore_norm等预处理并把处理函数分成 infer 与 learn 两类就是为了挡掉验证集信息在训练时泄进来的问题。第三步训练模型模型接口统一成AlphaModel只需实现fit和predict。内置 Lasso、LightGBM、MLP 三种拿 LightGBM 最快from vnpy.alpha.dataset import Segment from vnpy.alpha.model.models.lgb_model import LgbModel model LgbModel() model.fit(dataset) pred model.predict(dataset, Segment.TEST)第四步回测验证把预测信号和策略交给BacktestingEngine。自带的EquityDemoStrategy是完整的多头选股模板每天按信号排序取前 50 只踢掉不在指数成分里的持仓还要过最小持有天数和手续费约束from vnpy.alpha.strategy import BacktestingEngine from vnpy.alpha.strategy.strategies import EquityDemoStrategy engine BacktestingEngine(lab) engine.set_parameters(vt_symbolsstock_list, intervalInterval.DAILY, startdatetime(2023, 1, 1), enddatetime(2023, 12, 31), capital1_000_000) engine.add_strategy(EquityDemoStrategy, {}, signal_dfsignal) engine.load_data() engine.run()跑完run()就能出绩效图表。整条流水线不碰行情接口和下单协议。下面几条是我踩过的坑帮你省点时间。踩坑提醒因子写成 Python for 循环会慢几个数量级。错在哪逐行遍历 DataFrame。怎么办一律用 polars 表达式还能用运算符重载拼新因子。归一化在整段数据上拟合等于把未来信息带进训练。错在哪验证集参数污染训练。怎么办参数只从训练集拟合其余段只套用——这正是AlphaDataset分 infer 与 learn 两条管线的原因。回测起点当天信号一片空白。错在哪长窗口因子没有预热期。怎么办回测开始前多加载一段历史load_bar_df的extended_days参数就是干这个的。数据没核实就上模型结果出来没法信。怎么办先用数据管理器手工查几根 K 线、核对行数和日期范围再开训。回测一套代码、实盘另写一套行为迟早漂移。怎么办回测与实盘共用同一份AlphaStrategy回调代码回测通过后再迁移改动最小。想动手的话docs/community/ 从入门文档开始读最顺。继续深入官方文档docs/community/覆盖安装、网关、数据库和各应用模块新人从 info 下的介绍文档读起。示例代码examples/alpha_research/是整套 AI 选股 notebookcta_backtesting/和portfolio_backtesting/覆盖期货与组合回测。核心源码事件引擎在vnpy/event/交易核心在vnpy/trader/AI 量化在vnpy/alpha/按需精读即可。版本历史CHANGELOG.md记录了每个版本的演进读它比读代码更快理解设计取舍。今天就能做的事把 examples/veighna_trader/ 的run.py跑起来再花二十分钟通读 vnpy/event/engine.py全文不过一百四十多行。然后打开 examples/alpha_research/ 里 LgbModel 的工作流把股票池和时间段换成自己的数据整条 AI 选股流水线就跑通了。【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考