3. 环境搭建与工具链:Python环境配置、依赖库安装、项目目录结构设计
做量化回测,说白了就是跟数据打交道。而Python,就是我们手里最顺手的工具。这一章,咱们把环境搭好,后面写代码才不卡壳。
我个人习惯,每个项目都用一个独立的虚拟环境。为什么?因为不同项目依赖的库版本可能打架。你想想看,A项目用Pandas 1.3,B项目用Pandas 2.0,混在一起迟早出问题。我早期吃过这个亏,一个回测脚本跑着跑着报错,查了半天发现是NumPy版本冲突。从那以后,虚拟环境就成了我的铁律。
3.1 Python版本选择与安装
做市商策略对性能有一定要求,我建议用Python 3.9或3.10。这两个版本稳定,而且主流库都支持得很好。别追新,Python 3.12刚出的时候,有些库还没适配,你装上去可能跑不起来。
安装方式很简单:
- Windows用户:去python.org下载安装包,记得勾选「Add Python to PATH」
- Mac用户:用Homebrew,
brew install python@3.10 - Linux用户:系统自带的Python一般够用,但版本可能偏旧,建议用
pyenv管理多版本
python --version 确认一下。如果显示的是3.x,那就对了。
3.2 虚拟环境:隔离是美德
虚拟环境就像每个项目的「独立小房间」。你在里面装什么库,都不会影响到外面的系统。
我常用的方式有两种:
- venv(Python自带,轻量)
- conda(适合数据科学,管理更方便)
这里我用venv演示,因为它不需要额外安装:
# 创建虚拟环境
python -m venv mm_env
# 激活环境(Windows)
mm_env\Scripts\activate
# 激活环境(Mac/Linux)
source mm_env/bin/activate
# 退出环境
deactivate
激活后,你会看到终端前面多了个 (mm_env) 前缀。嗯,看到这个就说明你已经在虚拟环境里了。
3.3 依赖库安装:Pandas、NumPy、Matplotlib
做市商回测,离不开这三个库:
| 库名 | 用途 | 安装命令 |
|---|---|---|
| Pandas | 数据处理、时间序列、DataFrame操作 | pip install pandas |
| NumPy | 数值计算、数组操作、随机数生成 | pip install numpy |
| Matplotlib | 数据可视化、绘制K线图、回测曲线 | pip install matplotlib |
安装时,我习惯一次性装好:
pip install pandas numpy matplotlib
等个一两分钟,看到「Successfully installed」就说明搞定了。你可以验证一下:
python -c "import pandas; print(pandas.__version__)"
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
3.4 项目目录结构设计
一个好的目录结构,能让你的回测项目清晰、可维护。我见过太多人把所有代码塞在一个文件里,最后自己都找不着北。
下面是我做市商回测项目的标准结构:
market_making_backtest/
│
├── data/ # 原始数据存放
│ ├── raw/ # 未处理的数据
│ └── processed/ # 清洗后的数据
│
├── src/ # 核心代码
│ ├── __init__.py
│ ├── data_loader.py # 数据加载模块
│ ├── strategy.py # 做市商策略逻辑
│ ├── backtest.py # 回测引擎
│ └── metrics.py # 绩效指标计算
│
├── results/ # 回测结果输出
│ ├── logs/ # 运行日志
│ └── figures/ # 图表保存
│
├── config/ # 配置文件
│ └── config.yaml # 策略参数配置
│
├── notebooks/ # Jupyter Notebook 探索
│ └── exploration.ipynb
│
├── requirements.txt # 依赖清单
└── README.md # 项目说明
这个结构的好处是:
- 数据与代码分离:数据放在
data/,代码放在src/,互不干扰 - 配置独立:参数写在
config.yaml里,改参数不用改代码 - 结果可追溯:每次回测的结果都保存在
results/下,方便对比
我曾经有个项目,因为目录混乱,回测结果覆盖了之前的,导致我花了三天重新跑数据。嗯,从那以后,目录结构就成了我第一个要敲定的东西。
3.5 知识体系总览
下面这张图,帮你把本章的核心逻辑串起来:
3.6 验证环境是否就绪
装完所有东西后,我习惯跑一个简单的测试脚本,确认一切正常:
# test_env.py
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 生成模拟数据
dates = pd.date_range('2024-01-01', periods=100, freq='1min')
prices = np.random.randn(100).cumsum() + 100
# 创建DataFrame
df = pd.DataFrame({'time': dates, 'price': prices})
print(df.head())
# 简单绘图
plt.plot(df['time'], df['price'])
plt.title('Environment Test - Random Walk')
plt.show()
如果能看到一个折线图弹出来,恭喜你,环境搭建成功了!
plt.rcParams['font.sans-serif'] = ['SimHei']。Windows用户一般没这个问题。
好了,环境搭好了,工具链也齐了。接下来,我们就可以真正开始写做市商策略的回测代码了。