第二章:环境搭建与工具准备

说实话,很多做量化的人,一上来就急着写策略、跑回测。结果呢?环境没配好,装个包报错半天,最后连个简单的DataFrame都跑不出来。我见过太多这样的案例了。

这一章,咱们就把地基打牢。Python环境、Jupyter Notebook、还有那三板斧——Pandas、NumPy、Matplotlib,一个一个搞定。

2.1 Python环境:选对版本,少走弯路

我个人习惯用Python 3.8到3.11之间的版本。为什么?因为量化生态里很多老牌库(比如某些数据接口)对3.12的支持还不稳定。你想想看,装个库报个“找不到模块”,排查半天发现是版本不兼容,多耽误事。

推荐方案:用Anaconda

Anaconda自带Python、Jupyter和150+常用科学计算包。说白了,就是一站式解决方案。下载地址我就不贴了,直接搜“Anaconda下载”就行。

我的小技巧: 安装时记得勾选“Add Anaconda to my PATH environment variable”。虽然安装文档说不推荐,但我踩过这个坑——不勾选的话,后面在命令行里调conda命令会找不到路径。

2.2 Jupyter Notebook:交互式开发的利器

Jupyter Notebook这东西,做量化研究简直绝配。你可以一边写代码,一边看结果,还能随时加注释、画图表。我刚开始做轮动模型时,就是靠它一步步调试的。

安装很简单,打开终端(Windows用户用Anaconda Prompt),输入:

conda install jupyter notebook
# 或者用pip
pip install jupyter

启动就更简单了:

jupyter notebook

浏览器会自动弹出来。嗯,这里要注意:如果没弹出来,看看终端里有没有输出一串URL,复制到浏览器打开就行。

避坑指南: 我曾经在Windows上遇到过Jupyter启动后内核一直显示“connecting”的问题。后来发现是防火墙把端口拦了。解决办法:启动时指定端口,比如 jupyter notebook --port=8889

2.3 Pandas:量化数据的瑞士军刀

做轮动模型,你每天打交道最多的就是Pandas。DataFrame、时间序列、滚动计算……这些功能几乎覆盖了量化数据处理的所有场景。

安装:

pip install pandas

验证一下:

import pandas as pd
print(pd.__version__)
# 输出类似 2.0.3

我常用的几个Pandas功能,列个表给你参考:

功能 代码示例 说明
读取CSV df = pd.read_csv('data.csv') 加载行情数据
时间索引 df.set_index('date', inplace=True) 把日期列设为索引
滚动均值 df['ma20'] = df['close'].rolling(20).mean() 计算20日均线
数据对齐 pd.merge(df1, df2, on='date') 合并多只股票数据
核心要点: 轮动模型里,Pandas的shift()和pct_change()两个函数会频繁用到。shift()用于获取前一天的信号,pct_change()计算收益率。这两个搞定了,回测框架就搭好了一半。

2.4 NumPy:高性能数值计算

NumPy是Pandas的底层引擎。说白了,Pandas的很多操作最终都调用了NumPy的数组运算。你不需要精通NumPy,但得知道它怎么用。

安装:

pip install numpy

快速上手:

import numpy as np

# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])

# 向量化运算(比Python循环快10倍以上)
arr_squared = arr ** 2
print(arr_squared)  # [ 1  4  9 16 25]

为什么会快这么多?因为NumPy底层用C语言实现,而且利用了CPU的SIMD指令集。你想想看,如果轮动模型要计算1000只股票的收益率,用Python原生循环得等到猴年马月。

2.5 Matplotlib:把数据画出来

做量化的人,眼睛就是尺。光看数字很难发现问题,但一张图就能让你看出趋势、异常值、回撤。Matplotlib就是干这个的。

安装:

pip install matplotlib

画个简单的K线图示例:

import matplotlib.pyplot as plt
import pandas as pd

# 模拟数据
dates = pd.date_range('2024-01-01', periods=100)
prices = 100 + np.cumsum(np.random.randn(100))

plt.figure(figsize=(10, 5))
plt.plot(dates, prices, label='策略净值')
plt.title('轮动策略净值曲线')
plt.xlabel('日期')
plt.ylabel('净值')
plt.legend()
plt.grid(True)
plt.show()
我的经验: 在Jupyter里画图,记得加一行 %matplotlib inline,这样图表会直接显示在单元格下方,不用弹窗。另外,中文字体显示问题很常见,加两行代码解决:
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

2.6 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它当成一张地图,以后遇到问题就知道该找哪个工具。

轮动模型开发环境 Python 3.8-3.11 Jupyter Notebook Pandas NumPy Matplotlib 核心工作流: NumPy计算 → Pandas处理 → Matplotlib可视化

2.7 一键安装脚本

懒得一个一个装?我给你准备了一个脚本,复制到终端运行就行:

# 创建虚拟环境(推荐)
conda create -n quant_env python=3.9
conda activate quant_env

# 安装核心库
pip install pandas numpy matplotlib jupyter

# 验证安装
python -c "import pandas; import numpy; import matplotlib; print('All good!')"
最后说一句: 环境搭建这事儿,看着琐碎,但真不能马虎。我见过太多人因为环境问题浪费一整天。按照上面的步骤来,半小时内你就能拥有一个完整的量化开发环境。接下来,咱们就可以真正开始写轮动模型了。

专注资料整理