第1章:工欲善其事,必先利其器
做量化交易,尤其是配对交易,说白了就是和数据打交道。你想想看,没有趁手的工具,再好的策略也跑不起来。这一章,我就带你把环境搭好,后面写代码、跑回测才能顺风顺水。
我个人习惯用 Anaconda 来管理 Python 环境。为什么?因为它把 Python 解释器、常用库、还有 Jupyter Notebook 都打包好了。你不需要一个个去装,省心很多。我记得刚入行那会儿,还在手动装各种依赖库,装到崩溃。后来用了 Anaconda,真香。
1.1 安装 Anaconda
去 Anaconda 官网下载对应你操作系统的安装包。Windows、macOS、Linux 都有。我建议下载 Python 3.9 或 3.10 版本的,太新的版本有些库可能还没适配好。
安装过程很简单,一路点「Next」就行。但有一个坑,我必须要提醒你:
安装完成后,打开终端(Windows 下是 Anaconda Prompt),输入:
conda --version
如果能看到版本号,比如 conda 23.7.4,那就说明装好了。
1.2 配置 Jupyter Notebook
Jupyter Notebook 是我们写策略、做分析的主力工具。它最大的好处是能边写代码边看结果,特别适合探索性分析。
启动 Jupyter Notebook 很简单,在终端输入:
jupyter notebook
浏览器会自动打开一个页面,默认地址是 http://localhost:8888。你可以在里面新建文件夹、新建 Notebook 文件(后缀是 .ipynb)。
我个人习惯在桌面上建一个叫 pair_trading 的文件夹,专门放这个课程的所有代码和数据。这样好管理。
jupyterthemes 的库。装完之后可以换主题、改字体大小。我用的就是暗色主题,盯盘久了眼睛没那么累。
1.3 安装必备库
做配对交易,有几个库是绕不开的。我把它们列出来,你照着装就行。
| 库名 | 用途 | 安装命令 |
|---|---|---|
| pandas | 数据处理,尤其是时间序列数据 | conda install pandas |
| numpy | 数值计算,矩阵运算 | conda install numpy |
| statsmodels | 统计建模,协整检验、回归分析 | conda install statsmodels |
| matplotlib | 数据可视化,画图 | conda install matplotlib |
你可以一次性装完:
conda install pandas numpy statsmodels matplotlib
装完之后,我建议你写个小脚本测试一下,看看能不能正常导入:
import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
print("所有库导入成功!")
print(f"pandas 版本: {pd.__version__}")
print(f"numpy 版本: {np.__version__}")
如果没报错,那就说明环境搭好了。嗯,这里要注意一点:statsmodels 的导入可能会有点慢,尤其是第一次。别急,等几秒就好。
1.4 本章知识体系
为了让你对整个环境搭建有个全局认识,我画了一张图。你看一眼就明白了。
这张图把整个环境搭建的逻辑串起来了。最上层是 Anaconda,它提供了平台。中间是 Jupyter Notebook 和 Python 解释器,一个负责交互式编程,一个负责执行代码。最底层是四个核心库,它们各司其职,共同构成了配对交易策略的技术基础。
1.5 避坑指南
环境搭建看起来简单,但我在项目里遇到过不少问题。挑几个常见的跟你说说:
- conda 命令找不到:多半是安装时没勾 PATH 选项。解决办法是手动把 Anaconda 的 Scripts 目录加到系统环境变量里。
- Jupyter Notebook 打不开:试试在终端里输入
jupyter notebook --no-browser,然后手动复制链接到浏览器。 - 库版本冲突:我曾经因为装了太新的 pandas,导致 statsmodels 报错。建议用 conda 安装,它会自动处理依赖关系。
- Anaconda 是 Python 环境管理的瑞士军刀
- Jupyter Notebook 是策略开发的首选 IDE
- pandas + numpy + statsmodels + matplotlib 是配对交易的四大金刚
- 遇到问题先检查版本兼容性,别盲目升级
好了,环境搭好了,后面我们就可以开始写真正的策略代码了。别急,先把这一步走稳,后面才能跑得快。