wangpage
quant-ashare
Python✨ New

机构级 A股量化系统 - Hermes 多智能体 + Barra 中性化 + Level2 微结构 + 15 个圈内 tricks 完整实现

Last updated Jun 21, 2026
13
Stars
6
Forks
1
Issues
0
Stars/day
Attention Score
54
Language breakdown
No language data available.
Files click to expand
README

quant-ashare

机构级 A股量化交易系统 - 融合 Hermes Agent 多智能体决策、Barra 风格因子中性化、Level2 微结构 alpha、Almgren-Chriss 冲击成本建模的开源实现.

Tests Smoke Python License

不是又一个抄 Alpha158 的项目. 本项目致力于实现 头部私募在用但很少公开的圈内技巧, 覆盖从数据清洗到执行层的完整量化链路.

当前状态: 已实装 9 个核心模块, 规划 15 个. 实装清单见 功能矩阵, 详解见 ADVANCED_TRICKS.md.


🏗️ 架构

┌─────────────────────────────────────────────────────────┐
│  LLM 决策层 (Hermes XML + 多轮辩论)                       │
│  [基本面] [技术] [情绪] → [Bull vs Bear] → [交易] → [风控] │
├─────────────────────────────────────────────────────────┤
│  qlib 核心 + Alpha158 + 35 A股特化因子                   │
├─────────────────────────────────────────────────────────┤
│  【圈内暗门 9 大模块 - 已实装】                             │
│  标签工程 / 微结构因子 / 因子衰减监控 / 事件屏蔽              │
│  Barra 中性化 / 组合优化 / 数据清洗 / 主题投资 / 执行层       │
├─────────────────────────────────────────────────────────┤
│  数据源: akshare + 东财/新浪直连 + Level2 NATS            │
├─────────────────────────────────────────────────────────┤
│  风控: 涨跌停 / T+1 / 凯利 / 回撤熔断 / Regime 乘数        │
└─────────────────────────────────────────────────────────┘

✨ 核心特性

🧠 多智能体 LLM 决策

  • Hermes-3 风格 XML 结构化推理 (<THINKING>, <REASONING>, <REFLECTION>)
  • Bull vs Bear 多轮辩论, 由 Judge agent 最终裁决
  • 三分析师并行 (asyncio), 延迟降 3x
  • 支持 Claude / GPT / DeepSeek / Kimi / Qwen / GLM 统一后端

📊 已实装 vs 规划功能矩阵

✅ = 已有代码 + 测试覆盖; 🚧 = 规划 / 骨架; ❌ = 仅文档提及

| # | 技巧 | 状态 | 大众盲点 → 本项目实现 | |---|---|:---:|---| | 1 | 标签工程 | ✅ | close/close → 多 horizon + vol 归一化 + CSRank + 停牌/一字板屏蔽 | | 2 | 涨跌停 / 停牌屏蔽 | ✅ | 全量训练 → 自动屏蔽 (回测 IC 虚高 20-30%) | | 3 | Level2 微结构 alpha | ✅ | OIR / VPIN / Cancel Ratio / Kyle's λ | | 4 | 冲击成本建模 | ✅ | 固定 2bps → Almgren-Chriss + sqrt 律 | | 5 | Barra 风格中性化 | ✅ | Size+Industry → CNE5 六风格因子 | | 6 | 因子衰减监控 | ✅ | 训完不管 → rolling IC 自动下线 | | 7 | 组合优化 | ✅ | Top-K 等权 → 风险平价 + Black-Litterman | | 8 | 事件屏蔽 | ✅ | 无 → 解禁/财报/大宗自动屏蔽 | | 9 | 数据清洗 | ✅ | 幸存者 / 前视 / 复权 (含小幅分红/累计漂移) | | 10 | 主题投资识别 | ✅ | 纯涨幅 → 萌芽/扩散/拥挤三阶段 + 龙头排序 | | 11 | Regime 自适应 | 🚧 | 8 种市场状态 + 仓位乘数 (骨架已有) | | 12 | Level2 时序保护 | ✅ | 指数退避 / 时钟漂移监控 / 乱序检测 | | 13 | 资金流前瞻 | 🚧 | 主力资金 + 北向资金领先信号 (规划中) | | 14 | 涨停连板因子 | ❌ | 连板高度 + 炸板概率 (规划中) | | 15 | 龙虎榜游资特征 | ❌ | 知名营业部联动图 (规划中) |

