Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quant Backtest Platform

量化策略回测平台 - 基于 FastAPI + React 的完整前后端分离架构

项目概述

本项目是一个量化交易策略回测平台,支持:

  • 策略管理:创建、编辑、删除量化交易策略
  • 技术指标:支持 SMA、EMA、RSI、MACD 等多种技术指标
  • 信号规则:可视化配置交易信号(买入/卖出条件)
  • 风险管理:设置止损、止盈、仓位控制等风控参数
  • 回测引擎:基于历史数据执行策略回测
  • 结果分析:收益率、夏普比率、最大回撤等指标展示

技术栈

后端

  • FastAPI: 高性能异步 Web 框架
  • Pydantic: 数据验证和序列化
  • SQLAlchemy + SQLite: 持久化存储
  • numexpr: 安全表达式评估(替代 eval)
  • Python 3.11+: 运行环境

前端

  • React 18: UI 框架
  • Vite: 构建工具
  • Ant Design: 组件库(迁移中)
  • Axios: HTTP 客户端

项目结构

quant-backtest-platform/
├── backend/                 # 后端服务
│   ├── app/
│   │   ├── api/            # API 路由
│   │   ├── core/           # 核心配置
│   │   ├── data/           # 数据服务
│   │   │   └── sources/    # 数据源(mock / akshare)
│   │   ├── models/         # Pydantic 数据模型
│   │   ├── services/       # 业务逻辑(回测引擎)
│   │   └── storage.py      # SQLite 持久化
│   ├── requirements.txt
│   └── venv/
├── frontend/               # 前端应用
│   ├── src/
│   │   ├── components/    # React 组件
│   │   ├── pages/         # 页面组件
│   │   ├── services/      # API 服务
│   │   ├── App.jsx
│   │   └── main.jsx
│   ├── package.json
│   └── vite.config.js
├── docs/                   # 开发文档
└── start.sh                # 启动脚本

快速开始

环境要求

  • Python 3.11+
  • Node.js 18+
  • npm 或 yarn

后端启动

cd backend
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# 开发模式
uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload

# 生产模式
uvicorn app.main:app --host 127.0.0.1 --port 8000 --workers 4

前端启动

cd frontend
npm install
npm run dev

前端默认运行在 http://localhost:8080

一键启动

./start.sh

API 文档

启动后端后访问:http://localhost:8000/docs

方法 路径 描述
GET /health 健康检查
GET /api/v1/strategies/ 获取策略列表
POST /api/v1/strategies/ 创建策略
GET /api/v1/strategies/{id} 获取策略详情
PUT /api/v1/strategies/{id} 更新策略
DELETE /api/v1/strategies/{id} 删除策略
POST /api/v1/strategies/{id}/backtest 运行回测
GET /api/v1/strategies/{id}/backtests 获取策略回测历史
GET /api/v1/backtests/ 获取所有回测历史
GET /api/v1/backtests/{id} 获取回测详情
GET /api/v1/backtests/{id}/chart-data 获取回测图表数据

数据模型

Strategy(策略)

{
  "id": "string",
  "name": "string",
  "description": "string",
  "category": "trend|mean_reversion|momentum|custom",
  "tags": ["string"],
  "indicators": [
    {"name": "ma5", "type": "sma", "period": 5}
  ],
  "signals": [
    {"name": "金叉", "condition": "close > ma5", "action": "buy", "weight": 1.0}
  ],
  "risk_management": {
    "max_position": 0.9,
    "max_position_per_stock": 0.3,
    "stop_loss": 0.05,
    "take_profit": 0.1
  },
  "created_at": "datetime",
  "updated_at": "datetime"
}

BacktestConfig(回测配置)

{
  "strategy_id": "string",
  "universe": ["000001.SZ", "000002.SZ"],
  "start_date": "2024-01-01",
  "end_date": "2024-12-31",
  "initial_capital": 100000,
  "data_source": "mock|akshare",
  "commission_rate": 0.0003,
  "slippage": 0.001
}

BacktestResult(回测结果)

{
  "id": "string",
  "strategy_id": "string",
  "strategy_name": "string",
  "config": {...},
  "metrics": {
    "total_return": 0.0953,
    "annual_return": 0.0953,
    "sharpe_ratio": 0.59,
    "max_drawdown": -0.0842,
    "volatility": 0.15,
    "win_rate": 0.52,
    "total_trades": 52,
    "winning_trades": 27,
    "losing_trades": 25
  },
  "trades": [...],
  "daily_values": [...]
}

已支持的技术指标

类型 说明
sma 简单移动平均
ema 指数移动平均
rsi 相对强弱指数(含除零保护)
macd 移动平均收敛发散(规划中)
bollinger 布林带(规划中)

信号条件表达式

信号条件使用安全的表达式语法,由 numexpr 执行:

  • 数学运算: +, -, *, /, **
  • 比较运算: >, <, >=, <=, ==, !=
  • 逻辑运算: and, or, not
  • 括号优先级

示例:

close > ma5 and close > ma20
pct_change > 1.5
rsi_14 < 30

开发指南

添加新的技术指标

backend/app/services/backtest.py_calculate_indicators 方法中添加:

elif ind.type == 'your_indicator':
    df[ind.name] = ...  # 计算逻辑

添加新的数据源

backend/app/data/sources/ 目录下创建新的数据源类,实现 get_daily_data 方法。

安全说明

  • 开发阶段服务监听 127.0.0.1,通过 SSH 隧道访问
  • 信号条件使用 numexpr 评估,防止代码注入
  • RSI 指标含除零保护
  • 生产环境建议配置反向代理(Nginx)+ HTTPS
  • 添加身份认证和授权

开发文档

详细的技术决策、问题追踪、API 设计见 docs/DEVELOPMENT.md

许可证

MIT License

About

量化策略回测平台 - FastAPI + React

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages