第一章:Python环境与工具链
做量化交易,说白了就是跟数据打交道。而Python,就是咱们手里最顺手的工具。这一章,我带你搭好环境、配好工具,后面写策略、跑回测才能顺手。
1.1 Anaconda安装与配置
我个人习惯用Anaconda来管理Python环境。为什么?因为它把Python、常用的科学计算库、还有包管理器conda都打包好了。你不需要一个个去装numpy、pandas、scipy这些,省心不少。
安装步骤其实很简单:
- 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux都支持)
- 双击安装,一路默认选项就行。但有一个地方要注意——安装路径不要有中文和空格。
- 安装完成后,打开终端(Windows下是Anaconda Prompt),输入
conda --version,能看到版本号就说明装好了。
创建虚拟环境:
做量化交易,不同项目可能依赖不同版本的库。我建议每个项目建一个独立环境,互不干扰。
# 创建一个名为quant_env的环境,指定Python版本3.9
conda create -n quant_env python=3.9
# 激活环境
conda activate quant_env
# 安装常用库
conda install numpy pandas matplotlib jupyter
# 退出环境
conda deactivate
你想想看,如果所有项目都挤在base环境里,哪天升级一个库把另一个项目搞崩了,那得多头疼?
1.2 Jupyter Notebook使用
Jupyter Notebook是我做量化研究时最常用的工具。它把代码、图表、文字说明都放在一个页面里,特别适合做探索性分析。
启动方式:
# 激活你的量化环境后
conda activate quant_env
jupyter notebook
浏览器会自动打开一个页面,显示当前目录的文件列表。点右上角的“New” -> “Python 3”,就能新建一个Notebook了。
几个实用技巧:
- 快捷键: 按
Shift + Enter运行当前单元格并跳到下一个;按Esc退出编辑模式,然后按B在下方插入新单元格。 - Markdown单元格: 把单元格类型从“Code”改成“Markdown”,就能写文档、加标题、插入公式。我习惯在每个策略分析前,先用Markdown写下思路。
- 魔法命令: 比如
%timeit可以测量代码执行时间,%matplotlib inline让图表直接显示在Notebook里。
%matplotlib inline和import pandas as pd、import numpy as np。省得后面忘了导入,报错再回头补。
1.3 Pandas/Numpy基础
做期现套利,核心就是处理时间序列数据。Pandas和Numpy就是干这个的。
Numpy: 提供多维数组对象,以及大量的数学函数。说白了,就是让Python能做快速的数值计算。
import numpy as np
# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])
# 数组运算
print(arr * 2) # 输出 [2 4 6 8 10]
# 生成随机数
rand_vals = np.random.randn(100) # 100个标准正态分布随机数
Pandas: 建立在Numpy之上,提供了DataFrame和Series两种数据结构。DataFrame就像Excel表格,有行有列,还能做各种数据操作。
import pandas as pd
# 创建一个DataFrame
data = {
'日期': ['2024-01-01', '2024-01-02', '2024-01-03'],
'期货价格': [5000, 5020, 5010],
'现货价格': [4980, 4995, 4990]
}
df = pd.DataFrame(data)
# 查看数据
print(df.head())
# 计算价差
df['价差'] = df['期货价格'] - df['现货价格']
print(df)
我在项目中遇到过最常用的操作就是合并两个时间序列数据。比如期货数据和现货数据,时间戳可能不完全对齐。用Pandas的merge或join方法,几行代码就能搞定。
shift()方法可以移动数据,做滞后分析;diff()方法计算差分,看价格变化。这两个在期现套利策略里经常用到。
1.4 回测框架选型
回测框架,就是把你的策略放到历史数据上跑一遍,看看赚不赚钱。市面上框架不少,我挑几个常用的说说。
| 框架名称 | 特点 | 适用场景 |
|---|---|---|
| Backtrader | 功能全面,社区活跃,文档完善 | 个人策略研究,中小规模回测 |
| Zipline | Quantopian出品,支持事件驱动 | 美股回测,有现成数据源 |
| PyAlgoTrade | 轻量级,上手快 | 快速验证想法 |
| 自建框架 | 完全可控,灵活度高 | 生产环境,复杂策略 |
我个人建议初学者从Backtrader入手。为什么?因为它把数据加载、策略逻辑、交易执行、绩效分析都封装好了,你只需要写核心的策略逻辑就行。我在做期现套利策略时,就用Backtrader搭过原型,确实省事。
选型时考虑三点:
- 数据支持: 框架能不能方便地加载你的数据?比如CSV、数据库、API接口。
- 交易逻辑: 支不支持多标的、多合约?期现套利需要同时操作期货和现货,这个必须支持。
- 性能: 回测数据量大不大?如果跑几年分钟级数据,框架性能就很重要了。
本章知识体系
下面这张图,把本章的核心内容串起来了。你可以看到,从环境搭建到工具使用,再到回测框架选型,是一条完整的链路。
好了,这一章的内容就到这儿。环境搭好了,工具也熟悉了,后面咱们就可以真正开始写策略了。