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

做量化交易,说白了就是跟数据打交道。你想想看,没有趁手的工具,再好的策略也跑不起来。这一章,我就带你搭好环境——这是所有交易代码的起点。

1.1 为什么选Python?

我入行那会儿,大家还在用Excel和VBA做回测。后来转到Python,才发现以前的日子简直是在刀耕火种。Python做TWAP交易,有几个天然优势:

  • 生态成熟:pandas处理时间序列,numpy做矩阵运算,matplotlib画K线图,一条龙搞定
  • 回测快:同样的逻辑,Python比Excel快几十倍
  • 对接方便:各大券商、交易所的API,基本都有Python版

嗯,这里要注意:别贪多嚼不烂。Python库成千上万,做TWAP交易,核心就三个——pandas、numpy、matplotlib。先把这三个玩透,比什么都强。

1.2 Anaconda安装:一步到位

我个人习惯用Anaconda来管理Python环境。为什么?因为它自带150多个常用库,省得你一个一个pip install。我在项目中遇到过好几次,新手自己装Python,结果版本冲突搞到崩溃——Anaconda就是来救你的。

安装步骤

  1. 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux都支持)
  2. 双击安装,一路默认就行。但有一个坑:安装路径不要有中文。我曾经帮一个学员排查问题,搞了半天,发现他装在“D:\程序\Python”下面,空格和中文字符导致路径解析出错
  3. 安装完成后,打开终端(Windows用Anaconda Prompt),输入conda --version,看到版本号就说明装好了
避坑指南:我曾经见过有人把Anaconda装到C盘,结果磁盘空间不够,回测跑到一半就崩了。建议装到D盘或E盘,至少留10GB空间。

1.3 Jupyter Notebook配置:交互式交易的利器

做TWAP策略开发,Jupyter Notebook是我的首选。它最大的好处是——写一段代码,立刻看到结果。不像传统IDE,要跑整个脚本才能知道对错。

启动Jupyter

打开终端,输入:

jupyter notebook

浏览器会自动打开一个页面。如果没打开,手动复制终端里那个带token的URL就行。

常用快捷键

快捷键 功能
Shift + Enter 运行当前单元格,并跳到下一个
Ctrl + Enter 运行当前单元格,不移动
Esc + A 在当前单元格上方插入新单元格
Esc + B 在当前单元格下方插入新单元格
Esc + M 将当前单元格切换为Markdown模式(写注释用)
我的小技巧:写TWAP策略时,我习惯把每个逻辑步骤拆成独立的单元格。比如数据获取一个单元格,计算权重一个单元格,执行交易一个单元格。这样调试起来特别方便,哪一步出问题,一眼就能看到。

1.4 必备库安装:pandas, numpy, matplotlib

这三个库,是TWAP交易的铁三角。pandas管数据,numpy管计算,matplotlib管可视化。缺一个,你的策略就像少了一条腿。

安装命令

在终端里依次执行:

conda install pandas numpy matplotlib

或者用pip:

pip install pandas numpy matplotlib

我个人推荐用conda安装,因为它会自动处理依赖关系。用pip的话,有时候会遇到版本冲突——比如pandas 2.0需要numpy 1.24以上,但你装的是1.22,那就报错了。

验证安装

打开Jupyter Notebook,新建一个Python文件,输入:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

print("pandas版本:", pd.__version__)
print("numpy版本:", np.__version__)
print("matplotlib版本:", plt.matplotlib.__version__)

如果能看到版本号,恭喜你,环境搭好了。

1.5 知识体系总览

这一章的内容,说白了就是三件事:装Anaconda、配Jupyter、装三个库。下面这张图,帮你理清它们之间的关系:

TWAP交易环境 Anaconda 环境管理 & 包管理 Jupyter Notebook 交互式开发 & 调试 pandas/numpy/matplotlib 数据处理 & 计算 & 可视化 核心逻辑:Anaconda提供运行环境 → Jupyter提供交互界面 → 三个库提供数据处理能力 → 最终实现TWAP策略

1.6 实战小练习

环境搭好了,咱们来跑个简单的TWAP模拟。别怕,就几行代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 模拟10笔交易,每笔100股,均匀分布在1小时内
total_shares = 1000
num_trades = 10
shares_per_trade = total_shares / num_trades

# 生成时间点(每6分钟一笔)
times = pd.date_range('09:30:00', '10:30:00', periods=num_trades)

# 模拟成交价格(随机波动)
np.random.seed(42)
prices = 100 + np.cumsum(np.random.randn(num_trades) * 0.5)

# 计算累计成交量
cum_shares = np.arange(1, num_trades+1) * shares_per_trade

# 画图
plt.figure(figsize=(10, 5))
plt.plot(times, cum_shares, 'b-o', label='累计成交量')
plt.xlabel('时间')
plt.ylabel('累计成交量(股)')
plt.title('TWAP交易模拟:均匀拆分订单')
plt.grid(True)
plt.legend()
plt.show()

运行这段代码,你会看到一条近乎直线的上升曲线——这就是TWAP的核心思想:把大单拆成小单,均匀分布在时间轴上。

重点回顾:TWAP不是魔法,它只是把「时间」这个维度用到了极致。环境搭好了,后面咱们才能玩真的。

专注资料整理