A 股 AI 量化全链路系统技术拆解:分层架构、双引擎验证与低换手实盘闭环

【开源】A 股 AI 量化全链路系统技术拆解:分层架构、双引擎验证与低换手实盘闭环

摘要

abq 是一套面向沪深 A 股的分层量化系统(自研核心约 5k 行 Python),覆盖:

L0 数据 → L1 LLM 因子 → L2 Qlib 研究 → L3 Backtrader/UMP 验证 → L4 执行对账 → L5 运维看板

设计原则:层间 CSV 契约解耦、回测与执行口径一致、双引擎交叉验证、低换手控成本、AI 因子漏斗防过拟合

⚠️ 本仓库为量化研究 / 学习项目,不构成任何投资建议。历史回测不代表未来收益。


1. 分层架构与 CSV 契约

系统刻意避免「大单体」,各层仅通过 CSV 文件 + schema 校验 通信(quant/contracts/schemas.py),可独立替换升级:

复制代码
┌─────────────────────────────────────────────────────────────────────────┐
│ L5 运维  run_daily · compute_nav · monitor · FastAPI 看板 :8000         │
├──────────────────── CSV 契约 ───────────────────────────────────────────┤
│ L4 执行  make_trade_plan → record_fills / simulate_fills → reconcile    │
├──────────────────── 信号 score ─────────────────────────────────────────┤
│ L3 验证  replay_backtrader · ump_judge                                  │
├──────────────────── 因子/模型 ──────────────────────────────────────────┤
│ L2 研究  Qlib Alpha158+LGBM · predict_daily    │ L1  LLM→准入→因子库   │
├──────────────────── Qlib bin ───────────────────────────────────────────┤
│ L0 数据  investment_data · baostock 增量 · quality_check                │
└─────────────────────────────────────────────────────────────────────────┘

关键契约文件(按数据流):

文件 产出层 消费层 含义
data/signals/latest_pred.csv L2 L3/L4 每日截面 score
orders/<day>.csv L4 人工/模拟 调仓指令(先卖后买)
fills/<day>.csv L4 L4/L5 实际/模拟成交
nav/holdings.csv L4 L5 持仓 + 盯市价
nav/daily.csv L5 L5/看板 净值、收益、超额、换手

账户数据按 data/accounts/<account>/ 物理隔离,研究线与实盘线共用信号源、独立账本。


2. 研究层:Plan C 基线与「换手率是生命线」

2.1 生产口径

