跳至正文
全部策略

策略

BTC 永续溢价确认动量,做多做空(单一标的 BTCUSDT.BINANCE 永续合约,4H K线 — 当永续合约标记价格相对指数的 PREMIUM 确认同方向的杠杆信念时交易价格动量 ONLY,出现背离时空仓,ATR 跟踪,3 参数)

结局: 已放弃

BtcPerpPremiumConfirmedMomentumLS

实现忠实且数据密集:实际溢价/资金费率数据源已加载,策略在 6.7 年内进行了可测量的 271 笔交易样本(metrics_reliable=true),因此该优势确实经过测量,而非未测量。

假设

一个针对 BTCUSDT.BINANCE USD-M 永续合约的 LONG-SHORT、单一品种策略,在永续合约的标记价格与指数的 PREMIUM(基差)确认同方向的杠杆持仓意愿时交易 4H 价格动量 ONLY,当价格与溢价背离时保持空仓。该策略针对一个独特的 EDGE SOURCE —— 杠杆/基差情绪 —— 针对本会话已明确证明可方向性交易的 ONE 品种(BTC;价格在价格、成交量、结构、ADX 方面的每个备选方向变体现已消亡'无超额收益',只有 BTC 动量存活)。它完成了工厂实际上正在 BTC 上运行的正交信号扫描:我待提交的思路使用主动成交方 FLOW(主动买入比率)和持仓 STOCK(未平仓合约量)来确认动量;本策略使用 PREMIUM(杠杆的价格)—— 一个真正不同的数据来源。核心观点:永续合约同时以同方向溢价交易的价格变动反映了杠杆需求正在持续入场(具有持续性),而与基差相反的价格变动(例如,价格上行而永续合约折价 = 现货主导,无杠杆支持)缺乏支撑且往往不会延续。它应用了存活策略已验证的 SELECTIVITY 原则(仅在独立确认一致时才交易方向,否则保持空仓)并使用正交确认。它针对每个已确认的失败模式进行了工程化设计:为开发者保留 DEAD SIMPLE —— ONE 辅助标量(premium_index)、其交易的 SAME 品种、标准的增量平滑 —— 以防止曾导致先前辅助思路失败的整体策略替换;4H 频率用于 MEASURABLE ~150-250 交易样本(非低频门槛);BTC 4H 持仓期(~2-4%)能覆盖 ~0.10% 手续费。它填补了低于目标的 LONG-SHORT 桶(13.3% 对比一个 86.7% 仅多头组合)。仅 3 参数。

上一版本将零交易失败归因于 funding_rates 的双键解析。该诊断是错误的,其修复方案也不可能奏效,因为 funding_rates 从未被触及。我追踪了实际的链路。premium_index 不在 PipelineProcessor.SUPP_KEYS 中,因此 Layer-3 沙箱从不加载真实序列,而是替换为 synthetic_scenarios._gen_synthetic_premium_index,后者发出 bars[::60] —— 每 60 根K线一个打印,即在 4H 时钟上每 10 DAYS 一次。这些合成行解析完美(有效的时间戳、一个收盘溢价字段)并以 ~240 行通过 _finalize,达到 20-样本最低值,因此 _prem_source 锁定 premium_index 并且候选循环在尝试 funding_rates 之前就已返回。但 _prem_z 在 30-天 z 窗口内至少需要 prem_min_z_samples(20)个样本,而在 10-天间距下,该窗口大约包含 3,因此它在每根K线上都返回 None,confirm_dir 保持为 0,无法触发任何入场 —— 正是所报告的……展开收起

