Python 量化交易:最小技术栈与学习顺序

Python 量化交易需要的工具箱,比互联网暗示的小得多:一个数据处理库(pandas)、一个画图库(matplotlib)、一个行情数据来源,然后——在你亲手手写过一个均线、手写过一个玩具回测之后——才轮到一个正式的回测框架,比如 backtrader。书架上其余的东西都是可选的。这篇把 Python 量化交易的技术栈摊开、砍到最小,并给你一个正确的学习顺序。

快速答案:最小技术栈

工具干什么什么时候需要
数据处理pandas(底下是 NumPy)读取、清洗、对齐、计算行情表第一天——地基
可视化matplotlib价格、收益、回撤曲线第一天——会画基础图即可
数据来源行情接口或平台自带数据把价格和成交量拿进来第一天
技术指标TA-Lib150+ 现成指标(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 的职责是逼你看实话:把价格序列、收益曲线、回撤曲线画出来,策略好坏一眼可见。会画折线图、加标题标注,就够日常用了。

正确的顺序:先懂原理,再用工具

让你远离"收藏一堆库却从不用"的顺序是这样的:

  1. 啃下 pandas,NumPy 顺带了解
  2. matplotlib 基础——先把数据画到屏幕上
  3. 手写指标——在调用 TA-Lib 之前,自己用 pandas 写一个均线、一个 RSI,让指标是你理解的公式,不是一个魔法数字
  4. 手写玩具回测——遍历历史数据、按信号模拟买卖、统计收益。十几行代码就能教会你每个框架到底在干什么
  5. 然后才引入 TA-Lib 提效、引入回测框架求真实——成本、成交、持仓记录,这些手写容易错的细节交给框架

这条线与学习路线那篇的项目梯子一致:下载行情数据、算一个指标、跑双均线回测、出一份绩效报告。这四样你都能用纯 Python 加 pandas 拼出来,任何库对你都不再是黑盒。

回测框架怎么选

走到第 5 步,认真的选项按取向分:

  • backtrader——个人用户中最流行的开源选择:功能完整(策略定义、回测、绩效分析),社区大、资料多。学习期的理性默认项。
  • Zipline——事件驱动引擎,曾驱动 Quantopian 平台。平台已停运,代码还活着;事件驱动的形态接近真实系统。
  • QSTrader——为组合级真实感而建:滑点、费用、风险管理按机构标准处理。
  • vn.py——国内开源框架,重心偏实盘交易而非研究;用户里有私募、券商自营、期货公司。上实盘时再捡起它,学习期不必。

国内量化交易还有一条完全不同的路:不装任何环境,直接用现成量化平台——聚宽这类在线平台把数据、回测、执行打包在浏览器里,QMT、PTrade 这类券商软件更是直接内置 Python 策略环境(写策略就是写 Python:import pandasinit/handlebar 的结构,和外面写法是同一门语言)。入门最大的门槛其实不是策略,而是搭环境——先用现成的跑通,再谈自建。在线平台的对比另有一篇(快了);而无论哪个引擎,让回测结果可信的那套纪律在回测那篇里——框架只在你要求时才算对成本。

小资金试水的老规矩也适用于此:几百块买一手便宜稳定的 ETF,手动交易熟悉流程,挂机跑个简单策略,晚上复盘调整——六阶段路线图里摆好了完整的序列。

两个走偏的方式

工具收集癖。 装上 pandas、TA-Lib、三个回测框架、一个数据库,然后一行策略都没写。上面的栈是刻意最小的——每一层都必须在上一层用起来之后才挣得自己的位置。

框架当黑盒。 什么都没手写就直奔框架。于是框架替你决定了你从没想过的事(成交逻辑、成本计入的时点),它的输出获得了不应有的权威。先手写、再采用——这是这个栈里每一层都通用的原则。

常见问题

Python 要学到多深?

深到能不靠帮忙用 pandas 裸操作一张行情表——读取、清洗、筛选、重采样、算一个滚动指标、画出一张图。这条"够用线"在学习路线那篇里划定并论证过。面向对象的魔法不在清单上。

新手选哪个回测框架?

backtrader——为社区和完整度;或者你在用的平台内置的那个,零安装成本。Zipline 和 QSTrader 以后再回报你;vn.py 在上实盘时回报你。出现具体需求再换引擎,不要提前换。

必须学 Python 吗?

不是。带内置策略编辑器的平台、你已经在用的券商软件,都接受更简单的语言或图形化规则。但 Python 是量化交易这个领域生态最广的语言,而且到处通用:同一份代码能读懂论文里的方法、把它回测、再连上券商。那位每年两千美元 MATLAB 许可费换 Python 的从业者,做成的是整个行业最终都做了的同款交易。

量化交易的工具层被 Python 赢下,靠的是把整条流水线——数据、测试、执行——收进一门语言。保持栈最小、按顺序学、先手写再采用,这门语言就会一直是它该有的样子:你整个量化交易系统里最便宜的部分。剩下的流程,专集首页一直留着。