详解见 ADVANCED_TRICKS.md. 进度会随每次 release 更新.

🧬 记忆与自进化

  • Memory Curator: 每笔交易后 LLM 提炼反思存 SQLite + FTS5
  • Skill Factory: 自动从成功交易聚类生成复用规则
  • Weekly Nudge: 每周合并去重记忆

🚀 端到端 Pipeline

  • ResearchPipeline: 数据体检 → 标签 → 屏蔽 → Barra → IC → 带冲击回测
  • DailyTradingPipeline: Regime → 筛选 → Agent → 风控 → 冲击路由

📈 真实回测 — 含严格 OOS 修正记录

⚠️ 重要诚实声明: 早期版本 (V3-V5) 的"夏普 1.86 / IR 1.21"包含了 训练集 label 泄露(label horizon=30, 但训练截止 = train_end, 后 30 天 label 在真实时点不可观测). 修复 leak 后 OOS IR 跌至 -0.13 ~ +0.2 之间. 本项目当前定位为研究框架, 不是已验证的实盘策略.

演化记录(全部 walk-forward 严格 OOS)

| 版本 | 因子构成 | Hold-out IR(干净) | 关键发现 | |---|---|---|---| | V1 baseline | 10 大蓝筹 + 3 玩具因子 | 0.79(其实是纯 beta) | 蓝筹无 alpha,Sharpe 来自市场 | | V3 | 500 中小盘 + 龙虎榜 5 因子 | — | 含 leak,数字不再呈报 | | V4 | + IC 聚类去共线 + 动态滑点 | — | 框架修正 | | V5 | + 涨停/连板 + 高管增减持 | — | 含 leak | | V6 (B+ 自适应极性) | + IC 时序 z-score 极性切换 | +0.96 → 修复后 -0.13 | leak 暴露 | | V7 (+ regime 因子) | + 大盘动量/广度 | -1.38 | 加 regime 反加剧过拟合 | | V8 (+ 主力资金流) | + 超大单/大单/散户净流入 | -0.75 | 牛市 regime 中无效 |

为什么"漂亮数字"全部作废

走完一遍后的真相:

  • 30 日 horizon 的策略,模型必然滞后 1-2 个月 — 真实场景下 trainend 时只能看到 trainend - 30 之前的 label
  • 之前的 V3-V6 都用了 t ≤ train_end 的全部 label,含未来未观测信息
  • 修干净后,任何公开因子组合在 2025-2026 中小盘牛市的 OOS IR ≈ 0
  • 同期 universe 等权 benchmark Sharpe 2.5-3.0(极端 FOMO 牛市),多头选股策略天生劣势

真 alpha 在哪里(不再粉饰)

公开因子 + LightGBM + 月频选股,真实 OOS 夏普天花板 0.5-1.0. 想突破需要:

  • ✅ Wind/Choice 付费数据(¥5-20 万/年)
  • ✅ Level2 tick 数据(券商开户送) + 分钟级回测框架
  • ✅ 自监督模型(Kronos 等)取代手工因子
  • ✅ 等待 regime 切换(单边牛市里多头选股本就是 worst case)
  • ❌ 继续堆公开因子 — 已被 4000+ 量化机构挖干净

🚀 快速开始

安装

git clone https://github.com/wangpage/quant-ashare.git
cd quant-ashare
pip install -r requirements.txt

🌐 启动 Web UI (推荐)

最快看到项目效果的方式. 自带 4 个交互页面:

  • 📡 今日信号仪表盘 - 大盘 regime + 主题评分 + top-K 信号 + 资金分配
  • 🔍 个股详情 - K 线 / 因子画像 / 主题归属
  • 🧠 Agent 辩论记录 - 三分析师 + Bull vs Bear + 交易员 + 风控
  • 📈 回测与策略曲线 - 净值 / 回撤 / IC 衰减 / Barra 分解
