活性筛查 — 修复 KKT MACRO 回路中的死代币权重缺陷
发布日期: 2026-08-07
模拟结果 — 未使用真实资金。以下每一项数据均由回测根据历史价格数据计算得出。未投入任何资金,也未下过任何订单。回测是在完全知晓该时段结果的前提下把策略套用于过去,且数据不包含滑点与流动性影响,但会对每次再平衡、DCA 买入和资金重新部署收取 0.1% 的模拟交易所手续费。模拟表现与过往表现不能可靠地预示未来结果。AQMath 是软件,不是投资建议。
日期: 2026-08-07
引擎: 双速 E2E — 与实盘模拟交易服务完全相同的接线(180 天 KKT 风险平价 MACRO 回路 + Aegis(v14)去杠杆防护盾)
状态: 📊 研究 — 组件设计研究,已在生产服务中实现
1. 目标
KKT 风险平价 MACRO 回路完全基于波动率与协方差进行配置。 这既是优点 — 没有叙事、没有定时器 — 也是盲区:一个市场实际上 已经死亡的代币仍会不断打印日收盘价,而它崩塌后低振幅的价格 路径看起来是低风险的。优化器可能把一个死去的代币赋予冻结 部分中的真实份额。
本研究(a)精确复现该失效模式,(b)测试候选活性筛查, (c)选定一个并在生产代码路径上验证,(d)在实盘模拟交易 服务中运行它。
一条规则框定了整个设计:冻结部分一旦冻结,永不修改。 筛查只在再优化边界上运作 — 它检查过去数据,塑造即将为下一个 窗口冻结的部分。任何已经生效的部分都完全按冻结时的样子 运行到窗口结束。
2. 复现失效模式
测试组合 C 雷区:BTC、ETH、CEL(Celsius — 自 2022 年中 破产,交易所冻结,代币在稀薄的二级市场继续交易)+ PAXG 黄金锚。 滚动前推,180 天再优化,生产数学,不改任何参数。 窗口 2020-03 → 2026-08,$1,000 起始,$100/30 天 DCA, 10 个基点手续费。
在 2025-08-24 再优化时,优化器产出了这样一个冻结部分:
| 代币 | 30 日波动率 | 冻结权重 |
|---|---|---|
| BTC | 1.72% | 31.3% |
| ETH | 4.43%(组合内最高) | 0.0% |
| CEL | 2.30% | 24.7% |
| PAXG | 0.62% | 44.0% |
机制如下:宏观优化器为每个代币配一个随其近期波动率上升而 收紧的动态权重上限 — 组合中波动最大的成员总是被完全挤出 — 然后把得到的权重重新归一化到 100%。那一天 ETH 是波动最大的 代币,于是它拿到零 — 而价格几乎不动的死代币 CEL,纯粹因为 崩塌后的图表测得的波动率低,继承了 24.7% 的冻结权重。 波动率数学中没有任何东西能看出这些收盘价背后的市场已经消失。
3. 候选筛查 — 我们测试并否决了什么
所有筛查都只使用过去数据(不超过再优化日期),并在组合 C 全部 13 次再优化上逐一运行。
| 变体 | 规则 | 结果 | 结论 |
|---|---|---|---|
| 全集剔除 | 在优化之前剔除失效代币 | 最终 $14,336,Calmar 0.50,BTC 在之后两次再优化中被压到上限 0 | ❌ 移除代币会改变最大波动上限动力学 |
| 崩塌收益 | 过去 180 天收益 < −80% | 从未触发 — 异常日 CEL 的过去收益只有 −48.5% | ❌ 错过了实际的失效 |
| 相对成交量 | ADV < 组合 ADV 中位数的 1% | 最终 $10,696,Calmar 0.13 — 也把 PAXG 归零(黄金结构性低量) | ❌ 惩罚了防御锚 |
| ADV-K2 上限归零 | 过去 180 天平均美元成交量 < 100 万美元且连续两次再优化如此 → 权重归零,幸存者重新归一化 | 异常被消除,指标改善(见下) | ✅ 选定 |
胜出的设计是一个上限归零筛查:KKT 优化器始终在完整的 组合全集上运行(上限与协方差不动);筛查随后在部分为下一个 窗口冻结之前过滤优化器的输出 — 被筛查的代币以零权重进入 新部分,幸存者重新归一化。窗口中途已经冻结的任何东西都永远 不会被触碰。持续性要求(连续两次再优化,约一年)保证一个 坏数据日永远不会把一个活着的代币归零。
4. 结果 — 组合 C 雷区
| 指标 | 无筛查(基线) | ADV-K2 活性筛查 | 买入持有 |
|---|---|---|---|
| 最终价值 | $16,163 | $17,541(+8.5%) | $21,732 |
| CAGR | 10.2% | 11.6% | 15.5% |
| 最大回撤 | 14.1% | 17.8% | 31.2% |
| Sharpe | 0.24 | 0.32 | 0.32 |
| Calmar | 0.72 | 0.65 | 0.50 |
筛查在六年中恰好触发了一次 — 正是在异常再优化时 (2025-08-24),把 CEL 的 24.7% 归零,并把部分重新归一化为 BTC 41.6% / PAXG 58.4%。
诚实的权衡: 筛查后的部分 BTC 占比更重,因此 2025-26 回调 切得更深 — 最大回撤从 14.1% 升到 17.8%,Calmar 从 0.72 降到 0.65(仍高于买入持有的 0.50)。作为交换,策略获得 +8.5% 的 最终价值和明显更高的 Sharpe,且系统性缺陷被消除。
零附带成本: 同一个筛查在两个全存续对照组合(主流币+黄金, 以及 2019-20 代组合)上运行过:在那里从未触发,结果与未筛查 基线逐位一致。
5. 为什么回测低估了真实收益
日收盘价回测定价的是波动率,不是退出风险。24.7% 的 CEL 仓位按收盘价计价,其前提假设是你能够以该价格卖出;在一个 死亡的市场里,真实成本是滑点、稀薄的订单簿,或者根本无法 退出。这种损失永远不会出现在回测指标中 — 这正是朴素的 "把优化做得更狠就行"直觉在这里失效的原因。筛查的正当性在于 运营层面;回测只表明它不造成净伤害。
6. 生产实现
该筛查已在实盘模拟交易服务中实现(liveness.py,接入两条 前瞻日志各自的宏观再优化点)。时机:它在每个再优化步骤 内部、新部分冻结之前运行 — 当前窗口的活跃部分永不被修改。 实现细节:
- 成交量数据源: 来自原始采集表的 CoinGecko
total_volumes序列(以美元计价)。清洗后价格表的成交量列不被使用 — 它混合了来自不同交易所的美元成交量与本币单位成交量。 - 规则: 过去 180 天平均美元成交量 < 100 万美元 ⇒ 不通过; 一个代币只有在连续两次再优化都不通过(K=2)后才被归零, 失败状态持久化在数据库中,跨重新部署保留。
- 处处失败放行: 窗口内成交量数据覆盖不足 90 天的代码 永不被筛查;数据库错误时冻结权重保持不动。筛查只可能减少 对死代币的敞口 — 它永远不会弄坏回路。
- 上限归零机制: 优化器完全照旧在全集上运行;只在冻结 之前调整优化器的输出(归零 + 重新归一化),每次归零都被 记录并附在冻结权重警告中。
与生产模块逐项核对:19/19 项检查通过,包括 macro_reoptimize 路径对 24.7% 异常的精确复现,以及在筛查允许冻结的部分中把它 修正为 BTC 41.6% / PAXG 58.4%。
7. 注意事项
- 研究窗口在筛查运行中使用研究级(Yahoo)成交量;生产服务 读取交易所聚合的 CoinGecko 成交量。阈值刻意设得粗 (每日 100 万美元),使两个数据源对一个死代币落在阈值哪一侧 的判断一致。
- 每日 100 万美元是一个判断:高到足以把一个市场标记为以我们 的规模无法退出,低到永远不会触碰当前实盘组合中任何正在 交易的代币。
- 筛查在再优化边界触发(约每 180 天)— 它是构成守卫,不是 日内熔断器。去杠杆防护盾仍是快速层。
- 历史研究,含模拟手续费与收盘价;此处任何内容都不构成 投资建议。
8. 结论
只看波动率的优化器对死代币有一个真实、可复现的盲区 — 而它现在有了一个外科手术式的修复。ADV-K2 上限归零筛查消除了 压力组合中 24.7% 的死代币配置,把最终价值提升 8.5%、Sharpe 从 0.24 提升到 0.32,代价是可控的 3.7 个百分点最大回撤, 在两个存续代币对照组合上逐位一致(零成本),并且正在生产 前瞻日志中运行。
所有数据均为在历史日收盘价上含 10 个基点手续费的模拟, $1,000 起始,$100/30 天 DCA。过往表现不保证未来结果。 这是研究内容,不是投资建议。