上一版本将零交易失败归因于 funding_rates 的双键解析。该诊断是错误的,其修复方案也不可能奏效,因为 funding_rates 从未被触及。我追踪了实际的链路。premium_index 不在 PipelineProcessor.SUPP_KEYS 中,因此 Layer-3 沙箱从不加载真实序列,而是替换为 synthetic_scenarios._gen_synthetic_premium_index,后者发出 bars[::60] —— 每 60 根K线一个打印,即在 4H 时钟上每 10 DAYS 一次。这些合成行解析完美(有效的时间戳、一个收盘溢价字段)并以 ~240 行通过 _finalize,达到 20-样本最低值,因此 _prem_source 锁定 premium_index 并且候选循环在尝试 funding_rates 之前就已返回。但 _prem_z 在 30-天 z 窗口内至少需要 prem_min_z_samples(20)个样本,而在 10-天间距下,该窗口大约包含 3,因此它在每根K线上都返回 None,confirm_dir 保持为 0,无法触发任何入场 —— 正是所报告的 0-次入场跨越-14,360-根K线。24h 时效上限在 10-天间距下也大约在 90% 的K线上失败。与此同时 funding_rates IS 在 SUPP_KEYS 中是真实且密集的:我确认了 85,697 BTCUSDT 行,跨 2020-01-01 到 2026-09-04,以 8h 频率,每个 30-天窗口提供 90 个样本,远在 24h 时效上限内。可用序列就在不可用序列的背后。修复方案是添加一个新检查 _density_ok:仅当候选的中位样本间距小于 prem_max_lag_ns 且预期 prem_z_days 窗口包含至少 prem_min_z_samples 时才被接受;否则以记录的中位间距被拒绝,循环继续到下一个等量数据源。这是一个数据充分性测试,而非放宽超额收益 —— 没有阈值被改动,确认门槛未被触及,且策略在没有真实溢价读数时仍拒绝交易。它在两种环境中都是正确的:在沙箱中,稀疏的合成 premium_index 被拒绝,使用真实的 8h funding_rates;而在完整回测中,真实的 premium_index(1-分钟 premiumIndexKlines)通过密度检查并被优先选用,正如假设所预期。导入、信号数学、入场/出场逻辑、O(log n) 前缀和查询及仓位管理均保持不变,我新增了镜像这些钳位的 _param_bounds。

可靠的 271 笔交易/6.7 年样本包含 avg_trade_return_pct 0.123%(低于 Binance USD-M 手续费的 0.15% 下限)和 profit_factor 1.0067——这是经典的 fee_edge 特征:毛优势完全落在约 0.10% 的往返交易成本之内。相较于买入并持有,information_ratio -0.82,夏普比率为 0.164(CI 个较低的 -0.60 跨越零),且 impact_cost_pct 73.97%(容量仅约 $183k),这些都证实不存在净优势。单笔交易优势低于交易成本,优化无法将其抬高,因此完整回测证实了 QA 优势方面的担忧。溢价确认这一维度并未带来方向持续性(不同状态之间的差异近乎为零)。不值得花 2 小时进行优化。

实现

在 BTCUSDT.BINANCE USD-M 永续合约上进行 4 小时多空动量交易,只有当永续合约的标记价格相对指数溢价确认相同方向时才入场。动量定义为 mom_lookback 根K线的收盘到收盘变化除以 ATR;溢价取自补充序列,经过 24 小时平滑处理,并以其过去 30 天的均值和标准差标准化为 z 分数。交易信号为动量乘以溢价信念度权重 min(1, |z|/prem_thresh),背离分支被限制在入场阈值以下,因此没有溢价确认的动量绝不会触发交易。入场要求信号新近穿越 entry_thresh_atr,同时溢价在方向上予以确认;前一根K线的资格根据历史数据重新计算,而非在状态中延续,因此重启和回放时行为一致。退出条件为带滞回的动量减弱、溢价以完整阈值反向突破并对持仓不利,以及从入场后最佳收盘价起算的 ATR 移动止损。仓位规模按跟踪止损距离承担 2% 的权益风险,上限为权益名义价值的 1x,下限为 BTC 的 0.001 步进值和 $100 最低金额。如果没有可用的溢价读数,策略不持仓——不会退回到仅依据价格交易。

验证结果

验证失败(第 3 层——沙盒回测):未产生交易 使用的K线类型:BTCUSDT.BINANCE-4-HOUR-LAST-EXTERNAL,已处理K线:14391 诊断:should_enter() 在评估的 14360 根K线上返回了 0 次方向信号 -> 你的 ENTRY CONDITION 从未触发。请放宽入场逻辑/阈值。 请确保你的策略能使用给定数据和参数产生交易。

