跳至正文
全部策略

策略

ADA 永续合约订单流耗竭背离,多空(单标的 ADAUSDT.BINANCE USD-M——淡化未获激进 TAKER 订单流NOT确认的价格极端:在 taker-BUY 压力减弱时做空更高高点,在 taker-SELL 压力减弱时做多更低低点,明确风险,3 参数)

结局: 已放弃

AdaTakerFlowExhaustionDivergenceLS

结局总结

这个策略试图为工厂提供一个新视角——判断谁在主动交易,而不只是价格走向——通过在激进的主动成交订单流未能确认ADA价格极值时反向交易,遵循工厂唯一存活原型:单一交易品种、单一交易场所、多空双向、风险明确的交易。到第3次迭代时,开发者已经把工程工作做好:采用真正正交的订单流信号,以真实的盘中stop_market OCO括单取代已被证伪的基于收盘价的止损,按风险计算仓位并设置硬性名义价值上限,且不乘以杠杆;所有数据都在512笔交易中得到清晰衡量。但优势根本不存在——盈利因子为0.77,收益为-60.6%,单笔交易期望为负,回撤为61.6%,且从2022到2026的每一年中,多空两条腿的胜率都低于26%。分析师在回测审查时将其放弃,认定它是已被证伪、期望为负的另类均值回归反向交易策略;本次会话中这类策略已屡次失败,没有值得继续优化的参数区间。

假设

一种针对ADAUSDT.BINANCE USD-M永续合约的LONG-SHORT、SINGLE-INSTRUMENT、SINGLE-VENUE反转策略,它在价格信号上增加了ONE真正全新、正交的信息源——激进型TAKER订单流(taker买入与taker卖出成交量),这正是L38所允许的增强方式(新增信息源,而非动量克隆或更换标的)。其机制是订单流EXHAUSTIONDIVERGENCE:只有当激进的市价单流朝同一方向推动时,价格极值才可信。当价格缓慢攀升至新的局部HIGH,但其背后的净taker-BUY压力FALLING(反弹依靠被动漂移/渐弱的主动攻击)时,走势已耗尽并易于反转→SHORT;对于在WEAKENINGtaker-SELL压力下形成的新局部LOW则镜像处理→LONG。这与我待定集合中的每个想法都不同:它不是动量(ETH价格-OI),不是资金费率逆向(DOGE),不是失败突破结构(XRP),也不是期权(BTC日历价差);它读取的是WHO是否具有攻击性,而不仅仅是价格到了哪里。它刻意遵循该工厂中唯一存活下来的原型——单标的、单场所、多空双向、风险限定、跟踪管理、低参数——并保持LOW-FREQUENCY,使用4h K线与百分之几级别的目标,使得约0.10%USD-M的往返成本微不足道(避开fee_edge坟场)。在背离极值处设置HARD结构性止损,加上2x杠杆上限,使得此前杀死单标的MR策略的爆仓/-100%崩溃在结构上不可能发生。ADA是一个流动性好、散户集中、非BTC/ETH/SOL/XRP/DOGE的标的(分散我的交易品种),其订单流带有强烈、可利用的耗尽信号。3参数,以抵御日志中占主导的过拟合致死问题。

本次迭代处理了 ONLY Layer-4 QA 审查指出的两个相互关联的风险缺陷,同时保持信号路径(已通过 Layers 1-3)逐字节不变。缺陷 1,基于收盘价的止损:should_exit 只能在 NEXT 4H 收盘时比较盈亏与止损位,因此,若某根 K 线剧烈穿过该价位,退出时会远远偏离止损位。修复方式是重写 _submit_entry,通过 self.order_factory.bracket(...) 发出一个 OCO bracket——一个挂单的 stop_market 子单,会在止损价 INTRABAR 成交,另有一个限价 TP,设在 tp_r x R。这正是审查者提到的、已在 AVAX failed-breakout 同类策略上验证过的补救办法,使用相同的 API,以及相同的 _submit_exit 重写(取消挂单子单,然后平仓)作为后备路径。我在重写中保留了基类的预热和市场就绪检查,因此实盘/模拟盘行为不变。缺陷 2,杠杆放大超调:审查者展示了 min_stop_pct=0.8%,且 risk_frac=0.02 要求 2.5x 名义敞口,因此止损幅度较小的交易会被卡在 2x……展开收起

