Back to projects
READMESub-project of: SigTrading

Multi-strategy, multi-core, LLM-augmented Binance quantitative trading system (spot + USDⓈ-M futures)

Python 3.12FastAPIReact 19multiprocessingshared_memoryBinance WSLLMpytest

📈 Quant Trading System

多策略 · 多核 · LLM 增强的 Binance 量化交易系统(现货 + USDⓈ-M 合约)

Python FastAPI React Lightweight Charts License: MIT


✨ 功能特性

  • 🧮 八大策略并行:VolumeSurge / GridTrading / MACD+RSI / MeanReversion / MomentumBreakout / LLMMartingale / LLMChaseReversal / NewsSentiment (事件驱动),统一注册表 + 工厂模式。
  • 📰 web_search 信息搜索模块:RSS (CoinDesk/Cointelegraph/The Block/Decrypt/Bitcoinist) + Binance 公告 + NewsAPI/CryptoPanic + Reddit (PRAW) + X API v2 + 恐慌贪婪指数 + Whale Alert + CoinGlass 资金费率;APScheduler 定时调度 + URL 去重 + LLM/关键词双模情绪打分 + 突发新闻实时 WS 推送。
  • ⚡ 多核交易引擎:基于 multiprocessing + shared_memory 的无锁 RingBuffer (seqlock),每个策略 pin 到独立物理核 (os.sched_setaffinity),零拷贝行情广播;v0.3.0 起支持接入真实 Binance WS 行情(可切换合成随机游走)。
  • 🧠 LLM 市场态势预测:调用 OpenAI / DeepSeek 兼容接口对 K 线 + 技术指标做态势分析,输出方向 / 置信度 / 单边行情标志,并按权重融入策略信号;API 不可用时自动降级为统计预测。
  • 🎯 参数优化器:GridSearch 网格搜索 + Walk-Forward 滚动验证(防过拟合),多维加权评分 (Sharpe / Return / MaxDD),参数稳定性分析 (变异系数),样本外过拟合比指标。
  • 📊 情绪融合:非 LLM 策略信号经三因子融合 final = (1-w_llm-w_news)*base + w_llm*llm + w_news*news,权重通过 REST 实时可调。
  • 📡 Binance 限流 + 深度数据:按 endpoint 权重表 + 每分钟窗口限流 (默认 1080 权重),429/418 指数退避 + Retry-After 尊重 + X-MBX-USED-WEIGHT-1M 头校准;新增 @depth20@100ms 流 + 本地 orderbook 维护 + REST /api/v3/depth
  • 📈 合约 & 杠杆交易:Binance USDⓈ-M Futures,1×–125× 杠杆,逐仓 / 全仓切换,真实的 positionSide 传递(双向持仓模式),止损止盈一体化。
  • 🔙 事件驱动回测:输出 Sharpe / MaxDD / 胜率 / Profit Factor 等指标;信号词汇统一为 {buy, sell, close_long, close_short, hold}
  • 🖥️ React 交易终端:深色 TradingView 风格设计系统,5 路由布局(交易 / 仪表盘 / 新闻 / 回测 / 设置),OrderBook 深度报价、NewsFeed 实时新闻流、SentimentPanel 情绪仪表盘、OptimizerPanel 参数优化、OrderTicket 手动下单、PositionTable 持仓表;react-router 代码分割 + recharts 可视化。
  • ✅ 单元测试:34 个 pytest 用例覆盖信号词汇、限流器、情绪打分、参数优化器、walk-forward 切片。
  • 🔐 测试网优先:默认连接 Binance 测试网,无需 API Key 即可启动(3 个 keyless 信息源开箱可用)。

🏗️ 架构

┌─────────────────────────────────────────────────────────────┐
│  Core 0  │  React Frontend (Lightweight Charts + Dashboard)  │
└─────────────────────────▲───────────────────────────────────┘
                          │ WebSocket / REST
┌─────────────────────────┴───────────────────────────────────┐
│  Core 1  │  FastAPI + Binance WS  ──►  SharedRingBuffer      │
└─────────────────────────▲───────────────────────────────────┘
                          │ zero-copy
       ┌──────────────────┼──────────────────┐
       ▼                  ▼                  ▼
┌────────────┐    ┌────────────┐    ┌────────────┐  Core 2..N-1
│ VolumeSurge│    │  Grid /    │    │ Momentum / │  策略进程集群
│  + LLM     │    │ MACD+RSI   │    │ MeanRev    │  (CPU pinned)
└─────┬──────┘    └─────┬──────┘    └─────┬──────┘
      └──────── mp.Queue (signals) ───────┘
                          ▼
