开发环境与核心技术栈:从零搭建你的回测系统

说实话,我见过太多人一上来就写策略代码,结果跑起来各种报错。环境没配好,后面全是坑。今天咱们就把这件事一次性搞定。

Python环境配置:Anaconda 才是正道

我个人习惯用 Anaconda 管理 Python 环境。为什么?因为高频回测对依赖版本极其敏感。你想想看,pandas 1.0 和 2.0 的 groupby 行为都不一样,回测结果可能就差了几个基点。

核心要点:每个项目独立环境,别偷懒用 base。

安装步骤其实很简单:

  1. 去 Anaconda 官网下载 Python 3.9 版本(别追新,3.10 以上有些库还不稳)
  2. 安装时勾选「Add to PATH」—— 嗯,这一步很多人忘
  3. 验证:打开终端输入 conda --version

我曾经在 Windows 上装 Anaconda 后没重启终端,结果 conda 命令死活找不到。重启一下就好了,别慌。

核心库安装:pandas, numpy, numba, cython

这四个库是回测系统的基石。我按重要性排序讲:

库名 作用 安装命令
pandas 数据处理、时间序列、回测结果分析 conda install pandas
numpy 数值计算、矩阵运算 conda install numpy
numba JIT 编译加速,把 Python 循环跑出 C 的速度 conda install numba
cython 将 Python 代码编译成 C 扩展 conda install cython

安装顺序有讲究。我建议先装 numpy,再装 pandas。因为 pandas 依赖 numpy,顺序反了可能版本冲突。

避坑指南:别用 pip 装 numba。我在项目中遇到过 pip 装的 numba 和 conda 的 numpy 不兼容,跑起来直接 segfault。用 conda 装就没事。

版本控制:Git 是你的后悔药

做量化交易,策略迭代特别快。今天改个参数,明天加个因子,没有版本控制你根本不知道哪个版本是能赚钱的。

我个人的 Git 工作流:

  • master 分支:只放能稳定盈利的策略
  • dev 分支:日常开发,随便改
  • feature 分支:每个新因子或新逻辑单独开分支

初始化项目:

git init
git add .
git commit -m "初始化回测系统框架"

我曾经忘了写 .gitignore,把几百 MB 的 tick 数据也提交上去了。后来每次 git pull 都卡半天。记住加上 .gitignore,把 data/ 和 __pycache__/ 都忽略掉。

项目结构初始化:别让代码变成一团乱麻

我见过太多人把所有代码塞在一个文件夹里。回测、数据、策略全混在一起,三个月后自己都看不懂。

下面是我用了多年的项目结构:

hft_backtest/
├── data/              # 原始数据,不提交到 git
├── config/            # 配置文件
│   └── settings.yaml
├── engine/            # 回测引擎核心
│   ├── __init__.py
│   ├── backtest.py
│   └── order.py
├── strategies/        # 策略代码
│   ├── __init__.py
│   └── momentum.py
├── utils/             # 工具函数
│   ├── __init__.py
│   └── indicators.py
├── tests/             # 单元测试
│   └── test_engine.py
├── results/           # 回测结果
├── .gitignore
├── README.md
└── requirements.txt

为什么这么分?说白了就是职责单一。engine 只管跑回测,strategies 只管写逻辑,互不干扰。你想想看,要是把策略逻辑和回测引擎写在一起,改个参数都得小心翼翼。

知识体系总览

下面这张图概括了本章的核心内容:

开发环境与核心技术栈 Anaconda Python 3.9 环境 核心库 pandas / numpy numba / cython Git 版本控制 master / dev / feature 项目结构 模块化分层 最终目标:可复现、高性能的回测系统 环境隔离 → 依赖稳定 → 版本可追溯 → 代码可维护 四个模块缺一不可,顺序执行别跳步 💡 建议:先配环境,再装库,最后初始化项目

写在最后

环境配置这件事,看着简单,但做不好后面全是坑。我见过有人因为 pandas 版本不对,回测结果差了 20%。你想想看,要是实盘也这样,那损失可就大了。

嗯,今天就到这儿。把环境配好,后面写策略才能安心。


专注资料整理