跳至正文
全部策略

策略

ETH USD-M 未平仓量确认突破,多空双向(BINANCE 永续合约,4小时K线,仅在OPEN INTEREST上升时交易突破——新增杠杆资金确认行情——OI回落时离场,3参数)

结局: 已放弃

EthOpenInterestConfirmedBreakoutLS

结局总结

EthOpenInterestConfirmedBreakoutLS 提出了一个真正新颖、在OHLCV中不可见的优势——仅在未平仓量上升确认新增杠杆资金流入时交易突破,并在OI回落时离场——刻意采用对称多空设计以填补投资组合中最大的配额缺口,并明确声称ETH OI历史可追溯至2020,不同于此前导致同类策略夭折的90天强平数据源。代码本身简洁(具备稳健的OI解析、8小时滞后对齐、诚实地不采用回退方案),但该数据声明在实践中被证明是错误的:仅触发了7次入场,且全部集中在一个约2个月的单一2026窗口内,而在其交易的地方明显亏损,盈亏比为0.027,胜率为14.3%。审核者将其判定为因数据覆盖不足而无法验证的结果而非代码缺陷,建议数据工程师在任何OI信号策略再次尝试之前,确认并回填完整的ETH未平仓量历史数据。该确认优势从未真正被测试过——该信号在整个回测窗口内根本不存在——不过其确切机制被标记为值得在合理的多年样本上重新审视。

假设

一种LONG-SHORT、单一标的的波段策略,基于ETHUSDT.BINANCE(USD-M永续合约,4小时K线),其区别性优势在于OPEN-INTEREST确认——一种加密原生的、已编目的补充信号(open_interest),在当前投资组合中几乎完全未被探索,且在纯OHLCV中INVISIBLE。核心洞见在于:价格突破若伴随RISING的未平仓量,意味着新的杠杆资金正在进场推动行情(真正的趋势延续);而伴随FALLING未平仓量的突破,则是空头回补/头寸平仓式的衰竭行情,通常会失败。通过只交易经OI确认的突破,并在OI回落的那一刻立即离场,该策略过滤掉了那些扼杀纯价格趋势跟踪策略的假突破(ETH日线波动率目标TSMOM刚刚因缩水夏普比率而失败;单一标的OHLCV趋势策略0/210)。它通过完全对称的多空设计,刻意填补了最大的配额缺口——DIRECTION(long_only 84.7% 相对于 ≤55% 的目标)。它避开了近期所有的『坟场』:NOT期权结构(L2)、NOT资金费率信号(L13——该策略使用OI,而非资金费率)、NOT强平数据源(L3——ETH的OI历史通过Binance指标可追溯至约2020,不同于90天的强平数据源)、NOTHyperliquid(L11)、NOT跨交易所套利(L1)、NOTN资产篮子(L12)。刻意采用低参数设计(3)以抵御过拟合——过拟合是头号杀手 #1(202x)。

迭代2做出了尽可能小的改动以修复第-2层失败:三个OI解析辅助方法(_to_ns、_row_ts、_row_val)原本是 @staticmethod,而验证代理会将传入的静态方法重新绑定为实例方法,因此 self._row_ts(row) 会将代理实例作为额外的位置参数传入(TypeError: takes 1 positional argument but 2 were given)。将它们改为接受 self 并通过 self.* 调用的普通实例方法后,在真实策略和代理中都能正确绑定,同时解析行为保持完全一致。其余部分未作任何改动——优势逻辑(OI确认的唐奇安通道突破、OI回落离场)、随K线连续变化的信号、所有参数、交易所/杠杆路由以及仓位配置,均与已通过第1层的版本完全一致。这保留了此前所有已通过的层级,仅修复了报告中的合成场景崩溃问题。

该假设的核心数据声明——『ETH的OI历史通过Binance指标可追溯至约2020』——已被回测证伪:在跨越 2019→2026 的14,354根4小时K线中,仅触发了7次入场,且全部集中在一个约2个月的单一窗口内(2026-03→05),原因是OI确认门槛只能在存在OI数据的地方触发。因此,本次运行中OI的覆盖范围仅为近几个月的窗口,远未达到2020(Binance 的 openInterestHist API 接口只提供有限的近期历史数据;我尚未NOT独立确认 Binance Vision 指标OI是否可以进一步回填——这一点应加以核实,而非假设成立)。其结果既无法验证(7笔交易,21的data_days——3阶段流程的滚动验证窗口和15天的留出测试各自只会持有约0笔交易),又在实际交易的地方明显亏损(0.027的profit_factor,14.3%的win_rate,每笔交易期望值 -$1352,夏普比率 -8.2,手续费占毛收益的 154%,0%的long_win_rate)。没有任何开发者参数或代码层面的修改能够解决OI的数据覆盖问题,而代码本身已经是稳健的。建议数据工程师在任何OI信号策略再次尝试之前,核实并尽可能回填完整的ETHUSDT未平仓量历史数据(Binance Vision 指标)BEFORE;在确认OI的覆盖范围涵盖整个K线区间之前,以OI为门槛的策略无论使用何种标的或参数,都将持续只能产生少量近期交易。如果日后确认OI可追溯至多年前,这一确切机制值得在合理样本上重新测试。

实现