┌─────────────────────────────────────────────────────────────┐
│  Core N  │  Trade Executor + RiskManager → Binance Spot/Fut │
└─────────────────────────────────────────────────────────────┘

🚀 快速开始

前置条件

  • Python 3.12+ / Node.js 20+
  • Linux(os.sched_setaffinity 仅 Linux;macOS/Windows 下多核引擎会跳过亲和性绑定,自动降级为普通多进程)
  • Binance 测试网账户(可选)
  • 至少一个 LLM API Key(可选,未配置时自动退化统计预测)
  • 至少一个新闻源 API Key(可选,3 个源开箱即用)

后端

cd backend
python -m venv .venv && source .venv/bin/activate    # Windows: py -m venv .venv && .venv\Scripts\activate
pip install -r requirements.txt

# 配置(可选,复制后按需填写)
cp .env.example .env                                  # Windows: copy .env.example .env

# 启动 API
uvicorn app.main:app --reload --host 0.0.0.0 --port 8003

API 文档:http://localhost:8003/docs

前端

cd frontend
npm install
npm run dev   # http://localhost:5190 (Vite 代理 /api → :8003)

多核引擎(可选)

cd backend
python -m app.core.multicore.engine   # 启动 SharedMemory + 多进程策略集群

🧠 策略说明

策略 ID名称适用市场核心逻辑
volume_surgeVolume Surgespot / futures价格 + 成交量 + 量变率三因子 Z-Score 突破
gridGrid Tradingspot / futures区间网格挂单,震荡行情捕捉差价
macd_rsiMACD + RSIspot / futuresMACD 金叉 + RSI 过滤,趋势确认
mean_reversionMean Reversionspot价格偏离均值 N×σ 反向入场
momentumMomentum Breakoutspot / futures突破近 N 周期高低点,顺势跟踪
llm_martingaleLLM Martingalespot / futuresLLM 预测方向 + 马丁格尔加仓
llm_chase_reversalLLM Chase Reversalspot / futuresLLM 识别反转点追入
news_sentiment新闻情绪spot / futures突发新闻事件驱动 + 趋势过滤 + 反向新闻提前离场

所有非 LLM 策略可接 LLMStrategyIntegration 进行三因子信号融合:

final_signal = (1 - w_llm - w_news) × base + w_llm × llm.strength + w_news × news.score

confidence > boost_threshold 时触发信号增强;权重通过 PUT /api/v1/llm/integration/config 实时调节。


📡 API 接口

REST

方法路径说明
GET/api/v1/status系统状态
GET/api/v1/strategies/types可用策略元数据
`GET\POST`/api/v1/strategies策略列表 / 创建
`GET\PUT\DELETE`/api/v1/strategies/{id}策略详情 / 更新 / 删除
POST`/api/v1/strategies/{id}/start\stop`启停策略
GET/api/v1/strategies/{id}/state运行时状态
GET/api/v1/market/ticker/{symbol}实时报价
GET/api/v1/market/klines/{symbol}K 线历史
GET/api/v1/market/info交易对元信息
POST/api/v1/market/download下载历史 K 线入库
GET/api/v1/market/data[/stats]本地数据查询 / 统计
`POST\GET\DELETE`/api/v1/orders下单 / 查询 / 撤单
GET/api/v1/positions当前持仓
GET/api/v1/account账户信息
`GET\PUT`/api/v1/risk[/config]风控状态 / 配置
GET/api/v1/trades历史成交
POST/api/v1/backtest/run运行回测
GET/api/v1/backtest/{id}回测结果
GET/api/v1/llm/predictionLLM 市场预测
`GET\PUT`/api/v1/llm/integration/configLLM 集成权重配置
GET/api/v1/market/orderbook/{symbol}深度报价 (REST)
GET/api/v1/market/rate-limitBinance 限流状态
GET/api/v1/news新闻列表 (分页 + 过滤)
GET/api/v1/news/sentiment/{symbol}symbol 聚合情绪
GET/api/v1/news/sources/status新闻源启用状态
POST/api/v1/news/refresh立即拉取所有新闻源
POST/api/v1/strategies/{type}/optimize参数网格搜索
POST/api/v1/strategies/{type}/walk-forwardWalk-Forward 滚动验证
GET/api/v1/optimizer/results[/{id}]优化结果列表 / 详情
GET/health健康检查

WebSocket

路径说明
/api/v1/ws/market/{symbol}实时 K 线 + ticker + 深度 (depth)
/api/v1/ws/signals策略信号实时推送
/api/v1/ws/news突发新闻实时推送 (importance ≥ 0.7)

🖥️ 命令行接口 (CLI)

系统提供完整 CLI, 无需启动 API 服务 即可直接调用核心引擎 (回测/优化/数据/策略 CRUD 均离线可用)。 基于 typer, 支持 table / JSON 两种输出。