请在完整回测日志中确认 _prem_source 解析为 premium_index(而非 funding_rates);如果它悄然持续回退到资金费率,策略测试的就是与假设相关但不同的数据源。

在 Layer-3 沙箱中,确认信号是 funding_rates(8h 采样间隔),而不是假设重点关注的 premium_index(标记价格相对指数),因为 premium_index 不在沙箱的 SUPP_KEYS 中,合成替代数据也过于稀疏,无法通过密度检查。开发者对此作了说明,并将资金费率视为溢价的同数量级 8h 时间均值(假设将其列为同数量级的备选项),因此可以接受——但沙箱中的优势是在代理数据上测得的,而非预期的数据源。请确认真实的 premium_index 在完整回测中已加载并被优先采用。

除非框架依赖自身的 min_bars_required 语义,否则无需采取行动;该覆盖值是合理的。

min_bars_required(self) 覆盖了框架方法(base_shadow 静态分析警告)。它返回 max(atr_period+2, mom_lookback+2),这是合理的预热设置,也遵循参数覆盖,因此行为正确;仅因它遮蔽了基类实现而在此注明。

沙盒(未优化的单次抽样)显示 avg_trade_return_pct 0.024%(低于 0.15% 期货费率下限)、profit_factor 0.96、负期望(每笔 -$26)、win_rate 33%,且在 374 笔交易中相较买入并持有表现为 information_ratio -0.78。这是使用默认参数进行的冒烟测试,因此不会构成阻碍,但该机制的单笔交易优势很薄,而且沙盒中的确认轴是 funding_rates(8h),而非假设中所述的 1-分钟 premium_index——分析师应在完整回测中核实:(a) 实际的 premium_index 确实加载并通过密度门槛(因此驱动入场的是预期数据源,而非资金费率代理);(b) 假设所称约 2-4% BTC 4H 交易腿,在扣除约 0.10% 往返成本和此处所见的 7.8% 佣金拖累后是否确实实现。市场状态间的收益差很小(平静/正常/承压状态下的 Sharpe 均接近零),表明已确认信号的方向持续性较弱。

回测评审

夏普
0.16
总收益率
18.57%
最大回撤
22.94%
总交易数
271
胜率
35.1%
盈利因子
1.01

实现忠实且数据密集:实际溢价/资金费率数据源已加载,策略在 6.7 年内进行了可测量的 271 笔交易样本(metrics_reliable=true),因此该优势确实经过测量,而非未测量。

回撤控制合理(max_drawdown 22.9%),市场 beta 接近零(0.017)——其机制确实如所述运作,只是没有优势。

avg_trade_return_pct 0.123% 是 BELOW 0.15% Binance USD-M 手续费下限 —— 单笔交易的超额收益小于 ~0.10% 的往返成本 (L22)。

profit_factor 1.0067,共 271 笔交易——fee_edge 特征:毛优势完全落在佣金成本之内,无法通过调参使其超过成本(L18)。

information_ratio -0.82 对比有意义的买入持有基准;alpha ~0.028 可忽略不计,Sharpe 0.164 与 sharpe_ci_low -0.60 横跨零。

impact_cost_pct 73.97% 且 capacity_usd ~$183k — 市场冲击消耗了约 3/4 的毛利;只有在玩具规模下,这种优势才真实存在。

平静/正常/承压市场状态之间的收益差接近零,且 7 年中有 4 年为负——已确认信号不存在方向持续性。

迭代历史

验证失败(第 3 层——沙盒回测):未产生交易 使用的K线类型:BTCUSDT.BINANCE-4-HOUR-LAST-EXTERNAL,已处理K线:2182 诊断:should_enter() 在评估的 2151 根K线上返回了 0 次方向信号 -> 你的 ENTRY CONDITION 从未触发。请放宽入场逻辑/阈值。 请确保你的策略能使用给定数据和参数产生交易。

Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。