stock-analysis-engine
分钟级量化交易回测引擎,支持分布式 K8s 部署 + AI 训练数据生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
分钟级量化交易回测引擎,支持分布式 K8s 部署 + AI 训练数据生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:命令行抓取股价数据(asciinema 终端录制)

想象一下:你花了一整个周末研究出一个"收盘价高于20日均线就买入"的交易策略,但当你真正拿着真金白银去回测时,发现过去三年里这个策略只赚了个寂寞。更糟糕的是,你的数据源不稳定,历史数据残缺,真正重要的分钟级数据根本拿不到。
Stock Analysis Engine 正是为解决这个问题而生——它是一个专注于分钟级数据回测的分布式量化交易引擎,可以同时运行数千个交易算法,实时对接 IEX Cloud、Tradier、FinViz 三大数据源,自动将回测数据和交易表现发布到 S3 构建 AI 训练数据集,让深度神经网络学会"什么时候该买、什么时候该卖"。
这个项目从 2018 年启动至今,已通过 5000+ 交易算法生成了超过 1.5 亿行交易历史数据,在 GitHub 上获得了 1227 颗星,是量化交易 + AI 领域少有的生产级开源回测框架。
量化交易社区有一个经典笑话:Backtest is not forward test, but it's better than gut feeling. 然而,大多数开源回测工具存在三个致命问题:
1. 数据源不稳定——Yahoo Finance 在 2019 年 1 月关闭了免费 API,无数依赖该数据源的回测项目一夜之间报废。Stock Analysis Engine 明确支持 IEX Cloud(付费按需计费)和 Tradier(券商数据 API),彻底绕开这一风险。
2. 数据粒度不够——日线数据只告诉你"今天涨了",但分钟级数据才能告诉你"下午两点半那一分钟发生了什么"。很多高频信号在日线上毫无意义,但在分钟线上是有效的。Stock Analysis Engine 支持分钟级历史数据回放,这是它的核心竞争力。
3. 无法规模化——单机跑一个策略很快,但同时跑 1000 个策略,数据管理就成噩梦。该项目用 Redis 作为实时数据管道,用 Celery 分布式任务队列 + Kubernetes 实现横向扩展,天然支持大规模并行回测。
图2:本地回测运行界面

项目支持三种数据获取方式,通过环境变量配置 API Token 后一键启动:
export IEX_TOKEN=your_iex_token
./compose/start.sh -a
fetch -t SPY
抓取的数据默认存储在 Redis(实时)和 MinIO/S3(归档),项目内置了数据过期管理,避免存储无限膨胀。
核心是 analysis_engine.algo.BaseAlgo 基类,开发者只需继承并实现 process() 方法即可定义交易策略。框架自动注入 self.df_minute(分钟数据)、self.df_daily(日线数据)、self.df_calls/puts(期权数据)等丰富变量。
回测结果自动生成 JSON 格式的交易历史,包含每次买/卖的时间、价格、数量和盈亏,并上传 S3 归档。
这是项目最硬核的部分:Redis 作为消息队列 + Celery Worker 集群 + MinIO 对象存储,实现"一个命令跑 60 天的分钟级回测并自动归档"。
图3:分布式回测集群架构

Kubernetes 用户可通过 Helm Chart 一键部署完整集群,支持 K8s CronJob 定时自动抓取最新数据。
核心 AI 模块位于 analysis_engine/ai/,提供:
build_scaler_dataset.py):将不同量级的价格/成交量数据归一化到 [0,1] 区间build_regression_dnn.py):基于 Keras Sequential API,支持从 JSON 配置动态构建 MLP 网络plot_dnn_fit_history.py):绘制 loss 和 accuracy 曲线项目作者建议用 S3 归档数据训练 Lambda 函数,把回测数据本身当作有价值的"数据产品",这是现代 MLOps 思维在量化领域的落地。
analysis_engine/ # 核心 Python 包
algo.py # 算法基类(143KB,核心逻辑)
algo_runner.py # 回测执行器
build_*.py # 数据构建器(K线/期权/订单/发布)
charts.py # 绘图模块
ai/ # AI 模块(Keras DNN)
compose/ # Docker Compose 栈(Redis + MinIO + Jupyter)
docker/ # 镜像构建(多阶段 Dockerfile)
k8/ # Kubernetes YAML(CronJob 数据抓取)
helm/ # Helm Chart(ae-intraday / ae-daily / ae-jupyter)
tools/ # S3 备份等运维脚本
| 层级 | 技术 |
|---|---|
| 数据存储 | Redis(实时管道)、MinIO/S3(归档) |
| 任务队列 | Celery + Redis Broker |
| AI/ML | TensorFlow、Keras、scikit-learn |
| 数据处理 | Pandas、NumPy、UJSON |
| 部署 | Docker、Docker Compose、Kubernetes、Helm |
algo.py 就达 143KB,包含了完整的数据管道逻辑和回测框架tests/ 目录,支持 pytest 和 toxcolorlog 做彩色日志输出,有完整的 flake8/pylint 配置| 模式 | 难度 | 说明 |
|---|---|---|
| 本地 Docker | ★★★☆☆ | ./compose/start.sh -a,约 5-10GB |
| K8s + Helm | ★★★★☆ | 需要 K8s 集群 |
| 纯 Python 开发 | ★★★☆☆ | pip install -e .,需手动配置 Redis + MinIO |
内置 Jupyter Notebook,涵盖 DNN 训练与预测、三种 DNN 模型对比等示例,通过 docker-compose 启动后访问 http://localhost:8888 即可。
Stock Analysis Engine 代表了一种重要的量化交易开源趋势——用大规模数据喂养 AI 模型。它的创新之处不在于某个精妙的交易算法(移动平均线、布林带都是经典指标),而在于:
同类项目中,Zipline 和 Backtrader 都是有力竞争者。Zipline 胜在学术背景和因子分析能力,Backtrader 胜在轻量和易用,而 Stock Analysis Engine 的差异化在于 Kubernetes 原生 + AI 训练数据生成这一独特定位。
Stock Analysis Engine 是一款生产级的分布式量化交易回测平台,专为需要分钟级数据、追求 AI 驱动策略优化的量化团队设计。它的核心价值不是某个精妙的交易算法,而是一套完整的数据基础设施:从数据抓取、实时管道、回测执行到 AI 训练数据生成的闭环。
适合场景:有 Python 基础的量化研究员、AI 交易策略探索者、需要构建自定义数据集的 ML 工程师。
不适合场景:纯量化小白(需要理解 Redis/Docker/K8s)、需要 A 股数据、追求零运维开箱即用。
一句话评价:如果你的目标是"训练一个 AI 来预测股价",这个项目提供了从原始数据到训练集的最短路径。

报告生成时间:2026-06-15 | 数据来源:GitHub API | 图片来源:asciinema.org 终端录制 + GitHub