安装与运行

# 方式 A: 仓库根目录直接运行 (无需安装, 自动定位 backend/)
py -3 quant-cli <command> [subcommand] [options]

# 方式 B: 以模块形式运行 (需在 backend/ 目录)
cd backend && python -m app.cli <command> [subcommand] [options]

# 方式 C: 安装 console_script (pip install -e . 后)
pip install -e .
quant-cli <command> [subcommand] [options]

全局选项

选项环境变量说明
`-o, --output json\table`QUANT_CLI_OUTPUT输出格式 (默认 table)
--no-colorNO_COLOR禁用 ANSI 颜色
-v, --verbose详细日志 (含 SQL)
--db-url URL覆盖数据库连接
全局选项须放在子命令之前: quant-cli --output json strategy list-types

命令总览

quant-cli system     status / config                  # 系统状态与配置
quant-cli strategy   list-types / list / create /     # 策略管理
                     show / delete / start / stop /
                     judge / state / logs / clear-logs
quant-cli market     ticker / klines / orderbook /    # 实时行情
                     info / rate-limit
quant-cli data       download / download-range /      # 历史数据
                     coverage / query / stats / delete
quant-cli backtest   run / list / show                # 回测引擎
quant-cli optimizer  optimize / walk-forward          # 参数优化
quant-cli trade      order / cancel / orders /        # 交易执行
                     positions / account / risk / risk-set
quant-cli news       list / sentiment / sources /     # 新闻情绪
                     refresh
quant-cli news llm   predict / config                 # LLM 预测

常用示例

# 系统状态
quant-cli system status

# 策略: 列出类型 / 创建 / 启停 (启停需 --server 指向运行中的 API)
quant-cli strategy list-types
quant-cli strategy create -t grid -s ETHUSDT --params '{"grid_levels":12}'
quant-cli strategy start <id> --server http://localhost:8003

# 回测: 直接调用引擎, 无需联网 (synthetic 合成数据兜底)
quant-cli backtest run -t momentum -s BTCUSDT --data-source synthetic --lookback-hours 24
quant-cli --output json backtest run -t volume_surge --json    # 完整 trades/equity

# 参数优化: 网格搜索 + Walk-Forward
quant-cli optimizer optimize volume_surge --grid '{"lookback":[10,20,30]}'
quant-cli optimizer walk-forward macd_rsi --grid '{"macd_fast":[12,24]}' --train 500 --test 100

# 数据: 下载历史 K 线并入库
quant-cli data download -s BTCUSDT -i 1m --limit 500
quant-cli data coverage -s BTCUSDT -i 1m        # 覆盖率与缺口
quant-cli data query -s BTCUSDT -i 1m -l 10     # 查询最近 10 根

# 交易: 下单 / 持仓 / 风控 (直连 Binance testnet)
quant-cli trade order -s BTCUSDT --side buy --qty 0.01
quant-cli trade positions
quant-cli trade risk

# 新闻与 LLM
quant-cli news list --symbol BTCUSDT --limit 10
quant-cli news llm predict -s BTCUSDT

运行态命令 (需 API 服务)

start / stop / judge / state 涉及运行中的策略实例 (WebSocket 订阅), 需通过 --server http://localhost:8003 转发给 FastAPI 服务:

uvicorn app.main:app --port 8003 &     # 启动 API
quant-cli strategy start <id> --server http://localhost:8003
quant-cli strategy judge <id> --server http://localhost:8003
quant-cli strategy state <id> --server http://localhost:8003

📁 项目结构