标的池 中证500(csi500
基准 SH000905
模型 Alpha158 + LightGBM Plan C
组合 TopK50 / n_drop3 / hold_thresh=10
标签 5 日开盘价收益(非 1 日)
样本外 IR 1.0459 (recorder 826b98ae
年化净超额 ~+11.2%
切分 训练 2010--2021 / 验证 2022--2023 / 测试 2024--至今

Plan C = 降学习率 + 加强 L1/L2 + 更长 early-stop,缓解 valid l2 过早恶化。

2.2 换手与成本的实证

场景 净超额 IR
毛超额(无成本) 0.6 ~ 0.8
每日全量调仓(1 日标签) −0.17(成本吃光 alpha)
5 日标签 + hold_thresh=10 ~1.04
Plan C 超参(2026-08) 1.05

结论 :A 股个人量化,控换手比堆因子更重要execution/make_trade_plan.py 与研究层 TopkDropoutStrategy 共享同一套 hold_thresh 逻辑,保证实盘(路线一)与回测口径一致。

2.3 门禁机制

run_baseline.py 样本外 IR < 0.8 不晋升

  • 不写 latest_pred.csv
  • recorder 隔离到 research/mlruns_rejected/
  • predict_daily.py 不会误用未过关模型

3. 验证层:Backtrader 独立复演

Qlib 向量化回测快,但容易忽略微观约束。阶段 2 用 Backtrader 事件驱动做第二套独立实现:

强制建模:T+1 · 涨跌停 9.5% · 停牌 · 整手 · 佣金万2.5(最低5)· 卖出印花税 0.05% · 可配滑点 · 次日开盘价成交(cheat-on-open)

验收门槛(Plan C 已通过)

指标 结果 门槛
复演 vs Qlib 年化差异 −2.70pct ≤ 3pct
0.2% 滑点年化超额 7.86% ≥ 5%
日历对齐 624 交易日 ---
bash 复制代码
cd quant
../quant-venv/bin/python validation/replay_backtrader.py
../quant-venv/bin/python validation/replay_backtrader.py --start 2025-07-01 --compare-ump

复演略保守(整手现金拖累 + 显式滑点)是预期行为------真钱下限看 astock+0.2% 滑点行,勿按 Qlib 纸面数字承诺。


4. UMP 裁判:信号二次否决

借鉴 abu UMP 思想,自研 LightGBM 拦截器(无 abu 运行时依赖):

  • 输入特征:市场状态(基准动量/波动)、个股波动(vol20/区间位置)、信号分位(score/z)
  • 任务:预测该笔买入持有期内是否跑输基准
  • 样本外 A/B :超额 IR 0.21 → 0.48
bash 复制代码
../quant-venv/bin/python validation/ump_judge.py train

evening 流水线加 --ump 开关,否决信号不进入 orders/


5. L1:LLM 因子挖掘与五道准入

自研轻量 RD-Agent 式闭环(factor_lab/),不是 LLM 说什么就入库:

复制代码
LLM 提议 → ①初筛 → ②去重 → ③样本外 → ④经济逻辑 → ⑤组合增量
              ↓        ↓         ↓          ↓            ↓
          rejected  rejected  rejected   rejected   passed_auto
                                                         ↓
                                              paper_tracking(1~3 月)
                                                         ↓
                                                    live 并入模型

3 轮迭代、15 个候选,2 个过全部关卡------漏斗有效拦截 AI 过拟合。

bash 复制代码
cp configs/secret.env.example configs/secret.env   # LLM API,gitignore
../quant-venv/bin/python factor_lab/run_iteration.py --iters 3 --k 5

6. 执行层:路线一每日闭环

6.1 时序

复制代码
22:30  evening(自动)
       update_daily → predict_daily → make_trade_plan(UMP) → orders/
       [可选] sentiment_veto / sentiment_memory

次日 9:30~10:00(人工)
       同花顺照 orders/ 或 orders_exec/ 下单

收盘后(人工)
       record_fills --template → 改实际价/量 → --apply

23:30  postclose(自动)
       reconcile → compute_nav → snapshot_positions → daily_report → 看板

研究线 research_sim_100ksimulate_fills 按次日开盘价自动成交。

实盘线 live_manual_10krecord_fills 人工回填,reconcile.py 输出滑点统计。

6.2 record_fills 幂等设计

  • 成交应用后写 account.json.last_fill_date
  • 同日重复 --apply 默认拒绝(防重复扣账)
  • 确需修账才用 --force

6.3 对账报告示例

复制代码
结论: 对账通过(零错配)
滑点(1 笔,均值 -0.704%,不利 0 笔)
| SZ002244 | BUY | 参考价 8.52 | 成交价 8.46 | -0.704% |

7. 双线账户与执行偏差度量

账户 资金 模式 用途
research_sim_100k 10 万 simulated 理想执行基准
live_manual_10k ~2 万 manual 真实人工执行
shadow_ctrl_sim --- simulated TA 对照(无否决)
shadow_ta_sim --- simulated TA 否决影子线

同一信号源、隔离账本 → ops/review_accounts.py 可量化日收益差、滑点、漏单

TA 否决仅影子线 :门禁未 PASS 前 不上 live


8. 舆情 overlay(实盘增强)

模块 路径 作用
sentiment_veto evening Cursor Agent 联网检索,否决 BUY 硬伤票 → orders_exec/
sentiment_memory evening 东财/财联社/新浪采集 → LLM 摘要 → 本地向量库 → 看板「舆情跟踪」

fail-open 设计:舆情步骤异常不阻断出单。


9. L5 运维:编排与看板

9.1 run_daily 两阶段

bash 复制代码
# 晚间:信号 + 调仓清单
../quant-venv/bin/python ops/run_daily.py --stage evening --account live_manual_10k --ump

# 收盘后:对账 + 净值 + 日报
../quant-venv/bin/python ops/run_daily.py --stage postclose --account live_manual_10k \
  --day <成交日> --order-day <订单日>

monitor.py 在 postclose 前检查 Qlib 日历是否落后于目标日,数据滞后则 CRIT 阻断。

9.2 Web 看板

FastAPI + APScheduler 内置定时,与 ops/crontab.example 二选一

bash 复制代码
bash webapp/serve.sh start 8000

页面:总览(多账户净值)· 舆情跟踪 · 操作清单(次日先卖后买)。


10. 数据层

来源 用途
investment_data 社区包(仓库分卷) 历史底座
baostock 增量(update_incremental.py 每日补数,后复权 + factor
quality_check 质检不过即阻断下游
bash 复制代码
../quant-venv/bin/python data_pipeline/update_daily.py      # 全量编排
../quant-venv/bin/python data_pipeline/update_incremental.py # 仅补缺口
../quant-venv/bin/python quant/ops/ensure_qlib_data.py       # 首次解压

11. 目录与配置速查

复制代码
quant/
├── data_pipeline/     # L0
├── factor_lab/        # L1
├── research/          # L2
├── validation/        # L3
├── execution/         # L4
├── ops/               # L5 编排
├── webapp/            # L5 看板
├── contracts/         # schemas.py
└── configs/
    ├── global.yaml           # 标的池、费率、风控
    └── accounts/*.yaml       # 分账户 topk、模式
配置 说明
research/workflow_baseline.yaml Qlib 训练/回测/组合完整配置
configs/secret.env LLM API(gitignore
configs/accounts/live_manual_10k.yaml 实盘线 profile

12. 阶段进度

阶段 内容 状态
1 数据 + Qlib 基线 IR≥0.8
2 Backtrader 复演 + 滑点敏感性
2b UMP 裁判
3 LLM 因子 + 五道准入
4 路线一闭环 + 舆情 overlay 🛠 实盘中
5a Web 看板 + 双线 🛠 运行中
5 miniQMT 全自动(vn.py 📋 规划中

13. 快速复现(开发者)

bash 复制代码
git clone https://github.com/abell12134/abq.git && cd abq
python3 -m venv quant-venv && quant-venv/bin/pip install -r quant/requirements.txt
quant-venv/bin/python quant/ops/ensure_qlib_data.py

cd quant
../quant-venv/bin/python research/run_baseline.py          # 研究基线
../quant-venv/bin/python validation/replay_backtrader.py     # 独立复演
../quant-venv/bin/python ops/backfill.py --days 6            # 看板数据
bash webapp/serve.sh start 8000

贡献前请确保:不提交 secret.env / data/;新 CSV 走 schemas.py;三层调仓逻辑保持一致。


14. 上游致谢


15. 结语

如果你关心的是「回测数字怎么落到真钱口径」「AI 因子怎么防过拟合」「个人量化怎么不用券商 API 也能闭环」,欢迎 Star 和交流:

👉 https://github.com/abell12134/abq


相关推荐
饼干哥哥3 小时前
Codex 必改的8 个基础配置
前端·人工智能·后端
ifenxi爱分析3 小时前
GEO市场规模有多大?2026—2030年中国GEO市场规模预测
大数据·人工智能
码云之上3 小时前
Context Engineering:让 Agent 在当前步骤看到正确的事实
前端·人工智能·前端工程化
百度Geek说4 小时前
面向 Coding Agent 的多仓库 Git Worktree
人工智能
张小泡泡4 小时前
AUTO_EVAL:面向大语言模型的多层次自动化评测框架
论文阅读·人工智能·语言模型·自然语言处理·自动化·微调
AI工具测评与分析4 小时前
Seedance2.5 赋能飙算画影AI无限画布,无边画布进阶专业创作工作台
人工智能·信息可视化·ai作画·视频生成·ai视频·爆款视频
前端开发江鸟4 小时前
我没有自研 AI 中转站:8 小时跑通 New API、DeepSeek 与 Codex Coding Plan
人工智能
zlycheng4 小时前
AI+CNC深度融合,全面革新机加工运营模式,激活制造新动能
人工智能·制造
哦哦~9214 小时前
AI赋能复合材料力学:从数据驱动到物理信息神经网络与多尺度仿真
人工智能·深度学习·神经网络·复合材料力学