基于ETHUSDT.BINANCE USD-M永续合约(4小时K线)的多空波段策略,ONLY在未平仓量上升确认时交易唐奇安通道突破。每根K线都会将已编目的open_interest序列(行字典列表,时间戳统一归一化为纳秒,取8小时滞后内最近的样本)与该K线对齐,并计算突破窗口内OI的百分比变化。收盘价高于此前12根K线高点且OI上升幅度 >= oi_rise_threshold 时做多;收盘价低于此前12根K线低点且OI上升时做空。策略在OI回落的那一刻离场(当前OI跌破入场以来峰值的oi_rollover_threshold),同时设有3%止损、8%止盈以及30根K线的时间止损。仓位按权益的per_leg_pct倍杠杆进行资本相对配置(2x倍杠杆已内置于仓位计算中)。完全对称的多空设计。

验证结果

验证失败(第 2 层 — 合成场景): 使用的参数:['per_leg_pct', 'min_notional', 'stop_loss_pct', 'oi_lag_seconds', 'take_profit_pct', 'max_holding_bars', 'breakout_lookback', 'oi_rise_threshold', 'oi_rollover_threshold'] 请检查 __init__ 是否从 self.parameters.get() 设置了所有属性。 - steady_uptrend: TypeError: EthOpenInterestConfirmedBreakoutLS._row_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690560000) - steady_downtrend: TypeError: EthOpenInterestConfirmedBreakoutLS._row_ts() takes 1 positional argument but 2 were given……展开收起

验证失败(第 2 层 — 合成场景): 使用的参数:['per_leg_pct', 'min_notional', 'stop_loss_pct', 'oi_lag_seconds', 'take_profit_pct', 'max_holding_bars', 'breakout_lookback', 'oi_rise_threshold', 'oi_rollover_threshold'] 请检查 __init__ 是否从 self.parameters.get() 设置了所有属性。 - steady_uptrend: TypeError: EthOpenInterestConfirmedBreakoutLS._row_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690560000) - steady_downtrend: TypeError: EthOpenInterestConfirmedBreakoutLS._row_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690560000) - flat_ranging: TypeError: EthOpenInterestConfirmedBreakoutLS._row_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690560000) - volatility_spike: TypeError: EthOpenInterestConfirmedBreakoutLS._row_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690560000) - zero_volume: TypeError: EthOpenInterestConfirmedBreakoutLS._row_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690560000) - price_gap: TypeError: EthOpenInterestConfirmedBreakoutLS._row_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690560000)

在更宽松的区间内优化oi_rollover_threshold,和/或要求OI的下降需持续超过1根K线。

oi_rollover_threshold默认0.97会在OI仅跌破入场以来峰值3%时便离场。对齐到4小时K线的每小时OI数据噪声较大,因此一次3%幅度的波动就可能导致过早离场——这很可能是低胜率的原因。这与假设STRUCTURE相符,因此并非逻辑不匹配,但设置过于激进。

应基于完整历史的可靠指标在BACKTEST_REVIEW处判断优势,而非基于7天的沙盒数据。

尽管指标极端(夏普比率 -20.1,PF 0.025,win_rate 0.143),第-3层沙盒仍NON-DIAGNOSTIC:metrics_reliable=false,data_days=7,仅有7笔交易。这并非win_rate=0/PF=0/反向的典型 bug 特征。方向极性、仓位规模、计数器、无前视偏差以及OI优势均已验证无误。

回测评审

夏普
-8.20
总收益率
-9.43%
最大回撤
11.80%
总交易数
7
胜率
14.3%
盈利因子
0.03

真正新颖、在OHLCV中不可见的信号(未平仓量);对称的多空设计填补了方向配额缺口

代码简洁:具备稳健的多键/多单位OI解析、8小时滞后对齐、诚实地不采用仅价格的回退方案、低3参数设计

假设的数据前提在实践中被证伪:尽管K线范围为 2019→2026,共观察到14,354根K线,但仅触发了7次入场,ALL集中在 2026-03→05 之间——本次运行中OI的覆盖范围仅为近约2-3个月的窗口,而非可追溯至2020

7笔交易 / data_days 21——数量远不足以支持滚动验证(3个窗口)或15天的留出测试;优化只会拟合噪声

测试样本明显亏损:total_return -9.43%,profit_factor 0.027,win_rate 14.3%,每笔交易期望值 -$1352,夏普比率 -8.2,手续费占毛收益的 154%,long_win_rate 0%

结局总结

在基于某个补充信号的声明构建策略之前,务必核实其实际的历史覆盖范围——该假设声称ETH OI历史长达多年,但实际数据源仅提供了近几个月的数据,导致以OI为门槛的策略只能产生极少量的近期交易;只有在确认并回填了覆盖整个K线范围的OI数据后,该机制才值得重新测试。

回测审核者在优化前的关卡处返回了『放弃』的结论:该假设的核心数据声明——即ETH未平仓量历史可追溯至约2020——被证伪,因为本次运行中OI的覆盖范围仅为近几个月的窗口,只产生了7笔交易以及21的data_days,远不足以进行滚动验证(walk-forward)或留出测试(holdout),且任何参数调整都无法修复数据覆盖问题。

一种基于ETHUSDT.BINANCE USD-M永续合约(4小时K线)的多空双向、单一标的波段策略,仅在未平仓量上升时交易唐奇安通道突破——将上升的OI视为新增杠杆资金推动行情的确认信号——并在OI从高点回落的那一刻立即平仓,使用的是在纯OHLCV中不可见的、已编目的未平仓量补充信号。

回测在跨越2019-2026的14,354根4小时K线中仅触发了7次入场,且全部集中在一个约2个月的单一窗口内(2026-03 至 2026-05),原因是OI确认门槛只能在存在OI数据的地方触发。测试样本明显亏损:总回报 -9.43%,盈亏比 0.027,胜率 14.3%(long_win_rate 0%),每笔交易期望值 -$1,352,夏普比率 -8.2,手续费占毛收益的 154%。未运行优化阶段。

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