quant-trading/
├── backend/
│   ├── app/
│   │   ├── main.py                 # FastAPI 入口 + 所有路由 (56 个)
│   │   ├── config.py               # Pydantic Settings (含 web search / 多核开关)
│   │   ├── db.py / models/         # SQLAlchemy 异步 ORM (Strategy/Order/Kline/BacktestRun/NewsItem)
│   │   ├── cli/                    # 🖥️ 命令行接口 (typer, 无需启动 API)
│   │   │   ├── main.py             # 入口 + 命令组挂载
│   │   │   ├── context.py          # 异步运行/DB会话/输出格式化 (table|json)
│   │   │   ├── client.py           # HTTP 客户端 (--server 模式)
│   │   │   ├── system_cmd.py       # status / config
│   │   │   ├── strategy_cmd.py     # 策略 CRUD + 启停 + 判断 + 日志
│   │   │   ├── market_cmd.py       # 行情 + 历史数据
│   │   │   ├── backtest_cmd.py     # 回测 run/list/show
│   │   │   ├── optimizer_cmd.py    # GridSearch + Walk-Forward
│   │   │   ├── trade_cmd.py        # 下单/持仓/账户/风控
│   │   │   └── news_cmd.py         # 新闻 + LLM
│   │   └── core/
│   │       ├── exchange.py         # Binance WS/REST (kline + ticker + depth@100ms)
│   │       ├── exchange_rate_limiter.py  # 权重限流 + 429/418 退避 + 头校准
│   │       ├── backtest.py         # 事件驱动回测引擎
│   │       ├── strategies/         # 8 大策略 + 注册表 + NewsSentiment 事件驱动
│   │       ├── optimizer/          # GridSearch + Walk-Forward + 结果数据类
│   │       ├── websearch/          # 8 信息源 + 调度器 + 情绪打分 + 聚合器
│   │       ├── trading/            # executor / risk_manager / futures
│   │       ├── llm/                # LLM 预测器 + 特征提取 + 三因子集成层
│   │       └── multicore/          # MultiCoreEngine + SharedRingBuffer (真实行情接入)
│   ├── tests/                      # pytest 单元测试 (34 个)
│   ├── .env.example                # 全部环境变量样板
│   └── requirements.txt
├── frontend/
│   └── src/
│       ├── App.tsx                 # react-router 5 路由布局
│       ├── pages/                  # TradingTerminal / NewsPage / BacktestPage / SettingsPage
│       ├── components/             # Chart / Trading / Dashboard / News / ui
│       ├── hooks/                  # useWebSocket / useOrderBook / useNews
│       ├── store/                  # zustand marketStore (含 orderbook/news/sentiment/optimizer)
│       ├── styles/theme.ts         # TradingView 风格深色调色板
│       └── config.ts               # API/WS URL helper
├── agents/                         # 智能体集群任务卡 (A~E)
├── scripts/                        # 工具脚本
├── quant-cli                       # 🖥️ CLI 入口脚本 (py -3 quant-cli ...)
├── pyproject.toml                  # 包定义 + quant-cli console_script
├── AGENT_CLUSTER.md                # 智能体分工
├── ARCHITECTURE.md                 # 详细架构文档
└── README.md

⚙️ 配置(.env)

# 基础
APP_ENV=development
LOG_LEVEL=INFO
DATABASE_URL=sqlite+aiosqlite:///./quant_trading.db

# Binance
BINANCE_TESTNET=true
BINANCE_API_KEY=
BINANCE_SECRET_KEY=
DEFAULT_SYMBOL=BTCUSDT
DEFAULT_TIMEFRAME=1m

# 风控
MAX_POSITION_SIZE=1.0
MAX_LEVERAGE=1

# 重连 / 健康检查
RECONNECT_MIN_DELAY=1.0
RECONNECT_MAX_DELAY=60.0
RECONNECT_BACKOFF=2.0
HEALTH_CHECK_INTERVAL=30

# 回测默认值
BACKTEST_INITIAL_CAPITAL=10000.0
BACKTEST_COMMISSION=0.001
DEFAULT_LOOKBACK=20
DEFAULT_ENTRY_THRESHOLD=2.0
DEFAULT_EXIT_THRESHOLD=0.5
DEFAULT_STOP_LOSS_PCT=2.0
DEFAULT_TAKE_PROFIT_PCT=5.0

# LLM 市场态势(可选)
LLM_API_URL=https://api.deepseek.com/v1/chat/completions
LLM_API_KEY=
LLM_MODEL=deepseek-chat
LLM_INTEGRATION_WEIGHT=0.3
NEWS_INTEGRATION_WEIGHT=0.2

# 多核引擎(可选)
USE_MULTICORE_ENGINE=false

# Web Search 信息源(可选, 不填则该源自动禁用)
NEWSAPI_KEY=
CRYPTOPANIC_KEY=
REDDIT_CLIENT_ID=
REDDIT_CLIENT_SECRET=
REDDIT_USER_AGENT=quant-trading/0.3
TWITTER_BEARER_TOKEN=
WHALE_ALERT_KEY=
⚠️ 实盘交易请显式 BINANCE_TESTNET=false 并填入 API Key;合约模式下务必先确认 MAX_LEVERAGE 与逐仓 / 全仓设置。 📰 至少 3 个信息源(RSS / Binance 公告 / 恐慌贪婪指数)无需任何 API Key 即可工作;其余源在对应 Key 配置后自动启用。

🧪 测试

cd backend
py -m pytest tests/ -v          # 34 个单元测试

覆盖:信号词汇统一、限流器权重/退避/头校准、关键词情绪打分、LLM 退化路径、GridSearch 评分排序、Walk-Forward 窗口切分、NewsSentimentStrategy 异常容错。


📄 License

MIT © Quant Trading Project