跳至正文
全部策略

策略

BTC 基差动量方向性多空策略(单一标的 BTCUSDT.BINANCE 永续合约 — NEW 信息源:根据 RISING/FALLING 标记价格与指数价格之间的 PREMIUM 走势方向交易永续合约(基差变化率 = 杠杆需求增长),顺势而非反向交易,ATR 追踪止损,3 参数)

结局: 已放弃

BtcBasisMomentumContinuationLS

结局总结

BtcBasisMomentumContinuationLS 策略押注:鉴于本次研究中每一种 BTC 反向策略都失败了,顺着永续合约基差动量所揭示的资金流交易 WITH ——将标记价格与指数价格之间溢价的变化率用作杠杆需求的领先指标——会是更契合且尚未测试的角度。一次关键的迭代 -3 修复增加了行情源真实性门槛,拒绝沙盒一直替代使用的合成溢价,并回退到真实的 8 小时资金费率序列作为分辨率降级,使回测终于描述了真实的基差信号。结论明确而严峻:该策略在 527 笔交易中亏损 -53.3%,盈利因子为 0.719,每笔交易优势为负,最大回撤 58.1% 超过硬性放弃线,并且在 7 个年份中的 6 年为负。审查者在回测审查阶段放弃了该策略,结论是基差动量的顺势方向假设在真实数据上被证伪——这不是调参问题,而是缺乏优势;行情源真实性修复正是让这一负面结论可信的关键。

假设

一种在 BTCUSDT.BINANCE USD-M 永续合约上的 LONG-SHORT 方向性策略,由真正 NEW、覆盖充分的 NON-OPTIONS INFORMATION SOURCE 驱动——即永续合约 BASIS(标记价格相对指数的溢价,premium_index)——根据元学习器的 L38 要求用作基差-MOMENTUM。它刻意与 CONTINUATION 保持一致,而非反向交易:本轮已表明所有 BTC 逆势/反向交易(清算、OI 背离、DVOL 反转、假突破、去杠杆、持仓背离)均无优势,而动量/趋势方向是唯一的幸存者——因此,顺着资金流交易的 WITH 新来源信号是未经测试、契合度更高的角度。信号:永续合约溢价的 RATE OF CHANGE 是对杠杆需求的直接、前瞻性解读——基差上升意味着激进的杠杆化 BUYING 正在积聚(看涨压力累积),基差下降/为负意味着杠杆需求正在流失或空头正在施压(看跌)。顺着基差动量方向交易永续合约可捕捉这种杠杆资金流的延续。它与之前所有想法都不同:不是纯价格(基差是主要信号),不是反向交易,不是已失效的 OI/CONFIRM 动量(基差 ROC 是主要方向驱动,价格仅作过滤),不是期权(以分散我四个待定的期权想法),且 premium_index 在币安上覆盖充分(避开 taker-ratio/多空覆盖上限和 DVOL 历史长度限制)。它交易流动性高的 BTC 永续合约(dev-safe,信号即执行工具),单一标的,可做多做空(填补 13.5% 桶),4H 频率以获得约 100-200 笔的可衡量交易样本,并带有 ATR 追踪以捕捉延续行情。3 参数。

ITERATION 3——修复了 Layer-4 的QA拒绝问题:沙盒结果基于SYNTHETIC溢价数据计算,因此该假设实际上从未经过测试。我在仓库中复现了原因:沙盒加载器 src/agents/pipeline_processor.py::_collect_supplementary_data 会NOT加载premium_index(其返回字典包含funding_rates、清算数据、open_interest、多空比、taker_ratio、指标、hl_funding_rates、deribit_dvol、deribit_funding——没有premium_index),而REAL回测加载器 src/backtesting/supp_collector.py:606 DOES('premium_index': _load_parquet('premiumIndexKlines'))。由于策略代码包含字符串'premium_index',沙盒的尽力合成注入器提供了……展开收起