# 默认 Mock 模式, 无需任何配置即可体验 bash scripts/run_webapp.sh 

浏览器打开 http://localhost:8501

接真实数据 (需要配置 akshare / LLM API)

QUANTWEBMODE=real bash scripts/run_webapp.sh

webapp 架构

🧪 测试诚实说明

测试分两层, 不要混淆:

| 类型 | 文件 | 数量 | 说明 | |---|---|---|---| | 数值正确性 (单元) | tests/testnumericalcorrectness.py | 65 | 真数值断言: IC/ICIR 精确匹配, 最大回撤闭式公式, ATR 止损 3 种情况, Barra 残差正交性 (corr<0.05), AC 冲击 sqrt 律单调性, VPIN/OIR 边界, URL 占位符识别, Regime 崩盘/狂热识别, alpha 衰减监控单调性 | | 冒烟/契约 (集成) | 其他 tests/test_*.py | ~120 | 主要验证"非空 / 字段存在 / 函数可跑通", 不做数值校对 |

# 数值正确性 (最该看的)
python3 tests/testnumericalcorrectness.py           # 65/65

冒烟测试

python3 tests/test_parser.py # CSV 解析 60/60 python3 tests/testphase1xml.py # Hermes XML 34/34 python3 tests/testphase2memory_regime.py # Memory+Regime 35/35 python3 tests/testadvancedtricks.py # 6 暗门 55/55

不再声称 "219/219 passing" — 之前 README 的数字把冒烟测试的断言累加 (40+ 个 a 断言/文件) 算成通过率, 现改为按测试函数口径: 共 46 个 def test*, 其中 10 个含真数值断言 (本次新增).

跑真实数据 Research Pipeline

# 拉 10 只蓝筹股 + 2 年数据 + 跑完整 pipeline (含 Barra)
python3 scripts/runrealresearch_v5.py --n 10 --start 20240101 --end 20260420

输出: annualreturn, sharpe, maxdrawdown + 完整报告

保存: output/researchYYYYMMDDHHMM.md

LLM Agent 决策 (以 DeepSeek 为例, 便宜)

# 1. 注册 https://platform.deepseek.com, 充 5 元

2. 设环境变量

export DEEPSEEKAPIKEY="sk-xxxxx"

3. 跑决策

python3 -c " import asyncio from llm_layer import TradingAgentTeam team = TradingAgentTeam( backend='deepseek', analyst_model='deepseek-chat', researcher_model='deepseek-reasoner', trader_model='deepseek-chat', risk_model='deepseek-chat', )

... 详见 llm_layer/agents.py

"

Level2 实时行情接入

对接 base32.cn (测试账号公开):

# 盘中 (09:30-15:00) 运行
python3 tests/testrealdataintraday.py

详细计划见 LEVEL2LIVETEST_PLAN.md.


📁 项目结构

quant-ashare/
├── config/                    # YAML 配置
├── data_adapter/              # akshare + 东财/新浪直连
├── data_hygiene/          ⭐ 数据清洗暗门 (幸存/前视/复权/停牌)
├── factors/                   # A股特化因子 35 个
├── label_engineering/     ⭐ 标签工程 (多 horizon + vol 归一化)
├── market_microstructure/ ⭐ OIR / VPIN / Almgren-Chriss
├── corporate_actions/     ⭐ 解禁/财报/大宗事件
├── barra_neutralize/      ⭐ CNE5 六风格因子
├── alpha_decay/           ⭐ IC 衰减 + 拥挤度监控
├── portfolio_opt/         ⭐ 风险平价 + MVO + Black-Litterman
├── execution/             ⭐ TWAP/VWAP + 冲击感知 + 时段避让
├── pipeline/              ⭐ 研究 + 实盘端到端
├── market_regime/            # 8 种市场状态分类器
├── memory/                   # 交易记忆 + Skill Factory + radar 事件存储
├── llm_layer/                # Hermes XML + 多智能体 + radar analyst (Haiku+Opus)
├── risk/                     # A股风控
├── level2/                   # NATS Level2 接入
├── thematic_investing/       # 主题投资识别 (萌芽/扩散/拥挤)
├── analyst/              ⭐ 分析师推送层 (市场全景 + 因子聚合 → 飞书简报)
├── notifier/             ⭐ 飞书推送统一出口 (subprocess 封 lark-cli, bot 身份)
├── webapp/                   # Streamlit 4 页可视化
├── utils/                    # 配置加载 + 日志封装
├── scripts/                  # 一键脚本 (crondaily / batchscan / radar_* 等)
├── tests/                    # 测试用例
├── api_server.py         ⭐ FastAPI 9876 (Stock Radar 扩展事件上报入口)
└── ADVANCED_TRICKS.md    ⭐ 15 个圈内 tricks 详解

