Skip to content

MaoYo42/quantmind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuantMind — 美股量化分析系统

个人美股量化分析平台,专注日线级别数据采集、技术分析、信号生成与回测验证。

架构概览

yfinance ──→ collectors ──→ DuckDB ──→ analyzers ──→ signals ──→ dashboard
                 │                     │               │             tui (Textual)
           hermes cron            indicators       atomic signals   终端面板
           定时触发              + 结构分析(缠论)    + 策略/事件
                                + market regime   + 多周期偏置(P0)
                                + Alpha101因子    + 自适应权重(P1)
                                                    ↓
                                              backtest / tracker
                                             回测验证 + 绩效追踪

核心功能

数据采集

  • 日线行情 — OHLCV + 分红拆股,yfinance,盘后自动拉取
  • 期权链 — 到期日、行权价、IV、Greeks,跟踪最近 3 个到期日
  • 基本面 — PE、市值、EPS、利润率等,季度更新
  • 调度 — 通过 hermes cron 定时触发(盘后采集 + 盘前分析)

技术分析

  • 经典指标 — RSI、MACD、布林带、SMA/EMA、ATR(手写实现,无 pandas-ta 依赖)
  • 结构分析(缠论) — K 线包含处理 → 分型识别 → 笔连接 → 中枢识别 → 市场状态分类
  • 市场状态 — bullish_trend / bearish_trend / range_bound / transitional / high_volatility
  • 多周期分析 (P0) — 日线聚合为周线,周线趋势作为偏置过滤(只做多/只做空/无限制)
  • Alpha 101 因子 — 25 个 WorldQuant alpha 因子的时序版本

信号系统(原子化设计,借鉴 czsc)

  • 原子信号 — 每个信号独立计算(RSI超卖/超买、MACD金叉/死叉、布林带突破、均线趋势、成交量异常、波动率、ATR突破)
  • 策略组合Strategy(线性加权)+ Event(AND/OR/NOT 逻辑组合)+ EventStrategy(多事件策略)
  • 方向仲裁 — 多空信号冲突时按多数+置信度决胜
  • 自适应权重 (P1) — 根据原子信号历史胜率动态调整置信度,低胜率自动淘汰
  • 信号跟踪 — 每个信号发出后跟踪其后 1/3/5/10 日表现

回测验证

  • 信号回测 — 对历史信号计算胜率、平均收益、夏普率、最大回撤
  • 成本感知回测TradeSimulator 模拟真实交易(手续费 0.1%、滑点 0.05%)
  • 权重优化 — 随机搜索寻找最优指标权重组合

ML 预测

  • 基于技术指标的 XGBoost 价格方向预测(feature: RSI, MACD, BB, SMA, ATR 等)
  • 单标的独立训练,自动评估

可视化

  • Streamlit 面板 — K 线图、信号面板、市场状态、回测结果、权重分析
  • Textual TUI — 终端交互面板,支持概览/信号/跟踪/数据 4 个标签页

快速开始

# 安装依赖
pip install -r requirements.txt

# 初始化数据库
python scripts/collect.py --init-db

# 采集数据(手动测试)
python scripts/collect.py --symbols AAPL,MSFT,GOOGL

# 运行分析管线
python scripts/analyze.py

# 启动 Streamlit 面板
streamlit run dashboard/app.py

# 启动终端面板
python tui/app.py

# 用 hermes cron 定时采集(每天盘后)
hermes cron add "30 0 * * 2-6" "cd ~/quant && python scripts/collect.py"

项目结构

quant/
├── config.py                # 全局配置(Collect/Indicator/Signal/Storage/MultiTF/Adaptive/Dashboard)
├── core/models.py           # 数据模型:Bar, SignalAtom, SignalResult
│
├── collectors/
│   └── stocks.py            # yfinance 采集:行情+期权+基本面
│
├── storage/
│   ├── engine.py            # DuckDB 引擎封装(单文件零配置)
│   └── schema.py            # 7 张表结构定义
│
├── analyzers/
│   ├── indicators.py        # 技术指标计算(手写 RSI/MACD/BB/SMA/ATR)
│   ├── regime.py            # 市场状态识别(委托 structure.py)
│   ├── structure.py         # 缠论结构分析:分型→笔→中枢→状态
│   ├── signals.py           # 原子信号系统 + 自适应权重(P1) + 策略/事件组合
│   ├── multitimeframe.py    # 多周期分析(P0):周线趋势偏置
│   ├── alpha101.py          # WorldQuant Alpha 101 因子(25 个时序版)
│   ├── backtest.py          # 回测引擎 + 成本感知 TradeSimulator
│   └── tracker.py           # 信号绩效跟踪
│
├── models/
│   └── predictor.py         # XGBoost ML 预测模型
│
├── dashboard/
│   └── app.py               # Streamlit 可视化面板
│
├── tui/
│   └── app.py               # Textual 终端交互面板
│
├── scripts/
│   ├── collect.py           # 数据采集入口
│   ├── analyze.py           # 分析管线入口
│   └── report.py            # 信号摘要报告
│
└── requirements.txt

