news 2026/10/26 10:13:29

vn.py 量化交易框架完整指南:四步跑通事件驱动与 AI 选股流水线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vn.py 量化交易框架完整指南:四步跑通事件驱动与 AI 选股流水线

vn.py 量化交易框架完整指南:四步跑通事件驱动与 AI 选股流水线

【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpy

vn.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/模块把"数据落盘 → 因子与标签 → 训练模型 → 回测验证"串成一条标准流水线。

第一步:数据落盘

AlphaLab(vnpy/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( df=df, 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_symbols=stock_list, interval=Interval.DAILY, start=datetime(2023, 1, 1), end=datetime(2023, 12, 31), capital=1_000_000) engine.add_strategy(EquityDemoStrategy, {}, signal_df=signal) engine.load_data() engine.run()

跑完run()就能出绩效图表。整条流水线不碰行情接口和下单协议。下面几条是我踩过的坑,帮你省点时间。

踩坑提醒

  1. 因子写成 Python for 循环会慢几个数量级。错在哪:逐行遍历 DataFrame。怎么办:一律用 polars 表达式,还能用运算符重载拼新因子。
  2. 归一化在整段数据上拟合,等于把未来信息带进训练。错在哪:验证集参数污染训练。怎么办:参数只从训练集拟合,其余段只套用——这正是AlphaDataset分 infer 与 learn 两条管线的原因。
  3. 回测起点当天信号一片空白。错在哪:长窗口因子没有预热期。怎么办:回测开始前多加载一段历史,load_bar_df的extended_days参数就是干这个的。
  4. 数据没核实就上模型,结果出来没法信。怎么办:先用数据管理器手工查几根 K 线、核对行数和日期范围,再开训。
  5. 回测一套代码、实盘另写一套,行为迟早漂移。怎么办:回测与实盘共用同一份AlphaStrategy回调代码,回测通过后再迁移,改动最小。

想动手的话,docs/community/ 从入门文档开始读最顺。

继续深入

  • 官方文档:docs/community/覆盖安装、网关、数据库和各应用模块,新人从 info 下的介绍文档读起。
  • 示例代码:examples/alpha_research/是整套 AI 选股 notebook,cta_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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 10:07:56

2022德语跨保西北大学新传:三校面试、专业题与择校复盘

📌 大一保研必看|从入学准备到推免录取的全流程攻略 绩点、英语、科研竞赛,先抓哪一项? 按大一到大三梳理准备顺序,讲清夏令营、预推免、申请材料和面试要点。 👉 点击阅读完整攻略 → 2022年,我…

作者头像 李华
网站建设 2026/10/26 10:06:29

angular-state-management - README

Angular 状态管理 为 Angular 应用程序提供针对 AI 代理和大型语言模型优化的完整状态管理模式。 概览 此技能提供用于以下方面的决策框架和实施模式: 基于信号的服务 - 用于共享数据的轻量级状态NgRx SignalStore - 具有计算值的特性范围状态NgRx Store - 企业…

作者头像 李华
网站建设 2026/10/26 10:06:25

android-dev - react-native

React Native 参考(TypeScript) 项目结构 src/ ├── app/ │ ├── App.tsx # Root component, providers │ ├── navigation/ # React Navigation stacks types │ └── store/ # RTK …

作者头像 李华
网站建设 2026/10/26 10:02:12

AI落地从能用走向好用:Agent编排、模型部署与工程化避坑

早上一开机就被各种群聊和社区话题轮番刷屏,2026-09-29这一天,AI相关的讨论密度明显比前几周高了一大截。如果说前两年的关键词是“卷参数、卷榜单”,今年的风向已经完全变了:Agent、工程化、可靠性、模型部署、垂直场景落地成了真…

作者头像 李华