🔬 核心技术文档

| 文档 | 内容 | |---|---| | ADVANCED_TRICKS.md | 15 个头部私募在用的 tricks + 上线 checklist | | LEVEL2LIVETEST_PLAN.md | Level2 NATS 盘中接入作战手册 | | tests/LEVEL2_GUIDE.md | 本地 NATS + 生产环境接入指南 |


🧪 测试成绩 (诚实口径)

testnumericalcorrectness (真数值断言):     65/65 ✓  ← 看这个
test_parser (CSV 字段契约):                  60/60 ✓
testadvancedtricks (暗门模块接口):         55/55 ✓
testphase1xml (XML 解析):                  34/34 ✓
testphase2memory_regime (记忆+regime):    35/35 ✓
──────────────────────────────────────────────
test_* 函数总数: 46 个
  - 真数值断言: 10 个 (IC/回撤/Barra残差/ATR/AC冲击/URL validator 等)
  - 冒烟/契约: 36 个

更新记录:

  • v0.2 (2026-04): 接入真实 RegimeDetector (data_providers); NATS URL fail-fast 校验;
新增 10 个真数值断言测试; README 测试数字诚实化
  • v0.1 初版: 早期 README 声称 "219/219" 是把冒烟测试中的小断言 _a(...)
累加而得, 单元测试函数实际只 36 个, 且几乎无数值正确性校验. 已修正.


🔔 每日自动化 (Cron + 飞书通知)

7 步流水线(每日 15:30 自动跑,约 5-8 分钟完成, 见 scripts/cron_daily.py):

1/7 数据增量更新     (dailydataupdater.py)
2/7 Paper Trade     (papertraderunner.py)
3/7 Watchlist 信号   (watchlist_signal.py  ← 自选池 7 因子)
4/7 Git Commit/Push (同步 paper trade 产物到 GitHub)
5/7 账户通知         → 飞书 IM (NAV + 持仓 + 当日 P&L)
6/7 分析师简报       → 飞书 IM (市场全景 + 明日 Top3 + 昨日命中 + 风险)
7/7 批量扫描         → 飞书 IM (246 只候选池 + LLM Top20/Bottom10 推荐/回避)

任一环节失败会发错误告警到飞书,不阻塞后续步骤.

推送内容差异

| 步骤 | 目标 | 内容 | |---|---|---| | 5/7 账户通知 | 自我复盘 | NAV / 累计收益 / 当日 P&L / Top 5 持仓 | | 6/7 分析师简报 | 明日决策(自选池) | 上证/深证/创业板涨跌 · 板块 Top5 · 昨日 IC · 自选池精选 Top3 + 止损止盈 + 风险点 | | 7/7 批量扫描 | 全池排序(246 只) | 🟩推荐/🟢关注/⚪中性/🟡谨慎/🟥不推荐 桶化 · 量化 Top10+Bottom5 · LLM 精分析 Top20+Bottom10 |

核心脚本

python3 scripts/batchscan.py                              # 默认 股票名称代码.csv
  python3 scripts/batch_scan.py --codes-csv /path/to/pool.csv
  python3 scripts/batch_scan.py --top 20 --bottom 10         # LLM 精分析数量
  python3 scripts/batch_scan.py --no-llm                     # 纯量化模式
python3 -m notifier.dispatch --date 2026-04-22             # 今日简报
  python3 -m notifier.dispatch --date 2026-04-22 --dry-run   # 不发飞书, 打印 Markdown

安装 cron

