Python 量化交易:最小技术栈与学习顺序
Python 量化交易需要的工具箱,比互联网暗示的小得多:一个数据处理库(pandas)、一个画图库(matplotlib)、一个行情数据来源,然后——在你亲手手写过一个均线、手写过一个玩具回测之后——才轮到一个正式的回测框架,比如 backtrader。书架上其余的东西都是可选的。这篇把 Python 量化交易的技术栈摊开、砍到最小,并给你一个正确的学习顺序。
快速答案:最小技术栈
| 层 | 工具 | 干什么 | 什么时候需要 |
|---|---|---|---|
| 数据处理 | pandas(底下是 NumPy) | 读取、清洗、对齐、计算行情表 | 第一天——地基 |
| 可视化 | matplotlib | 价格、收益、回撤曲线 | 第一天——会画基础图即可 |
| 数据来源 | 行情接口或平台自带数据 | 把价格和成交量拿进来 | 第一天 |
| 技术指标 | TA-Lib | 150+ 现成指标(RSI、MACD、布林带) | 手写过几个指标之后 |
| 回测框架 | backtrader / Zipline / QSTrader | 带成本的事件驱动策略检验 | 手写过玩具回测之后 |
| 衍生品定价 | QuantLib | 期权、债券、蒙特卡洛 | 多数人永远用不到 |
为什么量化都用 Python
诚实的答案有一段历史。上一代量化是在 MATLAB 里长大的——一个每年都要付真金白银 license 的数值环境。一位后来管理 200 亿美元衍生品敞口的交易员,2012 年自学 Python 的动机单纯得很:不再每年为那纸许可付大约两千美元。他后来把这笔账称为自己做过的最划算的交易。整个行业跟上的原因和个人一样:语法对新手友好、数据生态(pandas、NumPy)成熟、量化专用库丰富、社区活跃资料全,一门语言从头到尾覆盖量化交易从抓数据、回测到实盘的完整流程。
Python 也是事实上的"胶水语言":任何单项工作它未必最快,但它连接券商、交易所、数据库的速度无可匹敌。对散户量化交易来说,迭代速度比执行速度值钱。
地基中的地基:pandas
Python 量化交易里几乎所有的行情数据工作都是 pandas 工作。价格以表格形式到来——开高低收、成交量、按日期索引——而 pandas 正是为这种形状的问题而生的。两个最重要的结构:Series(一列数据,比如某只股票的收盘价序列)和 DataFrame(整张二维表)。值得你花练习时间的是那些不起眼但每天要用的硬功夫:筛选、分组、拼接、重采样、滚动窗口计算。一个能光靠 pandas 裸操作行情数据表的人,比一个装了五个框架的人走得远。
NumPy 在 pandas 底下负责高速数组运算——你会不断在别人的代码里遇到它,但"了解基本操作、用到再深入"就是正确的预算。matplotlib 的职责是逼你看实话:把价格序列、收益曲线、回撤曲线画出来,策略好坏一眼可见。会画折线图、加标题标注,就够日常用了。
正确的顺序:先懂原理,再用工具
让你远离"收藏一堆库却从不用"的顺序是这样的:
- 啃下 pandas,NumPy 顺带了解
- matplotlib 基础——先把数据画到屏幕上
- 手写指标——在调用 TA-Lib 之前,自己用 pandas 写一个均线、一个 RSI,让指标是你理解的公式,不是一个魔法数字
- 手写玩具回测——遍历历史数据、按信号模拟买卖、统计收益。十几行代码就能教会你每个框架到底在干什么
- 然后才引入 TA-Lib 提效、引入回测框架求真实——成本、成交、持仓记录,这些手写容易错的细节交给框架
这条线与学习路线那篇的项目梯子一致:下载行情数据、算一个指标、跑双均线回测、出一份绩效报告。这四样你都能用纯 Python 加 pandas 拼出来,任何库对你都不再是黑盒。
回测框架怎么选
走到第 5 步,认真的选项按取向分:
- backtrader——个人用户中最流行的开源选择:功能完整(策略定义、回测、绩效分析),社区大、资料多。学习期的理性默认项。
- Zipline——事件驱动引擎,曾驱动 Quantopian 平台。平台已停运,代码还活着;事件驱动的形态接近真实系统。
- QSTrader——为组合级真实感而建:滑点、费用、风险管理按机构标准处理。
- vn.py——国内开源框架,重心偏实盘交易而非研究;用户里有私募、券商自营、期货公司。上实盘时再捡起它,学习期不必。
国内量化交易还有一条完全不同的路:不装任何环境,直接用现成量化平台——聚宽这类在线平台把数据、回测、执行打包在浏览器里,QMT、PTrade 这类券商软件更是直接内置 Python 策略环境(写策略就是写 Python:import pandas、init/handlebar 的结构,和外面写法是同一门语言)。入门最大的门槛其实不是策略,而是搭环境——先用现成的跑通,再谈自建。在线平台的对比另有一篇(快了);而无论哪个引擎,让回测结果可信的那套纪律在回测那篇里——框架只在你要求时才算对成本。
小资金试水的老规矩也适用于此:几百块买一手便宜稳定的 ETF,手动交易熟悉流程,挂机跑个简单策略,晚上复盘调整——六阶段路线图里摆好了完整的序列。
两个走偏的方式
工具收集癖。 装上 pandas、TA-Lib、三个回测框架、一个数据库,然后一行策略都没写。上面的栈是刻意最小的——每一层都必须在上一层用起来之后才挣得自己的位置。
框架当黑盒。 什么都没手写就直奔框架。于是框架替你决定了你从没想过的事(成交逻辑、成本计入的时点),它的输出获得了不应有的权威。先手写、再采用——这是这个栈里每一层都通用的原则。
常见问题
Python 要学到多深?
深到能不靠帮忙用 pandas 裸操作一张行情表——读取、清洗、筛选、重采样、算一个滚动指标、画出一张图。这条"够用线"在学习路线那篇里划定并论证过。面向对象的魔法不在清单上。
新手选哪个回测框架?
backtrader——为社区和完整度;或者你在用的平台内置的那个,零安装成本。Zipline 和 QSTrader 以后再回报你;vn.py 在上实盘时回报你。出现具体需求再换引擎,不要提前换。
必须学 Python 吗?
不是。带内置策略编辑器的平台、你已经在用的券商软件,都接受更简单的语言或图形化规则。但 Python 是量化交易这个领域生态最广的语言,而且到处通用:同一份代码能读懂论文里的方法、把它回测、再连上券商。那位每年两千美元 MATLAB 许可费换 Python 的从业者,做成的是整个行业最终都做了的同款交易。
量化交易的工具层被 Python 赢下,靠的是把整条流水线——数据、测试、执行——收进一门语言。保持栈最小、按顺序学、先手写再采用,这门语言就会一直是它该有的样子:你整个量化交易系统里最便宜的部分。剩下的流程,专集首页一直留着。