ITERATION 3——修复了 Layer-4 的QA拒绝问题:沙盒结果基于SYNTHETIC溢价数据计算,因此该假设实际上从未经过测试。我在仓库中复现了原因:沙盒加载器 src/agents/pipeline_processor.py::_collect_supplementary_data 会NOT加载premium_index(其返回字典包含funding_rates、清算数据、open_interest、多空比、taker_ratio、指标、hl_funding_rates、deribit_dvol、deribit_funding——没有premium_index),而REAL回测加载器 src/backtesting/supp_collector.py:606 DOES('premium_index': _load_parquet('premiumIndexKlines'))。由于策略代码包含字符串'premium_index',沙盒的尽力合成注入器提供了 _gen_synthetic_premium_index(src/verification/synthetic_scenarios.py:339——“约每60根 K 线采样一次”),而这条伪造序列正是第 2 轮标准化并交易的对象。我核实了磁盘上的真实数据:data/supplementary/premiumIndexKlines/BTCUSDT包含3,460,081条真实的1分钟数据,时间跨度从2019-12-24到2026-06-26(过去一年有486,246条数据);data/supplementary/fundingRate/BTCUSDT/all.parquet 包含7,029条真实的8小时资金费率记录,时间跨度从2020-01-01到2026-05-31——而沙盒加载器没有提供资金费率IS。 THE CHANGE(使运行结果可信所需的最小修复,其余部分保持原样): 1。在 _ensure_series 中FEED-AUTHENTICITY GATE。基差序列按定义属于高频数据(1分钟 premiumIndexKlines;8小时资金费率结算)。现在会测量每个候选数据源;若其MEDIAN SAMPLE SPACING超过max_spacing_hours(LOCKED 9小时),就会被判定为REJECTED,不视为基差数据源。合成溢价约每10天采样一次,因此会被直接拒绝,不会再被标准化成看似可信的伪造数据;真实的1分钟溢价(0.017小时)和真实的8小时资金费率序列都能通过检查。拒绝时,策略会回退到funding_rates,用于SAME QUANTITY——资金费率是该溢价在结算区间内的实际时间平均值,也就是说,这是同一信号的分辨率降低版本,并非另一种优势,也不是仅基于价格的替代信号。被接受的数据源及其测得的采样间隔会在构建时记录,并在on_stop摘要行中再次列出,因此“实际交易依据的是哪个序列”会成为日志中明确记载的事实,无需QA自行推断。最终效果:Layer-3沙盒现在基于REAL 8小时资金费率基差序列运行(7,029条记录,在每个30天 z 窗口内约有90个样本),完整回测则基于REAL 1分钟premium_index运行——两者都无法再悄悄使用合成数据。 2。REVERTED THE COUNT-AWARE Z-WINDOW,该做法正是QA正确指出会掩盖不可测试性的问题。_basis_z 中的标准化窗口恢复为普通的滚动z_days,要求窗口内有min_samples个点;若窗口未填满,就无法测量信号,因此不建立仓位。稀疏问题现在由上述数据源门槛处理,而不是通过拉长窗口解决(旧代码会在约600天的窗口内标准化一个采样间隔约为10天的序列)。两个保留的数据源都能充分填满30天窗口(1分钟溢价约有43千个点;8小时资金费率约有90个点,而非min_samples 60),因此移除该做法不会再次导致先前的零交易故障。 3。TRADE COUNT(QA的第二点:7笔交易无法衡量)。7笔交易的样本是伪影,源自对约36点的合成序列使用约600天的拉长 z 分数,导致分数几乎不变。在真实数据源上,ROC在沙盒中每8小时、在回测中每分钟测量一次,并基于真实的30天分布,因此 +/-1 sigma 穿越会以模型设定的每年约30-60次入场频率发生,而不是只有寥寥几次。 4。针对真实的3.5百万行序列进行PERFORMANCE:为单纯的时间戳加收盘价 K 线格式采用快速解析路径,使用 numpy 排序/去重替代包含3.5百万条目的 Python 字典,并抽取数据以保证每小时最多一个样本(1分钟分辨率远高于12小时平滑窗口所需),然后进行向量化平滑、ROC和前缀和预计算。每根 K 线的成本不变:两次 searchsorted 调用和 O(1) 运算。 REGRESSION SAFETY:未更改导入项(仅标准库 math/collections/decimal、numpy 和nautilus_trader),类/方法结构、连续信号、交叉入场、三个退出条件和考虑缺口的仓位规模计算,均与通过 Layers 1-3 的版本逐字节相同。给 Research Lead 的一项说明:持久性修复只需在 _collect_supplementary_data 中增加一行 'premium_index': _load_parquet('premiumIndexKlines'),使沙盒与supp_collector保持一致——我没有改动流水线代码,因此沙盒会测试基差的8小时资金费率分辨率,而完整回测会测试1分钟溢价。