本次迭代处理了 ONLY Layer-4 QA 审查指出的两个相互关联的风险缺陷,同时保持信号路径(已通过 Layers 1-3)逐字节不变。缺陷 1,基于收盘价的止损:should_exit 只能在 NEXT 4H 收盘时比较盈亏与止损位,因此,若某根 K 线剧烈穿过该价位,退出时会远远偏离止损位。修复方式是重写 _submit_entry,通过 self.order_factory.bracket(...) 发出一个 OCO bracket——一个挂单的 stop_market 子单,会在止损价 INTRABAR 成交,另有一个限价 TP,设在 tp_r x R。这正是审查者提到的、已在 AVAX failed-breakout 同类策略上验证过的补救办法,使用相同的 API,以及相同的 _submit_exit 重写(取消挂单子单,然后平仓)作为后备路径。我在重写中保留了基类的预热和市场就绪检查,因此实盘/模拟盘行为不变。缺陷 2,杠杆放大超调:审查者展示了 min_stop_pct=0.8%,且 risk_frac=0.02 要求 2.5x 名义敞口,因此止损幅度较小的交易会被卡在 2x 杠杆上限(avg_position_pct 120.8%),使 18% 的超调演变为权益的 37% 损失。修复方式是彻底从 position_size 中移除杠杆乘数,改用绝对的 max_notional_frac=0.50 上限,将 risk_frac 减半至 0.01,并将 min_stop_pct 从 0.8% 提高至 1.5%,使上限不再经常被触及。由于仓位规模计算不再引用杠杆,按规则将配置中的杠杆设为 1.0(无 leverage_set_but_unused);由于策略会做空,期货交易场所仍然适用。现在每笔交易在挂单止损处的最坏情况约为权益的 1%,另加成交滑点;总敞口绝不会超过权益的一半,因此 49.6% 回撤 / -37k 单笔亏损路径从机制上已被杜绝,而不是仅靠断言避免。向审查者坦诚说明两点。第一,bracket 有一个副作用:当 SL/TP 子单处于挂单状态时,基类的 orders_open 检查会跳过 _process_primary,因此,移动止盈回吐、反向背离和时间止损退出会变成后备机制,只有没有保护性订单生效时才会触发;bracket 固定的 1R 止损 / 2.5R 目标现在决定了盈亏表现。这确实改变了退出特征,并且应能通过从机制上确保奖励风险比为正,改善审查者指出的第二个问题(avg_win $3290 ~= avg_loss $3203,胜率为 45.8%),但胜率会降低,我没有调整任何阈值来追求这一点。第二,我认同审查者对策略优势的担忧,并不对此提出异议:profit_factor 0.87 和 avg_trade_return_pct ~0.003% 表明,在这组样本中,反转机制扣除成本后并未盈利。我已按要求修复风险缺陷,没有尝试重新调优信号来挽救收益;如果限制尾部风险后的回测仍显示没有策略优势,就应基于该机制放弃此策略,而不是继续迭代。

明确的净亏损,突破 >50% 回撤硬性放弃线(L19)。profit_factor 0.77(<1.0),total_return -60.6%,夏普比率 -0.18,avg_trade_return_pct -0.398%(为负),max_drawdown 61.6%(CI 至 92.8%),共 512 笔交易,期望收益为每笔 -$116——且在 2022-2026 的每一年都亏损,滚动夏普比率几乎在整个历史区间内均为负。两条腿均告失败(long_win_rate 25.6%、short_win_rate 24.0%),因此核心假设——未获激进 taker 订单流确认的价格极端会反转——已被证伪:扣除成本后,耗竭背离反向策略在两个方向上都没有方向性优势。这不是费用脆弱性(avg_trade_return_pct 为负,而不只是微薄),也不是调参问题——当每个市场状态下的优势都为负且回撤达到 62% 时,没有可供优化的参数区间;最佳 -225 次试验优化只会过拟合少数表现良好的月份。这是本轮中屡次失败的另类均值回归反向策略类别。按照 PF<1.0 / 负收益 / 负 avg_trade_return_pct / >50%-DD 规则放弃,而不是花 2 小时优化。

实现

在 ADAUSDT.BINANCE USD-M 4H K 线上进行多空订单流耗竭反转。信号与通过第 1-3 层的版本完全相同:连续背离分数 price_pos - flow_pos,其中 price_pos 是收盘价在过去 30 根 K 线高低区间中的位置,经重缩放至 [-1,+1];flow_pos 则是在其自身 30 根 K 线区间内,对平滑后的 taker 主动买卖不平衡((买入-卖出)/(买入+卖出))进行相同重缩放。较大的正分数表示价格逼近区间顶部而 taker-BUY 攻势减弱 -> SHORT 这轮耗竭的上涨;较大的负分数表示在 taker-SELL 压力减弱时创出新低 -> LONG。本轮变化在于风险处理:现在以 OCO 括号单提交入场单(市价入场 + 在结构性背离极值处真实挂单的 stop_market 保护性止损 + 位于 2.5R 的限价止盈),仓位规模按止损处权益的 1% 计风险,并设定权益 50% 的硬性总名义头寸上限,不使用杠杆乘数。

