跳至正文
全部策略

策略

ADA 被动流动性提供均值回归,多空(单品种 BINANCE 永续合约,15 分钟K线,在滚动中间价周围的波动率带处用 MAKER 限价单入场——赚取做市方费用(0.02%),而不是支付吃单方费用(0.05%);在均值处用做市限价单退出,仅在风险控制时使用吃单止损,NO 趋势过滤器,高频触发,3 个参数)

结局: 已放弃

AdaMakerLiquidityProvisionReversionLS15m

新颖的挂单执行框架和经过良好测量的样本(2,854 笔交易);清晰的增量 O(1) 滚动统计;真正尝试了风险控制(风险上限仓位、紧急熔断、冷却期)

假设

在 ADAUSDT.BINANCE(USD-M 永续合约,15 分钟 K 线)上的 LONG-SHORT 单品种日内均值回归,其决定性特征是 EXECUTION,而非信号 —— 这是对工厂头号杀手 #1 fee_edge 的直接结构性攻击(163 次爆仓,也是边际回归优势不断消亡的直接原因)。此前每个回归/趋势策略都以 MARKET(吃单)订单进出,每边约 0.05%,往返约 0.10%,这吞噬了亚 -0.15% 的日内回归。该策略改为提供流动性:在滚动中价周围的波动率区间内挂出 MAKER 限价单,并以 0.02% 挂单方成交(根据交易场所费率表:BINANCE 挂单方 0.0200% 对比吃单方 0.0500%),然后以 MAKER 限价单在均值处离场 —— 将约 0.10% 的吃单往返转化为约 0.04% 的挂单往返,将回归策略必须逾越的成本下限降低了超过一半。其优势与已部署的 SOL VWAP 回归走到 paper 阶段所依赖的成熟优势相同(深度永续合约在短期流动性失衡中过度波动并回归),但作为对急于超价的吃单方的 LIQUIDITY PROVIDER,该策略收取买卖价差而非支付价差。关键的是,它 NOT 刚被标记为反模式的'趋势过滤 VWAP 偏离回归'的重新参数化(L7):刻意没有 NO 趋势过滤器(已部署的成功策略明确使用了趋势门控 OFF 并频繁触发),其机制是挂单方流动性提供,这一类别在 ZERO 既往失败模式中出现过。它是单品种(无横截面 N 选一过拟合空间)、高交易次数(跨所有制度可诊断,无单一制度伪影)、低参数、纯 OHLCV,并填补了欠代表性的 long_short(14.6%)和短周期(6.5%)桶。

第 4 次迭代修复了两个 QA 代码缺陷,并保留信号路径、增量 O(1) 滚动统计和重新挂单滞后机制(这些均已通过第 1-3 层)不变。(1) 爆仓/风险控制不足:仓位现为名义上限的 MINIMUM(position_frac 由 0.50 削减到 0.15),并使用止损距离风险预算 数量 <= 权益 * risk_pct / (stop_atr * ATR),因此单次止损最多消耗权益的 1%,且 avg_position_pct 在 1.0x 时不再超过权益;权益底限熔断在仓位基准的 60% 以下时取消、关闭并永久停止交易(DOGE/BNB/LINK 同类策略使用的防护);止损后冷却期在 8 根 K 线(2 小时)内阻止新的入场报价,打破了再次挂单进入同一趋势的死亡螺旋。冷却期从不阻止离场报价。(2) K 线内双重成交:报价现为 ONE-SIDED —— 仅在价格被拉伸的方向挂单 —— 因此两个全量的 post_only 报价不再可能在剧烈波动的 15 分钟 K 线内同时成交并在下次 _manage 取消对侧之前翻转仓位;这也大约减少了一半的 1547 笔交易磨损。edge_concern(ADA 上挂单往返净优势,乐观的 K 线级成交建模)是分析师关于机制的疑问,而非代码缺陷,因此我没有为了追逐它而改变信号 —— 上面的风险修复限制了左尾,使得期望值不再像在压路机前捡硬币。

账户 LIQUIDATED 且期望为负——做市执行封装无法挽救单品种均值回归反转策略。在超过 2,854 笔交易中:total_return -100%,在 2021-01-26(max_drawdown 100%)发生清算,profit_factor 0.465,avg_trade_return_pct -0.063%(负值),期望值为 -$47/笔交易,夏普比率为 -2.50,其 CI [-14.2, -2.30] 完全低于零,且 PSR 0.0。尽管配备了完整的迭代-4风险机制(风险封顶仓位、权益下限熔断开关、止损后冷却),该策略仍然爆仓,因为在一月-2021趋势中挂出被动做市流动性,会恰好在反转策略错误时成交(每月 -131% 位于 2021-01,每日 -102% 位于 01-21);熔断开关触发得太晚。收益风险结构性倒置(avg_win $57 对比 avg_loss $309,约为 5:1),并带有反转进入崩溃行情的尾部(偏度 -21,峰度 451)。核心做市商论点被数据否定:total_impact_usd $94.8k 加上占毛收益 14.5% 的佣金,意味着执行成本仍占主导。这是L55单品种日内均值回归反转策略族(0/174 个幸存者)与 L19(清算/100% DD)的交叉组合。调整 band_k/stop_atr/mid_window 无法扭转一个已清算且期望为负的反转策略。失败模式:no_edge/risk_reject 单品种做市均值回归,已清算(L55/L19)。