信号系统详解

原子信号

信号 类型 说明
rsi_oversold 反转 RSI < 30 → 看多
rsi_overbought 反转 RSI > 70 → 看空
macd_golden_cross 趋势 MACD 上穿信号线 → 看多
macd_death_cross 趋势 MACD 下穿信号线 → 看空
bb_touch_lower 反转 收盘跌破下轨 2% → 看多
bb_touch_upper 反转 收盘突破上轨 2% → 看空
sma_trend_up/down 趋势 SMA20/SMA50 排列方向
volume_spike 确认 成交量 > 2.5 倍均值
high_volatility 风险 ATR/Close > 6% → 警示
atr_breakout 趋势 突破 SMA20 ± 2.5×ATR

多层过滤

P0: 多周期偏置 ─── 周线趋势决定做多/做空/双向
  ↓
P1: 自适应权重 ─── 原子历史胜率调置信度(淘汰 <= 35%)
  ↓
P2: 方向仲裁 ──── 多空冲突按多数+置信度决胜

回测结果解读

运行 python -m analyzers.backtest 或通过面板查看:

  • 胜率 — 信号发出后 N 日方向正确率
  • 夏普率 — 风险调整后收益(年化)
  • 置信度分桶 — 高置信度信号是否确实表现更好
  • 按标的分解 — 哪些股票信号系统表现最佳

数据源

数据 来源 更新频率 说明
日线行情 yfinance 免费,无需 API Key
期权链 yfinance OI、Volume、IV、Greeks
基本面 yfinance 季度 PE、市值、股息率

调度配置(hermes cron)

# 盘后采集数据(美东时间周一至周五 20:30)
hermes cron add "30 0 * * 2-6" "cd ~/quant && python scripts/collect.py"

# 盘前运行分析(美东时间 7:00)
hermes cron add "0 11 * * 1-5" "cd ~/quant && python scripts/analyze.py"

# 查看定时任务
hermes cron list

# 删除任务
hermes cron remove <job-id>

技术选型

组件 选型 理由
存储 DuckDB 列存引擎,零运维,单文件,分析查询极快
采集 yfinance 免费,覆盖美股+期权+基本面
指标 手写 零依赖,兼容 Py3.14
信号 原子化(czsc 风格) 灵活组合,可扩展,支持自适应权重
ML XGBoost 表格数据王者,速度快,可解释
面板 Streamlit 快速出图,交互式探索
TUI Textual 终端内浏览,无需浏览器
调度 hermes cron 无需额外依赖,原生支持

设计原则

  1. 单向数据流 — 采集→存储→分析→信号→展示,每阶段独立运行
  2. 配置驱动 — 所有参数集中在 config.py,代码不硬编码
  3. 输入/输出标准化 — DataFrame/字典,方便测试和回测
  4. 渐进式复杂度 — 从 yfinance + DuckDB 起步,核心接口不变即可替换

路线图

  • 项目脚手架
  • 数据采集管线
  • 技术指标分析(手写,零依赖)
  • 缠论结构分析(分型/笔/中枢)
  • 原子信号系统 + 策略/事件引擎
  • 多周期偏置过滤(P0)
  • 自适应权重(P1)
  • 信号绩效跟踪
  • 回测引擎(含成本感知模拟)
  • 权重优化(随机搜索)
  • Alpha 101 因子
  • Streamlit 面板 + Textual TUI
  • ML 预测模型
  • hermes cron 调度
  • 期权策略分析
  • Telegram 通知推送
  • 因子 IC/IR 分析
  • 组合优化与仓位管理

About

美股量化分析系统:数据采集、技术分析、信号生成、可视化面板

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages