第三讲:Python环境与依赖库——搭建你的量化研究工坊
做统计套利,说白了就是跟数据打交道。而Python环境,就是你的工作台。
我见过太多人,一上来就pip install一堆包,结果版本冲突、依赖报错,折腾半天还没开始写代码。嗯,这其实完全可以避免。今天我就带你一步步搭好这个环境,保证后面写策略的时候,一路顺畅。
3.1 为什么选Anaconda?
你可能听说过Python自带的venv,或者直接用系统Python。我个人习惯用Anaconda,原因很简单——省心。
Anaconda自带了一个包管理器叫conda,它比pip强在哪?它能帮你处理底层依赖,比如numpy依赖的BLAS库、statsmodels依赖的C扩展。这些用pip装,有时候会报一些莫名其妙的错。conda直接给你装好二进制包,省去编译的麻烦。
另外,Anaconda还自带了一个叫Navigator的图形界面。虽然我平时用命令行,但对新手来说,点几下鼠标就能创建环境,确实友好。
3.2 安装Anaconda
去官网下载对应系统的安装包。Windows用户记得选64位版本。安装时有个坑——一定要勾选「Add Anaconda to my PATH environment variable」。我刚开始没勾,后面每次都要手动找conda命令,烦得很。
装完后,打开终端(Windows用Anaconda Prompt),输入:
conda --version
如果看到版本号,说明装好了。没看到?检查一下环境变量,或者重启终端试试。
3.3 创建虚拟环境
为什么要用虚拟环境?你想想看,不同项目可能依赖不同版本的pandas。A项目用1.3.0,B项目用2.0.0。混在一起,迟早出问题。
我一般这样创建:
conda create -n statarb python=3.9
这里statarb是环境名,你可以改成自己喜欢的。Python版本我选3.9,因为3.10以上有些量化库还没完全适配。当然,现在2025年了,3.11也稳了,但3.9最保险。
创建完,激活它:
conda activate statarb
你会看到终端前面多了个(statarb),说明你已经在虚拟环境里了。这时候你装任何包,都不会影响系统Python。
3.4 核心库安装
好,环境有了,现在装核心库。统计套利回测,离不开这几个库:
| 库名 | 用途 | 安装命令 |
|---|---|---|
| pandas | 数据处理、时间序列操作 | conda install pandas |
| numpy | 数值计算、矩阵运算 | conda install numpy |
| statsmodels | 统计模型、协整检验、OLS回归 | conda install statsmodels |
| scipy | 科学计算、优化算法 | conda install scipy |
| matplotlib | 基础绘图 | conda install matplotlib |
| seaborn | 统计图表美化 | conda install seaborn |
你可以一次性装完:
conda install pandas numpy statsmodels scipy matplotlib seaborn
conda会自动解析依赖关系,找到兼容的版本。这个过程可能需要几分钟,别急。
装完后,验证一下:
python -c "import pandas; print(pandas.__version__)"
如果没报错,说明装好了。
3.5 依赖库的版本选择
你可能想问:版本是不是越新越好?不一定。量化回测讲究可复现。你今天用pandas 2.1.0写的策略,半年后pandas升级到2.5.0,某个函数行为变了,回测结果对不上,那就尴尬了。
我一般会固定版本号。比如:
conda install pandas=1.5.3 numpy=1.24.3 statsmodels=0.14.0
这样,不管什么时候重装环境,版本都一样。你也可以把依赖写到一个requirements.txt里:
pandas==1.5.3
numpy==1.24.3
statsmodels==0.14.0
scipy==1.10.1
matplotlib==3.7.1
seaborn==0.12.2
然后用:
conda install --file requirements.txt
一键安装,省心省力。
3.6 环境导出与复制
环境搭好了,怎么分享给同事?或者换电脑时怎么迁移?
导出当前环境:
conda env export > environment.yml
这个yml文件记录了所有包及其版本。别人拿到后,直接:
conda env create -f environment.yml
就能复刻一个一模一样的环境。注意,这个文件会包含一些系统相关的包,比如openssl、libffi。跨平台(比如Windows到Mac)可能会有问题。这时候可以用:
conda env export --from-history > environment.yml
它只记录你手动安装的包,跨平台兼容性更好。
3.7 知识体系总览
说了这么多,我画了一张图,帮你理清整个环境搭建的逻辑:
这张图把整个流程串起来了。从Anaconda出发,创建虚拟环境,然后装核心库,最后用版本管理工具固定环境。每一步都踩过坑,才总结出这个流程。
3.8 验证环境是否可用
装完别急着关终端。写个简单脚本,验证所有库都能正常导入:
import pandas as pd
import numpy as np
import statsmodels.api as sm
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
print("所有库导入成功!")
print(f"pandas版本: {pd.__version__}")
print(f"numpy版本: {np.__version__}")
print(f"statsmodels版本: {sm.__version__}")
如果没报错,恭喜你,环境搭好了。如果报错,多半是版本冲突。这时候别慌,用conda list看看已安装的包,找到冲突的包,重新装一个兼容版本就行。
好了,环境搭好了,后面就可以安心写策略了。记住,环境是地基,地基稳了,楼才能盖得高。
公众号:蓝海资料掘金营,微信deep3321