Skip to content

Leonard-Don/quant-trading-system

Repository files navigation

quant-trading-system

一个基于 FastAPI + React 的量化研究基础设施 —— 回测引擎、实时行情、策略库,外加一套严谨的策略证伪方法学。聚焦 今日研究策略回测实时行情行业热度 四个公开工作区。 Quant research infrastructure — backtest engines, realtime data, a strategy library, and a rigorous strategy-falsification methodology.

当前版本:v5.0.0 · 查看更新日志

Python FastAPI React CI Latest Release License: MIT


本地优先 · 研究档案闭环 · 可独立运行 · 自带浏览器回归验证

本地体验 · 核心能力 · 界面预览 · 快速开始 · 测试验证 · API 文档 · 更新日志


📌 仓库定位

它是一套量化研究基础设施:可独立运行的回测引擎、实时行情管线、29 种策略实现,以及一套用来证伪自己策略的形式化统计方法学。请把它当成一个研究与回测平台来用。

这个仓是一个独立维护的量化研究项目,围绕今日研究与四块核心工作区展开:

模块 说明
🧭 今日研究 汇总回测快照、行业观察、实时提醒和复盘记录,形成当天处理队列与研究档案
📊 策略回测 单资产 / 跨市场 / 批量 / Walk-Forward 回测引擎
📈 实时行情 多市场实时行情聚合、WebSocket 推送、提醒与复盘
🔥 行业热度 行业热力图、排行榜、龙头股分析与轮动观察;附"政策雷达"标签呈现 alt-data 政策事件
⚡ 纸面账户 市价 / 限价单(含取消)、滑点、止损、止盈,按 profile 持久化持仓与订单,前端基于实时行情计算浮动盈亏;支持回测结果一键预填或按市价直接成交,持仓可一键归档到今日研究