验证结果

验证失败(第4层——QA审查): - THE“DEFINED-RISK,NO-BLOWUP BY CONSTRUCTION”CLAIM IS FALSIFIED BY THE SANDBOX。该假设声称硬性结构止损加上2x杠杆上限使清算/-100%爆仓“在结构上不可能”,但沙盒输出显示total_return -30%、max_drawdown 49.6%(CI至94.0%),以及单笔largest_loss为-$37,042(约占~$100k账户的~37%,约为名义2% risk_per_trade预算的~18x),其中avg_position_pct 120.8%(带杠杆)。造成这一结果的是两个相互耦合的缺陷,它们正是已在XRP失败突破姊妹策略中发现并修复的SAME风险控制故障:(1)THE STOP IS CLOSE-BASED,NOT INTRABAR。should_exit计算pnl_pp = get_position_pnl_pct(position, self._last_close),且仅在pnl_pp <= -stop_pp时触发,因此在剧烈穿过止损位的4小时K线中,直到NEXT收盘才退出,远超出预定止损位。(2)2x LEVERAGE AMPLIFIES THE OVERSHOOT。position_size将名义价值上限设为equity*leverage = 2x,且由于min_stop_pct=0.8%使得equity*0.02/0.008 = 2.5x触及该上限,紧止损交易通常按2x上限确定规模。2x名义价值的头寸超过基于收盘价的止损约18%(完全在ADA的4小时暴跌范围内)= 观察到的37%权益损失。因此,名义上的2%止损风险对于恰恰驱动49.6%回撤的尾部交易而言是虚幻的。 - 即使撇开风险缺陷不谈,沙盒显示不存在优势:profit_factor 0.87,avg_trade_return_pct ~0.003%(基本为零),total_return -30%,夏普比率0.38及CI [-1.29, 2.10]横跨零线,avg_win $3290 ~= avg_loss $3203,胜率为45.8%(期望值略为负)。在此样本中,订单流背离逆势交易在扣除成本后并未实现盈利性回归。这是留给回测审查者的优势问题,次于风险缺陷,但它意味着即使控制住尾部,该机制仍可能是净亏损者,若如此应予放弃而非重新调参。

在 backtest_review,使用完整的多年窗口进行评估;如果 win_rate 仍低于约 1/(1+tp_r) 的盈亏平衡水平,且在尾部风险得到控制后 profit_factor < 1.0,则 ABANDON taker-flow-divergence fade,而不要进行优化(当原始命中率低于该策略几何关系的盈亏平衡点时,并不存在可供调优的参数区间)。只有当完整窗口显示该 fade 足够频繁地达到其 2.5R 目标、从而产生收益时,才继续。

RISKFIXESVERIFIED,BUTTHESANDBOXSHOWSNOEDGE——在backtest_review处可能放弃。我在第2次迭代中提出的两个耦合风险缺陷已真正修复,指标证明了这一点:最大单笔亏损从-$37,042(约占权益的37%,约18x预算)降至-$1,146(约1.1%,即挂单止损处的1%risk_frac左右),max_drawdown从49.6%降至22.7%,avg_position_pct从120.8%降至42.1%(低于50%上限)。基于收盘的止损已被OCO括号内的真实挂单stop_market取代(K线内成交),并从仓位规模计算中移除了杠杆乘数。限定风险如今是真实的。HOWEVER,在尾部风险得到控制后,该策略仍是净亏损:total_return-15.5%,profit_factor0.74,win_rate0.247,夏普比率-0.71(CI[-2.52,1.03]),avg_trade_return_pct+0.114%(为正,但BELOW0.15%USD-M期货下限)。该括号结构使盈亏比在结构上为正(avg_win$2046对avg_loss$904,约2.3:1),但24.7%胜率略低于2.5R目标/1R止损结构下约28.6%的盈亏平衡点,因此期望值为每笔交易-$175——订单流背离逆势交易命中目标的频率不足以盈利。这不是QA代码正确性缺陷(代码现已正确,优势判断应由分析师基于完整多年回测做出);开发者明确同意,若在尾部受控的回测中仍无优势,则基于机制本身请求放弃。

回测评审

夏普
-0.18
总收益率
-60.59%
最大回撤
61.60%
总交易数
512
胜率
24.8%
盈利因子
0.77

加入价格信号的真正正交信息源(激进的主动成交订单流),并非动量克隆

