跳至正文
全部策略

策略

SOL 做市商执行日内反转,多空(单一工具 BINANCE 永续合约,15 分钟 K 线,DEPLOYED SOL 反转赢家的费用优化版本 — 以 AND 入场,以被动 MAKER 限价单以 0.02%/边的费率退出,将往返从 ~0.10% 接单方削减至 ~0.04% 做市商,NO 趋势过滤器,高频触发,3-参数)

结局: 已放弃

SolMakerVwapReversionLS15m

回测门槛: - 指标不可靠:7699 笔交易 / 2041 个数据日提供的证据过少(需要在 >=10 天内 >=5 笔交易)— 提高信号频率或扩大窗口

假设

这NOT是一个全新信号 — 它是DEPLOYED,纸上阶段 'SOL 日内 VWAP-反转' 的赢家,其最大的单一弱点已修复:执行成本。工厂的第 #1 号杀手是 fee_edge(163 次死亡,以及 DOGE/XRP/ETH-BTC 反转被放弃的明确原因)— 流动永续合约上的反转优势是真实的,但相对于 ~0.10% TAKER 的往返是边际的。经过验证的 SOL 反转甚至清除了 0.10% 障碍(因此才进入纸上阶段)。此变体保持相同的已验证优势和工具,但在入场和盈利退出两端均使用 PASSIVE MAKER 限价单执行,每边支付 0.02%(根据交易场所表:BINANCE 做市商 0.0200% vs 接单方 0.0500%),实现 ~0.04% 的做市商往返 — 将成本底线减半以上,并将已经验证的确切策略的净优势大致DOUBLING。它故意NOT添加趋势过滤器(刚才命名的 L7 反模式杀死了 DOGE/XRP 变体;获胜的 SOL 配方明确为趋势门控 OFF 且高频触发),并且是单一名称(无横截面 best-of-N 过拟合面)、高交易数(跨所有行情状态诊断 — 无单一行情状态伪影)、纯 OHLCV,且低参数。它不同于已部署的接单方 SOL 反转(做市商 vs 接单方经济性 — 实质上不同、更优的成本结构),也不同于待定的 ADA 做市商反转(已验证优势 SOL 名称;已部署的赢家是参考,而非未经验证的替代品)。它填补了 long_short(14.7%)和短周期(6.7%)。

精确实现假设:已部署的 SOL 日内 VWAP-反转优势,同样的名称和同样的信号,通过在入场和盈利退出两端均被动报价将执行成本减半(post_only=True 的入场保证做市商;退出单挂在锚点,只有当价格已向有利方向超调时才可成交)。未添加趋势过滤器(明确的 L7 反模式),设计保持 3 个旋钮(band_k、stop_atr、vwap_window)且高频触发。此迭代是对 previous_code 的最小编辑:信号、区间、仓位、止损、时间止损、滞后和缓冲逻辑均未改动(第 1-2 层保持绿色);唯一的补充是 on_order_filled(),它在成交落地的瞬间取消仍有效的反向入场报价,并立即挂出做市商止盈单,关闭那个第二笔双边报价可能反转账本、或止盈成交后孤立报价可能遗留的 K 线内窗口。交易场所保持在 BINANCE USD-M(需要多+空,0.02% 做市商),杠杆 1.0,因为仓位不需要放大的名义价值。

在决定性的 9,694 笔交易 / 6 年样本上的负期望值:账户被清算(total_return -100%,清算 2020-12-06),profit_factor 0.357,Sharpe -2.24,期望值 -$50/笔,而 avg_trade_return_pct 为 -0.029%(BELOW ZERO,不仅仅是低于做市商底线)。整个假设依赖于将往返成本减半,但没有正的毛优势可供更便宜的做市商执行来挽救 — 反转信号是净负的。结构性 R:R 是不利的(avg_loss ~5x avg_win;~1 ATR 做市商目标 vs 2 ATR 接单方止损,需要 >66.7% 的胜率,而 64% 的胜率不够),所以接单方止损/时间止损的尾部亏损占主导。优化 band_k/stop_atr/vwap_window 无法逆转低于零的期望值。QA 的优势担忧已在全历史中得到证实,这是迭代-1放弃的重演。abandon_class=negative_expectancy。

实现

SOLUSDT.BINANCE USD-M 永续合约上的多空日内 VWAP-反转,15 分钟 K 线,使用 PASSIVE MAKER 限价单执行。锚点 = 滚动 96 根 K 线(1 天)成交量加权平均价格;区间 = band_k x ATR(14)。在空仓时,策略挂出 TWO-SIDED 只挂单限价单(BUY 在 vwap - 区间,SELL 在 vwap + 区间),使得超调公允价值的不耐烦的接单方以 0.02% 的做市商费率成交我们,而非支付 0.05% 的接单方费率。一旦成交,做市商限价止盈单挂在 VWAP 锚点(反转目标)。只有风险退出为接单方:当价格超出入场 stop_atr x ATR 时的市价止损,以及 32 根 K 线(8 小时)的时间止损。重新报价滞后(状态变化 / 缺失报价 / 锚点漂移 > 0.25 ATR)保持订单抖动低,增量滚动 OHLCV 缓冲保持每根 K 线成本为 O(window),而 on_order_filled 对账在成交瞬间取消遗留报价并挂出退出单。无趋势过滤器,单一工具,纯 OHLCV,路径无关的封顶仓位(min(base_capital, 权益) 的 50%)。