灾难性的、决定性的净亏损者,突破了硬性放弃回撤线。max_drawdown58.1%(CI至83.6%,超过了>50%L19规则),profit_factor0.719(<1.0),total_return-53.3%,avg_trade_return_pct-0.314%(为负),在决定性的527笔交易中期望值为-$105/笔,夏普比率-0.299,阿尔法-0.082,information_ratio-0.850,且7年中有6年亏损(仅2025年为正),历史大部分时间滚动夏普比率均为深度负值。数据源真实性关卡是一项真正的修复——该信号现在交易真实基差序列——而诚实的结论是,在BTC上交易WITH基差动量没有优势:扣除成本后,上升的基差并不会带来价格延续,永续合约会回吐涨幅。该假设的赌注(“反转都失败了,所以延续方向一定有效”)已被证伪。这不是调参问题——当所有机制下优势均为负且回撤为58%时,不存在可优化的参数区域;优化best-of-225次试验只会过拟合唯一表现好的那一年(2025)。应根据>50%DD硬性放弃规则以及PF<1.0/负收益/负avg_trade_return_pct规则予以放弃,而不是花费2小时进行优化。

实现

针对 BTCUSDT.BINANCE USD-M 永续合约的多空策略,依据其自身标记价格与指数价格之间的溢价(永续合约基差)WITH动量方向交易。每根 4 小时 K 线都会计算一个连续决策变量:对溢价按 12 小时进行平滑,在 roc_hours 内求差以衡量杠杆需求的BUILD,并根据该ROC的普通向后滚动 30 天分布进行标准化。价格仅作过滤条件——当 1 天价格变动的符号与基差 ROC 符号相反时,评分会被压低 0.25x,严格限制在退出阈值以下,因此它绝不会开仓,也不会成为信号。入场条件为新发生的 CROSS 次正负 entry_thresh sigma 穿越(基差上升时 LONG,基差消退时 SHORT)。退出条件:盘中触发、并按该根 K 线收盘价记账的 ATR 追踪止损;带有 0.5x 滞后的基差动量反转;以及从该仓位自身的 ts_opened 起算的 7 天最长持仓时间。仓位规模计算考虑跳空并以风险优先(在不利波动 3-ATR 下承担权益的 2% 风险),名义仓位上限为权益的 0.5x,杠杆 1.0。三个可调参数:roc_hours、entry_thresh、trail_atr_mult。

验证结果

