3. 环境搭建与工具链:Python环境配置、Anaconda与Jupyter、常用库安装
做量化交易,说白了就是跟数据打交道。而Python,就是咱们手里最趁手的工具。这一章,咱们把环境搭好,后面写策略、跑回测才能顺风顺水。
我个人习惯,做量化项目一定用Anaconda。为什么?因为它把Python、包管理器、还有Jupyter Notebook都打包好了。你想想看,要是手动装Python再一个个装库,光是版本冲突就能折腾半天。我刚开始做回测那会儿,就吃过这个亏——pandas版本不对,回测结果全是错的,排查了两天才发现是库版本的问题。
3.1 为什么选Anaconda?
Anaconda是一个Python发行版,它自带conda包管理器。conda比pip强在哪?它能管理非Python的依赖。比如你装numpy,它底层依赖的BLAS、LAPACK这些C库,conda能一并搞定。pip有时候就搞不定这些。
还有一个好处——环境隔离。做量化交易,你可能同时维护好几个策略。有的策略用pandas 1.0,有的用2.0。用conda创建虚拟环境,互不干扰。我曾经因为没做环境隔离,一个策略升级了库,另一个策略直接跑崩了。从那以后,每个项目我都单独建环境。
3.2 安装Anaconda
去官网下载对应系统的安装包。Windows用户注意,安装时勾选「Add Anaconda to my PATH environment variable」。虽然安装程序会提醒你不推荐,但我建议勾上。不然每次都要手动激活环境,很烦。
安装完成后,打开终端(Windows用Anaconda Prompt),输入:
conda --version
能看到版本号,说明装好了。嗯,这里要注意:如果提示找不到命令,八成是PATH没配好。重新安装,勾上那个选项就行。
3.3 创建虚拟环境
我个人习惯,每个量化项目都建一个独立环境。比如咱们这个课程,就叫它quant_env:
conda create -n quant_env python=3.9
Python版本我选3.9。为什么不是最新的3.12?因为有些量化库对最新Python支持还不完善。3.9是个稳妥的选择,大部分库都兼容。
激活环境:
conda activate quant_env
看到命令行前面多了(quant_env),说明环境激活成功。退出环境用conda deactivate。
conda info --envs 可以查看所有环境列表。用 conda remove -n quant_env --all 可以删除环境。
3.4 安装Jupyter Notebook
Jupyter Notebook是量化交易的神器。你可以边写代码边看结果,还能加注释、画图表。回测结果直接可视化,比在终端里看数字直观多了。
安装:
conda install jupyter
启动:
jupyter notebook
浏览器会自动打开一个页面。如果没打开,复制终端里显示的URL到浏览器就行。默认端口是8888,如果被占用了,Jupyter会自动换端口。
我个人习惯,在项目根目录启动Jupyter。这样所有文件都在同一个工作目录下,导入数据、保存结果都方便。
3.5 安装常用库
量化交易最常用的四个库:pandas、numpy、matplotlib、ccxt。咱们一个一个来。
3.5.1 pandas
pandas是数据处理的核心。K线数据、订单簿、交易记录,全用DataFrame来存。安装:
conda install pandas
验证:
python -c "import pandas; print(pandas.__version__)"
能打印出版本号就行。我建议装1.5.x版本,稳定。2.0版本改动较大,有些旧代码可能不兼容。
3.5.2 numpy
numpy做数值计算。pandas底层也依赖它。安装:
conda install numpy
验证:
python -c "import numpy; print(numpy.__version__)"
3.5.3 matplotlib
画图用的。回测结果可视化,K线图、资金曲线、回撤图,全靠它。安装:
conda install matplotlib
验证:
python -c "import matplotlib; print(matplotlib.__version__)"
%matplotlib inline。不然图不会显示在Notebook里。我刚开始用Jupyter时,画了半天图看不到,还以为代码写错了。
3.5.4 ccxt
ccxt是连接交易所的库。支持100多家交易所,API统一。做量化交易,拿行情数据、下单交易,都靠它。安装:
pip install ccxt
为什么用pip?因为conda上ccxt的版本更新慢。ccxt更新频繁,交易所API一变,它就得跟着改。用pip能装到最新版。
验证:
python -c "import ccxt; print(ccxt.__version__)"
3.6 环境验证
装完所有库,咱们写个小脚本验证一下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import ccxt
print("pandas:", pd.__version__)
print("numpy:", np.__version__)
print("matplotlib:", plt.matplotlib.__version__)
print("ccxt:", ccxt.__version__)
# 生成随机数据测试
data = np.random.randn(100)
df = pd.DataFrame(data, columns=['price'])
df['ma'] = df['price'].rolling(10).mean()
plt.plot(df['price'], label='price')
plt.plot(df['ma'], label='MA10')
plt.legend()
plt.show()
print("环境搭建完成!")
能正常运行,说明环境没问题。如果报错,检查哪个库没装好。
3.7 知识体系总览
下面这张图,把咱们这一章的核心逻辑串起来了:
3.8 避坑指南
环境搭建看着简单,但坑不少。我把自己踩过的坑列出来,你遇到了直接对照:
- Python版本冲突: 我曾经在同一个环境里装了pandas 1.5和2.0,结果DataFrame的API对不上,回测结果全乱套。记住:一个环境一个版本,别混装。
- ccxt安装失败: 如果pip安装ccxt报错,八成是网络问题。换国内镜像源:
pip install ccxt -i https://pypi.tuna.tsinghua.edu.cn/simple - Jupyter内核问题: 在虚拟环境里启动Jupyter,但内核还是base环境的。解决办法:在虚拟环境里装
ipykernel,然后python -m ipykernel install --user --name quant_env - matplotlib中文乱码: 画图时中文显示成方框。加两行代码:
plt.rcParams['font.sans-serif'] = ['SimHei']和plt.rcParams['axes.unicode_minus'] = False
好了,环境搭好了。下一章咱们开始拿真实行情数据,写第一个做市策略的回测。工具都准备好了,剩下的就是干活。
公众号:蓝海资料掘金营,微信deep3321