跳至正文
全部策略

策略

BTC区间网格流动性提供,仅挂单(单一标的BINANCE USD-M永续合约,15分钟K线,通过围绕滚动中间价的阶梯式被动LIMIT订单收割震荡——网格间距远大于挂单往返成本,趋势暂停+库存上限,专门攻击均值回归的吃单手续费致死问题,4参数)

结局: 已放弃

BtcMakerGridLiquidityProvision

结局总结

该策略对于该组合而言确实是一种真正新颖的类型——纯做市流动性供给——旨在通过在远高于 ~0.04% 做市商往返手续费的间距上使用被动 post-only 限价单捕捉网格震荡,从而击败本期拖垮所有均值回归策略的吃单手续费问题,并且它成功避开了杀死此前做市尝试的 300 秒 perf-timeout。其 13,295 笔交易中赢了 78% 笔,但这正是陷阱:盈利微薄(平均 $22),亏损则为肥尾分布,在持续的 2022 下跌趋势中,它逆势累积多头库存,直至账户于 2022-03-06(-100%,二月 2022 -107%)被完全清算。其内置的趋势暂停与库存上限防御机制显然未能遏制假设所明确指出的网格杀手。分析师在初次评审中即放弃了该策略,因为对 grid_step/n_levels/mid_lookback/trend_threshold 的任何调参都无法拯救一个会爆仓的策略——调参只会改变爆仓日期。

假设

一个在BTCUSDT.BINANCE(USD-M永续合约,15分钟K线)上的做市/流动性提供GRID,专门通过PASSIVEMAKER限价单来收割区间震荡——这是对本轮所有吃单均值回归策略致命弱点的一次刻意的结构性攻击。那些策略都以同样的方式死亡:一个真实但极其微小的震荡优势(−0.05%到−0.2%/笔交易)被约0.10%的吃单往返成本吞噬。在Binance USD-M上的挂单执行成本约为0.02%/单边(约0.04%往返),每个周期节省约0.06%,这足以将边际为负的震荡收割翻转为正值——这一杠杆此前从未被真正衡量过(此前唯一一次挂单尝试是死于300秒的PERFTIMEOUT,而非死于优势本身)。机制:维护一个滚动中间价(EMA),并放置一系列挂单式LIMIT订单——中间价下方为买入限价单,上方为卖出限价单——间距为grid_step(默认约0.35%,设定在约0.04%挂单往返成本之上WELL,以确保每个买入→卖出的成交周期在覆盖手续费后仍有缓冲),覆盖±N档(默认4)。随着价格震荡,买入成交积累多头库存,随后卖给上一档,反之亦然,每完成一个周期即捕获grid_step减去挂单手续费的收益。它明确地NOT那些已死亡的策略族:NOT吃单均值回归(仅挂单,且手续费逻辑是反转的),NOT因子轮动(我目前待定的三个轮动策略占据了那个领域——这是一个不同的策略TYPE),NOT趋势跟踪,NOT期权/套息/清算,NOT单一标的信号淡化(没有方向性预测——它是对称的流动性提供)。它是针对两个已知的网格策略杀手而设计的:(1)TRENDING行情——趋势过滤器(陡峭的EMA斜率或价格突破网格包络线)PAUSES在亏损一侧的新订单,并通过硬止损来平仓库存,防止逆势累积爆仓;(2)PERFTIMEOUT——网格档位每次再平衡时预先计算一次,成交检查按每根K线O(1)进行,对照K线高低点,从不重新扫描历史数据。填补了投资组合的两个空白:目前不存在流动性提供策略,且短周期策略占比不足(6.8%)。4参数(grid_step、n_levels、EMA/中间价回溯窗口、趋势暂停阈值)。