构造稳健且风险明确:真实盘中 stop_market 括号单、基于风险的仓位规模、硬性名义头寸上限、不使用杠杆乘数

足够的样本量(512笔交易)和干净的数据源处理使这一阴性结果可靠(metrics_reliable=true)

profit_factor 0.77(<1.0)且total_return -60.6%——明确的净亏损策略

avg_trade_return_pct -0.398%——平均每笔交易LOSES资金(按名义价值的百分比计)

max_drawdown 61.6%(CI 至 92.8%)突破了 >50% 的硬性放弃线

每一个年份2022-2026都为负;几乎整个历史区间的滚动夏普比率都为负

两条腿均告失败(long_win_rate 25.6%、short_win_rate 24.0%)——耗竭背离反向策略没有方向性优势

win_rate 24.8%,峰度为 41.5——结果依赖罕见的尾部赢家,无法抵消大量亏损

迭代历史

验证失败(第 2 层——合成情景): 使用的参数:['tp_r', 'lookback', 'risk_frac', 'atr_period', 'trail_arm_r', 'entry_thresh', 'min_notional', 'min_stop_pct', 'trail_give_r', 'stop_atr_mult', 'max_hold_hours', 'flow_max_stale_hours'] 检查 __init__ 是否设置了 self.parameters.get() 返回的所有属性。 - steady_uptrend: TypeError: AdaTakerFlowExhaustionDivergenceLS._rescale() takes 3 positional arguments but 4 were given (bar timestamp: 1735692480000) - steady_downtrend: TypeError: AdaTakerFlowExhaustionDivergenceLS._rescale() takes 3 positional arguments……展开收起

验证失败(第 2 层——合成情景): 使用的参数:['tp_r', 'lookback', 'risk_frac', 'atr_period', 'trail_arm_r', 'entry_thresh', 'min_notional', 'min_stop_pct', 'trail_give_r', 'stop_atr_mult', 'max_hold_hours', 'flow_max_stale_hours'] 检查 __init__ 是否设置了 self.parameters.get() 返回的所有属性。 - steady_uptrend: TypeError: AdaTakerFlowExhaustionDivergenceLS._rescale() takes 3 positional arguments but 4 were given (bar timestamp: 1735692480000) - steady_downtrend: TypeError: AdaTakerFlowExhaustionDivergenceLS._rescale() takes 3 positional arguments but 4 were given (bar timestamp: 1735692480000) - flat_ranging: TypeError: AdaTakerFlowExhaustionDivergenceLS._rescale() takes 3 positional arguments but 4 were given (bar timestamp: 1735692480000) - volatility_spike: TypeError: AdaTakerFlowExhaustionDivergenceLS._rescale() takes 3 positional arguments but 4 were given (bar timestamp: 1735692480000) - zero_volume: TypeError: AdaTakerFlowExhaustionDivergenceLS._rescale() takes 3 positional arguments but 4 were given (bar timestamp: 1735692480000) - price_gap: TypeError: AdaTakerFlowExhaustionDivergenceLS._rescale() takes 3 positional arguments but 4 were given (bar timestamp: 1735692480000)

结局总结

加入真正正交的信息源(激进的主动成交流),并将风险控制机制重建为规范的盘中止损括单,并不会创造优势——如果多头和空头两条腿在每个市场阶段都亏损,那么衰竭背离这一前提本身就被证伪,任何参数调优都无法挽救一个负期望的反向交易策略。

该策略在 BACKTEST_REVIEW 阶段因多项硬性失败条件而被放弃:盈利因子低于 1.0、总收益和每笔交易收益均为负,且最大回撤突破 >50% 的硬性放弃线。由于两条腿均亏损,核心假设——未获订单流确认的价格极端会反转——已被证伪;扣除成本后没有方向性优势,因此该策略从未进入优化或分析阶段。

一种在 ADAUSDT.BINANCE USD-M 永续合约上进行多空交易的单标的、单交易场所反转策略,将激进 taker 订单流作为正交信息来源——淡化未得到激进订单流确认的价格极端(在 taker 买入压力减弱时做空新局部高点,在 taker 卖出压力减弱时做多新局部低点),并设置明确风险的盘中止损括号单。

回测结果是明确的净亏损:盈利因子0.77,总回报率-60.6%,avg_trade_return_pct -0.398%(平均每笔交易亏损),夏普比率-0.18,在包含512笔交易的大样本中期望值为-$116/笔。最大回撤为61.6%(CI至92.8%),在2022-2026的每一年均亏损,多空两端均失败(做多胜率25.6%,做空胜率24.0%),结果依赖于罕见的尾部盈利交易(胜率24.8%,峰度41.5)。

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