策略
ADA 在币安利率下限时的对冲资金费率套利:做多 ADAUSDT 现货 + 做空 ADAUSDT USD-M 永续合约;当过去 3 日平均资金费率 >= 0.01%/8h 时持仓,转负时平仓(1H K线,Delta 中性,市场持仓时间约 50%)
结局: 已放弃
AdaHedgedFundingCarryFloor1H
结局总结
AdaHedgedFundingCarryFloor1H尝试通过现货做多/永续合约做空的对冲组合,赚取ADA永续合约资金费率;入场条件是过去3日平均资金费率不低于协议利率底线0.01%/8h。仅使用资金费率、不计基差盈亏的研究前测结果看起来不错:跨26个交易周期,每个周期净收益为+3.22%。经过4次迭代,代码加入了总权益仓位规模计算、清算缓冲重置和防止频繁交易的规则,但始终未能通过验证。本次运行因第1层静态分析将基于abs()的资金费率时间戳查询标记为前视而被放弃,因此从未进行回测、优化或分析师评审。
假设
本轮为重新提交。策略工厂日志显示本次运行仅有一次回测(bt-...-i1),且登记的策略文件只有 AdaHedgedFundingCarryFloor1H_v1.py(第 -1 轮代码)。第 2-4 轮的反馈文件与首次审查的文件逐字节相同,写入时间相隔 3 分钟。因此,已包含审查修复 1-4 和改进 1-4 的代码从未经过回测。本次提交保持该逻辑不变。(1)仓位规模使用总账面权益 × capital_frac/2,而非 min()。(2)永续合约保证金安全:引擎不支持跨交易场所转账(运行器为每个交易场所提供固定的 $100k 资金),因此采用交易场所杠杆 3,并将永续合约名义金额上限设为 perp_eq × min(3 x 0.8, 1/(liq_buffer + reset_room))。(3)重置后,交易对按总权益重新计算的规模重新开仓,不设冷却期。(4)每次平仓都会记录原因和持仓时长,持仓时间不足 24h 的交易会标记为 SHORT HOLD,以便追踪这些 2 小时交易对。其他保留的改动:开仓和平仓时的资金费率 AND 基差门槛、24h 最短持仓时间、24h 冷却期,以及对冲完整性平仓。本轮唯一改动:每次开仓记录交易对名义金额占总账面的百分比及触发上限的条件(目标值、perp_cap 或 spot_cap),每次平仓记录入场名义金额,以便审计“账面占比 >= 40%”这一指标。结构性限制:初始交易对占账面 40%,但清算缓冲重置后,资金耗尽的永续合约账户会将重新开仓的交易对限制在账面约 25-30%,因为引擎无法在不同交易场所之间转移资金。改进 5(先下永续合约做市腿)尚未实现。在 K 线收盘价下单的 SELL 限价单会成为可立即成交的订单,因此在基于 K 线的引擎中会以吃单方身份成交。高于收盘价挂出的限价单则会留下约 1H 的单腿敞口。相较于研究前每个交易周期约 3.5% 的均值,每个交易对可节省约 0.06%。
verification_loop:验证失败(第1层——静态分析): - 前视:补充观测值按与K线时间戳的ABSOLUTE距离选取;如果后一条观测比前一条更近,就会返回NEXT观测值。请使用self.supp_as_of(key)(不晚于该K线的最新值)或明确的`ts <= bar.ts_init`筛选条件,绝不能使用abs()。(第241行)
实现
Delta中性的ADA资金费率套利:做多ADAUSDT现货 + 等数量做空ADAUSDT USD-M永续合约;当过去9次记录(3天)平均8h资金费率 >= 0.01%/8h(币安利率底线)且基差 >= 0时持仓。平均值 < 0且基差 <= 5bp时,在至少持仓24h后退出。若平均值 < -0.01%/8h或资金费率数据过期,则强制退出。每个交易对按账簿总权益(总计0.8 x / 每条腿2)确定仓位规模。永续合约账户通过3x交易所杠杆和清算缓冲重置机制维持保证金安全。对孤立或不匹配的持仓腿执行平仓,并设置24h重新入场冷却期。
验证结果
验证失败(第1层——静态分析): - 前视:补充观测值按与K线时间戳的ABSOLUTE距离选取;如果后一条观测比前一条更近,就会返回NEXT观测值。请使用self.supp_as_of(key)(不晚于该K线的最新值)或明确的`ts <= bar.ts_init`筛选条件,绝不能使用abs()。(第241行)
当交易对处于开仓状态且 _entry_px==0 时,从永续合约仓位的 avg_px_open 初始化 _entry_px。
对冲检查基准 _entry_px 和 _rehedge_pending 标志仅保存在内存中。交易对持仓期间,模拟盘或实盘重启后,_entry_px=0,且本交易周期剩余时间内的 40% 再对冲检查会被静默禁用。注释称其“在重启后仍会保留”,但没有任何逻辑会根据未平仓头寸重建这些值。
可选:记录“naked_leg_unwind”计数器,以便在诊断信息中显示所有此类事件。
两条腿以互相独立的市价单提交。如果其中一条腿被拒绝(例如现货 CASH 腿在扣除手续费后现金不足),裸腿保护机制会在下一根 K 线上平掉另一条腿。这样做是安全的,但会产生完整的往返交易成本;在1.0杠杆、0.5 capital_frac的情况下,此类失败应该很少见。没有其他替代方案;已向分析师说明此情况。
仅当基础合约允许时才保留。
min_bars_required()重载方法遮蔽了基类方法(静态分析警告)。这没有影响,因为没有使用价格指标,而且资金费率窗口会单独检查数据是否覆盖完整窗口。
分析
迭代历史
验证失败(第1层——静态分析): - 前视偏差:通过与 K 线时间戳的 ABSOLUTE 距离选择辅助观测值;当NEXT观测值比前一个更近时,选择的就是它。应使用 self.supp_as_of(key)(取时间不晚于 K 线时点的最新值),或显式使用 `ts <= bar.ts_init` 筛选——切勿使用 abs()。(第223行)
验证失败(第1层——静态分析): - 前视偏差:通过与 K 线时间戳的 ABSOLUTE 距离选择辅助观测值;当NEXT观测值比前一个更近时,选择的就是它。应使用 self.supp_as_of(key)(取时间不晚于 K 线时点的最新值),或显式使用 `ts <= bar.ts_init` 筛选——切勿使用 abs()。(第239行)
结局总结
时点资金费率查询必须使用 self.supp_as_of()/supp_window(),或显式筛选 ts <= bar.ts_init;任何按 abs() 距离匹配时间戳的做法都属于严重的第1层错误,会在策略回测前阻止其运行。
经过4次迭代后,本次运行在验证循环中被放弃。第1层静态分析持续因前视问题拒绝该代码:它按与K线时间戳的绝对距离选择补充资金费率观测值(第241行),这可能返回下一条记录。
Delta中性的ADA资金费率套利:持有ADAUSDT现货多头和ADAUSDT USD-M永续合约空头;当过去9次记录(3天)平均资金费率不低于币安的0.01%/8h利率底线时持仓,平均值转负时平仓。目标是收取多头支付给空头的结构性费用。
本次运行没有流水线回测或优化指标:回测报告为空,且未生成优化报告。所有数字仅来自该假设的资金费率单项预研,未计入基差损益:从 2020-01 到 2026-09 共 26 个交易周期,每个周期扣除 0.30% 往返成本后的平均净值为 +3.22%,净盈利周期占 77%,市场持仓时间约为 50%。
放弃原因
verification_loop:验证失败(第1层——静态分析): - 前视偏差:通过与 K 线时间戳的 ABSOLUTE 距离选择辅助观测值;当NEXT观测值比前一个更近时,选择的就是它。应使用 self.supp_as_of(key)(取时间不晚于 K 线时点的最新值),或显式使用 `ts <= bar.ts_init` 筛选——切勿使用 abs()。(第241行)
回测评审
- 夏普
- 0.23
- 总收益率
- 5.85%
- 最大回撤
- 0.45%
- 总交易数
- 102
- 胜率
- 50.0%
- 盈利因子
- 1.06
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。