直接实现了该假设:(1) MAKER-ONLY——所有网格订单均使用order_factory.limit(post_only=True),交易所会拒绝而非允许其穿价成交,从而确保挂单成交(约0.02%/单边 ≈ 0.04%往返)。grid_step 0.35% >> 0.04%,因此每个买→卖周期在扣除手续费后均为净正收益,这颠覆了导致本轮吃单均值回归策略死亡的手续费算术逻辑。(2) 围绕一个ROLLING MID的LADDER——EMA(mid_lookback)为中间价;n_levels在下方挂只挂单买入单,在上方挂卖出单,间距为grid_step。成交会触发反向的TP限价单(买入成交->向上一档挂卖出单;卖出成交->向下一档挂买入单),这是经典的、能自我维持的、收割震荡的网格模式。(3) TREND-PAUSED——EMA斜率的趋势过滤器和网格包络线突破均会在趋势期间平仓库存并停止报价,以防御逆势累积爆仓。(4) INVENTORY-CAPPED——硬性净敞口上限(inv_cap_mult*n_levels*level_qty),加上天然受限的±n_levels档梯度,共同将敞口控制在有限范围内;若被突破,则通过市价平仓来清算。(5) NO PERF TIMEOUT——档位仅在制度转换时计算一次,并在on_order_filled中事件驱动式地重新填充;每根K线的运算量为O(1)。恰好有4个可调核心参数(grid_step、n_levels、mid_lookback、trend_threshold)。交易场所:必须使用期货BINANCE(MARGIN),因为该优势基于挂单手续费,且该网格是对称的多空双向流动性提供——现货的0.10%挂单模式及仅做多的性质会消除该优势。杠杆刻意保持在1.0:网格策略会逆势累积仓位,因此杠杆是错误的风险来源(正如该网格原型明确警示的那样),仓位规模参考config.leverage,以便日后若提高杠杆也能保持一致。填补了投资组合的两个空白(不存在流动性提供策略;短周期策略占比不足),并在15分钟BTC上产生频繁交易(0.35%震荡持续存在),避免了no_trades/verification_loop式的失败。已验证:第1层静态PASSED,全部6个第2层合成场景PASSED,信号连续且未冻结。

于 2022-03-06 发生账户完全清算:total_return -100%,max_drawdown 100%(CI 高点 100.07%),自三月 2022 起所有收益恰好为 0.0——该策略在窗口期内运行 2 年后爆仓,且此后未能恢复。该失败正是假设声称要防御的精准结构性网格杀手:在持续的 2022 下跌趋势中无限累积多头库存(二月 2022 = -107%),而 EMA 斜率趋势暂停与库存上限显然未能遏制。佐证指标确认了这是一个已崩溃的负期望值策略:profit_factor 0.646,Sharpe -0.95(CI [-3.32, -0.83] 全部为负),Sortino -0.89,information_ratio -2.45,PSR 0.0,return_skew -45.7 / 峰度 2179(灾难性左尾),且 avg_trade_return_pct 0.14% 即便在爆仓前也低于 0.15% 期货手续费下限。优化 grid_step/n_levels/mid_lookback/trend_threshold 无法拯救一个会清算账户的策略——参数调优仅能推迟爆仓日期,无法消除杠杆库存网格固有的逆势累积风险。根本已坏;不值得投入 2 小时进行优化。

实现

在BTCUSDT.BINANCE USD-M永续合约(15分钟K线)上的仅挂单区间网格/流动性提供策略。维护一个滚动EMA中间价,并挂出一系列PASSIVE只挂单LIMIT订单:n_levels个买入限价单位于中间价下方,n_levels个卖出限价单位于上方,间距为grid_step(0.35%)。买入积累中间价下方的多头库存,卖出积累上方的空头库存;每笔成交都会立即挂出一个反方向的、间隔一个grid_step的止盈限价单,因此每完成一个买入->卖出(或卖出->买入)周期,即可捕获grid_step减去约0.04%挂单往返成本的收益。由于grid_step(0.35%)被设定为远高于挂单往返成本,每次收割的震荡在覆盖手续费后仍有缓冲——这正是使用挂单执行(0.02%/单边)而非导致此前均值回归策略失败的吃单执行(0.05%/单边)的结构性意义所在。风险控制:EMA斜率趋势过滤器(|斜率|在slope_window上 > trend_threshold)和价格包络线突破(价格偏离网格锚点超过envelope_mult*n_levels*grid_step)都会触发全面清算——取消所有挂单并以市价平仓库存——然后暂停新增流动性,直至市场重新进入震荡状态;一个独立的库存上限会在净敞口超过inv_cap_mult*n_levels*level_qty时平仓。网格阶梯仅在制度转换时重建,并在on_order_filled中以事件驱动方式重新填充,因此每根K线的运算量为O(1)(不重新扫描历史数据→不会出现PERF超时)。

验证结果

分析师应在BACKTEST_REVIEW处ABANDON——挂单手续费杠杆已被直接测试,且并未挽救网格震荡收割效果。

