Binance USDT-M 永续 · 背景 = long_straddle_okx 生产低波指标组
· 入场 = 30 日 Donchian 通道价 stop 单 · 2023-01-01 → 2026-09-03 · 生成于 2026-09-04
背景(低波 regime gate):直接 import 生产代码
long_straddle_okx/release/breakout/ 的 BreakoutSignalManager +
mined_indicators,参数原样取自生产 config/breakout.yaml —— 11 个指标
(5 个价格压缩类 + 6 个挖矿类)、combine=or、entry_pct=0.05、
exit_pct=0.15、extend_days=7。原料与实盘同口径:UTC0 已结束日线 BTC
OHLCV + Deribit DVOL + Binance ext 面板(funding/basis/OI/LSR/taker/RV)+ BTC OI。
全样本背景覆盖率 66.5%。
入场:背景生效日,对 universe 内每个币算 30 日 Donchian
(DH=max(high[t-30..t-1])、DL=min(low[t-30..t-1]));
当日 high>DH 以 max(DH, open) 做多,
low<DL 以 min(DL, open) 做空(stop 单成交价)。
出场:固定持有 5 / 10 / 20 天后收盘平仓。
仓位:等名义权重,20 个仓位槽,开仓名义 = 当时权益 / 20;信号多于空闲槽按 30 日 ADV
降序优先(全样本因槽位占满而放弃 2,961 个信号);同一币不加仓;当日同时触发多空则跳过(全样本仅 10 次)。
费用:单边 10bp(手续费 + 滑点),进出各一次;持仓期间每日逐币扣真实 funding。
Universe:季度 verified 名单 + 退市过滤,另加当日 1m bar ≥ 1400、30 日 ADV ≥ $3M、
上市 ≥ 60 天。日均可交易 91 个币,日均触发多头 6.4 / 空头 6.4 个。
shift(1)。背景尤其关键 —— 生产是 UTC 8:00 用已完成日线更新背景、当天日内才查突破,
所以回测里 T 日的突破必须由 T−1 日收盘算出的背景放行。
唯一未 shift 的是当日数据完整性过滤(n_bars ≥ 1400、OHLC 非空)——
它只用于剔除采集缺口日、不参与择向,影响可忽略。主配置的全部正收益来自 2023 年(+59%),2024/2025/2026 分别 −2% / −1% / −25%。 而 2023 恰恰是背景最不可信的一年:DVOL 与 ext 面板都从 2023-01-01 起, 滚动分位(1y/2y/3y 窗口)在 2023 年只有几个月的基准样本。
| 配置 | 终值 | CAGR | Sharpe | 最大回撤 |
|---|---|---|---|---|
| btc_hold | 1.837 | +25.5% | 0.71 | -53.0% |
| H20_vote3_S20_F10_long | 1.623 | +19.9% | 0.66 | -30.6% |
| H20_vote2_S20_F10_long | 1.299 | +10.3% | 0.44 | -35.9% |
| H20_or_S20_F10_short | 0.803 | -7.9% | 0.17 | -49.9% |
| H20_vote3_S20_F10 | 0.960 | -1.5% | 0.16 | -39.5% |
| H10_or_S40_F10 | 0.932 | -2.6% | 0.15 | -42.8% |
| H10_or_S40_F10_long | 0.922 | -3.0% | 0.08 | -42.9% |
| H10_vote3_S20_F10_long | 0.913 | -3.3% | 0.07 | -39.5% |
| H10_or_S20_F5 | 0.776 | -9.1% | 0.05 | -44.6% |
| H10_or_S20_F5_long | 0.808 | -7.7% | 0.04 | -55.8% |
| H10_or_S10_F10 | 0.695 | -12.7% | 0.03 | -52.8% |
| H10_or_S20_F10_long | 0.774 | -9.2% | 0.00 | -57.0% |
| H10_or_S20_F10 | 0.727 | -11.2% | -0.00 | -46.5% |
| H20_none_S20_F10_short | 0.551 | -20.0% | -0.01 | -65.7% |
2024-01-01 起 BTC 买入持有 1.837x(CAGR 25.5%,Sharpe 0.72)—— 连表现最好的策略配置也跑输基准。
这是本次最稳健的一条发现:同一持有期下,背景越严表现越好
(H10 多空:无背景 CAGR −23.6% → OR +4.0%;H20 多空:−16.8% → vote≥3 +23.0%),
在多空与仅多两组、三个持有期上方向一致。说明 long_straddle_okx
那套低波指标确实携带了"接下来会有方向性行情"的信息。
但它是一个择时过滤器,不能凭空创造 edge —— 被它放行的突破信号本身是无效的。
生产 config/breakout.yaml 启用了 11 个指标,OR 组合。
5 个价格压缩类(迟滞模式:1y/2y/3y 任一窗口跌进 <5% 分位则进入,
所有窗口回到 >15% 才退出,再 AND anomaly、延续 7 天)——
atr_dvol(ATR(30)/Close 与 DVOL 联合低位)、tvi(多周期均线发散)、
bb_width_20d(布林带宽)、bbw20_x_dvol(带宽×DVOL)、
keltner_w_20d(Keltner 通道宽度)。
6 个挖矿类(分位模式:单窗口 365 天滚动分位、shift(1)、无迟滞,各有自己的
tail / pct / confirm / extend)—— 见下表。其中 4 个需要 Binance ext 面板
(funding/basis/OI/LSR/taker/RV),这也是回测只能从 2023-01-01 起的原因。
| 指标 | 家族 | 激活率 | 独家激活天数 | 去掉它的 OR 覆盖率 | 覆盖率损失 |
|---|---|---|---|---|---|
| quiet_open_close_magnet_oi_crowding | 挖矿 | 23.2% | 31 | 64.2% | +2.3% |
| atr_dvol | 价格压缩 | 21.8% | 13 | 65.5% | +1.0% |
| calm_taker_inventory_spring | 挖矿 | 19.2% | 71 | 61.2% | +5.3% |
| perp_spot_basis_kink_under_quiet_range | 挖矿 | 18.1% | 62 | 61.8% | +4.6% |
| usd_oi_shadow_convexity | 挖矿 | 16.0% | 42 | 63.3% | +3.1% |
| settlement_pin_carry_evaporation | 挖矿 | 15.1% | 47 | 63.0% | +3.5% |
| keltner_w_20d | 价格压缩 | 14.3% | 0 | 66.5% | +0.0% |
| oi_drop_rate | 挖矿 | 13.0% | 31 | 64.2% | +2.3% |
| bbw20_x_dvol | 价格压缩 | 8.6% | 0 | 66.5% | +0.0% |
| tvi | 价格压缩 | 6.7% | 1 | 66.4% | +0.1% |
| bb_width_20d | 价格压缩 | 5.7% | 0 | 66.5% | +0.0% |
OR 总覆盖率 66.5%
(892/1342 天)。逐指标看有两个发现:
(a)11 个里实际只有 7 个在起作用。keltner_w_20d、
bbw20_x_dvol、bb_width_20d 的独家激活天数为 0、边际覆盖率贡献恰好 0.0%
(tvi 也只有 1 天 / +0.1%)——它们激活的日子被 atr_dvol 完全覆盖。
(b)撑起覆盖率的是挖矿类。4 个 needs_ext 的挖矿指标合计独家激活 222 天,
边际贡献 +3.1% ~ +5.3%,远高于价格类。也就是说这个"低波背景"实质由
OI / funding / basis / taker 这些衍生品结构信号驱动,而不是由价格波动压缩驱动。
(c)但要小心 (b) 的成色 —— 看图上两种截然不同的形态。
带 confirm=anomaly + extend_days=7 的 7 个指标
(quiet_open_close_magnet / atr_dvol / oi_drop_rate 和
4 个价格类)呈现连续的宽色块,是真正的"区制";而 4 个
confirm=none 的挖矿指标(calm_taker_inventory_spring /
perp_spot_basis_kink / usd_oi_shadow_convexity /
settlement_pin_carry_evaporation)是密集的单日细线 ——
它们不 AND anomaly、也不延续,就是原始的日度分位命中。
它们"独家激活天数"高,恰恰是因为这些孤立单日没人覆盖得到,
而不是因为它们识别出了别人看不见的区制。把这类 1 天信号当成"背景"来 gate 一个
持有 10–20 天的仓位,本身就是口径错配。
重叠度证实了上面的冗余:价格压缩家族内部两两 Jaccard 最高
0.56,
(atr_dvol↔keltner_w_20d 0.56、
bbw20_x_dvol↔bb_width_20d 0.39、
keltner_w_20d↔bbw20_x_dvol 0.30 —— 都在量同一个东西),
而挖矿类之间普遍 ≤0.27。跨家族里最高的
quiet_open_close_magnet↔atr_dvol 0.34 有一部分是人为的:
两者都要 AND 同一个 anomaly 再延续 7 天,这一步机械地让它们同步。
把 11 个指标 OR 起来得到 66.5% 的覆盖率,
对一个"过滤器"来说太松了 —— 这正是本报告另外测 vote≥2(44.3%)和
vote≥3(26.6%)两档的原因,也是第 3 节那条"背景越严越好"单调性的来源。
上面的净值受组合构建(20 个槽位、ADV 优先、名义权重)影响。剥掉这一层, 直接看每个突破信号等权买 1 份、持有 H 天的净收益(含费与 funding), t 统计对按日聚合后的序列做 Newey–West(滞后 = 持有天数),修正重叠持有期造成的自相关:
(a)没有一个组合显著。24 个格子里最大 |t| = 1.91
(多头 · 持有 20 天 · vote≥3),连单次检验的 2.0 门槛都没到;
考虑到这是 24 次检验里挑出的最大值,Bonferroni 校正后需要 |t| ≈ 2.9 才算显著,差得更远。
(b)多空严重不对称。多头一侧平均净收益基本为正(持有 20 天 + OR 背景:+2.95%/笔),
空头一侧系统性为负 —— 跌破 30 日低点后 alt 普遍反抽,做空突破是亏钱的。
在净值层面也一致:所有 _short 配置无一盈利。
(c)多头一侧存在方向一致的单调结构。沿持有期(5→10→20 天)和背景严格度
(无→OR→vote≥2→vote≥3)两个方向,t 与平均收益都单调上升。这不像纯噪声,
但强度不足以支撑交易 —— 结论是「若要继续,该往长持有 + 严背景 + 只做多的方向调」,
而不是「现在这套能上」。
44 个配置里最好的是 H20_vote3_S20_F10_long
(2.61x,CAGR 29.9%,Sharpe 0.89)。但它对应的原始信号 t 统计只有
1.91,
且盈利极度集中:前 5 笔贡献 47% 的 PnL,剔除前 20 笔后整体转负。
样本内挑出的最优点,不是可交易的结论。
| 配置 | 方向 | 背景 | 持有天 | 槽位 | 单边bp | 终值 | CAGR | Sharpe | 最大回撤 | 笔数 | 胜率 | 盈亏比 | 多头均收益 | 空头均收益 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| H5_none_S20_F10 | 多空 | 无 | 5 | 20 | 10 | 0.201 | -35.4% | -0.65 | -86.7% | 3510 | 44.5% | 1.12 | +0.01% | -1.17% |
| H5_or_S20_F10 | 多空 | OR(生产) | 5 | 20 | 10 | 0.456 | -19.3% | -0.25 | -70.6% | 2786 | 46.7% | 1.11 | +0.03% | -0.34% |
| H5_vote2_S20_F10 | 多空 | vote≥2 | 5 | 20 | 10 | 0.312 | -27.2% | -0.62 | -79.3% | 1993 | 45.6% | 1.03 | +0.31% | -2.47% |
| H5_vote3_S20_F10 | 多空 | vote≥3 | 5 | 20 | 10 | 0.473 | -18.5% | -0.44 | -77.1% | 1325 | 44.8% | 1.08 | +0.40% | -2.46% |
| H10_none_S20_F10 | 多空 | 无 | 10 | 20 | 10 | 0.373 | -23.6% | -0.31 | -73.7% | 2167 | 46.1% | 1.11 | +0.36% | -1.31% |
| H10_or_S20_F10 | 多空 | OR(生产) | 10 | 20 | 10 | 1.156 | 4.0% | 0.32 | -46.5% | 1812 | 47.4% | 1.21 | +1.42% | -0.52% |
| H10_vote2_S20_F10 | 多空 | vote≥2 | 10 | 20 | 10 | 0.453 | -19.4% | -0.32 | -71.3% | 1360 | 44.6% | 1.16 | +0.53% | -2.01% |
| H10_vote3_S20_F10 | 多空 | vote≥3 | 10 | 20 | 10 | 0.566 | -14.4% | -0.25 | -72.1% | 935 | 45.1% | 1.12 | +0.83% | -2.73% |
| H20_none_S20_F10 | 多空 | 无 | 20 | 20 | 10 | 0.510 | -16.8% | -0.16 | -66.6% | 1226 | 45.8% | 1.14 | +0.68% | -1.56% |
| H20_or_S20_F10 | 多空 | OR(生产) | 20 | 20 | 10 | 0.981 | -0.5% | 0.23 | -64.0% | 1093 | 48.0% | 1.22 | +2.96% | -0.99% |
| H20_vote2_S20_F10 | 多空 | vote≥2 | 20 | 20 | 10 | 0.799 | -5.9% | 0.12 | -74.8% | 872 | 47.1% | 1.29 | +4.71% | -3.19% |
| H20_vote3_S20_F10 | 多空 | vote≥3 | 20 | 20 | 10 | 2.140 | 23.0% | 0.74 | -41.4% | 642 | 52.3% | 1.33 | +6.48% | -0.91% |
| H5_none_S20_F10_long | 仅多 | 无 | 5 | 20 | 10 | 0.832 | -4.9% | 0.08 | -62.6% | 2123 | 44.5% | 1.30 | +0.24% | — |
| H5_or_S20_F10_long | 仅多 | OR(生产) | 5 | 20 | 10 | 0.794 | -6.1% | 0.02 | -58.3% | 1751 | 45.1% | 1.26 | +0.20% | — |
| H5_vote2_S20_F10_long | 仅多 | vote≥2 | 5 | 20 | 10 | 0.955 | -1.3% | 0.12 | -50.3% | 1314 | 46.8% | 1.25 | +0.56% | — |
| H5_vote3_S20_F10_long | 仅多 | vote≥3 | 5 | 20 | 10 | 1.162 | 4.2% | 0.29 | -38.2% | 881 | 48.2% | 1.24 | +0.79% | — |
| H10_none_S20_F10_long | 仅多 | 无 | 10 | 20 | 10 | 1.051 | 1.4% | 0.26 | -64.9% | 1443 | 43.9% | 1.41 | +0.72% | — |
| H10_or_S20_F10_long | 仅多 | OR(生产) | 10 | 20 | 10 | 1.354 | 8.6% | 0.41 | -57.0% | 1217 | 44.3% | 1.47 | +1.11% | — |
| H10_vote2_S20_F10_long | 仅多 | vote≥2 | 10 | 20 | 10 | 1.200 | 5.1% | 0.32 | -55.5% | 936 | 45.5% | 1.45 | +1.51% | — |
| H10_vote3_S20_F10_long | 仅多 | vote≥3 | 10 | 20 | 10 | 1.173 | 4.4% | 0.30 | -39.5% | 663 | 44.5% | 1.43 | +1.02% | — |
| H20_none_S20_F10_long | 仅多 | 无 | 20 | 20 | 10 | 0.605 | -12.8% | 0.01 | -77.3% | 930 | 42.3% | 1.52 | +1.14% | — |
| H20_or_S20_F10_long | 仅多 | OR(生产) | 20 | 20 | 10 | 1.150 | 3.9% | 0.33 | -57.8% | 811 | 43.0% | 1.64 | +2.23% | — |
| H20_vote2_S20_F10_long | 仅多 | vote≥2 | 20 | 20 | 10 | 2.232 | 24.5% | 0.71 | -35.9% | 646 | 46.1% | 1.75 | +4.30% | — |
| H20_vote3_S20_F10_long | 仅多 | vote≥3 | 20 | 20 | 10 | 2.612 | 29.9% | 0.89 | -30.6% | 480 | 47.9% | 1.83 | +5.15% | — |
| H5_none_S20_F10_short | 仅空 | 无 | 5 | 20 | 10 | 0.217 | -34.0% | -0.70 | -80.2% | 1945 | 44.3% | 0.98 | — | -1.11% |
| H5_or_S20_F10_short | 仅空 | OR(生产) | 5 | 20 | 10 | 0.505 | -17.0% | -0.29 | -54.5% | 1453 | 48.6% | 0.91 | — | -0.71% |
| H5_vote2_S20_F10_short | 仅空 | vote≥2 | 5 | 20 | 10 | 0.388 | -22.7% | -0.67 | -64.4% | 945 | 45.8% | 0.81 | — | -1.69% |
| H5_vote3_S20_F10_short | 仅空 | vote≥3 | 5 | 20 | 10 | 0.475 | -18.4% | -0.55 | -64.4% | 602 | 41.4% | 0.90 | — | -1.98% |
| H10_none_S20_F10_short | 仅空 | 无 | 10 | 20 | 10 | 0.425 | -20.8% | -0.22 | -62.1% | 1337 | 51.2% | 0.86 | — | -0.58% |
| H10_or_S20_F10_short | 仅空 | OR(生产) | 10 | 20 | 10 | 0.606 | -12.8% | -0.09 | -49.8% | 1064 | 53.0% | 0.84 | — | -0.28% |
| H10_vote2_S20_F10_short | 仅空 | vote≥2 | 10 | 20 | 10 | 0.650 | -11.1% | -0.14 | -38.5% | 730 | 52.3% | 0.79 | — | -0.88% |
| H10_vote3_S20_F10_short | 仅空 | vote≥3 | 10 | 20 | 10 | 0.818 | -5.3% | -0.02 | -40.8% | 482 | 53.1% | 0.84 | — | -0.26% |
| H20_none_S20_F10_short | 仅空 | 无 | 20 | 20 | 10 | 0.311 | -27.2% | -0.24 | -79.2% | 894 | 51.8% | 0.81 | — | -1.15% |
| H20_or_S20_F10_short | 仅空 | OR(生产) | 20 | 20 | 10 | 0.617 | -12.3% | 0.04 | -66.6% | 754 | 55.0% | 0.83 | — | +0.11% |
| H20_vote2_S20_F10_short | 仅空 | vote≥2 | 20 | 20 | 10 | 0.469 | -18.6% | -0.21 | -59.1% | 537 | 54.9% | 0.69 | — | -1.65% |
| H20_vote3_S20_F10_short | 仅空 | vote≥3 | 20 | 20 | 10 | 0.832 | -4.9% | 0.08 | -54.9% | 375 | 58.9% | 0.74 | — | +0.51% |
| H10_or_S10_F10 | 多空 | OR(生产) | 10 | 10 | 10 | 0.939 | -1.7% | 0.24 | -52.9% | 987 | 44.1% | 1.30 | +0.71% | -0.69% |
| H10_or_S10_F10_long | 仅多 | OR(生产) | 10 | 10 | 10 | 0.531 | -15.8% | -0.06 | -76.1% | 758 | 40.6% | 1.45 | -0.05% | — |
| H10_or_S40_F10 | 多空 | OR(生产) | 10 | 40 | 10 | 1.357 | 8.7% | 0.41 | -42.8% | 3074 | 48.5% | 1.21 | +1.25% | +0.38% |
| H10_or_S40_F10_long | 仅多 | OR(生产) | 10 | 40 | 10 | 1.330 | 8.1% | 0.40 | -42.9% | 1769 | 44.4% | 1.47 | +1.14% | — |
| H10_or_S20_F5 | 多空 | OR(生产) | 10 | 20 | 5 | 1.266 | 6.6% | 0.37 | -44.6% | 1812 | 47.6% | 1.22 | +1.52% | -0.42% |
| H10_or_S20_F5_long | 仅多 | OR(生产) | 10 | 20 | 5 | 1.438 | 10.4% | 0.44 | -55.8% | 1217 | 44.5% | 1.47 | +1.21% | — |
| H10_or_S20_F20 | 多空 | OR(生产) | 10 | 20 | 20 | 0.965 | -1.0% | 0.22 | -50.2% | 1812 | 46.8% | 1.20 | +1.22% | -0.72% |
| H10_or_S20_F20_long | 仅多 | OR(生产) | 10 | 20 | 20 | 1.200 | 5.1% | 0.33 | -59.2% | 1217 | 43.9% | 1.45 | +0.91% | — |
| 方向 | 背景 | 持有天 | 有信号天数 | NW 滞后 | 每笔平均净收益 | t 统计 | 日胜率 |
|---|---|---|---|---|---|---|---|
| 多头 | 无 | 5 | 1031 | 5 | -0.74% | -1.17 | 46.0% |
| 多头 | 无 | 10 | 1031 | 10 | +0.21% | +0.18 | 45.2% |
| 多头 | 无 | 20 | 1031 | 20 | +1.64% | +0.76 | 46.2% |
| 空头 | 无 | 5 | 721 | 5 | -0.57% | -0.75 | 48.5% |
| 空头 | 无 | 10 | 721 | 10 | +0.00% | +0.00 | 49.8% |
| 空头 | 无 | 20 | 721 | 20 | +0.19% | +0.09 | 55.6% |
| 多头 | OR(生产) | 5 | 726 | 5 | -0.52% | -0.69 | 47.1% |
| 多头 | OR(生产) | 10 | 726 | 10 | +0.80% | +0.59 | 46.8% |
| 多头 | OR(生产) | 20 | 726 | 20 | +2.95% | +1.21 | 47.4% |
| 空头 | OR(生产) | 5 | 466 | 5 | -0.29% | -0.29 | 48.9% |
| 空头 | OR(生产) | 10 | 466 | 10 | -0.15% | -0.11 | 48.9% |
| 空头 | OR(生产) | 20 | 466 | 20 | +0.31% | +0.13 | 55.2% |
| 多头 | vote≥2 | 5 | 489 | 5 | -0.01% | -0.01 | 47.9% |
| 多头 | vote≥2 | 10 | 489 | 10 | +1.51% | +0.89 | 46.2% |
| 多头 | vote≥2 | 20 | 489 | 20 | +4.58% | +1.59 | 49.3% |
| 空头 | vote≥2 | 5 | 299 | 5 | -0.88% | -0.75 | 46.2% |
| 空头 | vote≥2 | 10 | 299 | 10 | -0.29% | -0.19 | 47.2% |
| 空头 | vote≥2 | 20 | 299 | 20 | +0.70% | +0.26 | 57.9% |
| 多头 | vote≥3 | 5 | 295 | 5 | +0.25% | +0.20 | 45.1% |
| 多头 | vote≥3 | 10 | 295 | 10 | +2.53% | +1.06 | 44.7% |
| 多头 | vote≥3 | 20 | 295 | 20 | +6.58% | +1.91 | 49.5% |
| 空头 | vote≥3 | 5 | 184 | 5 | -1.04% | -0.78 | 43.5% |
| 空头 | vote≥3 | 10 | 184 | 10 | -0.93% | -0.59 | 47.3% |
| 空头 | vote≥3 | 20 | 184 | 20 | -0.25% | -0.07 | 58.2% |
以下四组是主结果出来之后的回访,产出脚本 followups.py。
其中 6.3 和 6.4 改变了对主结果成因的理解,请连同第 4 节一起读。
两者都是逐日进净值路径的,不是事后在交易表里补减。把它们关掉重跑(主配置 H10 · OR · 多空):
| 口径 | 终值 | Sharpe | 最大回撤 |
|---|---|---|---|
| 含费 + 含 funding(基准) | 1.156 | 0.32 | -46.5% |
| 去掉手续费 | 1.385 | 0.42 | -43.2% |
| 去掉 funding | 1.387 | 0.43 | -42.3% |
| 两者都去掉(毛收益) | 1.662 | 0.53 | -41.0% |
funding 的拖累(−0.231)和手续费(−0.229)几乎一样大,3.7 年合计吃掉 0.51 的终值。
即便完全免费免 funding,毛收益也只有 1.662x,仍远低于同期 BTC 的
4.89x。
funding 用的是逐币逐日真实值(funding_sum,当日全部结算次数求和),
99.94% 的交易带非零 funding。两边都在付:多头 −0.146%/笔、空头 −0.272%/笔 ——
空头的中位 funding 其实是收钱的,均值被一批深度负 funding 的日子拽负,
正是那些触发"跌破 30 日低点"的踩踏日。空头一边被反抽、一边付高额 funding。
| 持有天 | 笔数 | 终值 | CAGR | Sharpe | 最大回撤 | 每笔均收益 | 盈亏比 | 终值(24起) | Sharpe(24起) | 毛Sharpe(零费) |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1518 | 1.194 | +5.0% | 0.34 | -25.4% | +0.33% | 1.34 | 1.090 | 0.26 | 0.56 |
| 2 | 1215 | 1.271 | +6.7% | 0.41 | -24.8% | +0.59% | 1.30 | 1.048 | 0.19 | 0.57 |
| 3 | 1045 | 0.967 | -0.9% | 0.07 | -39.0% | +0.23% | 1.23 | 0.904 | -0.06 | 0.22 |
| 5 | 881 | 1.162 | +4.2% | 0.29 | -38.2% | +0.79% | 1.24 | 0.810 | -0.19 | 0.41 |
| 7 | 786 | 1.005 | +0.1% | 0.14 | -46.8% | +0.52% | 1.38 | 0.727 | -0.31 | 0.25 |
| 10 | 663 | 1.173 | +4.4% | 0.30 | -39.5% | +1.02% | 1.43 | 0.913 | 0.07 | 0.38 |
| 15 | 580 | 1.595 | +13.6% | 0.53 | -42.4% | +2.28% | 1.61 | 0.987 | 0.18 | 0.59 |
| 20 | 480 | 2.612 | +29.9% | 0.89 | -30.6% | +5.15% | 1.83 | 1.623 | 0.66 | 0.94 |
| 25 | 431 | 2.137 | +23.0% | 0.71 | -39.7% | +4.48% | 1.64 | 1.299 | 0.45 | 0.76 |
| 30 | 398 | 1.728 | +16.1% | 0.57 | -41.3% | +5.74% | 1.94 | 0.969 | 0.19 | 0.61 |
| 40 | 347 | 2.105 | +22.5% | 0.68 | -46.3% | +9.66% | 2.04 | 1.204 | 0.38 | 0.72 |
不是费用问题。把手续费和 funding 全部归零后曲线形状完全没变
(毛 Sharpe:H5 0.41 / H10 0.38 / H20 0.94),是信号在短周期内没兑现 ——
每笔均收益从 H1 的 +0.33% 单调爬到 H40 的 +9.66%。
剔除 2023 warmup 年后,短持有是确定亏钱的:H1–H15 在 2024 起的子样本里全部 ≤0.99x
(H5/H7 只有 0.81 / 0.73)。
但 H20 越看越像样本内尖峰:相邻档位 H15 = 0.53 → H20 = 0.89 → H25 = 0.71 → H30 = 0.57。
真实效应应该在持有期上平滑,孤立尖峰是过拟合特征。而且这轮又多测了 11 个持有期,
多重检验比第 4 节更重。
BTCDOMUSDT 是 BTC 占有率指数、USDCUSDT 是稳定币对,都不适合做方向性突破,本报告已剔除。)名单排除了大量高流动性标的 ——
如 2026-06-01 当天的 LAB(ADV $684M)、BSB($267M)、1000PEPE($235M)都不在名单里。| 币种池 | 配置 | 笔数 | 终值 | Sharpe | 最大回撤 | 终值(24起) | Sharpe(24起) |
|---|---|---|---|---|---|---|---|
| verified 名单 | H10_or_both | 1812 | 1.156 | 0.32 | -46.5% | 0.727 | -0.00 |
| verified 名单 | H10_or_long | 1217 | 1.354 | 0.41 | -57.0% | 0.774 | 0.00 |
| verified 名单 | H20_vote3_long | 480 | 2.612 | 0.89 | -30.6% | 1.623 | 0.66 |
| verified 名单 | H20_vote3_both | 642 | 2.140 | 0.74 | -41.4% | 0.960 | 0.16 |
| 全币种 | H10_or_both | 2025 | 1.045 | 0.30 | -65.5% | 0.807 | 0.15 |
| 全币种 | H10_or_long | 1676 | 0.815 | 0.20 | -82.7% | 0.466 | -0.15 |
| 全币种 | H20_vote3_long | 615 | 4.117 | 1.04 | -38.4% | 2.556 | 0.94 |
| 全币种 | H20_vote3_both | 729 | 2.548 | 0.81 | -39.6% | 1.122 | 0.32 |
去掉名单、只留数据质量 + 流动性 + 退市过滤(日均 239 币, 区间内 536 个)后方向不一致:H20·vote≥3·仅多 变好(2.61x → 4.12x,Sharpe 0.89 → 1.04), H10·OR·仅多 直接崩掉(1.35x → 0.81x,回撤 −82.7%)。总体结论不变 —— 原始信号本来就不显著,换池子只是把同一个 cherry-pick 配置又换了个维度试。
| 持有天 | 方向 | 仓位口径 | 终值 | Sharpe | 最大回撤 | 持仓数中位 | 持仓数最大 | 杠杆中位 | 杠杆最大 | 终值(24起) |
|---|---|---|---|---|---|---|---|---|---|---|
| 10 | 仅多 | 20槽(基准) | 1.173 | 0.30 | -39.5% | 1 | 20 | 0.05x | 1.19x | 0.913 |
| 10 | 仅多 | 不限仓 · 每笔权益/20 | 1.527 | 0.50 | -56.2% | 1 | 85 | 0.05x | 5.31x | 0.773 |
| 10 | 仅多 | 不限仓 · 当日等权 1/N | 0.201 | -0.40 | -91.4% | 1 | 85 | 0.96x | 1.32x | 0.166 |
| 10 | 多空 | 20槽(基准) | 0.566 | -0.25 | -72.1% | 3 | 20 | 0.15x | 1.49x | 0.437 |
| 10 | 多空 | 不限仓 · 每笔权益/20 | 2.393 | 0.70 | -66.9% | 6 | 107 | 0.30x | 5.31x | 1.178 |
| 10 | 多空 | 不限仓 · 当日等权 1/N | 0.445 | -0.21 | -81.0% | 6 | 107 | 0.98x | 1.24x | 0.237 |
| 20 | 仅多 | 20槽(基准) | 2.612 | 0.89 | -30.6% | 4 | 20 | 0.20x | 1.20x | 1.623 |
| 20 | 仅多 | 不限仓 · 每笔权益/20 | 3.223 | 0.79 | -78.5% | 5 | 87 | 0.25x | 5.30x | 1.173 |
| 20 | 仅多 | 不限仓 · 当日等权 1/N | 0.457 | 0.01 | -86.3% | 5 | 87 | 0.99x | 1.29x | 0.347 |
| 20 | 多空 | 20槽(基准) | 2.140 | 0.74 | -41.4% | 10 | 20 | 0.50x | 1.42x | 0.960 |
| 20 | 多空 | 不限仓 · 每笔权益/20 | 3.537 | 0.85 | -84.5% | 16 | 107 | 0.84x | 15.11x | 0.696 |
| 20 | 多空 | 不限仓 · 当日等权 1/N | 0.819 | 0.18 | -75.7% | 16 | 107 | 0.99x | 1.24x | 0.345 |
(a)"不限仓 · 每笔权益/20" 终值更高,但那是杠杆买来的。H20·多空到 3.54x,
代价是最大杠杆 15.1x、回撤 −84.5%,而且 2024 起只有 0.70x。杠杆中位仅 0.25–0.84x ——
大部分时间几乎空仓,收益全堆在少数同时触发 80–107 个币的满仓日。
(b)"不限仓 · 当日等权 1/N"(恒 1x 杠杆,最干净的信号读数)全线亏光。
H10·仅多 0.20x(−91.4% 回撤)、H20·仅多 0.46x、H20·多空 0.82x,Sharpe 全部 ≤0.18。
(c)机制:20 槽 + ADV 降序排序 = 一个把成交标的流动性翻倍的筛选器。
vote≥3 日的全部多头信号中位 ADV $44M(25 分位
$17M),而 20 槽实际成交的 480 笔中位 ADV
$87M(25 分位 $31M);
按当日 ADV 排名,全部信号中位第 11 名,20 槽只吃到中位第 6 名。
一旦把当天所有信号等权吃下去(含大量 $17M ADV 的长尾小币),
立刻崩盘。
规则。① 阶梯减半 —— 价格每朝有利方向翻一倍(多头 2× / 4× / 8× 入场价;
空头对称地每腰斩一次)就减半一次仓位。② 50% 回撤全平 —— 仓位价值
v = 1 + (close/entry − 1)×side 从其峰值回撤 50% 时当日收盘全平。
多空同一口径。所有判定都在收盘、且峰值只用到昨日,无前视。
(先前测过的 3×ATR(10) 右侧跟踪不在此列 —— ATR(10) 中位是价格的 8.07%,
3×ATR 等于 24% 的容忍度,341 次触发里 96% 是亏损出场,实为止损而非止盈,
且比持满 20 天平均多亏 3.8%。)
| 持有天 | 背景 | 方向 | 出场规则 | 笔数 | 均持有 | 减半次数 | 回撤平仓 | 终值 | Sharpe | 最大回撤 | 终值(24起) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 10 | or | long | 固定持有(基准) | 1676 | 10.0 | 0 | 0 | 0.815 | 0.20 | -82.7% | 0.466 |
| 10 | or | long | 阶梯减半 2×/4×/8× | 1676 | 10.0 | 51 | 0 | 0.842 | 0.21 | -83.0% | 0.482 |
| 10 | or | long | 50% 回撤全平 | 167 | 155.8 | 0 | 147 | 3.248 | 0.91 | -48.6% | 1.503 |
| 10 | or | long | 阶梯减半 + 50% 回撤 | 167 | 155.8 | 85 | 147 | 3.138 | 0.95 | -44.6% | 1.519 |
| 20 | vote3 | long | 固定持有(基准) | 615 | 19.8 | 0 | 0 | 4.117 | 1.04 | -38.4% | 2.556 |
| 20 | vote3 | long | 阶梯减半 2×/4×/8× | 615 | 19.8 | 31 | 0 | 3.591 | 0.97 | -38.4% | 2.290 |
| 20 | vote3 | long | 50% 回撤全平 | 146 | 168.5 | 0 | 126 | 2.823 | 0.82 | -54.4% | 1.492 |
| 20 | vote3 | long | 阶梯减半 + 50% 回撤 | 146 | 168.5 | 71 | 126 | 2.482 | 0.79 | -50.6% | 1.319 |
| 20 | vote3 | both | 固定持有(基准) | 729 | 19.8 | 0 | 0 | 2.548 | 0.81 | -39.6% | 1.122 |
| 20 | vote3 | both | 阶梯减半 2×/4×/8× | 729 | 19.8 | 21 | 0 | 2.318 | 0.75 | -40.2% | 1.049 |
| 20 | vote3 | both | 50% 回撤全平 | 123 | 205.8 | 0 | 103 | 0.918 | 0.12 | -50.6% | 0.597 |
| 20 | vote3 | both | 阶梯减半 + 50% 回撤 | 123 | 205.8 | 62 | 103 | 0.975 | 0.13 | -43.3% | 0.652 |
| 10 | or | both | 固定持有(基准) | 2025 | 10.0 | 0 | 0 | 1.045 | 0.30 | -65.5% | 0.807 |
| 10 | or | both | 阶梯减半 2×/4×/8× | 2025 | 10.0 | 49 | 0 | 0.915 | 0.23 | -65.4% | 0.705 |
| 10 | or | both | 50% 回撤全平 | 119 | 221.8 | 0 | 99 | 0.893 | 0.10 | -49.8% | 0.598 |
| 10 | or | both | 阶梯减半 + 50% 回撤 | 119 | 221.8 | 74 | 99 | 0.880 | 0.00 | -45.9% | 0.596 |
结果是分裂的。对短持有配置 H10·OR·仅多 是大幅改善:
0.815x → 3.138x,Sharpe 0.20 → 0.95,最大回撤 −82.7% → −44.6%。
但对原本最好的 H20·vote≥3·仅多(4.117x)是损害(→ 2.482x),
对两个多空配置也是损害。阶梯减半单独看在 4 个配置里 3 个变差 ——
它砍的正是贡献绝大部分 PnL 的肥尾。
而且那个"改善"已经不是突破策略了:167 笔交易、均持有 156 天(中位 93 天)、
最长 1127 天,槽位占用 19.4/20(几乎永远满仓)。它实质是「买入做 30 日新高的山寨,
一直拿到跌 50% 才换」。
上面所有变体都保留了原来的背景(gate_series(bg, ·, 'or'),
生产 OR 口径),对照组也一样。但长持有把它架空了:
背景 OR 全样本放行 891 / 1342 天,
而实际发生开仓的只有 112 天 —— 其余 779 天(87%)因槽位占满进不去仓。
真正决定"哪天能开仓"的是槽位什么时候空出来,不是背景。
| 出场规则 | 背景 | 笔数 | 开仓日数 | 均持有 | 终值 | Sharpe | 最大回撤 | 终值(24起) |
|---|---|---|---|---|---|---|---|---|
| 50%回撤出场 | none | 172 | 129 | 152.5 | 2.063 | 0.67 | -47.3% | 0.976 |
| 固定持有10天 | none | 1996 | 971 | 10.0 | 0.636 | 0.14 | -77.2% | 0.423 |
| 50%回撤出场 | or | 167 | 112 | 155.8 | 3.138 | 0.95 | -44.6% | 1.519 |
| 固定持有10天 | or | 1676 | 528 | 10.0 | 0.815 | 0.20 | -82.7% | 0.466 |
| 50%回撤出场 | vote2 | 173 | 94 | 147.0 | 1.930 | 0.62 | -53.3% | 1.003 |
| 固定持有10天 | vote2 | 1277 | 328 | 10.0 | 0.909 | 0.22 | -61.6% | 0.560 |
| 50%回撤出场 | vote3 | 146 | 61 | 168.5 | 2.482 | 0.79 | -50.6% | 1.319 |
| 固定持有10天 | vote3 | 891 | 189 | 10.0 | 0.829 | 0.08 | -58.9% | 0.685 |
无背景和 OR 背景的笔数几乎一样(172 vs 167) —— 背景根本没在过滤交易,它只是让那 167 笔落在不同的日子、因而选中不同的币。 2.063 → 3.138 的差距不是"背景滤掉了坏交易",是"换了一批币"。 而换一批币能造成多大差距,6.6 的置换检验已经量过:0.55x ~ 2.44x。 所以这里背景的"贡献"与抽样噪声区分不开。
第一层:随机入场置换检验。同槽位、同背景 gate(生产 OR)、 同出场规则、同每日信号个数,只把选币方式换成从当日可交易池随机抽 (入场价改用当日开盘,因为非突破选币没有通道价):
真实 3.138x vs 随机 100 次 中位 1.157 / 90 分位 1.864 / 最大 2.442 → p = 0.000;2024 起 1.519 vs 随机中位 0.606 / 最大 1.162 → p = 0.000。 打败全部 100 次随机。看起来是真 alpha。
第二层:动量对照。上面的对照太弱 —— 随机是从全池均匀抽, 而突破信号天然挑的是强势币。把选币方式换成简单动量, 背景 gate、槽位、出场规则全部保持不变:
| 选币方式 | 笔数 | 均持有 | 终值 | Sharpe | 最大回撤 | 终值(24起) | Sharpe(24起) |
|---|---|---|---|---|---|---|---|
| 真实 30日 Donchian 突破 | 167 | 155.8 | 3.138 | 0.95 | -44.6% | 1.519 | 0.58 |
| 30日涨幅 top-N | 227 | 112.4 | 3.100 | 0.90 | -39.8% | 1.438 | 0.52 |
| 距30日高点最近 top-N | 165 | 158.0 | 3.036 | 0.92 | -34.9% | 1.571 | 0.60 |
| 10日涨幅 top-N | 227 | 112.3 | 1.825 | 0.57 | -59.4% | 0.833 | 0.19 |
| ADV 最大 top-N | 153 | 153.3 | 2.311 | 0.73 | -48.4% | 1.295 | 0.44 |
| 30日跌幅最大 top-N(反向) | 234 | 106.7 | 1.060 | 0.35 | -73.1% | 0.584 | 0.07 |
Donchian 突破与简单动量无法区分。真实突破 3.138x / Sharpe 0.95、「30 日涨幅 top-N」3.100x / 0.90、「距 30 日高点最近」3.036x / 0.92 —— 三者相差 3%,而置换检验里仅换一批币就能让终值在 0.55x ~ 2.44x 之间浮动,这点差距完全落在噪声里(2024 起「距 30 日高点最近」1.571 反而高于突破的 1.519)。
甚至完全不看动量、只买 ADV 最大的币也有 2.311x / 0.73。反向组(选 30 日跌幅最大的)只有 1.060x / 0.35 —— 说明方向是对的(做多强势币有效),但那是通用的横截面动量 beta,30 日突破这个具体机制没有可辨认的增量。
第三层:BTC 买入持有。4.890x,Sharpe
1.16,
2024 起 1.837x。上面每一个方案都输给它,包括最好的「距 30 日高点最近」。
交互式回测台(首页)把币种池换成
按市值滚动排名后,出现了全文最强的两个读数,且两者用完全不同的过滤机制
却落在相近的 gate 松紧区间:
A = 市值 top200 · OR 背景 + 全局叠加 anomaly(放行 22% 交易日)→ 6.358x / Sharpe 1.27 / α池 t=+3.47
B = 市值 top200 · vote≥3 背景(放行 27% 交易日)→ 6.921x / Sharpe 1.41 / α池 t=+3.19
(anomaly 在生产里是逐指标确认项 —— 11 个指标中 7 个 confirm=anomaly、
4 个需要 ext 面板的挖矿指标绕过它;这里 A 是在背景之上再全局叠加一道。)
两条都用 仅多 · 30 日通道 · 持有 20 天 · 20 槽 · 10bp。以下三层对照只换选币方式,
背景 / 槽位 / 出场 / 费用全部不变。产出脚本 control_mcap.py。
| 配置 | 选币方式 | 笔数 | 终值 | CAGR | Sharpe | 最大回撤 |
|---|---|---|---|---|---|---|
| A · OR + anomaly | 真实 30日 Donchian 突破 | 592 | 6.358 | +65.5% | 1.27 | -43.7% |
| A · OR + anomaly | 30日涨幅 top-N | 555 | 12.041 | +96.9% | 1.59 | -35.7% |
| A · OR + anomaly | 距30日高点最近 top-N | 583 | 7.509 | +73.2% | 1.40 | -41.9% |
| A · OR + anomaly | 10日涨幅 top-N | 573 | 19.092 | +123.3% | 1.81 | -28.6% |
| A · OR + anomaly | ADV 最大 top-N | 515 | 5.537 | +59.4% | 1.33 | -38.1% |
| A · OR + anomaly | 30日跌幅最大 top-N(反向) | 549 | 2.820 | +32.6% | 0.86 | -59.6% |
| B · vote≥3 | 真实 30日 Donchian 突破 | 572 | 6.921 | +69.4% | 1.41 | -37.6% |
| B · vote≥3 | 30日涨幅 top-N | 520 | 13.470 | +103.1% | 1.74 | -36.5% |
| B · vote≥3 | 距30日高点最近 top-N | 566 | 5.678 | +60.5% | 1.32 | -33.7% |
| B · vote≥3 | 10日涨幅 top-N | 545 | 13.769 | +104.3% | 1.68 | -35.1% |
| B · vote≥3 | ADV 最大 top-N | 478 | 4.067 | +46.5% | 1.19 | -28.1% |
| B · vote≥3 | 30日跌幅最大 top-N(反向) | 540 | 2.014 | +21.0% | 0.66 | -40.4% |
第一层:随机入场置换(各 100 次)。 A 真实 6.358x vs 随机中位 3.115 / 最大 5.403 → p = 0.000;B 真实 6.921x vs 随机中位 2.223 / 最大 4.374 → p = 0.000。 两者都打败全部 100 次随机。但这只说明"不是瞎选",不说明是突破的功劳。
第二层:动量对照 —— 突破反而是最差的之一。 在同一币种池、同一背景、同一出场下,把选币换成简单动量: A 组「30 日涨幅 top-N」12.041x、「10 日涨幅 top-N」19.092x, 而真实突破只有 6.358x;B 组「30 日涨幅」13.470x、「10 日涨幅」13.769x, 真实突破 6.921x。简单动量选币是 Donchian 突破的两到三倍。 连「30 日跌幅最大」的反向组都还有 2.8x / 2.0x —— 说明这个 gate 下"长期做多山寨" 本身就能赚,选币方式只决定赚多少。
第三层:回归分解 —— alpha 在控制动量后完全消失。 把「30 日涨幅 top-N」那条对照腿当作一个因子放进回归:
| 配置 | α vs 池等权 | t | α vs BTC | t | α 控动量腿后 | t | α 再控 BTC | t |
|---|---|---|---|---|---|---|---|---|
| A · OR + anomaly | +73.4% | +3.47 | +36.6% | +1.75 | +2.4% | +0.20 | +0.2% | +0.02 |
| B · vote≥3 | +75.0% | +3.19 | +44.2% | +1.86 | +4.7% | +0.39 | +4.4% | +0.35 |
补充一条支持性证据。A 与 B 的过滤机制毫无共同之处(一个是成交额/换手率 异动 + 市场效率,一个是 11 个低波指标的票数),却在收到相近松紧(22% vs 27%)时 给出几乎相同的量级;而把 gate 再收紧到 12%(vote≥3 再叠 anomaly)两者都明显变差。 这指向起作用的是"在场时间的松紧",不是具体用哪套指标逻辑 —— 与 6.6 的 Treynor-Mazuy 检验结论一致(低波背景的择时项 t 仅 +0.39,不显著)。
口径局限。① 成交按日线 stop 单近似(当日 high 越过 DH 即以 DH 成交),
未用 1m 数据逐 bar 确认 —— 生产语义是「整根 1m K 线完全在通道外」才触发,比这更保守,
所以真实成交只会更差不会更好。② 背景是 BTC 市场级统一 gate(DVOL / ext 面板都是 BTC 独有,
无法逐币计算),没有逐币低波判定。③ 回测起点受 DVOL / ext 面板限制在 2023-01-01,
样本仅 3.7 年、且前 3~12 个月分位基准不足。④ 主结果的币种池是 ~91 币的季度 verified 名单
而非全币种(见 6.3),且 20 槽 + ADV 优先隐含了一层流动性筛选(见 6.4)。
⑤ 全文共测了 44 + 11 + 8 + 12 个配置,任何"最优点"都要按多重检验打折看。
如果还要继续,值得试的方向(按预期收益排序,前两条由 6.4 直接指出):
① 把流动性筛选拿出来单独验证 —— 不设槽位、标的池限定为当日 ADV top-30 / 50 / 100,
等权满仓。6.4 说明真正起作用的可能是"只做高流动性币",这个设计能把它和槽位约束彻底分开;
② 只做多 + 追踪止损(持有期单调性和多空不对称都指向这里,固定持有期是明显的错误约束);
③ 把背景当权重而非开关 —— votes 数与表现单调正相关,可直接做仓位缩放;
④ 逐币低波判定 替代 BTC 统一 gate(用 bb_width / keltner / ATR 分位,全币种可算)。
复现:build_background.py → backtest.py → followups.py
→ report.py,目录 /home/ubuntu/ic/factor_backtest/research/20260903_ctashit/。
中间产物在 out/(background.parquet / equity_curves.parquet / summary.csv /
signal_diagnostics.csv / trades_*.parquet / fu_*.csv|parquet|json)。