第二章:环境搭建与工具准备
说实话,很多做量化的人,一上来就急着写策略、跑回测。结果呢?环境没配好,装个包报错半天,最后连个简单的DataFrame都跑不出来。我见过太多这样的案例了。
这一章,咱们就把地基打牢。Python环境、Jupyter Notebook、还有那三板斧——Pandas、NumPy、Matplotlib,一个一个搞定。
2.1 Python环境:选对版本,少走弯路
我个人习惯用Python 3.8到3.11之间的版本。为什么?因为量化生态里很多老牌库(比如某些数据接口)对3.12的支持还不稳定。你想想看,装个库报个“找不到模块”,排查半天发现是版本不兼容,多耽误事。
推荐方案:用Anaconda
Anaconda自带Python、Jupyter和150+常用科学计算包。说白了,就是一站式解决方案。下载地址我就不贴了,直接搜“Anaconda下载”就行。
2.2 Jupyter Notebook:交互式开发的利器
Jupyter Notebook这东西,做量化研究简直绝配。你可以一边写代码,一边看结果,还能随时加注释、画图表。我刚开始做轮动模型时,就是靠它一步步调试的。
安装很简单,打开终端(Windows用户用Anaconda Prompt),输入:
conda install jupyter notebook
# 或者用pip
pip install jupyter
启动就更简单了:
jupyter notebook
浏览器会自动弹出来。嗯,这里要注意:如果没弹出来,看看终端里有没有输出一串URL,复制到浏览器打开就行。
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') |
合并多只股票数据 |
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()
%matplotlib inline,这样图表会直接显示在单元格下方,不用弹窗。另外,中文字体显示问题很常见,加两行代码解决:plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False
2.6 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以把它当成一张地图,以后遇到问题就知道该找哪个工具。
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!')"