核心假设被证伪(这是分析师的判断,而非代码缺陷):该假设的核心押注是挂单执行(约0.04%往返成本)能将震荡收割翻转为正值。沙盒测试——包含挂单成交和挂单手续费——反驳了这一点:total_return -37.3%,夏普比率-1.51(CI [-3.28, +0.19]),profit_factor 0.68,max_drawdown 38.3%,共1536笔交易。经典的网格趋势爆仓特征:win_rate 78%,但avg_loss $347约为5.4x avg_win $64,峰度54.96,tail_ratio 0.42。每个周期确实收获了IS挂单优势,但趋势累积导致的清算超过了它;在15分钟BTC上,trend_threshold=0.012过于宽松。

将沙盒结果视为一个乐观的上限;真实执行表现会比它更差,这进一步支持了放弃该策略的决定。

回测中的挂单成交真实性偏乐观,而整个假设都建立在这一点之上:基于K线的成交假设一个挂单post_only限价单在任何触及最高/最低价时都能全部成交,队列位置为零,无逆向选择。真实的挂单成交会受到逆向选择和队列竞争的影响,因此实盘表现会比已经-37%的沙盒结果更差。

对于该网格策略,应更重视美元期望值/profit_factor(0.68)而非avg_trade_return_pct。

具有误导性的单笔交易指标:avg_trade_return_pct = 0.155%勉强超过了0.15%下限,然而avg_trade_pnl_usd为-$24,且total_return -37.3%。按名义金额计算的平均值被大量小额正收益周期所主导,而美元亏损则集中在较大规模的累积库存清算中,因此那个超过0.15%的读数只是一个假象,而非通过可行性检验的信号。

回测评审

夏普
-0.95
总收益率
-100.00%
最大回撤
100.00%
总交易数
13295
胜率
78.3%
盈利因子
0.65

对于已部署的投资组合而言,这是一种真正新颖的策略类型(仅挂单流动性提供)

挂单手续费翻转假设(约0.04%往返成本 vs 约0.10%吃单成本)单独来看在经济上是合理的

性能超时防护机制(O(1)事件驱动成交)起了作用——本次运行未出现导致此前挂单尝试失败的300秒超时

2022-03-06上的ACCOUNT LIQUIDATED——total_return -100%,max_drawdown 100%;该策略在窗口期最后约4年内已经死亡,收益为零

核心网格杀手(逆势累积)已在 2022 熊市实现,尽管设有趋势暂停 + 库存上限防御——二月 2022 为 -107%

profit_factor 0.646,夏普比率-0.95(CI [-3.32, -0.83]完全为负),索提诺比率-0.89,information_ratio -2.45,PSR 0.0

灾难性的肥厚左尾:return_skew -45.7,峰度2179,largest_loss -$1,416 对比 avg_win $22

即使在爆仓之前,avg_trade_return_pct 0.14%也低于0.15%期货手续费下限

结局总结

挂单手续费翻转确实解决了手续费致死的问题(性能超时防护机制也起了作用),但杠杆库存网格的致命风险在于逆势累积——EMA斜率的趋势暂停机制和库存上限不足以遏制这一风险,因此高胜率掩盖了会导致账户爆仓的灾难性左尾风险。

该策略在预优化回测评审关卡因账户完全清算而被放弃:其声称要防御的精准网格杀手应验了——在持续的 2022 下跌趋势中无限累积多头库存(二月 2022 -107%),而 EMA 斜率趋势暂停与库存上限显然未能遏制——参数调优只能推迟爆仓日期,无法消除固有的逆势累积风险。

一个在BTCUSDT.BINANCE(USD-M永续合约,15分钟K线)上的仅挂单区间网格流动性提供策略,通过围绕滚动EMA中间价的一系列被动只挂单限价单来收割震荡,间距远高于约0.04%挂单往返成本,并配有趋势暂停过滤器和库存上限,旨在防御逆势累积爆仓——这是对均值回归吃单手续费致死问题的一次结构性攻击。

它导致账户爆仓:总收益-100%,最大回撤100%,于2022-03-06爆仓,此后约4年收益为零;盈亏比0.646,夏普比率-0.95(CI完全为负),信息比率-2.45,灾难性左尾(偏度-45.7,峰度2179),且即使在爆仓之前,avg_trade_return_pct 0.14%也低于0.15%手续费下限,共13,295笔交易,胜率为0.78。

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