第1章:工欲善其事,必先利其器

各位同学,欢迎来到《从零搭建你的量化交易系统》的第一课。

说实话,我见过太多人一上来就急着写策略、跑回测,结果环境没配好,连个DataFrame都打不出来,白白浪费一整天。我自己刚入行那会儿也干过这种蠢事——花了三天写了个策略,结果发现是Python版本不对,NumPy的API都变了。嗯,从那以后,我养成了一个习惯:先把工具打磨好,再开工。

这一章,我们就来搞定量化交易最基础的四样东西:Python环境、Jupyter Notebook、NumPy与Pandas、数据可视化。别小看这些,它们是你未来所有策略的基石。

本章核心目标:让你能在30分钟内搭建好一个可用的量化分析环境,并跑通第一个数据可视化样例。

量化交易系统基础环境搭建 Python 量化环境 Python 环境搭建 Anaconda / Miniconda Jupyter Notebook 交互式编程环境 NumPy & Pandas 数据处理核心库 数据可视化 Matplotlib / Plotly 四者层层递进,构成量化分析的基础设施

1.1 Python环境搭建:别用系统自带的Python

我个人习惯用 Anaconda 来管理Python环境。为什么?因为它自带了一堆数据科学库,省得你一个一个pip install。你想想看,量化交易常用的NumPy、Pandas、Matplotlib、Scikit-learn,Anaconda全给你打包好了。

安装步骤其实很简单:

  1. 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux都支持)
  2. 一路默认安装,记得勾选「Add Anaconda to my PATH environment variable」
  3. 打开终端或命令提示符,输入 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 数据可视化:让数字会说话

做量化交易,光看数字是不够的。一张好的图表,能让你一眼看出趋势、异常和机会。我常用的两个库:MatplotlibPlotly

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两种可视化工具

这些东西看起来基础,但相信我——未来你写的每一个策略、跑的每一次回测,都离不开它们。把基础打牢了,后面的路才走得稳。


专注资料整理