2、回测环境搭建:Python环境配置、常用库安装、数据源准备

做市商策略的回测,说白了就是拿历史数据来检验你的策略到底行不行。这一步要是环境没搭好,后面全是白忙活。我见过不少新手,代码写了一半发现库版本冲突,或者数据格式不对,心态直接崩了。今天咱们就把这地基打牢。

2.1 Python环境配置

我个人习惯用 Anaconda 来管理 Python 环境。为什么?因为它自带了一堆科学计算库,省得你一个个去装。而且虚拟环境隔离得好,不同项目之间不会打架。

具体步骤很简单:

  1. 去 Anaconda 官网下载对应系统的安装包(Python 3.9+ 版本)
  2. 一路默认安装,记得勾选「Add Anaconda to my PATH environment variable」
  3. 打开终端或 Anaconda Prompt,输入 conda --version 验证安装

嗯,这里要注意:千万别用系统自带的 Python,尤其是 macOS 和 Linux 用户。我曾经有一次直接用系统 Python 装包,结果把系统依赖搞坏了,重装了系统才解决。所以,老老实实用虚拟环境吧。

我的小技巧: 创建一个专门用于回测的环境,命令如下:
conda create -n backtest python=3.9
conda activate backtest
这样你的回测环境就和日常开发环境隔离开了,想怎么折腾都行。

2.2 常用库安装

做市商回测离不开几个核心库。我按重要程度排个序,你照着装就行。

2.2.1 pandas —— 数据处理的核心

pandas 是回测的基石。数据清洗、对齐、计算指标,全靠它。安装命令:

pip install pandas

我个人习惯用 pd.DataFrame 来存储行情数据,时间序列索引一定要设置好。你想想看,如果时间戳不对齐,回测结果就是一堆垃圾。

2.2.2 numpy —— 数值计算加速器

numpy 提供高效的数组运算。做市商策略里,计算买卖价差、库存变化,这些操作如果用纯 Python 循环,慢得你想哭。numpy 的向量化操作能快几十倍。

pip install numpy

2.2.3 matplotlib —— 可视化利器

回测结果光看数字没感觉,画成图才直观。资金曲线、回撤、成交分布,一张图胜过千言万语。

pip install matplotlib

我建议你顺便装个 seaborn,它的配色更专业,画出来的图可以直接放到报告里。

2.2.4 backtrader —— 回测框架

backtrader 是 Python 生态里最成熟的回测框架之一。它支持多数据源、多策略、佣金模型,而且社区活跃。安装命令:

pip install backtrader
避坑指南: 我曾经遇到过 backtrader 和 matplotlib 版本不兼容的问题,回测结果死活画不出来。解决办法是固定版本:pip install backtrader==1.9.78.123。如果你用最新版,记得先查一下兼容性。

2.3 数据源准备

做市商回测对数据要求很高。你需要的是 tick 级数据 或者至少是 1 秒级快照数据。日线数据?那玩意儿做不了做市商策略,因为做市商赚的是买卖价差和流动性返佣,这些在日线里根本看不到。

2.3.1 数据来源

数据源 特点 适用场景
交易所 API(如 Binance、OKX) 实时、准确,但需要自己存历史数据 专业做市商
第三方数据商(如 QuantConnect、Polygon) 清洗好的历史数据,付费 个人研究
开源数据集(如 Kaggle 上的加密货币 tick 数据) 免费,但质量参差不齐 学习测试

我个人建议:刚开始用开源数据集练手,等策略成熟了再接入交易所的真实数据。别一上来就搞实时数据,调试起来太痛苦了。

2.3.2 数据格式

做市商回测的标准数据格式是这样的:

timestamp, bid_price, bid_size, ask_price, ask_size, last_price, volume
2024-01-01 09:30:00.123, 100.01, 1000, 100.02, 1500, 100.015, 50000
2024-01-01 09:30:00.456, 100.01, 800, 100.02, 1200, 100.020, 52000

注意:时间戳精度要到毫秒级,否则你无法准确模拟订单簿的变化。我见过有人用秒级数据回测,结果策略在实盘里完全失效,就是因为错过了中间的价格波动。

2.3.3 数据预处理

拿到原始数据后,别急着用。先做这几步:

  • 去重: 同一个时间戳出现多条记录,保留第一条或最后一条
  • 排序: 按时间戳升序排列
  • 填充缺失值: 如果某毫秒没有数据,用前一条数据填充(做市商策略里,缺失数据意味着没有流动性,不能随便插值)
  • 检查异常值: 比如价格突然跳了 10%,可能是数据错误,也可能是真实事件,需要人工判断
核心要点: 数据质量决定了回测的可信度。垃圾数据进,垃圾结果出。我花在数据清洗上的时间,通常比写策略代码还多。别嫌麻烦,这一步省不了。

2.4 知识体系总览

下面这张图帮你理清本章的知识结构:

回测环境搭建知识体系 Python环境配置 常用库安装 数据源准备 Anaconda + 虚拟环境 Python 3.9+ 版本选择 pandas / numpy matplotlib / backtrader tick级/秒级数据 数据清洗与预处理 目标:搭建一个稳定、可复现的回测环境

说白了,环境搭建就这三块:Python 环境是地基,常用库是工具,数据源是原材料。三者缺一不可。我刚开始做回测时,光装库就折腾了两天,后来发现是网络问题。所以,如果你在国内,建议用清华镜像源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名,速度能快不少。

最后提醒一句: 每次装完新库,记得用 conda listpip freeze 导出环境列表。这样换机器或者重装系统时,一条命令就能恢复所有依赖。我吃过这个亏,重装后忘了之前装过哪些版本,结果回测结果对不上了。

公众号:蓝海资料掘金营,微信deep3321