实现

在 ADAUSDT.BINANCE USD-M 永续合约上的多空做市流动性提供均值回归策略,15 分钟K线,纯粹的 OHLCV。滚动中间价(SMA-32)和 ATR-14 定义了一个 band_k x ATR 的波动率带;策略在价格偏离方向的一侧挂出一个 post_only 做市限价单(价格高于中间价时,在 mid+band 处挂 SELL,低于中间价时,在 mid-band 处挂 BUY),因此超调且不耐心的吃单者会以 0.02% 做市费率成交。成交后,在滚动中间价处挂出做市限价单退出。风险控制仅使用吃单方式:2-ATR 止损和 8 小时的时间止损,二者之后各跟随 2 小时的报价冷却。仓位取固定 $100k 基础仓位的 15% 与止损距离风险预算中的较小值(每次止损占权益的 1%),如果权益跌破基础仓位的 60%,权益下限熔断开关会将仓位清零并停止策略。无趋势过滤器,3 个可调参数(band_k、stop_atr、mid_window)。

验证结果

验证失败(第 4 层 — QA 审查)[类别=code_defect]: - [edge_concern] 与风险缺陷无关:负期望的 LP 概况(胜率 74.5% 但 avg_win $93 对比 avg_loss $774,largest_loss -$2588,偏度 -13.7,峰度 194)—— 在压路机前捡挂单的便士;avg_trade_return_pct +0.018% 低于 0.15% 下限。挂单成交建模在 15 分钟 K 线回测中也过于乐观(post_only 限价单在任意一笔击穿时即成交,忽略了排队位置),因此 74.5% 的胜率被高估。即使修复了风险模型后,分析师仍应验证挂单往返在 ADA 上是否具有正净优势。 - 沙盒中的账户 LIQUIDATES(已爆仓=true 2026-05-13,-100% 回报,100% max_drawdown),持仓 avg_position_pct 131.6% — 在声明的 1.0x 杠杆下,敞口超过权益的 100%。原因是风险控制不足:没有权益底限熔断(其 DOGE/BNB/LINK 同类策略已添加而未被爆仓),在宽 2-ATR 止损下使用权益的 50% 进行仓位计算,并且止损后没有冷却期,因此立即在无趋势过滤的情况下再次挂单进入同一趋势 —— 这是死亡螺旋,而不仅仅是负优势。 - 双向全量 post_only 报价可能在剧烈波动的 15 分钟 K 线内同时成交,在下一次 _manage 取消对侧之前导致非预期的 K 线内往返/方向翻转;导致 1547 笔交易的磨损。

回测评审

夏普
-2.50
总收益率
-100.00%
最大回撤
100.00%
总交易数
2854
胜率
71.5%
盈利因子
0.47

新颖的挂单执行框架和经过良好测量的样本(2,854 笔交易);清晰的增量 O(1) 滚动统计;真正尝试了风险控制(风险上限仓位、紧急熔断、冷却期)

尽管配备了完整的迭代-4风险机制,账户 LIQUIDATED(total_return -100%,max_drawdown 100%,清算 2021-01-26)仍然爆仓——做市反转策略在一月-2021趋势中挂单,熔断开关触发得太晚

负期望、无优势:PF 0.465,avg_trade_return_pct -0.063%,期望 -$47/笔,夏普 -2.50(CI [-14.2, -2.30]),PSR 0.0,omega 0.044,IR -3.37

RR 结构反转(avg_win $57 对比 avg_loss $309,~5:1);return_skew -21,峰度 451 —— 逆势抄底崩盘的尾部风险

做市商论点被否定:total_impact_usd $94.8k + 毛收益的 14.5% 佣金——执行成本仍占主导,而向趋势性超调提供流动性会恰好在错误时点成交

L55 单品种日内均值回归反转策略族(0/174 个幸存者)+ L19 清算/100% DD

迭代历史

验证失败(第 3 层——沙盒回测):冒烟测试超过了 300 秒的时限。这几乎总是意味着每根K线的工作量会随历史数据扩展——例如反复扫描完整的资金费率/补充序列,或在每根K线上于 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预计算已排序的时间戳数组 ONCE 并使用 bisect,或缓存按时间戳索引的查找结果,使每根K线的成本为 O(log n) 而非 O(n)。

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