公司动态

快速搭建你的第一个量化交易系统:vn.py完整实战指南(附AI选股全流程)

📅 2026/8/19 18:15:13
快速搭建你的第一个量化交易系统:vn.py完整实战指南(附AI选股全流程)
快速搭建你的第一个量化交易系统vn.py完整实战指南附AI选股全流程【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpy你有没有过这样的经历白天对着行情软件手动下单夜里守着数据抓取脚本好不容易在研报里看到一个策略想法等自己写完回测代码、调完参数一个周末已经过去了vn.py——这个基于 Python 的开源量化交易平台开发框架正是为了解决这类重复造轮子的痛点而生。它把行情接入、订单管理、数据存储、策略回测这些脏活累活全部封装好让你把精力花在真正的策略研究上。本文不打算罗列功能清单而是带你从零跑通一个完整流程看看它到底能帮你省下多少时间。五分钟让第一个程序跑起来先把甜头吃到嘴。假设你已经装好了 Python 3.10接下来只需要两步。第一步安装核心框架和你需要的网关、应用插件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 能在毫秒级行情和成千上万笔订单之间游刃有余靠的是一套事件驱动架构。你可以在vnpy/event/engine.py里看到全部实现核心概念只有两个Event和EventEngine。你可以把Event想象成一个贴了标签的信封——type是收件人姓名data是信件内容。行情、成交、日志、定时器统统塞进信封扔进一个全局队列。EventEngine用独立线程从队列取件再按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() # 启动引擎默认每秒发一次定时事件**为什么非要用队列线程而不是直接在回调里干活**因为行情数据来自网关的异步网络回调。如果在回调函数里直接执行策略逻辑、写数据库网关线程会被堵死下一个 tick 来了只能排队延迟会越堆越高。把数据先塞进队列、由事件引擎统一分发生产者网关和消费者策略/应用就彻底解耦了——这正是中枢神经的含义。在这套神经之上MainEnginevnpy/trader/engine.py扮演着总经理的角色它管理所有网关BaseGateway、应用BaseApp和功能引擎BaseEngine对外提供一个统一入口。你只需要调用add_gateway()接行情、add_app()挂策略应用剩下的组件间通信都由事件引擎在背后悄悄完成。实战拆解用机器学习做一版AI选股理解了骨架我们进入重头戏——vn.py 4.0 新增的AI 量化模块vnpy/alpha/。它把因子计算 → 模型训练 → 策略回测串成一条标准流水线让机器学习选股不再是研究员的专属技能。第一步数据进实验室AlphaLabvnpy/alpha/lab.py是研究数据的中转站把日线/分钟线按合约以 parquet 格式落盘后续所有环节都从它这里取数from vnpy.alpha import AlphaLab lab AlphaLab(lab_data) lab.save_bar_data(bars) # 批量写入K线第二步定义因子与标签AlphaDataset是特征工程的核心。它接受一份行情 DataFrame并允许你按训练/验证/测试三段划分时间段Segment.TRAIN等。加因子有两种方式写表达式或者直接引入内置的 158 个经典 Alpha 因子vnpy/alpha/dataset/datasets/alpha_158.pyfrom vnpy.alpha.dataset import AlphaDataset from vnpy.alpha.dataset.datasets import alpha_158 dataset AlphaDataset( 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), ) for name, expr in alpha_158.items(): # 批量加入158个因子 dataset.add_feature(name, expr) dataset.set_label(ts_future_return(close, 5)) # 标签未来5日收益 dataset.prepare_data() # 并行计算所有因子值得一提的是AlphaDataset内置了process_cs_norm截面标准化、process_robust_zscore_norm去极值等预处理函数并且区分了infer与learn两类管线——防止验证集信息在训练时泄露这个细节很多自研框架都想不到。第三步训练模型模型接口被抽象成统一的AlphaModelvnpy/alpha/model/template.py你只需实现fit()和predict()。开箱即用的有 Lasso、LightGBM、MLP 三种vnpy/alpha/model/models/from vnpy.alpha.model.models import LgbModel model LgbModel() model.fit(dataset) # 训练 pred model.predict(dataset, Segment.TEST) # 在测试集上预测第四步回测验证把预测信号和策略喂给BacktestingEngine。仓库自带的EquityDemoStrategyvnpy/alpha/strategy/strategies/equity_demo_strategy.py是一个完整的多头选股策略它每天按信号排序取前 50 只top_k持有剔除掉出局和不在指数成分里的股票再结合最小持有天数、手续费等约束做调仓——你完全可以拿它当模板改成自己的逻辑from vnpy.alpha.strategy import BacktestingEngine from vnpy.alpha.strategy.strategies import EquityDemoStrategy engine BacktestingEngine(lablab) 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()一条从数据到策略的 AI 选股流水线就这样闭环了。整个过程里你不需要碰任何行情接口和下单协议。进阶心法实践中的五条经验走过一遍完整流程后下面这几条是我认为最值钱的过来人经验经验具体做法因子用表达式别用循环因子计算基于 polars 表达式还能用运算符重载直接组合新因子比逐行 for 循环快几个数量级警惕数据泄露因子归一化必须在训练集上拟合参数验证/测试集只做转换——AlphaDataset的 infer/learn 双管线就是为此设计的回测要留预热期很多因子依赖长历史窗口如 60 日均线回测起点前至少要留出因子计算所需的历史数据否则前几天的信号是空的先让数据管理器跑起来自动化之前先用 UI 里的DataManagerApp手工确认数据入库、查询无误别让脏数据浪费你一次模型训练实盘与回测共用一套策略代码AlphaStrategy的回调设计on_init/on_bars/on_trade与 CTA 策略一脉相承回测通过后迁移到实盘的改动成本极低资源导航想深入的话这些路径足够你翻一阵子了官方文档docs/community/目录覆盖了从安装到各个应用模块的说明新手建议从introduction.md读起示例代码examples/下除了本文用到的还有 CTA 回测cta_backtesting/、组合回测portfolio_backtesting/、notebook 研究alpha_research/等现成模板核心源码事件引擎在vnpy/event/交易核心在vnpy/trader/AI 量化在vnpy/alpha/按需精读别一次啃完版本历史CHANGELOG.md记录了每个版本的演进能帮你理解框架设计决策的来龙去脉收束展望回看整个流程你会发现 vn.py 的价值不在于功能多而在于把交易系统里最难的部分——事件调度、网关对接、数据管线、回测框架——全部标准化了。你从从零写一个回测引擎的泥潭里解放出来把时间投向真正产生超额收益的地方因子研究、模型调优、风控设计。如果你正打算认真做量化我的建议很直接今天就把examples/no_ui/run.py跑起来读一遍vnpy/event/engine.py的 145 行代码。从理解一个事件引擎开始你离自己的第一个自动化交易系统其实只差这一步。【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考