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后,在终端输入 python --version 确认一下。如果显示的是3.x,那就对了。

3.2 虚拟环境:隔离是美德

虚拟环境就像每个项目的「独立小房间」。你在里面装什么库,都不会影响到外面的系统。

我常用的方式有两种:

  1. venv(Python自带,轻量)
  2. 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下载可能很慢。可以换成国内镜像源,比如清华的: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 知识体系总览

下面这张图,帮你把本章的核心逻辑串起来:

环境搭建与工具链 - 知识体系 Python环境 版本选择 · 虚拟环境 依赖库安装 Pandas · NumPy · Matplotlib 项目目录结构 数据 · 代码 · 配置 · 结果 Python 3.9/3.10 venv/conda 数据处理 数值计算 data/ src/ 核心目标:可复现、可维护、可扩展 环境隔离 + 依赖明确 + 结构清晰 = 高效开发

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()

如果能看到一个折线图弹出来,恭喜你,环境搭建成功了!

避坑指南:我曾经在Mac上遇到Matplotlib中文乱码的问题。解决方案是设置中文字体:plt.rcParams['font.sans-serif'] = ['SimHei']。Windows用户一般没这个问题。

好了,环境搭好了,工具链也齐了。接下来,我们就可以真正开始写做市商策略的回测代码了。

专注资料整理