第一章 量化投资生态系统:数据源、回测平台与执行平台
各位同学,欢迎来到《量化选股模型搭建全流程实战》的第一章。
做量化投资,说白了就是三件事:拿数据、做回测、下订单。这三件事分别对应着三个核心环节——数据源、回测平台、执行平台。今天我们就来拆解这个生态系统。
我个人习惯把量化投资的工具链比作「厨房」:数据源是食材,回测平台是灶台,执行平台是端菜上桌的服务员。缺了哪一环,这顿饭都做不成。
1.1 数据源:量化投资的「米」
没有数据,量化就是空中楼阁。我见过不少新手一上来就写策略,结果发现数据对不上,白忙活一周。嗯,这里要注意:数据质量直接决定策略的生死。
目前国内主流的数据源,我整理了一张表:
| 数据源 | 类型 | 费用 | 适合场景 |
|---|---|---|---|
| Tushare | 开源/社区版 | 免费+积分制 | 个人研究、小规模回测 |
| Wind | 商业终端 | 年费数万 | 机构级、高频、全品种 |
| 聚宽(JoinQuant) | 云端平台 | 免费+付费 | 在线回测、策略分享 |
| RiceQuant | 云端平台 | 免费+付费 | 在线回测、期货期权 |
| AKShare | 开源免费 | 免费 | A股、期货、宏观数据 |
你可能会问:「这么多数据源,我该选哪个?」
我的建议是:个人研究阶段,Tushare 或 AKShare 足够用。我在项目中遇到过用 Tushare 拉取日线数据,配合本地 MySQL 存储,跑一个多因子模型完全没问题。但如果你要做高频交易,Wind 的实时数据接口是绕不开的。
1.2 回测平台:策略的「试金石」
数据拿到手,下一步就是验证策略好不好用。回测平台就是干这个的。
目前最流行的两个开源回测框架是 Backtrader 和 Zipline。我个人的经验是:
- Backtrader:上手快,文档全,适合做股票、期货的日线级别回测。我最早用 Backtrader 写了一个「双均线策略」,从数据加载到绩效报告,不到 200 行代码。
- Zipline:Quantopian 出品,支持分钟级数据,适合做事件驱动策略。但安装依赖比较麻烦,我曾在 Ubuntu 上折腾了一下午才跑通。
来看一个 Backtrader 的简单示例:
import backtrader as bt
class MyStrategy(bt.Strategy):
def __init__(self):
self.sma = bt.indicators.SimpleMovingAverage(self.data.close, period=15)
def next(self):
if self.data.close[0] > self.sma[0]:
self.buy()
elif self.data.close[0] < self.sma[0]:
self.sell()
cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)
# 加载数据、设置初始资金...
cerebro.run()
你看,核心逻辑就这么几行。但要注意:回测不是万能的。我曾经在回测中跑出年化 50% 的策略,实盘一跑就亏。为什么?因为回测忽略了滑点、手续费、流动性这些现实因素。
1.3 执行平台:从策略到真金白银
策略回测通过后,就要考虑怎么把信号变成真实的交易。这就是执行平台的工作。
国内主流的券商 API 包括:
- 华泰 xtquant:支持 Python 直接调用,速度不错
- 国信 iQuant:提供 C++ 和 Python 接口
- 中泰 XTP:极速交易,适合高频
- 聚宽投研版:自带执行模块,省心
我个人建议:新手先从聚宽或华泰的 API 入手。为什么?因为文档清晰,社区活跃,遇到问题能快速找到答案。我当年第一次对接券商 API,选的是华泰,花了三天时间才把「下单-撤单-查询持仓」这个循环跑通。嗯,那三天我几乎没睡觉。
执行平台的核心能力,说白了就三个:
- 下单速度:从信号产生到订单发出,延迟越低越好
- 订单管理:支持限价单、市价单、止损单等
- 风控检查:资金不足、持仓超限等自动拦截
1.4 知识体系总览
为了让你更直观地理解这三者的关系,我画了一张框架图:
这张图我画了好几次才满意。你看,从左到右,数据源提供「原材料」,回测平台负责「试菜」,执行平台负责「上菜」。每一步都有坑,每一步也都有技巧。
好了,第一章的内容就到这里。记住:工具只是手段,策略才是核心。下一章我们会深入数据源,手把手教你用 Tushare 拉取数据并清洗。