第一章:数据清洗环境搭建

做期权高频做市,说白了就是跟时间赛跑。你想想看,行情数据每秒几千笔,延迟一毫秒可能就是几万块的盈亏。所以环境搭建这事,真不是装个Python就完事的。

我个人习惯,先把基础环境理清楚。磨刀不误砍柴工嘛。

1.1 Python环境配置

Python版本怎么选?我建议直接用3.9或3.10。为什么?

我在项目中踩过坑。有次用3.11跑一个老版本的numba,直接报错,折腾了两天才发现是版本兼容问题。嗯,这里要注意:高频做市依赖的库,很多对最新Python支持并不及时。

推荐用Anaconda或者Miniconda来管理环境。我个人偏爱Miniconda,轻量,不占地方。

核心配置清单:

  • Python 3.9 或 3.10
  • Miniconda 作为环境管理器
  • 虚拟环境隔离,每个项目独立

创建环境的命令很简单:

conda create -n hft_env python=3.9
conda activate hft_env

环境名我习惯用hft_env,一目了然。你随意,但别用中文名,有些库会报错。

1.2 Pandas与NumPy安装

这两个库,是做量化逃不开的基石。Pandas处理表格数据,NumPy搞数值计算,配合起来天衣无缝。

安装命令:

conda install pandas numpy

或者用pip:

pip install pandas numpy

我个人推荐conda安装。为什么?因为conda会自动处理依赖关系,特别是NumPy这种底层库,用pip装有时候会跟系统库冲突。

我曾经在服务器上直接用pip装numpy,结果发现MKL(数学核心库)没装上,矩阵运算慢了3倍。后来换成conda,问题就解决了。

版本方面,目前稳定的是:

库名 推荐版本 说明
Pandas 1.5.x 2.0以后API有变化,建议先稳定
NumPy 1.23.x 跟numba兼容性最好

小技巧:装完后跑一下 import pandas as pd; print(pd.__version__),确认版本无误。

1.3 高性能计算库:Numba与Dask

做高频做市,数据量动不动就是几百万行。纯Python循环?太慢了。这时候就需要Numba和Dask上场。

Numba:让Python跑出C的速度

Numba是个JIT编译器。说白了,它把你写的Python函数,在运行时编译成机器码。效果?我实测过,同样的循环,用numba加速后快了50倍。

安装:

conda install numba

用法很简单,加个装饰器就行:

from numba import jit
import numpy as np

@jit(nopython=True)
def calculate_spread(bid_prices, ask_prices):
    return ask_prices - bid_prices

这里有个坑:nopython=True 一定要加。不加的话,numba可能退回到object模式,速度反而更慢。我曾经因为这个排查了半天,最后发现是忘了这个参数。

注意:numba不支持所有Python语法。比如字典、列表推导式,在nopython模式下就不能用。写之前先看看官方文档的兼容列表。

Dask:处理放不下的数据

做市数据一天可能几十GB,内存装不下怎么办?Dask就是干这个的。它把大数组切分成小块,按需加载,并行计算。

安装:

conda install dask

Dask的API跟Pandas很像,上手很快:

import dask.dataframe as dd

# 读取大文件,自动分块
df = dd.read_csv('tick_data_2024.csv')
result = df.groupby('symbol').price.mean().compute()

注意最后那个 .compute()。Dask是惰性求值的,不调用compute,它不会真正执行计算。这个设计其实很聪明——你可以先搭好计算流程,最后再触发执行。

1.4 知识体系总览

这一章的内容,我画了张图帮你理清思路:

数据清洗环境搭建 Python环境 Pandas + NumPy Numba + Dask Python 3.9/3.10 + Miniconda 数据处理 + 数值计算 JIT编译 + 分布式计算 核心逻辑 基础环境 → 数据处理 → 性能优化 层层递进,缺一不可 每个环节都影响最终的回测和实盘表现

这张图其实就说明了我们的思路:先搭好Python基础环境,再装上Pandas和NumPy处理数据,最后用Numba和Dask解决性能瓶颈。每一步都有它的价值,跳不过去。

1.5 避坑指南

最后,分享几个我踩过的坑:

  • 不要用系统自带的Python——版本太老,而且容易跟系统包冲突。我刚开始做量化时就用系统Python,结果装pandas时报错,差点重装系统。
  • 虚拟环境一定要用——不同项目依赖可能冲突。比如一个项目用pandas 1.5,另一个用2.0,没有虚拟环境就等着哭吧。
  • 装完库先测试——别急着写代码。跑个简单的import和基本操作,确认环境没问题再往下走。

一句话总结:环境搭好了,后面90%的问题都不会出现。花半小时把这一步做扎实,比后面花两天排查问题划算得多。


蓝海数据掘金营,专注资料整理