第一章:Python环境与工具链

做量化交易,说白了就是跟数据打交道。而Python,就是咱们手里最顺手的工具。这一章,我带你搭好环境、配好工具,后面写策略、跑回测才能顺手。

1.1 Anaconda安装与配置

我个人习惯用Anaconda来管理Python环境。为什么?因为它把Python、常用的科学计算库、还有包管理器conda都打包好了。你不需要一个个去装numpy、pandas、scipy这些,省心不少。

安装步骤其实很简单:

  1. 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux都支持)
  2. 双击安装,一路默认选项就行。但有一个地方要注意——安装路径不要有中文和空格。
  3. 安装完成后,打开终端(Windows下是Anaconda Prompt),输入 conda --version,能看到版本号就说明装好了。
⚠️ 避坑指南: 我曾经在Windows上装Anaconda时,忘了勾选“Add Anaconda to my PATH environment variable”。结果后面在命令行里死活找不到conda命令。嗯,这里建议你勾上,省得后面折腾环境变量。

创建虚拟环境:

做量化交易,不同项目可能依赖不同版本的库。我建议每个项目建一个独立环境,互不干扰。

# 创建一个名为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里。
💡 我的小习惯: 每次新建Notebook,我第一件事就是运行%matplotlib inlineimport pandas as pdimport 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的mergejoin方法,几行代码就能搞定。

📌 重点记住: Pandas的shift()方法可以移动数据,做滞后分析;diff()方法计算差分,看价格变化。这两个在期现套利策略里经常用到。

1.4 回测框架选型

回测框架,就是把你的策略放到历史数据上跑一遍,看看赚不赚钱。市面上框架不少,我挑几个常用的说说。

框架名称 特点 适用场景
Backtrader 功能全面,社区活跃,文档完善 个人策略研究,中小规模回测
Zipline Quantopian出品,支持事件驱动 美股回测,有现成数据源
PyAlgoTrade 轻量级,上手快 快速验证想法
自建框架 完全可控,灵活度高 生产环境,复杂策略

我个人建议初学者从Backtrader入手。为什么?因为它把数据加载、策略逻辑、交易执行、绩效分析都封装好了,你只需要写核心的策略逻辑就行。我在做期现套利策略时,就用Backtrader搭过原型,确实省事。

选型时考虑三点:

  • 数据支持: 框架能不能方便地加载你的数据?比如CSV、数据库、API接口。
  • 交易逻辑: 支不支持多标的、多合约?期现套利需要同时操作期货和现货,这个必须支持。
  • 性能: 回测数据量大不大?如果跑几年分钟级数据,框架性能就很重要了。
⚠️ 注意: 回测框架只是工具,别迷信它。我曾经见过有人用Backtrader跑出年化50%的收益,兴奋得不行,结果实盘一个月就亏回去了。回测结果漂亮,不代表实盘能赚钱。这里面坑很多,后面章节我会详细讲。

本章知识体系

下面这张图,把本章的核心内容串起来了。你可以看到,从环境搭建到工具使用,再到回测框架选型,是一条完整的链路。

Python量化环境与工具链 Anaconda环境 Jupyter Notebook Pandas / Numpy 回测框架选型 Backtrader Zipline PyAlgoTrade 自建框架 从环境搭建到工具使用,再到回测框架选型,形成完整链路

好了,这一章的内容就到这儿。环境搭好了,工具也熟悉了,后面咱们就可以真正开始写策略了。


专注资料整理