<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Enjoy your life! Let's Claude!</title><link>https://www.ganyiming.top/</link><description>Recent content on Enjoy your life! Let's Claude!</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 15 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.ganyiming.top/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://www.ganyiming.top/about/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/about/</guid><description>&lt;h1 id="about-me"&gt;About Me&lt;/h1&gt;
&lt;p&gt;Hi, I&amp;rsquo;m James. I&amp;rsquo;m a software engineer passionate about building great products and sharing knowledge with the community.&lt;/p&gt;
&lt;h2 id="skills"&gt;Skills&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Software Development&lt;/li&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Open Source&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="contact"&gt;Contact&lt;/h2&gt;
&lt;p&gt;Feel free to reach out via &lt;a href="mailto:happygzl@gmail.com"&gt;email&lt;/a&gt; or connect on social media.&lt;/p&gt;</description></item><item><title>Hello World</title><link>https://www.ganyiming.top/posts/hello-world/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/posts/hello-world/</guid><description>&lt;p&gt;Welcome to my blog! This is my first post using Hugo and PaperMod theme.&lt;/p&gt;
&lt;p&gt;Stay tuned for more content coming soon.&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-05-monorepo-unification-plan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-05-monorepo-unification-plan/</guid><description>&lt;h1 id="devlog-008-qmt-monorepo-统一演进蓝图--四段式架构合体"&gt;DevLog #008: QMT Monorepo 统一演进蓝图 — 四段式架构合体&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-05
&lt;strong&gt;状态&lt;/strong&gt;: 规划中
&lt;strong&gt;Tags&lt;/strong&gt;: architecture, monorepo, system-unification&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;涉及核心项目：ATMS、QMT (qmt_system)、Wavemonitor、tradingagents-cn&lt;/p&gt;
&lt;p&gt;核心战略：依托小步快跑迭代，正式开启多项目 &lt;strong&gt;Monorepo 合体进程&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="原产物核心定位"&gt;原产物核心定位&lt;/h2&gt;
&lt;h3 id="atms-战术监控与ai宏观决策"&gt;ATMS: 战术监控与AI宏观决策&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;历史定位&lt;/strong&gt;: 定时巡检、多维共振监控、结合大语言模型盘中辅助决策的独立系统。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;技术沉淀&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;高频巡检调度&lt;/strong&gt;: &lt;code&gt;main.py&lt;/code&gt; 定时机制与健壮的自我降级防护&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 赋能辩论 (&lt;code&gt;debate/&lt;/code&gt;)&lt;/strong&gt;: 利用实时技术信号与持仓成本数据灌入 Prompt、限定 2 轮带记忆裁决的无幻觉 LLM Agent 应用机制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;消息枢纽&lt;/strong&gt;: 基于 OpenClaw 的飞书自动化卡片推送链路&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="wavemonitor-极速算子基座"&gt;WaveMonitor: 极速算子基座&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;历史定位&lt;/strong&gt;: 探索大批量实时股票状态机计算的最优解。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;技术沉淀&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vector_engine.py&lt;/code&gt; (V7.1 Titan)&lt;/strong&gt;: 抛弃逐条 K 线的 if-else 判断，完全依靠 Pandas 执行纯向量化并行运算&lt;/li&gt;
&lt;li&gt;内置双确认红绿波、状态粘性 FFill、超级防守趋势与动态吊灯止损&lt;/li&gt;
&lt;li&gt;是所有旧版运算库（如 TA-Lib）的&lt;strong&gt;绝对上位替代&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="qmt-system-交易执行与底层基建"&gt;QMT System: 交易执行与底层基建&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;历史定位&lt;/strong&gt;: 打通真实市场交易与跨平台研发（Mac vs Windows）隔离的底座环境。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-06-antigravity-review/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-06-antigravity-review/</guid><description>&lt;h1 id="devlog-010-antigravity-文档评审--phase-3-完成确认--phase-4-改进建议"&gt;DevLog #010: Antigravity 文档评审 — Phase 3 完成确认 + Phase 4 改进建议&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-06
&lt;strong&gt;状态&lt;/strong&gt;: 评审完成
&lt;strong&gt;Tags&lt;/strong&gt;: phase3, phase4, its, debate-engine, architecture-review&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="phase-3-qss-实盘策略--全部已完成-"&gt;Phase 3: QSS 实盘策略 — 全部已完成 ✅&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;文档任务&lt;/th&gt;
&lt;th&gt;实际状态&lt;/th&gt;
&lt;th&gt;Commit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;实现 Titan Resonance Strategy&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qss/strategy/resonance_strategy.py&lt;/code&gt; 222行，三维共振（价值30+趋势40+择时30 - 波动率惩罚）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0865571&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;策略防护状态机扩容&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qss/core/signal.py&lt;/code&gt; 已有 &lt;code&gt;stop_loss_price&lt;/code&gt; + &lt;code&gt;metadata&lt;/code&gt; 字段&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0865571&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chandelier Exit 吊灯止损&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qss/risk/stop_loss.py&lt;/code&gt; 143行，ATR 动态乘数 + 超级趋势检测 + 硬止损 max(吊灯线, 成本*0.92)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0865571&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;测试覆盖&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tests/test_phase3_strategies.py&lt;/code&gt; 429行，22个测试&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0865571&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;: Phase 3 已在 commit &lt;code&gt;0865571&lt;/code&gt; 中全部完成。文档应标记为 DONE。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-06-debate-memory-system-design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-06-debate-memory-system-design/</guid><description>&lt;h1 id="devlog-006-辩论引擎记忆系统设计--sqlite--fts5-三阶段演进"&gt;DevLog #006: 辩论引擎记忆系统设计 — SQLite + FTS5 三阶段演进&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-06
&lt;strong&gt;状态&lt;/strong&gt;: 实施中
&lt;strong&gt;Tags&lt;/strong&gt;: its, debate-engine, memory-system, sqlite, fts5&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="现状分析"&gt;现状分析&lt;/h2&gt;
&lt;h3 id="当前记忆机制的缺陷"&gt;当前记忆机制的缺陷&lt;/h3&gt;
&lt;p&gt;辩论引擎 (&lt;code&gt;its/debate/engine.py&lt;/code&gt;) 的&amp;quot;记忆&amp;quot;仅是&lt;strong&gt;进程内的 round-to-round dict&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;previous_round &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;bull&amp;#34;&lt;/span&gt;: bull_output, &lt;span style="color:#75715e"&gt;# 本轮多头输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;bear&amp;#34;&lt;/span&gt;: bear_output, &lt;span style="color:#75715e"&gt;# 本轮空头输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;arbiter&amp;#34;&lt;/span&gt;: arbiter_output, &lt;span style="color:#75715e"&gt;# 本轮裁判输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;三大问题&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;进程重启后记忆消失&lt;/li&gt;
&lt;li&gt;同一股票不同时间辩论，无法参考历史判断&lt;/li&gt;
&lt;li&gt;没有事后复盘（辩论决策 vs 实际走势）&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="业界方案对比"&gt;业界方案对比&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方案&lt;/th&gt;
&lt;th&gt;来源&lt;/th&gt;
&lt;th&gt;存储&lt;/th&gt;
&lt;th&gt;检索方式&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ChromaDB 向量记忆&lt;/td&gt;
&lt;td&gt;TradingAgents-CN&lt;/td&gt;
&lt;td&gt;ChromaDB&lt;/td&gt;
&lt;td&gt;Embedding 相似度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QMD 混合搜索&lt;/td&gt;
&lt;td&gt;OpenClaw/Tobi Lütke&lt;/td&gt;
&lt;td&gt;SQLite + FTS5 + sqlite-vec&lt;/td&gt;
&lt;td&gt;BM25 + 向量 + LLM 重排&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;本方案&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;QMT&lt;/td&gt;
&lt;td&gt;SQLite + FTS5&lt;/td&gt;
&lt;td&gt;BM25 全文搜索（可升级向量）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="为什么不直接用-qmd--chromadb"&gt;为什么不直接用 QMD / ChromaDB&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QMD&lt;/strong&gt; 是 Node.js 工具，跨语言调用引入不必要的复杂度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChromaDB&lt;/strong&gt; 是独立数据库服务，对当前项目规模（单机交易）过重&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQLite 零部署、Python 内置、性能足够&lt;/strong&gt;（单机万级记录）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="三阶段演进方案"&gt;三阶段演进方案&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Phase 1 (P0) Phase 2 (P1) Phase 3 (P2)
────────────────────────────────────────────────────────────
SQLite 辩论历史存储 → 反思机制 (Reflection) → 语义检索升级
↓ ↓ ↓
持久化 + 查询 事后评估 vs 实际走势 特征向量相似度
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="phase-1-sqlite-辩论历史存储"&gt;Phase 1: SQLite 辩论历史存储&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;: 辩论结果持久化，支持按股票/日期查询历史。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-06-dfx-architecture-principles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-06-dfx-architecture-principles/</guid><description>&lt;h1 id="devlog-007-dfx-架构设计原则--qmt-大一统系统工程纪律"&gt;DevLog #007: DfX 架构设计原则 — QMT 大一统系统工程纪律&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-06
&lt;strong&gt;状态&lt;/strong&gt;: 架构共识
&lt;strong&gt;Tags&lt;/strong&gt;: architecture, design-principles, engineering-discipline&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;随着 ATMS、WaveMonitor、TradingAgents 等实验性工程合体为&lt;strong&gt;大一统量化基建&lt;/strong&gt;，代码体积正在膨胀。&lt;/p&gt;
&lt;p&gt;为了抵御熵增，我们确立以下 &lt;strong&gt;Design for X&lt;/strong&gt; 的系统级工程纪律。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一design-for-maintainability--以减法为核心"&gt;一、Design for Maintainability — 以&amp;quot;减法&amp;quot;为核心&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;痛点&lt;/strong&gt;：量化项目很容易留下大量&amp;quot;废弃的因子、没用的回测废稿、不再调用的模块&amp;quot;。&lt;/p&gt;
&lt;h3 id="激进删除原则"&gt;激进删除原则&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;只要是被 V7.1 Titan 或新版 qss 证明已超越的旧概念（如老版的 TA-Lib 逐行遍历、老版的提示词生成器），一旦替换，&lt;strong&gt;连注释都不要留，直接物理删除文件&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;理由&lt;/strong&gt;：在 Git 时代，代码库不应该做垃圾场。精简的代码库是对接替者（包括未来维护的 AI）最大的仁慈。&lt;/p&gt;
&lt;h3 id="面向-protocol-的解耦"&gt;面向 Protocol 的解耦&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;设计准则&lt;/strong&gt;：杜绝&amp;quot;意大利面条式&amp;quot;的深层类继承。&lt;/p&gt;
&lt;p&gt;例如任何只需要历史行情的数据，只约束其入参必须符合 &lt;code&gt;typing.Protocol&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;BarProvider&lt;/span&gt;(Protocol):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@property&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;open&lt;/span&gt;(self) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; pd&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Series: &lt;span style="color:#f92672"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@property&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;high&lt;/span&gt;(self) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; pd&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Series: &lt;span style="color:#f92672"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@property&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;low&lt;/span&gt;(self) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; pd&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Series: &lt;span style="color:#f92672"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@property&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;close&lt;/span&gt;(self) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; pd&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Series: &lt;span style="color:#f92672"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;而不是强迫它继承一个巨大的 &lt;code&gt;BaseDataFeed&lt;/code&gt; 基类。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;★ Insight ─────────────────────────────────────
&lt;strong&gt;Protocol vs 继承&lt;/strong&gt;：继承是&amp;quot;我是谁&amp;quot;，Protocol 是&amp;quot;我能做什么&amp;quot;。
用 Protocol 解耦的好处是：你只需要关心数据提供者有没有你需要的方法，
而不是关心它在类继承树中的位置。
──────────────────────────────────────────────────&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-08-sps-atr-buffer-fix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-08-sps-atr-buffer-fix/</guid><description>&lt;h1 id="devlog-009-sps-atr-缓冲修复--均线滞后性的边界弹性设计"&gt;DevLog #009: SPS ATR 缓冲修复 — 均线滞后性的边界弹性设计&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-08
&lt;strong&gt;状态&lt;/strong&gt;: 已修复
&lt;strong&gt;Tags&lt;/strong&gt;: sps, vector-engine, atr, trend-detection&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="问题描述"&gt;问题描述&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;现象&lt;/strong&gt;: &lt;code&gt;market_radar.py&lt;/code&gt; 和 &lt;code&gt;vector_engine.py&lt;/code&gt; 使用硬 MA 阈值判断趋势。大涨后价格仍略低于 MA20/MA60 时，系统错误判定为 BEAR/GREEN_WAVE。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;用户痛点&lt;/strong&gt;: 均线是滞后指标，一天的大涨不足以让 MA 穿越，但用户体感&amp;quot;明显不是空头&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="修复方案"&gt;修复方案&lt;/h2&gt;
&lt;h3 id="market_radarpy-修复"&gt;market_radar.py 修复&lt;/h3&gt;
&lt;p&gt;加 ATR(14) × 0.5 缓冲，价格贴线时 &lt;strong&gt;BEAR → CHOPPY&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 修复前&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; price &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; ma20: BEAR
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 修复后&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; price &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; ma20 &lt;span style="color:#f92672"&gt;-&lt;/span&gt; atr &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0.5&lt;/span&gt;: BEAR
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;: CHOPPY &lt;span style="color:#75715e"&gt;# 贴线区域不轻易下定论&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="vector_enginepy-修复"&gt;vector_engine.py 修复&lt;/h3&gt;
&lt;p&gt;加 ATR × 0.15 缓冲，MA5 略低于 MA21 但在缓冲区内时标 &lt;strong&gt;GRAY_ZONE&lt;/strong&gt; 而非 GREEN_WAVE&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-08-sps-openclaw-skill-deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-08-sps-openclaw-skill-deployment/</guid><description>&lt;h1 id="devlog-011-sps-openclaw-skill-部署架构--本地引用-vs-http-api"&gt;DevLog #011: SPS OpenClaw Skill 部署架构 — 本地引用 vs HTTP API&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-08
&lt;strong&gt;状态&lt;/strong&gt;: 已建立
&lt;strong&gt;Tags&lt;/strong&gt;: sps, openclaw, skill, deployment&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="当前模式-本地引用"&gt;当前模式: 本地引用&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;~/.agents/skills/sps/
├── SKILL.md ← 能力声明
├── scripts/run_sps.py ← 入口路由器
├── config/*.yaml ← 只读拷贝
├── data/.watchlist_a.json ← 只读拷贝
└── .qmt_root ← 指向 /Users/james/code/qmt/qmt
↑ 运行时动态 import sps/ 下全部代码
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="关键设计"&gt;关键设计&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;不是独立部署&lt;/strong&gt;。&lt;code&gt;run_sps.py&lt;/code&gt; 通过 &lt;code&gt;.qmt_root&lt;/code&gt; 找到项目根，把 &lt;code&gt;sps/&lt;/code&gt; 加入 &lt;code&gt;sys.path&lt;/code&gt;，直接 import 原始模块。&lt;/p&gt;
&lt;p&gt;改了代码&lt;strong&gt;自动生效&lt;/strong&gt;，只有 config/watchlist 变了才需重跑 &lt;code&gt;sync_sps_skill.sh&lt;/code&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="依赖链"&gt;依赖链&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;run_sps.py (入口)
├── wave_monitor.py ← db_manager, data_adapter, vector_engine
├── market_radar.py ← baostock
├── backtest.py ← db_manager, vector_engine, strategy_b
└── hk_us_monitor.py
vector_engine.py ← strategy_b
db_manager.py ← data_adapter
data_adapter.py ← qdata / xtquant / akshare (QMT数据源)
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="未来计划-统一-http-api-部署"&gt;未来计划: 统一 HTTP API 部署&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Why&lt;/strong&gt;: 当前 &lt;code&gt;data_adapter.py&lt;/code&gt; 硬依赖 QMT 客户端（qdata/xtquant），打包到别的机器上数据源就断了。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-09-gateway-robustness-fixlist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-09-gateway-robustness-fixlist/</guid><description>&lt;h1 id="devlog-005-qmt-gateway-鲁棒性修复清单--p0-p2-分级扫雷"&gt;DevLog #005: QMT Gateway 鲁棒性修复清单 — P0-P2 分级扫雷&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-09
&lt;strong&gt;状态&lt;/strong&gt;: 修复中
&lt;strong&gt;Tags&lt;/strong&gt;: qmt-gateway, robustness, grpc, thread-safety&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;目标：把 QMT Gateway 做到**&amp;ldquo;可长期稳定支撑批回测 + 准实盘（正在测）+ 实盘执行&amp;rdquo;**的工程质量。&lt;/p&gt;
&lt;p&gt;本文偏工程健壮性（正确性、隔离性、可观测性、可恢复性），不讨论策略收益逻辑。&lt;/p&gt;
&lt;p&gt;涉及模块：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qmt_gateway/*&lt;/code&gt;（网关本体）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qdata/qdata/adapters/qmt_remote_adapter.py&lt;/code&gt;（客户端适配器）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qss/*&lt;/code&gt;（交易执行器 / 远端执行服务）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="p0-must-fix-today"&gt;P0: Must Fix Today&lt;/h2&gt;
&lt;p&gt;这些问题&lt;strong&gt;不修会导致&lt;/strong&gt;：数据错乱、订阅串流、卡死/随机失败、交易服务不可用。&lt;/p&gt;
&lt;h3 id="p0-1-实时订阅的消息隔离与正确性"&gt;P0-1: 实时订阅的消息隔离与正确性&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;症状&lt;/strong&gt;：多个订阅者同时订阅时会串流/抢消息；订阅 A 可能收到订阅 B 的 tick；或漏推。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;位置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qmt_gateway/services/data_service.py&lt;/code&gt;（&lt;code&gt;SubscribeQuote&lt;/code&gt; 直接消费一个全局流并 yield）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qmt_gateway/bridge/xtdata_bridge.py&lt;/code&gt;（单个 &lt;code&gt;_tick_queue&lt;/code&gt; + &lt;code&gt;tick_stream()&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;修复方向&lt;/strong&gt;：把 tick 分发改成 fan-out/pub-sub（每个订阅者独立队列），并按 &lt;code&gt;request.symbols&lt;/code&gt; 做过滤。&lt;/p&gt;
&lt;h3 id="p0-2-asyncioqueue-跨线程使用线程安全问题"&gt;P0-2: &lt;code&gt;asyncio.Queue&lt;/code&gt; 跨线程使用（线程安全问题）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;症状&lt;/strong&gt;：tick 回调可能在 xtdata 线程里触发，但 &lt;code&gt;asyncio.Queue.put_nowait()&lt;/code&gt; 不是线程安全；会出现随机异常、丢消息、甚至卡死。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;位置&lt;/strong&gt;：&lt;code&gt;qmt_gateway/bridge/xtdata_bridge.py&lt;/code&gt;（&lt;code&gt;on_data()&lt;/code&gt; -&amp;gt; &lt;code&gt;_tick_queue.put_nowait()&lt;/code&gt;）&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-09-tss-self-evolution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-09-tss-self-evolution/</guid><description>&lt;h1 id="devlog-002-tss-策略自进化--正在测-机制深度讨论"&gt;DevLog #002: TSS 策略自进化 — &amp;ldquo;正在测&amp;rdquo; 机制深度讨论&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-09
&lt;strong&gt;状态&lt;/strong&gt;: 讨论稿
&lt;strong&gt;Tags&lt;/strong&gt;: tss, strategy-evolution, 正在测, 评价体系&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="核心问题"&gt;核心问题&lt;/h2&gt;
&lt;p&gt;TSS 是否具备&amp;quot;自我迭代能力&amp;quot;？如果可以，应该如何设计？&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="讨论结论"&gt;讨论结论&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;TSS&lt;/code&gt; 可以具备一种&lt;strong&gt;有限但很有价值的&amp;quot;自我迭代能力&amp;quot;&lt;/strong&gt;，但它不是&amp;quot;自己变聪明&amp;quot;，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每天持续生成候选策略或候选变体&lt;/li&gt;
&lt;li&gt;用最新行情做&amp;quot;正在测&amp;quot;的在线观察&lt;/li&gt;
&lt;li&gt;把观察结果写入记忆&lt;/li&gt;
&lt;li&gt;定期根据记忆淘汰、降权、晋升、重组策略&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;★ Insight ─────────────────────────────────────
&lt;strong&gt;&amp;ldquo;正在测&amp;quot;不是回测替代品&lt;/strong&gt;，而是回测之后的下一层。
回测回答&amp;quot;如果过去这样做，结果会怎样&amp;rdquo;
&amp;ldquo;正在测&amp;quot;回答&amp;quot;如果从今天开始持续跟踪，这个策略在当前市场状态下是不是还活着&amp;rdquo;
──────────────────────────────────────────────────&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="正在测-的本质"&gt;&amp;ldquo;正在测&amp;rdquo; 的本质&lt;/h2&gt;
&lt;p&gt;它更像：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;影子组合&lt;/li&gt;
&lt;li&gt;模拟联赛&lt;/li&gt;
&lt;li&gt;在线观察期&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;策略生命周期：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;历史回测&lt;/strong&gt;：先证明它过去不是纯噪声&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;滚动验证&lt;/strong&gt;：再看它在不同年份和市场阶段是否稳定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正在测&lt;/strong&gt;：让它用最新市场数据持续接受现实检验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;晋升或淘汰&lt;/strong&gt;：根据在线表现决定是否进入正式策略池&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="策略池四层设计"&gt;策略池四层设计&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────┐
│ 候选池 │
│ - 只做离线回测与稳健性筛选 │
├─────────────────────────────────────────────────────────────┤
│ 观察池（正在测） │
│ - 每天跟随最新行情更新表现 │
│ - 不直接决定正式组合 │
│ - 重点观察是否延续历史优势 │
├─────────────────────────────────────────────────────────────┤
│ 生产池 │
│ - 已通过历史和在线双重验证 │
│ - 可作为正式优选策略候选 │
├─────────────────────────────────────────────────────────────┤
│ 冻结池 │
│ - 曾经有效但近期失效 │
│ - 暂不删除，保留历史记忆 │
│ - 等待未来市场状态重新匹配 │
└─────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;★ Insight ─────────────────────────────────────
&lt;strong&gt;大多数策略不是&amp;quot;永远死&amp;quot;，而是&amp;quot;阶段失效&amp;quot;&lt;/strong&gt;。
冻结池的设计让系统保留了&amp;quot;等待市场状态重新匹配&amp;quot;的可能性。
──────────────────────────────────────────────────&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-12-no-signal-func-analysis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-12-no-signal-func-analysis/</guid><description>&lt;h1 id="devlog-003-no_signal_func-问题分析--741个策略中90个无法提取信号函数"&gt;DevLog #003: no_signal_func 问题分析 — 741个策略中90个无法提取信号函数&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-12
&lt;strong&gt;状态&lt;/strong&gt;: 分析完成
&lt;strong&gt;Tags&lt;/strong&gt;: strategy-factory, issue-analysis, signal-extraction, 平台兼容性&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="概述"&gt;概述&lt;/h2&gt;
&lt;p&gt;对 &lt;code&gt;out/&lt;/code&gt; 目录下所有 741 个策略 JSON 进行分析，发现 &lt;strong&gt;90 个策略（12.1%）的 &lt;code&gt;pure_alpha_function&lt;/code&gt; 字段为 &lt;code&gt;null&lt;/code&gt;&lt;/strong&gt;，无法参与回测。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="总体统计"&gt;总体统计&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;数量&lt;/th&gt;
&lt;th&gt;占比&lt;/th&gt;
&lt;th&gt;处理建议&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A类（可直接修复）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~5 个&lt;/td&gt;
&lt;td&gt;0.7%&lt;/td&gt;
&lt;td&gt;通过 LLM 直接生成&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B类（可重新生成）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~58 个&lt;/td&gt;
&lt;td&gt;7.8%&lt;/td&gt;
&lt;td&gt;模拟 API 或替代数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C类（不可修复）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~27 个&lt;/td&gt;
&lt;td&gt;3.6%&lt;/td&gt;
&lt;td&gt;标记排除，不计入失败率&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;总可修复率&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~70%&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;修复后预估通过率 4.0% → 12.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="a类可直接修复5个"&gt;A类：可直接修复（5个）&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;判定条件&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pure_alpha_function&lt;/code&gt; 为 null&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logic_extraction.entry_signals&lt;/code&gt; 有实质性内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quality_assessment.completeness&lt;/code&gt; 为 &lt;code&gt;medium&lt;/code&gt; 或 &lt;code&gt;high&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;策略描述清晰&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;典型案例&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-13-architecture-guardian-system/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-13-architecture-guardian-system/</guid><description>&lt;h1 id="devlog-004-saf-架构看护体系--需求-特性-测试三角闭环"&gt;DevLog #004: SAF 架构看护体系 — 需求-特性-测试三角闭环&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-13
&lt;strong&gt;状态&lt;/strong&gt;: 已建立
&lt;strong&gt;Tags&lt;/strong&gt;: architecture, quality-assurance, requirements, testing&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;随着 SAF 平台规模扩大，如何确保&lt;strong&gt;架构完整性不被侵蚀&lt;/strong&gt;成为重要问题。我们建立了&amp;quot;架构看护体系&amp;quot;，通过三个核心文档形成闭环。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三大核心文档"&gt;三大核心文档&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;文档&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;th&gt;格式&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;FEATURE_TREE.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SAF 完整特性树&lt;/td&gt;
&lt;td&gt;特性 → 子特性 → 孙子特性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SYSTEM_REQUIREMENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;系统需求规格&lt;/td&gt;
&lt;td&gt;REQ-ID 格式&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TEST_DESIGN.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;系统级测试设计&lt;/td&gt;
&lt;td&gt;基于需求规格&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="闭环流程"&gt;闭环流程&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌──────────────────────────────────────────────────────────────┐
│ │
│ 需求规格 (SYSTEM_REQUIREMENTS.md) │
│ │ │
│ ▼ │
│ 特性树 (FEATURE_TREE.md) │
│ │ │
│ ▼ │
│ 测试用例 (TEST_DESIGN.md) │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 通过 = 功能正确 │ │
│ └─────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="看护机制"&gt;看护机制&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;CI/CD Pipeline:
├── pytest (单元测试)
├── pytest --cov (覆盖率检查)
└── 全部通过 → 部署
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="验证命令"&gt;验证命令&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 运行 SAF 所有测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd SAF &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pytest tests/ -v --cov&lt;span style="color:#f92672"&gt;=&lt;/span&gt;saf --cov-report&lt;span style="color:#f92672"&gt;=&lt;/span&gt;term-missing
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 测试通过 = 系统功能良好&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="看护目标"&gt;看护目标&lt;/h2&gt;
&lt;p&gt;通过以上机制，确保：&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/2026-04-14-backtest-engine-selection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/2026-04-14-backtest-engine-selection/</guid><description>&lt;h1 id="devlog-001-回测引擎选型辩论--qlib-vs-vectorbt-vs-自研"&gt;DevLog #001: 回测引擎选型辩论 — Qlib vs VectorBT vs 自研&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-14
&lt;strong&gt;状态&lt;/strong&gt;: 已定稿
&lt;strong&gt;Tags&lt;/strong&gt;: architecture, backtest-engine, qlib, duckdb&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;在 SAF 平台开发过程中，我们面临一个关键架构决策：&lt;strong&gt;回测引擎层应该如何演进？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;已有的组件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TimeSeriesExecutionEngine&lt;/code&gt; — 时序执行框架&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PanelExecutionEngine&lt;/code&gt; — 截面执行框架&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VnPyAdapterEngine&lt;/code&gt; — vn.py CTA 适配器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BarStore (SQLite)&lt;/code&gt; — K 线持久化&lt;/li&gt;
&lt;li&gt;&lt;code&gt;legacy/evaluate/engine.py&lt;/code&gt; — 历史包袱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;候选引入：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Qlib&lt;/strong&gt; — 截面评价 + IC/IR + 参数扫描&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VectorBT&lt;/strong&gt; — 参数扫描&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DuckDB&lt;/strong&gt; — 多数据源 ETL Hub&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="讨论焦点"&gt;讨论焦点&lt;/h2&gt;
&lt;h3 id="1-vectorbt-的去留"&gt;1. VectorBT 的去留&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;初始提案&lt;/strong&gt;：用 VectorBT 做参数扫描，替代手写参数枚举。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;辩论过程&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持引入方：VectorBT 的参数扫描 API 很成熟，可以节省大量开发时间&lt;/li&gt;
&lt;li&gt;反对引入方：Qlib 已经覆盖了参数扫描能力，引入 VectorBT 会增加额外依赖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;最终结论&lt;/strong&gt;：&lt;strong&gt;不引入 VectorBT&lt;/strong&gt;，理由是 Qlib 已覆盖其核心能力。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/ai_harness_design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/ai_harness_design/</guid><description>&lt;h1 id="qmt-ai-harness-工程与扩展防线设计"&gt;QMT AI Harness 工程与扩展防线设计&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;文件性质&lt;/strong&gt;: 架构决策增补草案 (针对 Blueprint 致命缺陷的修复)
&lt;strong&gt;重点目标&lt;/strong&gt;: 彻底消除大模型在金融交易中的“看图作文”幻觉，并加固周边基建的容错能力。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="专项一ai-harness-维度隔离工程设计-解决缺陷3"&gt;专项一：AI Harness 维度隔离工程设计 (解决缺陷3)&lt;/h2&gt;
&lt;p&gt;为了防止 AI 因为迎合设定的“多空人设”而产生数据幻觉，我们需要在底层设计一套**特征路由与盲区隔离（Harness）**机制。&lt;/p&gt;
&lt;h3 id="1-核心设计思想剥夺全知全能的视角"&gt;1. 核心设计思想：剥夺全知全能的视角&lt;/h3&gt;
&lt;p&gt;过去我们将包含 &lt;code&gt;OHLC/技术指标/财务面/新闻&lt;/code&gt; 的整个巨大 JSON 广播给所有特工。
在全新的 Harness 设计下，&lt;strong&gt;系统只通过“守门人 (ContextRouter)”对数据进行脱敏切分后再下发。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="2-维度特工阵列-dimensional-agents"&gt;2. 维度特工阵列 (Dimensional Agents)&lt;/h3&gt;
&lt;h4 id="a-技术派特工-technical-agent"&gt;A. 技术派特工 (Technical Agent)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;看到的数据&lt;/strong&gt;: 纯 K 线形态、MA60 均线、MACD/BOLL 极值点、价格相对强度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;被屏蔽的数据&lt;/strong&gt;: 估值 PE、公司名字、新闻利好。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务&lt;/strong&gt;: 纯粹从图形和博弈阻力位出发，哪怕公司马上退市，只要底背离了也必须说看多。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="b-价值派特工-fundamental-agent"&gt;B. 价值派特工 (Fundamental Agent)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;看到的数据&lt;/strong&gt;: 历史 5 年 PE/PB 绝对分位值、ROE 变化、当前行业平均市盈率。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;被屏蔽的数据&lt;/strong&gt;: K 线形态走势、短线暴涨暴跌的惊悚新闻。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务&lt;/strong&gt;: 冷血计算护城河与折价率。只要低于 30% 分位即给出买点，哪怕天天跌板。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="c-资金情绪面特工-sentiment-agent"&gt;C. 资金/情绪面特工 (Sentiment Agent)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;看到的数据&lt;/strong&gt;: &lt;code&gt;volume_shadow&lt;/code&gt; (量影)、大单净流入、外部飞书资讯情绪。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务&lt;/strong&gt;: 捕猎当前市场主力的动向和筹码集中度。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-harness-融合器-the-arbitrator"&gt;3. Harness 融合器 (The Arbitrator)&lt;/h3&gt;
&lt;p&gt;三位盲人摸象的特工将产生极为结构化的短 JSON 报告（包含 &lt;code&gt;Stance: INT&lt;/code&gt; 与 &lt;code&gt;Confidence: 0.0-1.0&lt;/code&gt;）。Harness 的最终融合节点（Arbiter）将不再听他们吵架，而是基于他们不可调和的矛盾点做出终裁。
&lt;em&gt;例如 Arbiter 的逻辑推演会变成：“该股技术面触发死叉（Technical输出空），但价值层因为暴跌进入极度低估区（Fundamental输出多），综合考虑这属于黄金坑，给出建仓信号。”&lt;/em&gt;——这才是真正的投研。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/architecture_assessment_and_unification_plan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/architecture_assessment_and_unification_plan/</guid><description>&lt;h1 id="量化交易系统总体架构与一统演进蓝图-assessment--unification-plan"&gt;量化交易系统总体架构与一统演进蓝图 (Assessment &amp;amp; Unification Plan)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;文档创建&lt;/strong&gt;: 2026-04-05
&lt;strong&gt;涉及核心项目&lt;/strong&gt;: ATMS、QMT (qmt_system)、Wavemonitor、tradingagents-cn
&lt;strong&gt;核心战略&lt;/strong&gt;: 依托小步快跑迭代，正式开启多项目 Monorepo 合体进程&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一-系统全貌与原产物核心定位"&gt;一、 系统全貌与原产物核心定位&lt;/h2&gt;
&lt;p&gt;在进行统一规划前，对前期分别验证独立技术的成果及其在全局大系统中的定位梳理如下：&lt;/p&gt;
&lt;h3 id="11-atms-战术监控与ai宏观决策"&gt;1.1 ATMS: 战术监控与AI宏观决策&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;历史定位&lt;/strong&gt;: 定时巡检、多维共振监控、结合大语言模型盘中辅助决策的独立系统。
&lt;strong&gt;技术沉淀&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;高频巡检调度&lt;/strong&gt;: &lt;code&gt;main.py&lt;/code&gt; 定时机制与健壮的自我降级防护。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 赋能辩论 (&lt;code&gt;debate/&lt;/code&gt;)&lt;/strong&gt;: 探索出利用实时技术信号与持仓成本数据灌入 Prompt、限定 2 轮带记忆裁决的无幻觉 LLM Agent 应用机制。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;消息枢纽&lt;/strong&gt;: 基于 OpenClaw 的 &lt;code&gt;atms666-stock&lt;/code&gt; 飞书自动化卡片推送链路。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-wavemonitor-极速算子基座"&gt;1.2 WaveMonitor: 极速算子基座&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;历史定位&lt;/strong&gt;: 探索大批量实时股票状态机计算的最优解。
&lt;strong&gt;技术沉淀&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vector_engine.py&lt;/code&gt; (V7.1 Titan)&lt;/strong&gt;: 抛弃逐条 K 线的 if-else 判断，完全依靠 Pandas 执行纯向量化并行运算。内置双确认红绿波、状态粘性 FFill、超级防守趋势与动态吊灯止损。是所有旧版运算库（如 TA-Lib）的绝对上位替代品。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="13-qmt-system-交易执行与底层基建"&gt;1.3 QMT System: 交易执行与底层基建&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;历史定位&lt;/strong&gt;: 打通真实市场交易与跨平台研发（Mac vs Windows）隔离的底座环境。
&lt;strong&gt;技术沉淀&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多端执行抽象 (&lt;code&gt;executor&lt;/code&gt;)&lt;/strong&gt;: 基于 &lt;code&gt;ExecutorBase&lt;/code&gt; 包含实盘 QMT 和基于滑点延迟可配置的模拟执行器 &lt;code&gt;SimulatedExecutor&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多源数据网关 (&lt;code&gt;stock-qdata&lt;/code&gt;)&lt;/strong&gt;: 优雅抹平 &lt;code&gt;xtdata&lt;/code&gt; / &lt;code&gt;akshare&lt;/code&gt; / &lt;code&gt;csv&lt;/code&gt; 获取方式异构差异的数据提取中间件。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二-当前演变断层与技术债务"&gt;二、 当前演变断层与技术债务&lt;/h2&gt;
&lt;p&gt;在独立发展验证后，向整合系统转化存在以下架构冲突，需要在重构计划中逐个拔除：&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/architecture_high_level_diagram/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/architecture_high_level_diagram/</guid><description>&lt;h1 id="qmt-高阶架构图"&gt;QMT 高阶架构图&lt;/h1&gt;
&lt;p&gt;下图为 QMT 项目的高阶架构视图（Mermaid）：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;%%{init: {&amp;#34;theme&amp;#34;:&amp;#34;neutral&amp;#34;}}%%
flowchart LR
%% Data Sources
subgraph DataSources [外部数据源]
XT[QMT xtdata]
AK[AKShare / CSV]
API[第三方 API]
end
%% Ingestion Layer
subgraph Ingest [数据接入层]
StockQ[stock-qdata
(统一数据网关)]
DataFeed[DataFeed
(qss/core/data_feed)]
end
%% Core Platform
subgraph Core [核心平台]
Event[EventBus
(异步事件总线)]
Strategy[策略引擎
(策略生命周期、回放)]
Executor[执行器
(Simulated / Real / Remote)]
Monitor[wavemonitor
(信号监控)]
end
%% Storage &amp;amp; Observability
subgraph Storage [存储与观测]
DB[SQLite / Parquet]
Metrics[Prometheus / Grafana]
Logs[集中日志]
end
%% Config &amp;amp; Ops
subgraph Ops [配置与运维]
Config[quant_config
(配置中心/YAML)]
CI[CI/CD]
Notif[Feishu Webhook
(告警/通知)]
end
%% Flows
XT --&amp;gt;|kline/tick| StockQ
AK --&amp;gt;|kline/csv| StockQ
API --&amp;gt;|quotes| StockQ
StockQ --&amp;gt;|normalized data| DataFeed
DataFeed --&amp;gt;|DataResult| Event
Event --&amp;gt;|tick/bar| Strategy
Strategy --&amp;gt;|order req| Executor
Executor --&amp;gt;|order/trade events| Event
DataFeed --&amp;gt;|persist| DB
Strategy --&amp;gt;|results| DB
Executor --&amp;gt;|fills| DB
Event --&amp;gt;|alerts| Monitor
Monitor --&amp;gt;|alerts| Notif
Executor --&amp;gt;|trade alerts| Notif
Config --&amp;gt; Strategy
Config --&amp;gt; Executor
CI --&amp;gt;|tests/build| Repo[(code repo)]
Metrics --&amp;gt;|dashboards| Ops
Logs --&amp;gt;|search| Ops
style DataSources fill:#f8f9fa,stroke:#333,stroke-width:1px
style Ingest fill:#eef6ff,stroke:#3b82f6
style Core fill:#fff7ed,stroke:#f59e0b
style Storage fill:#f0fdf4,stroke:#10b981
style Ops fill:#f3f4f6,stroke:#6b7280
classDef smallText font-size:12px;
class StockQ,DataFeed,Event,Strategy,Executor,DB,Config smallText;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;保存路径： &lt;code&gt;docs/ARCHITECTURE_HIGH_LEVEL_DIAGRAM.md&lt;/code&gt;&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/qmt_code_architecture_20260406/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/qmt_code_architecture_20260406/</guid><description>&lt;h1 id="qmt-系统代码架构分析"&gt;QMT 系统代码架构分析&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;日期: 2026-04-06
分析范围: &lt;code&gt;qss/&lt;/code&gt;, &lt;code&gt;sps/&lt;/code&gt;, &lt;code&gt;tss/&lt;/code&gt;, &lt;code&gt;qdata/&lt;/code&gt;, &lt;code&gt;its/&lt;/code&gt;, &lt;code&gt;config/&lt;/code&gt;, &lt;code&gt;scripts/&lt;/code&gt;, &lt;code&gt;tests/&lt;/code&gt;
统计口径: 已排除 &lt;code&gt;.git/&lt;/code&gt;, &lt;code&gt;.venv/&lt;/code&gt;, &lt;code&gt;__pycache__/&lt;/code&gt;, &lt;code&gt;.pytest_cache/&lt;/code&gt;, &lt;code&gt;tss/output/&lt;/code&gt; 等生成内容
命名说明: 对外交付物中使用 &lt;strong&gt;QTS&lt;/strong&gt; 作为交易执行主系统简称；当前代码目录与 import 路径仍保持为 &lt;code&gt;qss/&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-核心模块缩写与全称"&gt;1. 核心模块缩写与全称&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;缩写&lt;/th&gt;
&lt;th&gt;英文全称&lt;/th&gt;
&lt;th&gt;中文全称&lt;/th&gt;
&lt;th&gt;当前职责&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;QTS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Quantitative Trading System&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;量化交易系统&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;在线策略执行、风控、事件总线、执行器、API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SPS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Strategy Push System&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;策略监控推送系统&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;盘中监控、状态观察、消息推送&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TSS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Trading Strategy Search&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;交易策略搜索系统&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;策略研究、批量回测、策略比较&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ITS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Investment Target Selection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;投资标的选择系统&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;个股筛选、辩论评审、金股池与记忆沉淀&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;说明: &lt;code&gt;ITS&lt;/code&gt; 在当前代码里同时承载“投资决策评审 / 标的筛选”语义。本文统一采用 &lt;code&gt;Investment Target Selection&lt;/code&gt; 这一主命名，并保留其“评审式筛选”定位。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="2-子系统原始定位与边界"&gt;2. 子系统原始定位与边界&lt;/h2&gt;
&lt;p&gt;这一节补回原有文档中的“角色定位”，避免只看技术实现而忽略业务边界。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/qmt_detailed_runtime_flow_20260407/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/qmt_detailed_runtime_flow_20260407/</guid><description>&lt;h1 id="qmt-detailed-runtime-flow"&gt;QMT Detailed Runtime Flow&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;时间: 2026-04-07
目的: 画清楚 &lt;code&gt;ITS / QTS / SPS / TSS / qdata / scheduler&lt;/code&gt; 的详细运行流程
说明: 本文分为两部分&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当前代码真实运行流程&lt;/li&gt;
&lt;li&gt;推荐演进后的分层池消费流程&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-当前代码真实运行流程"&gt;1. 当前代码真实运行流程&lt;/h2&gt;
&lt;h3 id="11-运行说明"&gt;1.1 运行说明&lt;/h3&gt;
&lt;p&gt;当前仓库里，最稳定、最清晰的主流程是:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;夜间由 &lt;code&gt;scheduler.py&lt;/code&gt; 拉起 &lt;code&gt;nightly_screener.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nightly_screener.py&lt;/code&gt; 从种子池读取股票列表&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ITS&lt;/code&gt; 用技术过滤 + AI 辩论筛出可关注标的&lt;/li&gt;
&lt;li&gt;结果写入 &lt;code&gt;config/golden_pool.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;次日 &lt;code&gt;scheduler.py&lt;/code&gt; 拉起 &lt;code&gt;qss/main.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;QTS&lt;/code&gt; 加载配置、数据源、执行器、风控和策略后进入交易时段运行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SPS&lt;/code&gt; 当前是相对独立的盘中监控链路，更多消费自己的 watchlist，而不是统一消费 &lt;code&gt;ITS&lt;/code&gt; 分层池&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="12-详细运行流程图"&gt;1.2 详细运行流程图&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;flowchart TD
subgraph Time0[&amp;#34;夜间研究与洗池&amp;#34;]
A1[&amp;#34;scheduler.py&amp;lt;br/&amp;gt;01:00 定时触发&amp;#34;] --&amp;gt; A2[&amp;#34;job_run_nightly_screener()&amp;#34;]
A2 --&amp;gt; A3[&amp;#34;scripts/jobs/nightly_screener.py&amp;#34;]
A3 --&amp;gt; A4[&amp;#34;读取 config/pools/zxg_a_share_pool.csv&amp;lt;br/&amp;gt;种子股票池&amp;#34;]
A3 --&amp;gt; A5[&amp;#34;ConfigManager.load()&amp;lt;br/&amp;gt;日志 / 配置初始化&amp;#34;]
A3 --&amp;gt; A6[&amp;#34;DataFeed(settings)&amp;lt;br/&amp;gt;经 qdata / xtdata / CSV 获取日线&amp;#34;]
A3 --&amp;gt; A7[&amp;#34;AIClient&amp;lt;br/&amp;gt;LLM 客户端&amp;#34;]
A4 --&amp;gt; A8[&amp;#34;遍历股票&amp;#34;]
A6 --&amp;gt; A8
A7 --&amp;gt; A8
A8 --&amp;gt; A9[&amp;#34;ITS.StockScreener.screen_symbol()&amp;#34;]
A9 --&amp;gt; A10[&amp;#34;IndicatorEngine&amp;lt;br/&amp;gt;趋势过滤 / 择时过滤&amp;#34;]
A10 --&amp;gt; A11{&amp;#34;技术过滤通过?&amp;#34;}
A11 -- 否 --&amp;gt; A12[&amp;#34;skip_reason&amp;lt;br/&amp;gt;淘汰&amp;#34;]
A11 -- 是 --&amp;gt; A13[&amp;#34;DebateContextBuilder&amp;lt;br/&amp;gt;组装技术/价格/持仓上下文&amp;#34;]
A13 --&amp;gt; A14[&amp;#34;DebateEngine.run_debate()&amp;#34;]
A14 --&amp;gt; A15[&amp;#34;debate_to_signal()&amp;lt;br/&amp;gt;生成 BUY / HOLD / SELL 等信号&amp;#34;]
A15 --&amp;gt; A16{&amp;#34;action in BUY/STRONG_BUY?&amp;#34;}
A16 -- 否 --&amp;gt; A17[&amp;#34;不入池&amp;#34;]
A16 -- 是 --&amp;gt; A18[&amp;#34;写入 golden_symbols[]&amp;lt;br/&amp;gt;symbol / name / confidence / risk / logic&amp;#34;]
A18 --&amp;gt; A19[&amp;#34;save_golden_pool()&amp;#34;]
A19 --&amp;gt; A20[&amp;#34;config/golden_pool.yaml&amp;#34;]
end
subgraph Time1[&amp;#34;盘前调度&amp;#34;]
B1[&amp;#34;scheduler.py&amp;lt;br/&amp;gt;09:25 定时触发&amp;#34;] --&amp;gt; B2[&amp;#34;job_start_qss_engine()&amp;#34;]
B2 --&amp;gt; B3[&amp;#34;subprocess 启动 qss/main.py&amp;#34;]
end
subgraph Time2[&amp;#34;QTS 交易主链路&amp;#34;]
C1[&amp;#34;qss/main.py&amp;#34;] --&amp;gt; C2[&amp;#34;ConfigManager.load()&amp;#34;]
C2 --&amp;gt; C3[&amp;#34;DataFeed(settings)&amp;lt;br/&amp;gt;可接 qdata / xtdata&amp;#34;]
C2 --&amp;gt; C4[&amp;#34;create_executor()&amp;lt;br/&amp;gt;QMTExecutor 或 SimulatedExecutor&amp;#34;]
C4 --&amp;gt; C5[&amp;#34;ExecutorPortfolioAdapter&amp;#34;]
C5 --&amp;gt; C6[&amp;#34;RiskManager&amp;#34;]
C4 --&amp;gt; C7[&amp;#34;SignalProcessor.start()&amp;#34;]
C2 --&amp;gt; C8[&amp;#34;create_strategy()&amp;lt;br/&amp;gt;按 settings.strategies 装载策略&amp;#34;]
C8 --&amp;gt; C9[&amp;#34;strategy.start()&amp;#34;]
C2 --&amp;gt; C10[&amp;#34;NotificationBridge.start()&amp;#34;]
C2 --&amp;gt; C11[&amp;#34;FastAPI init_state / uvicorn&amp;#34;]
C1 --&amp;gt; C12[&amp;#34;进入阻塞运行 while True&amp;#34;]
C3 --&amp;gt; C8
C6 --&amp;gt; C7
C8 --&amp;gt; C7
C7 --&amp;gt; C13[&amp;#34;风控检查 / 订单路由 / 执行&amp;#34;]
C13 --&amp;gt; C14[&amp;#34;QMT 实盘下单 或 模拟执行&amp;#34;]
end
subgraph Time3[&amp;#34;SPS 独立盘中监控链路&amp;#34;]
D1[&amp;#34;sps/wave_monitor.py&amp;#34;] --&amp;gt; D2[&amp;#34;读取 .watchlist_a.json&amp;#34;]
D1 --&amp;gt; D3[&amp;#34;QuoteFetcher&amp;lt;br/&amp;gt;QMT xtdata 或 Sina&amp;#34;]
D1 --&amp;gt; D4[&amp;#34;HistoryDataManager&amp;#34;]
D3 --&amp;gt; D5[&amp;#34;实时行情&amp;#34;]
D4 --&amp;gt; D6[&amp;#34;历史K线&amp;#34;]
D5 --&amp;gt; D7[&amp;#34;WaveComputeEngine&amp;lt;br/&amp;gt;V7.1 Titan 向量计算&amp;#34;]
D6 --&amp;gt; D7
D7 --&amp;gt; D8[&amp;#34;状态机 / 变化检测 / 告警格式化&amp;#34;]
D8 --&amp;gt; D9[&amp;#34;控制台 / 持久化 / 推送&amp;#34;]
end
subgraph Time4[&amp;#34;TSS 研究与回测链路&amp;#34;]
E1[&amp;#34;TSS runner / backtest&amp;#34;] --&amp;gt; E2[&amp;#34;更宽研究池 / 自定义 universe&amp;#34;]
E2 --&amp;gt; E3[&amp;#34;qdata / CSV / yfinance / vn.py&amp;#34;]
E3 --&amp;gt; E4[&amp;#34;回测结果 / 对比报告&amp;#34;]
end
A20 -. 次日作为候选输入 .-&amp;gt; C8
A20 -. 当前也可供其他模块读取 .-&amp;gt; D2
C3 --&amp;gt;|&amp;#34;统一数据入口&amp;#34;| E3
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="2-当前流程的关键结论"&gt;2. 当前流程的关键结论&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;当前最明确的“日切换”主线是 &lt;code&gt;scheduler -&amp;gt; nightly_screener -&amp;gt; golden_pool.yaml -&amp;gt; qss/main.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ITS&lt;/code&gt; 已经承担了夜间评审和洗池职责&lt;/li&gt;
&lt;li&gt;&lt;code&gt;QTS&lt;/code&gt; 是唯一真正承担执行闭环的系统&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SPS&lt;/code&gt; 目前更像并行监控服务，还没有完全切到统一的 &lt;code&gt;ITS&lt;/code&gt; 输出契约&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TSS&lt;/code&gt; 保留更宽研究池是合理的，不必被 &lt;code&gt;ITS&lt;/code&gt; 完全约束&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-推荐演进后的详细运行流程"&gt;3. 推荐演进后的详细运行流程&lt;/h2&gt;
&lt;h3 id="31-演进目标"&gt;3.1 演进目标&lt;/h3&gt;
&lt;p&gt;你前面提的方向我认可，推荐把 &lt;code&gt;ITS&lt;/code&gt; 定义为“分层池生产者”，而不是“强耦合驱动所有下游”的控制中心。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/qmt_executive_brief_20260407/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/qmt_executive_brief_20260407/</guid><description>&lt;h1 id="qmt-系统管理层摘要"&gt;QMT 系统管理层摘要&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;日期: 2026-04-07
适用对象: 老板、新同事、非核心开发成员
命名说明: 对外简称采用 &lt;strong&gt;QTS&lt;/strong&gt;；当前代码目录仍为 &lt;code&gt;qss/&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-一句话总结"&gt;1. 一句话总结&lt;/h2&gt;
&lt;p&gt;QMT 不是单一策略程序，而是一套围绕量化交易建立的工作平台。它已经形成了“数据底座 + 标的筛选 + 策略研究 + 交易执行 + 监控推送”的完整闭环雏形。&lt;/p&gt;
&lt;h2 id="2-四个核心子系统分别做什么"&gt;2. 四个核心子系统分别做什么&lt;/h2&gt;
&lt;h3 id="qts"&gt;QTS&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;QTS (Quantitative Trading System)&lt;/strong&gt; 是交易执行主系统。&lt;/p&gt;
&lt;p&gt;它负责把策略信号真正落到交易闭环，包括:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;策略在线运行&lt;/li&gt;
&lt;li&gt;风控校验&lt;/li&gt;
&lt;li&gt;委托执行&lt;/li&gt;
&lt;li&gt;持仓/资产状态管理&lt;/li&gt;
&lt;li&gt;API 与运行态对外暴露&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，QTS 负责“做”。&lt;/p&gt;
&lt;h3 id="sps"&gt;SPS&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;SPS (Strategy Push System)&lt;/strong&gt; 是监控推送系统。&lt;/p&gt;
&lt;p&gt;它负责盘中状态观察、信号变化提醒和消息推送，重点是“监控”和“告警”，不是交易执行。&lt;/p&gt;
&lt;p&gt;简单说，SPS 负责“看”，而且是 &lt;strong&gt;只推不交易&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="tss"&gt;TSS&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TSS (Trading Strategy Search)&lt;/strong&gt; 是策略研究与回测系统。&lt;/p&gt;
&lt;p&gt;它负责策略搜索、历史回测、参数比较和策略验证，输出的是研究结论，而不是实盘执行动作。&lt;/p&gt;
&lt;p&gt;简单说，TSS 负责“试”。&lt;/p&gt;
&lt;h3 id="its"&gt;ITS&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ITS (Investment Target Selection)&lt;/strong&gt; 是投资标的筛选与评审系统。&lt;/p&gt;
&lt;p&gt;它负责从全市场中筛选候选标的，并通过多维评审给出优先级和结论。它输出的是候选池和评审报告，而不是直接下单。&lt;/p&gt;
&lt;p&gt;简单说，ITS 负责“挑”。&lt;/p&gt;
&lt;h2 id="3-整体关系如何理解"&gt;3. 整体关系如何理解&lt;/h2&gt;
&lt;p&gt;可以用一句话概括这套体系:&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/qmt_high_level_architecture_20260406/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/qmt_high_level_architecture_20260406/</guid><description>&lt;h1 id="qmt-高层架构图"&gt;QMT 高层架构图&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;日期: 2026-04-06
说明: 本文档基于当前代码结构绘制，不沿用旧命名。
命名说明: 对外简称采用 &lt;strong&gt;QTS&lt;/strong&gt;；当前代码目录与 import 路径仍为 &lt;code&gt;qss/&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-模块缩写与全称"&gt;1. 模块缩写与全称&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;缩写&lt;/th&gt;
&lt;th&gt;英文全称&lt;/th&gt;
&lt;th&gt;中文全称&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;QTS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Quantitative Trading System&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;量化交易系统&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SPS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Strategy Push System&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;策略监控推送系统&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TSS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Trading Strategy Search&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;交易策略搜索系统&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ITS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Investment Target Selection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;投资标的选择系统&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="2-原始定位补充"&gt;2. 原始定位补充&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QTS&lt;/strong&gt;: 交易执行主系统，负责真正的策略执行、风控与交易闭环&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SPS&lt;/strong&gt;: 监控推送系统，负责低频监控和消息推送，&lt;strong&gt;只推不交易&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TSS&lt;/strong&gt;: 策略搜索与回测系统，负责研究、验证和比较&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITS&lt;/strong&gt;: 投资标的筛选与评审系统，负责候选股筛选与评审，&lt;strong&gt;看和评，不直接做&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-系统上下文图"&gt;3. 系统上下文图&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;flowchart LR
User[交易员 / 研究员 / 调度脚本] --&amp;gt; QMT[QMT Quant Workspace]
Market[QMT xtdata / AKShare / CSV / Sina / News] --&amp;gt; QMT
QMT --&amp;gt; Notify[Feishu / Dashboard / 报表]
QMT --&amp;gt; Broker[QMT 交易终端 / 模拟执行]
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="4-当前代码高层架构图"&gt;4. 当前代码高层架构图&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;flowchart TB
subgraph Config[统一配置层]
CFG1[config/base.yaml]
CFG2[accounts / pools / strategies]
CFG3[loader.py]
end
subgraph Data[数据与存储层]
QD[qdata.service.DataService]
ADP[QMTAdapter / AKShareAdapter / CSVAdapter]
ASYNC[AsyncDataService]
BAR[BarStore SQLite]
end
subgraph Trading[交易执行层]
DF[DataFeed]
QTS[QTS\nQuantitative Trading System\n量化交易系统]
BUS[EventBus]
PROC[SignalProcessor]
RISK[RiskManager]
EXE[QMTExecutor / SimulatedExecutor / RemoteExecutor]
API[FastAPI + Dashboard]
NOTI[NotificationBridge]
end
subgraph Monitor[盘中监控层]
SPS[SPS\nStrategy Push System\n策略监控推送系统]
WM[wave_monitor]
QF[QuoteFetcher]
VE[vector_engine]
HDB[HistoryDataManager]
end
subgraph Research[策略研究层]
TSS[TSS\nTrading Strategy Search\n交易策略搜索系统]
DL[data_loader]
VBT[vnpy_backtest_runner]
COMP[comparison / report scripts]
end
subgraph Intelligence[智能分析层]
ITS[ITS\nInvestment Target Selection\n投资标的选择系统]
DCB[DebateContextBuilder]
DEB[DebateEngine]
AIC[AIClient]
MEM[DebateMemoryStore]
GP[GoldenPoolManager]
NEWS[news + sentiment]
end
subgraph Ops[编排运维层]
SCH[scheduler.py]
NIGHT[nightly_screener.py]
end
CFG1 --&amp;gt; QD
CFG2 --&amp;gt; QD
CFG3 --&amp;gt; QD
CFG3 --&amp;gt; Trading
CFG3 --&amp;gt; Research
ADP --&amp;gt; QD --&amp;gt; BAR
QD --&amp;gt; ASYNC
QD --&amp;gt; DF
QD --&amp;gt; SPS
QD --&amp;gt; TSS
QD --&amp;gt; ITS
DF --&amp;gt; QTS
QTS --&amp;gt; BUS --&amp;gt; PROC --&amp;gt; RISK --&amp;gt; EXE
BUS --&amp;gt; NOTI
BUS --&amp;gt; API
QF --&amp;gt; WM
VE --&amp;gt; WM
HDB --&amp;gt; WM
SPS --&amp;gt; WM
TSS --&amp;gt; DL
DL --&amp;gt; VBT
COMP --&amp;gt; VBT
ITS --&amp;gt; DCB
DCB --&amp;gt; DEB --&amp;gt; AIC
DEB --&amp;gt; MEM
DEB --&amp;gt; GP
NEWS --&amp;gt; DCB
GP -. 候选池 / 事件 .-&amp;gt; QTS
SCH --&amp;gt; NIGHT
SCH --&amp;gt; QTS
NIGHT --&amp;gt; ITS
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="5-推荐部署图"&gt;5. 推荐部署图&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;flowchart LR
subgraph StrategySide[策略与研究侧 Mac / Linux]
TSS[TSS\nTrading Strategy Search]
SPS[SPS\nStrategy Push System]
ITS[ITS\nInvestment Target Selection]
QTSL[QTS Logic\nQuantitative Trading System]
QDATA[qdata]
end
subgraph ExecSide[执行侧 Windows + QMT]
REMOTE[RemoteExecutorServer]
QMTX[xtdata / xttrader / QMTExecutor]
TERMINAL[QMT Client]
end
TSS --&amp;gt; QDATA
SPS --&amp;gt; QDATA
ITS --&amp;gt; QDATA
QTSL --&amp;gt; QDATA
QTSL --&amp;gt;|JSON-RPC/TCP| REMOTE --&amp;gt; QMTX --&amp;gt; TERMINAL
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="6-阅读说明"&gt;6. 阅读说明&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qdata&lt;/code&gt; 是全系统共享底座&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QTS&lt;/strong&gt; 是最核心的在线执行域，也是唯一承担交易执行闭环的主系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SPS&lt;/strong&gt; 与 &lt;strong&gt;TSS&lt;/strong&gt; 分别承担监控和研究职责，其中 &lt;strong&gt;SPS&lt;/strong&gt; 只推不交易&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITS&lt;/strong&gt; 负责智能分析、候选池沉淀和评审结论输出&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts&lt;/code&gt; 负责日常编排，不直接承载业务逻辑&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/qts_rename_migration_plan_20260407/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/qts_rename_migration_plan_20260407/</guid><description>&lt;h1 id="qss-到-qts-重命名迁移方案"&gt;QSS 到 QTS 重命名迁移方案&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;日期: 2026-04-07
当前结论: &lt;strong&gt;推荐先做对外命名切换，再做代码层重命名&lt;/strong&gt;
当前状态: 对外交付物已切换为 &lt;strong&gt;QTS&lt;/strong&gt;，代码目录与 import 路径仍为 &lt;code&gt;qss/&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-为什么考虑从-qss-改为-qts"&gt;1. 为什么考虑从 QSS 改为 QTS&lt;/h2&gt;
&lt;p&gt;当前对外简称最初是 &lt;strong&gt;QSS&lt;/strong&gt;，但从语义上看，交易执行主系统更容易被理解为:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;QTS = Quantitative Trading System&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相比之下，&lt;code&gt;QSS&lt;/code&gt; 更容易让人联想到 &lt;code&gt;Strategy System&lt;/code&gt;，而不是“交易执行主系统”。&lt;/p&gt;
&lt;p&gt;因此，从品牌和沟通角度，&lt;strong&gt;QTS 的确更直观&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="2-当前现状"&gt;2. 当前现状&lt;/h2&gt;
&lt;p&gt;本次快速评估显示，仓库中与 &lt;code&gt;QSS / qss/ / qss.&lt;/code&gt; 相关的引用约 &lt;strong&gt;178 处&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这些引用分布在:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文档&lt;/li&gt;
&lt;li&gt;PPT 生成脚本&lt;/li&gt;
&lt;li&gt;Python import&lt;/li&gt;
&lt;li&gt;调度脚本&lt;/li&gt;
&lt;li&gt;测试代码&lt;/li&gt;
&lt;li&gt;架构图与说明文本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着，&lt;code&gt;QSS -&amp;gt; QTS&lt;/code&gt; 不是一个“只改几行字”的动作。&lt;/p&gt;
&lt;h2 id="3-风险评估"&gt;3. 风险评估&lt;/h2&gt;
&lt;h3 id="低风险部分"&gt;低风险部分&lt;/h3&gt;
&lt;p&gt;以下内容可以先改，不会影响系统运行:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;架构文档&lt;/li&gt;
&lt;li&gt;汇报 PPT&lt;/li&gt;
&lt;li&gt;对外介绍口径&lt;/li&gt;
&lt;li&gt;模块说明&lt;/li&gt;
&lt;li&gt;管理层摘要&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="中风险部分"&gt;中风险部分&lt;/h3&gt;
&lt;p&gt;以下内容改动后，需要回归验证:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日志文案&lt;/li&gt;
&lt;li&gt;调度脚本中的显示文本&lt;/li&gt;
&lt;li&gt;文档里的目录说明&lt;/li&gt;
&lt;li&gt;测试里的描述文字&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="高风险部分"&gt;高风险部分&lt;/h3&gt;
&lt;p&gt;以下内容一旦修改，会直接影响代码运行与导入路径:&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/riskforarcitecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/riskforarcitecture/</guid><description>&lt;h1 id="qmt-architecture-risk-details"&gt;QMT Architecture Risk Details&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;基于当前代码仓库现状整理，聚焦此前架构文档里提到的前三类风险。
时间: 2026-04-07
范围: &lt;code&gt;qmt/&lt;/code&gt; 当前主仓代码、历史文档与运行脚本&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-文档命名与实际目录漂移"&gt;1. 文档命名与实际目录漂移&lt;/h2&gt;
&lt;h3 id="11-现象"&gt;1.1 现象&lt;/h3&gt;
&lt;p&gt;仓库已经明显从历史命名体系迁移到新的模块化命名体系，但大量旧文档仍使用老名字，导致“文档里的系统”和“代码里的系统”不是同一套口径。&lt;/p&gt;
&lt;p&gt;当前对外推荐口径:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;当前口径&lt;/th&gt;
&lt;th&gt;代码目录&lt;/th&gt;
&lt;th&gt;历史口径&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;QTS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qss/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qmt_system/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SPS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sps/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;wavemonitor/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TSS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tss/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;search_essential/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qdata&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qdata/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;stock-qdata/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;config&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;config/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;quant_config/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="12-具体问题"&gt;1.2 具体问题&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;根级架构文档仍以旧目录为主，容易让阅读者误以为仓库目录尚未迁移。&lt;/li&gt;
&lt;li&gt;子系统文档中混用了“旧目录名”和“新简称”，导致同一个模块在不同材料里有两到三个名字。&lt;/li&gt;
&lt;li&gt;一些蓝图文档已经开始做新旧映射，但没有成为统一事实来源，阅读时仍需要人工脑补转换。&lt;/li&gt;
&lt;li&gt;历史输出物中仍保留“&lt;code&gt;qmt_system/skills/wavemonitor/&lt;/code&gt;”这类已经不符合当前结构的表述。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="13-代码与文档证据"&gt;1.3 代码与文档证据&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.ganyiming.top/Users/james/code/qmt/qmt/ARCHITECTURE.md:13"&gt;ARCHITECTURE.md&lt;/a&gt; 仍写 &lt;code&gt;qmt_system / wavemonitor / stock-qdata / search_essential / quant_config&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ganyiming.top/Users/james/code/qmt/qmt/ARCHITECTURE.md:96"&gt;ARCHITECTURE.md&lt;/a&gt; 之后的大段目录树仍基于旧结构&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ganyiming.top/Users/james/code/qmt/qmt/qss/docs/Architecture.md:11"&gt;Architecture.md&lt;/a&gt; 仍以 &lt;code&gt;qmt_system / search_essential / wavemonitor / stock-qdata&lt;/code&gt; 为主名&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ganyiming.top/Users/james/code/qmt/qmt/tss/Architecture.md:13"&gt;Architecture.md&lt;/a&gt; 仍把 &lt;code&gt;search_essential / wavemonitor / qmt_system&lt;/code&gt; 当作主要模块名&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ganyiming.top/Users/james/code/qmt/qmt/docs/ARCHITECTURE_HIGH_LEVEL_DIAGRAM.md:17"&gt;ARCHITECTURE_HIGH_LEVEL_DIAGRAM.md&lt;/a&gt; 图中仍使用 &lt;code&gt;stock-qdata / wavemonitor / quant_config&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ganyiming.top/Users/james/code/qmt/qmt/docs/integration-blueprint.md:42"&gt;integration-blueprint.md&lt;/a&gt; 已开始建立 &lt;code&gt;旧目录 -&amp;gt; 新简称&lt;/code&gt; 映射，但这份映射尚未完全反向同步到其他文档&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="14-架构层影响"&gt;1.4 架构层影响&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;沟通成本上升: 老成员说旧名，新成员看新目录，讨论容易错位&lt;/li&gt;
&lt;li&gt;汇报口径不稳定: 对外材料、PPT、代码目录三套话语并存&lt;/li&gt;
&lt;li&gt;重命名评估容易失真: 无法快速分辨“文档已迁移”还是“代码已迁移”&lt;/li&gt;
&lt;li&gt;影响自动化治理: 后续如果做目录扫描、依赖图、ADR 归档，命名不统一会让结果失真&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="15-建议"&gt;1.5 建议&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;指定一份主口径文档，推荐继续以 &lt;a href="https://www.ganyiming.top/Users/james/code/qmt/qmt/docs/architecture/QMT_CODE_ARCHITECTURE_20260406.md"&gt;QMT_CODE_ARCHITECTURE_20260406.md&lt;/a&gt; 作为对外事实来源&lt;/li&gt;
&lt;li&gt;在旧文档顶部统一加“历史文档 / 已迁移命名对照”提示，而不是默默保留旧名&lt;/li&gt;
&lt;li&gt;对外统一使用 &lt;code&gt;QTS / SPS / TSS / ITS / qdata&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;对内在过渡期保留说明: &lt;code&gt;QTS&lt;/code&gt; 对应当前代码目录 &lt;code&gt;qss/&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="2-syspath-注入与隐式导入较多包边界未完全硬化"&gt;2. &lt;code&gt;sys.path&lt;/code&gt; 注入与隐式导入较多，包边界未完全硬化&lt;/h2&gt;
&lt;h3 id="21-现象"&gt;2.1 现象&lt;/h3&gt;
&lt;p&gt;当前多个核心模块和运行脚本仍通过手工修改 &lt;code&gt;sys.path&lt;/code&gt; 来完成跨目录导入。这说明仓库虽已开始形成模块边界，但尚未完全进入“稳定包 + 明确入口”的状态。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/saf_architecture_review/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/saf_architecture_review/</guid><description>&lt;h1 id="saf-architecture-review"&gt;SAF Architecture Review&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;策略自动化工厂 — 架构深度评审（修订版）
更新时间: 2026-04-14
评审范围: SAF / Strategy Factory / 各子系统联动&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-定位与愿景"&gt;1. 定位与愿景&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;QMT 工作区
│
├── qdata/ 统一数据层
├── qss/ 量化策略系统
├── its/ 舆情/情绪分析
├── sps/ 盘中信号监控
├── tss/ 策略研发回测
│
└── SAF/ 策略自动化工厂
├── core/saf/ saf Python 包（核心引擎）
└── strategy_factory/ 策略工厂（批量评估）
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="2-实际架构双轨并行"&gt;2. 实际架构：双轨并行&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;strategy_factory/
│
├── run_evaluate.py ← 批量评估入口（当前生产路径）
│ │
│ ├─ legacy/evaluate/engine.py CrossSectionalBacktester ← 实际运行的回测引擎
│ ├─ legacy/evaluate/scorer.py 6D 评分 + 场景切片
│ └─ evaluate/fast_screen_policy.py 快筛策略
│
├── run_pipeline.py ← 策略数据提纯入口（LLM 清洗 raw→JSON）
│ └── pipeline/runner.py
│
├── evaluate/
│ ├── engine_adapter.py ⚠️ 存在但未接入 — SAF 引擎适配器
│ └── fast_screen.py
│
└── backtest_*.py ← 专项回测工具（独立使用）
├── backtest_regime.py Regime 三策略对比 (374L) ✅
├── backtest_regime_aware.py Regime-Aware 回测 (499L) ✅
├── backtest_skills_v71.py Skills V7.1 回测 (342L) ✅
├── backtest_sps.py SPS 回测 (360L) ✅
├── backtest_sps_v2.py SPS V2 回测 (325L) ✅
├── backtest_v7_vs_v8.py V7 vs V8 对比 (289L) ✅
└── test_tdx_api.py TDX API 测试 (297L)
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="3-双轨详解"&gt;3. 双轨详解&lt;/h2&gt;
&lt;h3 id="31-legacy-轨-当前生产路径"&gt;3.1 Legacy 轨（✅ 当前生产路径）&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;run_evaluate.py
│
├─ CrossSectionalBacktester (legacy/evaluate/engine.py)
│ ├─ load_data_yfinance() ✅ Mac 主路径
│ ├─ load_data_csv() ✅ CSV fallback
│ ├─ load_data_gateway() ✅ QMT gateway
│ ├─ _normalize_ohlcv() ✅ 列名统一
│ └─ signal_func(df) → equity ✅ 截面回测
│
├─ fast_screen_policy.py
│ ├─ infer_profile() ✅ 策略画像推断
│ ├─ should_retry_rejected() ✅ 重试策略
│ └─ classify_*() ✅ 分类逻辑
│
└─ legacy/evaluate/scorer.py
├─ score_strategy() ✅ 6D 评分
├─ score_scenario_slices() ✅ 场景切片评分
└─ generate_report() ✅ JSON/MD 输出
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;: 直接操作 pandas DataFrame，不依赖 &lt;code&gt;saf.data&lt;/code&gt; 包，零抽象开销。&lt;/p&gt;</description></item><item><title/><link>https://www.ganyiming.top/qmt/saf_migration_plan_20260413/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.ganyiming.top/qmt/saf_migration_plan_20260413/</guid><description>&lt;h1 id="saf-重构迁移方案"&gt;SAF 重构迁移方案&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;日期&lt;/strong&gt;: 2026-04-13
&lt;strong&gt;目标&lt;/strong&gt;: 将 SAF 提升到与 StrategeFactoryFlow/TSS 并列层次，废弃两者中与 SAF 重叠的部分
&lt;strong&gt;范围&lt;/strong&gt;: &lt;code&gt;StrategeFactoryFlow&lt;/code&gt;, &lt;code&gt;TSS&lt;/code&gt;, &lt;code&gt;SAF&lt;/code&gt; 三个项目的回测/数据/评估层&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-当前架构状态"&gt;1. 当前架构状态&lt;/h2&gt;
&lt;h3 id="11-三个项目现状"&gt;1.1 三个项目现状&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;qmt/
├── SAF/ # 新共享内核（重构骨架）
│ ├── src/saf/
│ │ ├── capability/ # ✅ 策略能力检测
│ │ ├── data/ # ⚠️ 框架完成，实现缺失
│ │ ├── engine/ # ⚠️ 框架完成，时序实现待补全
│ │ ├── evaluation/ # ⚠️ 框架完成，评分实现缺失
│ │ ├── models/ # ✅ 强类型对象模型
│ │ ├── orchestrator/ # ✅ 编排层框架
│ │ ├── storage/ # ✅ 接口定义
│ │ └── strategy/ # ✅ 策略解析器
│ └── tests/
│
├── StrategeFactoryFlow/ # 策略工厂（待迁移/废弃）
│ ├── evaluate/
│ │ ├── engine.py # ❌ 与 SAF engine 重复 → 废弃
│ │ ├── fast_screen_policy.py # ✅ 保留（SAF 暂无对应）
│ │ └── scorer.py # ⚠️ 与 SAF evaluation 重复 → 迁移/废弃
│ ├── run_evaluate.py # ✅ 保留（批量编排）
│ └── pipeline/ # ⚠️ 部分迁移
│
└── tss/ # 策略运营（待迁移/废弃）
├── data_loader.py # ❌ 与 SAF data 重复 → 废弃
├── run_*_comparison.py # ⚠️ 保留（多策略对比）
├── vnpy_backtest_runner.py # ⚠️ SAF vnpy_adapter 替代
└── ...
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="12-saf-能力-vs-现有实现-2026-04-13-更新"&gt;1.2 SAF 能力 vs 现有实现 (2026-04-13 更新)&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模块&lt;/th&gt;
&lt;th&gt;SAF 现状&lt;/th&gt;
&lt;th&gt;StrategeFactoryFlow&lt;/th&gt;
&lt;th&gt;TSS&lt;/th&gt;
&lt;th&gt;结论&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;策略拓扑检测&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;SAF 优，废弃 SFF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FailureCode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;❌ 散落字符串&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;SAF 优，废弃 SFF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;对象模型&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;❌ pd.DataFrame&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;SAF 优&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;时序回测引擎&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;⚠️ 简单实现&lt;/td&gt;
&lt;td&gt;SAF 已可替代 SFF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;截面回测引擎&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;SAF 已可替代 SFF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;配对回测引擎&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 骨架定义&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;SAF 框架已定义，实现待补&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;vnpy 适配器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 骨架定义&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;迁移到 SAF vnpy_adapter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;数据加载&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 协议定义&lt;/td&gt;
&lt;td&gt;❌ 直接用 DataService&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;迁移 data_loader 到 SAF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;评分系统&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 简化版&lt;/td&gt;
&lt;td&gt;✅ 6维评分&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;迁移 6维到 SAF evaluation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;编排/批量&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 框架完整&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;⚠️ 脚本&lt;/td&gt;
&lt;td&gt;SAF orchestrator 已可替代&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;快筛重试&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;✅ 完整&lt;/td&gt;
&lt;td&gt;❌ 无&lt;/td&gt;
&lt;td&gt;SFF 保留或迁移到 SAF&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="2-迁移原则"&gt;2. 迁移原则&lt;/h2&gt;
&lt;h3 id="21-三不原则"&gt;2.1 三不原则&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不删除代码&lt;/strong&gt;：所有待废弃代码移入 &lt;code&gt;legacy/&lt;/code&gt; 目录，保留历史&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不中断开发&lt;/strong&gt;：迁移期间现有流水线照常运行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不破坏接口&lt;/strong&gt;：SAF 接口先稳定再对接&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="22-迁移顺序"&gt;2.2 迁移顺序&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Phase 1: 稳固 SAF 内核（共享层先完成）
Phase 2: 废弃 StrategeFactoryFlow 中对应模块
Phase 3: 废弃 TSS 中对应模块
Phase 4: 清理 legacy/ 目录
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="3-完整迁移方案"&gt;3. 完整迁移方案&lt;/h2&gt;
&lt;h3 id="31-phase-1-稳固-saf-内核--已完成-2026-04-13"&gt;3.1 Phase 1: 稳固 SAF 内核 ✅ 已完成 (2026-04-13)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;: 补全 SAF 中缺失的关键实现，使其能够承接废弃模块&lt;/p&gt;</description></item></channel></rss>