bash scripts/install_cron.sh              # 安装
bash scripts/install_cron.sh --dry-run    # 预览
bash scripts/install_cron.sh --uninstall  # 卸载

默认配置: 交易日 15:30 跑全流水线; 周日 20:00 跑 leak detector 自检.

飞书推送 - 身份配置

重要: 飞书不允许 user 身份给自己的 open_id 发 P2P 消息(API 成功但客户端不显示). 必须用 bot 身份(即自建应用机器人, 如本项目配的 cccli).

配置步骤:

  • 飞书开放平台 open.feishu.cn 建自建应用(例如 cccli), 开通 im:message 权限
  • 在飞书客户端添加这个机器人为好友
  • 本地装 lark-cli
lark-cli config init       # 填 appid / appsecret    lark-cli auth login        # user 身份登录(交互式)    lark-cli auth status       # 确认 valid
  • 设置推送目标(环境变量覆盖默认值):
export LARKUSEROPENID=ouxxxxx

为什么用 --as bot: lark-cli 在 user 身份下给自己的 openid 发消息, 飞书客户端不展示; 改 --as bot 后消息以"机器人推送"形式出现在正常 IM 列表里. notifier/feishuclient.py 默认 as_user=False, 遇到 auth 过期返回 exit 10 让 cron 打标但不阻塞.


🔬 研究档案 (V6-V8 严格 OOS 实验)

scripts/runholdout_v6.py: B+ 自适应极性 (IC z-score + 显著性过滤 + 惯性 + 横截面归一化), 暴露了早期版本的 label leak.

scripts/runholdout_v8.py: V8 主力资金流驱动 - 集成超大单/大单/中单/小单 12 个资金流因子. 在 2025-2026 单边牛市里 IR 仍负 (-0.75), 证明: 多头选股策略在 FOMO 牛市天生劣势, 不是技术问题.

factors/adaptive_polarity.py: 4+1 层防护的因子极性自适应:

  • IC 时序 z-score (置信度, 不是绝对值)
  • 显著性过滤 (|z|<0.8 weight=0)
  • 惯性 EMA (防 regime 抖动)
  • 横截面归一化 (Σ|w|=1)
  • IC 衰减加权 (近期权重大)
factors/alpha_regime.py: 大盘 regime 因子 (动量/广度/波动率), 时序 z-score, 不走截面 z.

factors/alpha_limit.py: 涨停/连板/炸板/一字板/启动期压缩 等 16 个 A股独有因子.

data_adapter/insider.py: 高管/大股东增减持 36000+ 条事件.

data_adapter/fundflow.py: 主力资金流 (akshare 个股近 120 日明细).

scripts/papertrade_runner.py: 每日自动化 paper trade - 维护真账户 + T+1 买卖 + 硬止损(亏 5%/破 MA5)+ 持仓档案.


🛡️ 免责声明

本项目仅供学习与研究, 不构成任何投资建议.

量化投资存在实质性风险. 任何 "95% 胜率"、"夏普 5+" 的宣传都是过拟合或话术. 真实量化 alpha 的核心是 (胜率-50%) × 盈亏比 × 高频次, 不是单次准度.

本项目自身的诚实记录: V3-V5 早期 README 写的"夏普 1.86 / IR 1.21"含 label leak, 修复后 OOS IR ≈ 0. 这恰好印证了上面那段话 — 任何"漂亮回测"都要严格 OOS 验证.

实盘前必须:

  • ✅ 至少 6 个月样本外回测
  • ✅ 3 个月模拟盘验证
  • ✅ 从小资金起步 (< 预计规模 10%)
  • ✅ 严守风控规则 (最大回撤 / 熔断 / 止损)

🙏 致谢的开源项目

本项目学习了以下优秀项目的思想:


📮 贡献

欢迎 Issue / PR. 特别欢迎:

  • 新的 A股特化因子实现
  • 头部私募已公开的 tricks 补充
  • 性能优化 (向量化 / Cython)
  • 更多后端 LLM 支持 (本地 llama / vLLM)

📄 License

MIT - 详见 LICENSE 文件, 含金融软件专属免责条款.

🔗 More in this category

© 2026 GitRepoTrend · wangpage/quant-ashare · Updated daily from GitHub