这意味着:

  • 当前仓的前端主入口是 today / backtest / realtime / industry / paper
  • 当前仓的后端接口围绕 /backtest/*/realtime/*/industry/*/cross-market/*/paper/*/policy-radar/*/research-journal/* 等能力展开
  • 项目可以独立 clone、安装、启动和发布,不依赖其他 sibling repo

🎯 这个仓适合谁

  • 想直接拿到一套能跑起来的量化研究与回测基础设施,而不是只拿到一个算法库
  • 想把 策略回测实时行情行业热度 和当天研究档案放在同一个前后端项目里联动验证
  • 想优先依赖真实页面和浏览器回归来确认功能,而不是只看接口或静态图

🔎 GitHub 首页建议先看

如果你想先看 建议入口
这个仓实际长什么样 本地体验 + 界面预览
怎么最快启动 快速开始
提供了哪些接口与模块 API 文档 + 项目结构
ETF 轮动是否值得继续跟踪 ETF Rotation Walk-Forward Credibility Report
最近版本改了什么 更新日志 + Release Notes

🧭 本地体验

当前不提供公开在线 Demo。请在本地同时启动前后端后体验完整功能。

最快启动

cp .env.example .env
# 可选:填入 TUSHARE_TOKEN 后,后端会启用 Tushare 作为 A股/ETF 盘后、历史和交易日历数据源
./scripts/start_system.sh

启动成功后直接访问:

  • http://localhost:3000?view=today 查看今日研究
  • http://localhost:3000 查看策略回测
  • http://localhost:3000?view=realtime 查看实时行情
  • http://localhost:3000?view=industry 查看行业热度
产品总览
当前版本聚焦今日研究、策略回测、实时行情与行业热度四块公开能力

产品动态演示
本地启动后的主要页面流转与交互预览

启动后可访问

页面 地址 说明
📊 策略回测 http://localhost:3000 单资产回测、历史记录、对比、组合优化、跨市场回测
📈 实时行情 http://localhost:3000?view=realtime 多市场行情聚合、提醒、复盘与深度详情
🔥 行业热度 http://localhost:3000?view=industry 热力图、排行榜、龙头股分析、轮动观察
📖 API 文档 http://localhost:8000/docs Swagger UI 交互式文档

推荐体验路径

  1. 先进入 行业热度,查看热力图和排行榜,建立当下板块温度感。
  2. 再切到 实时行情,打开指数或美股详情,查看趋势、量价、情绪和提醒。
  3. 回到 策略回测,运行主回测或 cross-market,验证想法并沉淀结果。

✨ 核心能力

📊 策略回测

  • 支持主回测、历史复盘、策略对比、组合优化和高级实验
  • 高级实验 工作区(?tab=advanced)整合 Walk-Forward、批量参数搜索、贝叶斯优化、市场状态分层、Portfolio 曝险与基准对比,把"过拟合检测 → 参数稳健性 → 组合验证"做成一条线
  • 保留 cross-market 跨市场回测作为核心研究能力的一部分
  • 内置 29 种策略,覆盖 7 大类别(见下表);策略库用于研究与对比,不构成投资建议
  • 回测结果支持收益、Sharpe、回撤、交易事件、月度收益等维度展示
  • 主回测每跑完一次会自动归档到"今日研究"档案,带策略 / 标的 / 期间 / 主要指标,便于多版本对比
  • 配套 strategy_statistical_tests.py 形式化检验层(DM + 区块自举 + Sharpe 检验 + Holm 校正),用于判断回测价差是否只是噪声
📋 内置策略一览(29 种)
类别 策略
基础策略 均线交叉 · RSI · 布林带 · 买入持有 · 海龟交易 · 多因子
高级策略 均值回归 · 动量 · VWAP · 随机振荡 · MACD · ATR 跟踪止损 · 组合策略
技术分析 Ichimoku 云图 · 随机指标 · CCI · 抛物线 SAR · 多指标融合
配对交易 单对配对交易 · 多对配对交易
机器学习 随机森林 · 逻辑回归 · 集成策略
情绪策略 情绪策略 · 情绪动量 · 逆向情绪
深度学习 LSTM · 深度学习集成 · 增强动量

📈 实时行情

  • 多市场行情聚合,支持指数、美股、A 股、加密等分组
  • 支持 WebSocket 实时更新、复盘快照、提醒命中历史和开发诊断
  • 详情页整合趋势、量价、情绪、风险、相关性、AI 辅助分析
  • 保留提醒记录、快照与诊断能力,适合作为独立的实时监控工作台

🔥 行业热度

  • 行业热力图支持时间窗、颜色维度、来源标签与状态条联动
  • 行业排行榜支持排序、筛选、来源联动、URL 状态持久化
  • 龙头股详情支持火花线、AI 洞察、竞态保护与观察列表提醒
  • 保留页面内提醒、观察与状态持久化,适合作为独立的行业研究工作区

👀 界面预览

实时行情深度详情
实时行情深度详情
趋势、量价、情绪、风险与相关性等多维联动
行业热度总览
行业热度总览
行业评分、资金流向、板块轮动与排行榜
行业热力图
行业热力图
Treemap 交互视图,支持多维度切换与状态条定位
龙头股详情
龙头股详情
从行业到个股的多维分析链路

🏗️ 系统架构

整体结构

quant-trading-system/
├── backend/                        # FastAPI 后端
│   ├── main.py                     # 应用入口、中间件与路由挂载
│   └── app/
│       ├── api/v1/endpoints/       # backtest / realtime / industry / cross-market 等接口
│       ├── core/                   # 配置、错误处理、任务队列、限流状态
│       ├── db/                     # 数据库连接与 schema
│       ├── schemas/                # Pydantic 请求/响应模型
│       ├── services/               # 实时提醒、偏好、复盘、交易流
│       └── websocket/              # WebSocket 路由与连接管理
├── frontend/                       # React 18 前端 (Vite)
│   └── src/
│       ├── components/             # 回测 / 实时 / 行业 / 跨市场等组件 (31 主组件 + 6 子模块)
│       ├── hooks/                  # 实时偏好、实验工作区等自定义 Hook
│       ├── services/               # API 与 WebSocket 客户端
│       ├── contexts/               # React Context 状态管理
│       ├── i18n/                   # 国际化支持
│       └── utils/                  # 路由、快照对比、格式化工具
├── src/                            # 核心算法库
│   ├── analytics/                  # 行业分析、估值、趋势、信号、定价等 (26 模块)
│   ├── backtest/                   # 主回测 / 跨市场 / 批量 / 组合 / 风控 / 执行引擎 (14 模块)
│   ├── core/                       # 基础类、事件系统
│   ├── data/                       # 数据管理器、实时管理器、数据提供器、另类数据
│   │   └── providers/              # 8 大数据提供器 (Yahoo / AKShare / Sina / TwelveData 等)
│   ├── middleware/                 # 请求中间件
│   ├── reporting/                  # 报告生成
│   ├── security/                   # 安全与加密
│   ├── settings/                   # 分层配置管理 (base / data / trading / api / performance / gui)
│   ├── strategy/                   # 29 种内置策略实现 + 策略验证器
│   ├── trading/                    # 交易执行与跨市场资产建模
│   └── utils/                      # 通用工具
├── tests/                          # 测试套件
│   ├── unit/                       # 单元测试
│   ├── integration/                # 集成测试
│   ├── e2e/                        # Playwright 浏览器 E2E
│   └── manual/                     # system smoke 脚本
├── docs/                           # 项目文档
└── scripts/                        # 启停、检查、文档生成、验证等运维脚本

技术栈

层级 技术 说明
后端框架 FastAPI + Uvicorn 异步 RESTful API,自动 OpenAPI 文档
前端框架 React 18 + Ant Design 5 懒加载、响应式布局、主题支持
实时通信 WebSocket 实时行情与交易流广播
数据获取 yfinance · Tushare · AKShare · THS/Sina · Tencent 等多源 多 provider 聚合与故障回退
任务队列 Celery + Redis 异步回测任务与后台调度
时序数据库 TimescaleDB (PostgreSQL) 行情数据持久化与高效时序查询
图表可视化 Recharts + Ant Design Charts + Lightweight Charts K 线 / 热力图 / 雷达图 / 走势线
监控 Prometheus Client + APScheduler 性能指标采集与定时任务
测试 pytest + Jest + Playwright 单元 / 集成 / 浏览器 E2E
CI/CD GitHub Actions 后端回归 + 前端回归 + E2E 验证

数据提供器

当前核心行情源分工

场景 主用数据源 补充 / 兜底 定位
实时行情 Yahoo Finance Sina / AKShare 单股接口 面向实时面板与跨市场资产,优先保留日内可更新能力
行业热度 THS AKShare / Tushare / Sina THS 提供行业热度主底座,AKShare 补元数据,Tushare 补盘后资金流与板块状态,Sina 做低可用兜底
龙头股 THS / Sina AKShare / Tencent / Tushare THS/Sina 给领涨股线索,AKShare/Tencent 补成分股和估值,Tushare dc_index 在其他源缺失时补盘后领涨股
A 股 / ETF 历史 Tushare Pro AKShare / Sina Tushare 作为付费盘后与历史研究源,不作为实时行情源
提供器 覆盖市场 说明
Yahoo Finance 美股、指数、跨市场资产 全球主要市场行情;当前实时面板的主行情源
Tushare Pro A 股、ETF、行业盘后 公司授权 / 付费数据源;用于 A 股/ETF 历史、交易日历、市场情绪、行业盘后资金流与板块状态
AKShare A 股、行业 沪深行情、行业分类、行业元数据、成分股与估值补充
Sina / Sina THS A 股、行业 新浪财经实时行情与同花顺行业热度主数据
Tencent Finance A 股单股 单股 PE/PB、市值、换手率等估值字段兜底
TwelveData 全球 多市场行情 API
AlphaVantage 美股 日线 / 周线 / 月线及技术指标
US Stock Provider 美股 美国市场专用适配器
Commodity Provider 商品 大宗商品行情

🚀 快速开始

环境要求

依赖 最低版本 推荐版本
Python 3.9+ 3.13
Node.js 16+ 22
npm 8+ 10+

一键启动

git clone https://github.com/Leonard-Don/quant-trading-system.git
cd quant-trading-system

# 复制并按需修改环境变量
cp .env.example .env

# 一键启动前后端
./scripts/start_system.sh

# 后台托管启动(本地日常使用)
./scripts/start_system.sh --daemon --force-port-cleanup

分步启动

# 1. 安装后端依赖
pip install -r requirements-dev.txt

# 2. (可选)启动 Celery Worker
# 需要自行配置 CELERY_BROKER_URL
./scripts/start_celery_worker.sh

# 3. 启动后端
python scripts/start_backend.py

# 4. 启动前端(新终端)
cd frontend
npm install
npm start

环境变量配置

项目使用分层环境变量管理,所有配置项在 .env.example 中有完整注释。核心配置分组:

分组 说明
基础配置 日志等级、环境标识、调试模式
数据配置 缓存策略、数据源超时、刷新间隔
交易配置 初始资金、佣金、滑点、风控阈值
API 配置 前后端地址、端口、CORS
安全配置 限流、加密、审计日志
可选外部服务 数据库、Redis、Celery broker
OAuth GitHub / Google OAuth 集成
通知 邮件、钉钉、企业微信

健康检查

python3 ./scripts/health_check.py

🧪 测试验证

项目覆盖后端单元 / 集成测试、前端组件测试和浏览器 E2E 验证。

后端测试

# 完整单元测试
pytest tests/unit/ -q

# 集成测试
pytest tests/integration/ -q

# 指定模块
pytest tests/unit/test_backtester.py tests/unit/test_realtime_manager.py -q

前端测试

cd frontend

# 完整测试套件(30 个测试文件)
CI=1 npm test -- --runInBand --watchAll=false

# 按模块测试
CI=1 npm test -- --runInBand --runTestsByPath \
  src/__tests__/app-routing.test.js \
  src/__tests__/cross-market-backtest-panel.test.js \
  src/__tests__/realtime-panel.test.js \
  src/__tests__/industry-heatmap.test.js

浏览器 E2E

cd tests/e2e

# 实时行情验证
npm run verify:realtime

# 行业功能验证
npm run verify:industry

CI 流水线

GitHub Actions 会在每次 push 到 main 或 PR 时自动运行:

Job 内容
backend 后端依赖安装 + 回归测试 (pytest)
frontend 前端依赖安装 + 回归测试 (Jest) + 构建验证
research-e2e 全栈启动 + Playwright E2E

📖 API 文档

启动后端后可访问:

入口 地址
Swagger UI http://localhost:8000/docs
ReDoc http://localhost:8000/redoc

详细参考文档:


📚 相关文档

文档 说明
更新日志 版本发布记录与变更说明
API 参考 接口契约与使用示例
部署指南 生产环境部署流程
测试指南 测试编写与运行说明
项目结构 目录结构与模块说明
性能优化 性能调优建议
维护指南 日常维护与运维
回测契约 回测结果数据格式
贡献指南 开发流程与提交规范
安全策略 安全漏洞报告流程

🛠 常用脚本

脚本 说明
scripts/start_system.sh 一键启动前后端
scripts/stop_system.sh 一键停止所有服务
scripts/start_backend.py 单独启动后端
scripts/start_frontend.sh 单独启动前端
scripts/start_celery_worker.sh 启动 Celery 异步任务进程
scripts/stop_celery_worker.sh 停止 Celery 进程
scripts/health_check.py 全链路健康检查
scripts/run_tests.py 运行测试套件
scripts/generate_api_docs.py 生成 API 文档
scripts/sync_version.py 同步前后端版本号
scripts/performance_test.py 性能压测
scripts/cleanup.sh 清理缓存与临时文件

🤝 如何贡献

欢迎参与贡献!请查看 CONTRIBUTING.md 了解完整流程。

快速通道:

# 1. Fork 并克隆
git clone https://github.com/<your-username>/quant-trading-system.git

# 2. 安装依赖
pip install -r requirements-dev.txt
cd frontend && npm install && cd ..

# 3. 创建功能分支
git checkout -b feature/your-feature

# 4. 开发并测试
pytest tests/unit/ -q
cd frontend && CI=1 npm test -- --runInBand --watchAll=false

# 5. 提交 PR
git push origin feature/your-feature

🔗 相关项目

如果你还需要更偏定价研究、宏观因子监控和研究运营闭环的能力,可以查看独立项目 super-pricing-system

两个项目当前按独立仓维护:

  • quant-trading-system:聚焦 策略回测 / 实时行情 / 行业热度
  • super-pricing-system:聚焦 定价研究 / 上帝视角 / 研究工作台 / Quant Lab
  • 两边各自独立 clone、安装、启动、测试和发布

📄 许可证

本项目基于 MIT License 发布。

About

FastAPI + React quantitative research workspace for backtesting, realtime monitoring, industry heatmaps, and cross-market experiments.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors