第1章:工欲善其事,必先利其器
各位同学,欢迎来到《从零搭建你的量化交易系统》的第一课。
说实话,我见过太多人一上来就急着写策略、跑回测,结果环境没配好,连个DataFrame都打不出来,白白浪费一整天。我自己刚入行那会儿也干过这种蠢事——花了三天写了个策略,结果发现是Python版本不对,NumPy的API都变了。嗯,从那以后,我养成了一个习惯:先把工具打磨好,再开工。
这一章,我们就来搞定量化交易最基础的四样东西:Python环境、Jupyter Notebook、NumPy与Pandas、数据可视化。别小看这些,它们是你未来所有策略的基石。
本章核心目标:让你能在30分钟内搭建好一个可用的量化分析环境,并跑通第一个数据可视化样例。
1.1 Python环境搭建:别用系统自带的Python
我个人习惯用 Anaconda 来管理Python环境。为什么?因为它自带了一堆数据科学库,省得你一个一个pip install。你想想看,量化交易常用的NumPy、Pandas、Matplotlib、Scikit-learn,Anaconda全给你打包好了。
安装步骤其实很简单:
- 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux都支持)
- 一路默认安装,记得勾选「Add Anaconda to my PATH environment variable」
- 打开终端或命令提示符,输入
conda --version验证安装
我的小建议:如果你硬盘空间紧张,可以用 Miniconda——它只包含Python和conda包管理器,需要什么库再自己装。我自己的开发机用的就是Miniconda,轻量又灵活。
装完之后,我建议你创建一个独立的虚拟环境,专门给量化交易用:
conda create -n quant_env python=3.9
conda activate quant_env
为什么要搞虚拟环境?我在项目中遇到过好几次——不同项目依赖的库版本打架,搞得头大。虚拟环境就是给每个项目一个「独立房间」,互不干扰。
1.2 Jupyter Notebook:量化分析的「草稿本」
说实话,Jupyter Notebook是我在量化交易中最常用的工具,没有之一。它就像一个电子草稿本——你可以写代码、看结果、画图表、记笔记,全在一个页面里完成。
安装很简单,在刚才的虚拟环境里执行:
conda install jupyter notebook
jupyter notebook
浏览器会自动打开一个页面,点右上角的「New」→「Python 3」就能新建一个Notebook了。
几个我常用的快捷键:
| 快捷键 | 功能 |
|---|---|
| Shift + Enter | 运行当前单元格并跳到下一个 |
| Ctrl + Enter | 运行当前单元格但不跳转 |
| Esc + A | 在当前单元格上方插入新单元格 |
| Esc + B | 在当前单元格下方插入新单元格 |
| Esc + M | 将当前单元格切换为Markdown模式(写笔记用) |
注意:Jupyter Notebook的单元格有「代码」和「Markdown」两种模式。写代码用代码模式,写注释用Markdown模式。我曾经见过有人把代码写在Markdown里,结果跑了一上午没反应……
1.3 NumPy与Pandas:量化数据的左膀右臂
做量化交易,说白了就是跟数据打交道。而NumPy和Pandas,就是Python世界里处理数据的「倚天剑」和「屠龙刀」。
NumPy:高性能数值计算
NumPy的核心是 ndarray(N维数组)。它比Python原生的列表快得多,原因在于底层用C语言实现,而且支持向量化操作。
import numpy as np
# 创建一个数组
prices = np.array([100.5, 101.2, 102.8, 103.1, 102.5])
# 向量化计算——一行代码算收益率
returns = np.diff(prices) / prices[:-1]
print(returns)
# 输出: [0.00697 0.01581 0.00292 -0.00582]
你看,用NumPy算收益率,一行代码搞定。如果用Python原生列表写循环,至少得三四行,而且速度慢一个数量级。
Pandas:表格数据的瑞士军刀
Pandas的核心是 DataFrame,你可以把它想象成一个Excel表格,但功能强大得多。
import pandas as pd
# 创建一个简单的DataFrame
data = {
'日期': ['2024-01-02', '2024-01-03', '2024-01-04'],
'开盘价': [100.5, 101.2, 102.8],
'收盘价': [101.2, 102.8, 102.5],
'成交量': [10000, 12000, 9500]
}
df = pd.DataFrame(data)
print(df)
输出效果:
日期 开盘价 收盘价 成交量
0 2024-01-02 100.5 101.2 10000
1 2024-01-03 101.2 102.8 12000
2 2024-01-04 102.8 102.5 9500
为什么Pandas在量化中这么重要?因为金融数据天然就是表格形式——时间序列、多只股票、多个字段。Pandas的索引、分组、合并、滚动计算等功能,简直就是为量化交易量身定做的。
我个人最常用的Pandas操作:
df.head()— 看前几行数据df.describe()— 快速统计摘要df['收盘价'].rolling(5).mean()— 计算5日均线df.sort_values('日期')— 按日期排序
1.4 数据可视化:让数字会说话
做量化交易,光看数字是不够的。一张好的图表,能让你一眼看出趋势、异常和机会。我常用的两个库:Matplotlib 和 Plotly。
Matplotlib:经典稳重型
Matplotlib是Python可视化的老大哥,功能全面,出图质量高。适合做静态图表,比如论文、报告里的插图。
import matplotlib.pyplot as plt
# 模拟股价数据
dates = ['2024-01-02', '2024-01-03', '2024-01-04', '2024-01-05', '2024-01-06']
prices = [100.5, 101.2, 102.8, 103.1, 102.5]
plt.figure(figsize=(10, 5))
plt.plot(dates, prices, marker='o', linestyle='-', color='#4A90D9', linewidth=2)
plt.title('股价走势图', fontsize=14)
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True, alpha=0.3)
plt.show()
Plotly:交互炫酷型
Plotly的强项是交互式图表——你可以缩放、悬停查看数据、甚至做动画。在Jupyter Notebook里用起来特别顺手。
import plotly.express as px
# 同样的数据,用Plotly画
fig = px.line(x=dates, y=prices, title='股价走势图(交互版)',
labels={'x': '日期', 'y': '价格'})
fig.show()
我的选择建议:做快速探索性分析时用Plotly,因为交互方便;做最终报告或论文插图时用Matplotlib,因为出图更精致、可控性更强。两个都学,不吃亏。
本章小结
好了,这一章我们走完了量化交易环境的「四步曲」:
- 用Anaconda搭好了Python环境,还创建了专属的虚拟环境
- 学会了Jupyter Notebook的基本操作,以后写策略就在这上面了
- 了解了NumPy和Pandas的核心用法——向量化计算和DataFrame操作
- 掌握了Matplotlib和Plotly两种可视化工具
这些东西看起来基础,但相信我——未来你写的每一个策略、跑的每一次回测,都离不开它们。把基础打牢了,后面的路才走得稳。