验证失败(第 4 层 — QA 审查): - THE SANDBOX RESULT IS ON SYNTHETIC PREMIUM DATA,NOT THE REAL premium_index——因此假设实际上并未经过检验。开发者自己的迭代 -2 诊断(已离线复现)指出,沙盒补充数据加载器 `_collect_supplementary_data` 并未提供 NOT premium_index,因此运行时回退到了SYNTHETIC溢价数据,约每 60 根 K 线采样一次(约 10 天)。随后,考虑点数的 z 窗口修复又用按点数延长至约 600 天的窗口标准化这条稀疏合成序列(60 min_samples × 间隔约 10 天),这NOT原本对真实约 1 分钟基差进行 30 天标准化的意图。因此,7 笔交易的指标(total_return +3.66%、PF 1.90、avg_trade 1.28%、容量 $211M)是基于FABRICATED信号计算的,无法说明真实基差动量的优势;funding_events_available=114,且开发者的披露证实溢价数据是合成且稀疏的。按当前沙盒配置,该假设无法检验。 - UNMEASURABLE REGARDLESS——在 363 天内有 7 笔交易(做多 2 / 做空 5),夏普比率 0.531,其 CI [-1.34, 1.78] 跨越零,return_skew 4.59 / 峰度 56.2(一笔 $5,939 的盈利超过约 $3.7k 净收益的 150%)。即使暂且不考虑合成数据问题,7 笔交易也不足以区分优势与运气。另请注意,考虑点数的 z 窗口本是针对真实稀疏 REAL 数据源的合理稳健性功能,但在这里却起到了MASKING不可测性问题的效果:它把诚实的“无真实溢价数据”0笔交易状态,变成了在合成数据上误导性的“策略有交易”7笔交易结果。

沙盒中的边际优势;avg_trade_return_pct +0.115% 低于 0.15% 的费用门槛

沙盒测试 8 小时资金费率,全量回测测试 1 分钟溢价——使用不同的数据源分辨率;全量回测是最终判定依据

行情源真实性门槛的间隔较小(8小时对比9小时),但会安全失败(不交易),绝不会转而使用合成数据

回测评审

夏普
-0.30
总收益率
-53.28%
最大回撤
58.11%
总交易数
527
胜率
36.8%
盈利因子
0.72

行情源真实性门槛确实修复了问题——结果基于真实的基差序列计算,因此负面结论可信

样本量充足(527笔交易),多空平衡合理(做多271笔 / 做空256笔)

max_drawdown 58.1%(CI 至 83.6%)— 超过 >50% 的硬性放弃线(L19)

profit_factor 0.719(< 1.0,净亏损),total_return -53.3%,avg_trade_return_pct -0.314%(负值),每笔交易期望收益 -$105

在 7 年中有 6 年为负(2020 -21.7%,2022 -24.6%,2026 -10.5%);仅 2025 为正;历史上大部分时间的滚动 Sharpe 均为深度负值

夏普比率 -0.299,阿尔法 -0.082,information_ratio -0.850 — 没有优势;基差动量的顺势方向假设被证伪

迭代历史

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

结局总结

“每次反转都失败了,所以延续方向一定有效”这一前提并非自证成立——扣除成本后,上升的基差并不会带来价格延续,而拒绝合成数据的数据源真实性关卡,正是将一个看似漂亮的回测转变为诚实、决定性的证伪、而非伪造结果的关键。

它在预优化BACKTEST_REVIEW关卡因多项硬性规则被放弃:最大回撤58.1%突破了>50%硬性放弃线,盈利因子低于1.0且单笔交易收益为负,而且——关键的是——数据源真实性关卡确保信号运行在真实基差序列上,因此否定性结论是可信的:在BTC上交易WITH基差动量没有优势,永续合约会回吐涨幅。

根据永续合约基差动量的方向做多/做空 BTCUSDT.BINANCE 永续合约——即标记价格与指数价格溢价的变化率,将其作为杠杆需求增加/减少的领先指标;这是一种与趋势延续方向一致的押注,使用真正新颖且覆盖充分的信息来源,并仅将价格作为过滤条件。

在具有决定性的 527 笔交易样本中(做多 271 笔 / 做空 256 笔),策略净亏损惨重:盈利因子 0.719,总回报 -53.3%,每笔交易平均回报 -0.314%,每笔交易期望收益 -$105,胜率 36.8%,夏普比率 -0.299,信息比率 -0.850,最大回撤 58.1%(CI 至 83.6%),并且在 7 年中的 6 年亏损(仅 2025 年为正)。

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