验证结果

留给优化器:band_k 和 stop_atr 应被联合搜索,使做市商止盈距离和接单方止损距离在观察到的命中率下产生可实现盈亏平衡的 R:R。

默认参数化产生不利的 ~1:2 风险回报比(止盈位于 VWAP 锚点,离入场约 ~1 ATR;接单方止损为 stop_atr=2 ATR,超出入场),因此毛盈亏平衡需要 >66.7% 的胜率。这对于默认回撤而言是结构性的,不是缺陷,但它解释了为什么尽管有 68% 的胜率,烟雾测试仍然亏损。

分析师在审查全历史结果时应将做市商成交的真实性视为已知注意事项;考虑在进行纸上交易之前是否值得应用成交概率/排队折扣。

avg_holding_bars=0.0 表明在基于 K 线的回测中,当 K 线区间跨越两个价位时,入场做市商限价单与 VWAP 止盈做市商限价单在同一根 K 线内被成交。对于整个论点就是捕获 0.04% 做市商 vs 0.10% 接单方成本利差的策略而言,这种乐观的 K 线内做市商成交假设可能相对于无法保证的实盘被动成交高估了实际优势。

沙盒深度为负(total_return -57.9%、PF 0.556、avg_trade_return_pct -0.0065%),尽管胜率为 68%,原因是结构性风险/回报不利:在 VWAP±区间(区间 = band_k*ATR = 默认值下的 1 ATR)入场,止盈位于 VWAP 锚点,给出 ~1 ATR 的目标,而止损是 2 ATR(stop_atr)接单方止损加上 8 小时时间止损,即 ~1:2 的 R:R,仅盈亏平衡就需要 >66.7% 的胜率。avg_loss($464)约为 4x avg_win($122),而 largest_loss -$2212,因此尾部亏损(止损/时间止损的接单方退出)淹没了众多的小额做市商盈利。此外 avg_holding_bars=0.0 意味着基于 K 线的回测会在任意一根 K 线区间同时跨越两者时,在同一 SAME 根 K 线内同时成交入场和 VWAP 止盈做市商限价单 — 这是一个乐观的做市商成交模型,可能高估了整个假设所依赖的实际做市商优势。这两点都交由分析师根据全历史/优化后的数字判断(band_k 和 stop_atr 是可调的,可以重新平衡 R:R);实现本身是忠实的。metrics_reliable=false 以及 Sharpe/收益符号不一致(Sharpe 2.20 vs -57.9%)进一步表明此烟雾测试无法衡量优势。

回测评审

夏普
-2.24
总收益率
-100.00%
最大回撤
100.00%
总交易数
9694
胜率
64.4%
盈利因子
0.36

忠实、精心设计的做市商执行 / 重新报价滞后实现,样本量大(9,694 笔交易)且在所有行情状态下具有统计决定性

正确的交易场所经济性推理(做市商 0.02% vs 接单方 0.05%)

账户 LIQUIDATED(total_return -100%,清算 2020-12-06);profit_factor 0.357,Sharpe -2.24,Sortino -2.23,information_ratio -4.27 — 全部深度为负

avg_trade_return_pct -0.029% 为 NEGATIVE,即在做市商成本优势起作用之前,每笔交易的优势已低于零 — 更便宜的往返无法挽救一个没有毛优势的机制

不利的结构性 R:R:avg_loss($220)~5x avg_win($43),largest_loss -$11,780;~1 ATR 的做市商目标相对于 2 ATR 接单方止损 + 8 小时时间止损,盈亏平衡需要 >66.7% 的胜率,而接单方止损/时间止损的尾部亏损淹没了众多的小额做市商盈利(QA 担忧已在全历史中得到证实)

分析

回测门槛: - 指标不可靠:7699 笔交易 / 2041 个数据日提供的证据过少(需要在 >=10 天内 >=5 笔交易)— 提高信号频率或扩大窗口

迭代历史

验证失败(第 3 层 — 沙盒回测):烟雾测试超出 300 秒的时钟限制。这几乎总是意味着随历史规模线性增长的逐 K 线工作量 — 例如重新扫描完整的资金费率/补充数据序列,或在每根 K 线的 calculate_signal()/on_bar() 中重建列表并调用 min()/sorted()。在 __init__ 中预计算排序后的时间戳数组 ONCE 并使用 bisect,或按时间戳缓存查找,使每根 K 线的成本为 O(log n) 而非 O(n)。

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