2. 开发环境搭建
说实话,做量化调优的第一步往往不是调参数,而是先把环境弄明白。我记得自己刚入行那会儿,为了省事直接在系统 Python 里装了一堆包,结果半年后项目换机器,依赖全崩了。嗯,从那以后我再也不敢跳过环境隔离这一步。这一节就把我这些年踩过的坑告诉你,照着来就行。
Python 版本怎么选?
我个人习惯用 Python 3.11 或更高版本。为什么?3.11 在性能和错误提示上改进很大,尤其是面向量化的场景下,循环和数学操作都快了不少。3.10 也能用,但 3.12 有些库暂时还没完全兼容,所以 3.11 是当前最稳的选择。
你可以在终端里跑一下:
python --version
如果版本低于 3.11,那就需要升级或重新安装。我建议直接用 miniconda,它能同时管理多个版本,特别适合我们这种需要反复切换环境的人。
虚拟环境——最容易被忽略的一步
很多人觉得“我项目不大,不用虚拟环境”。错。量化调优涉及的库版本敏感度极高。比如 pandas 2.0 改了接口,你全局装了个 2.0,项目里还在用 1.5 的语法,直接报错。我建议每个项目单独建一个虚拟环境。
用 conda 创建环境很简单:
conda create -n kquant python=3.11
conda activate kquant
如果你不想装 conda,用 venv 也行:
python -m venv kquant_env
source kquant_env/bin/activate # Linux/Mac
kquant_env\Scripts\activate # Windows
我个人更喜欢 conda,因为后面装 numpy 时会自动帮我把底层线性代数库一起搞定,省了我不少麻烦。
Jupyter Notebook——交互式调优的利器
K‑quant 调优过程中,我几乎全程在 Jupyter Notebook 里工作。原因很简单——每调一个参数立刻看到结果,画图也方便。安装命令:
pip install jupyter notebook
启动就用:
jupyter notebook
它会自动弹出浏览器。如果是在远程服务器上跑,你可以加上 --no-browser --port=8888,然后本地 SSH 隧道连接,具体操作我后面会讲。
jupyter notebook password,这样以后直接输密码就行。
核心库安装:pandas / numpy / matplotlib
这三个库是量化调优的基石。pandas 处理表格数据,numpy 做数值计算,matplotlib 画图。安装一句话:
pip install pandas numpy matplotlib
或者用 conda(推荐):
conda install pandas numpy matplotlib
为什么推荐 conda?因为 numpy 底层依赖 BLAS/LAPACK,conda 会自动匹配高性能的 MKL 或 OpenBLAS,而 pip 有时装的是从源码编译的版本,慢一倍。我在一个项目里试过,同样的矩阵运算,conda 版的 numpy 比 pip 快了将近 40%。这种差距在 K‑quant 的大规模量化计算中会被放大。
版本对照表——别装错了
为了方便你对照,我整理了一张常用库与 Python 版本的兼容表:
| 库名 | 推荐版本 | 最低 Python 版本 |
|---|---|---|
| Python | 3.11.x | 3.8 |
| pandas | ≥2.0 | 3.9 |
| numpy | ≥1.24 | 3.9 |
| matplotlib | ≥3.7 | 3.9 |
你直接用 pip install 一般会自动拉取匹配版本。如果遇到依赖冲突,可以试试先升级 pip:pip install --upgrade pip,再逐个装。
验证环境——跑个 quick test
一切安装完成后,写个最简单的脚本验证一下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
print("numpy version:", np.__version__)
print("pandas version:", pd.__version__)
print("matplotlib version:", plt.matplotlib.__version__)
# 做个简单测试
data = np.random.randn(1000)
df = pd.DataFrame(data, columns=['value'])
df['value'].hist(bins=30)
plt.title("K‑quant 环境测试")
plt.show()
如果代码不报错,弹出一个直方图窗口,说明环境通通就绪。如果 matplotlib 没显示窗口,可能是后端问题,加一行 plt.switch_backend('TkAgg') 试试。
本章知识脉络
下面这张图总结了我们刚才搭建的整个开发环境栈,从底层到顶层清清楚楚:
conda activate kquant 就能秒切,不用再怕依赖冲突。我自己电脑上现在有七八个环境,每个项目对应一个,井然有序。