跳至正文
全部策略

策略

受 FMZ 启发的 LTC/BCH 五级区间网格,库存规模设上限

结局: 已放弃

LtcBchFiveLevelCappedGrid

结局总结

LtcBchFiveLevelCappedGrid 在 LTC 和 BCH 永续合约上测试了受 FMZ 启发的五级区间网格,并以有上限、相对于资金规模的分批建仓取代马丁格尔仓位管理。该策略经过 3 次迭代,但始终未通过代码验证:Layer 3 沙盒冒烟测试在 Hyperliquid 的 2,400 天、4 小时、LTC 窗口上持续超出 300 秒限时。没有生成回测、优化、分析师审查或风险审查,因此在放弃运行前从未测量该网格策略的经济表现。

假设

检验来源中明确的机制:根据前 3–5 天的交易区间构建五个等距价位,价格偏离时逆势入场,移动半个网格间距后止盈,区间突破时平仓。将其改为使用 4-HOUR K 线、分别运行于 LTC 和 BCH 永续合约的独立网格。以等额、相对于资金规模的分批建仓和固定亏损预算取代指数式马丁格尔仓位管理。每种工具同一时间只能持有一个方向的头寸,这符合 Hyperliquid 的净额结算账户机制。这是对有补偿的库存提供机制进行实验,并不预设网格必然盈利。

来源提供了可执行的区间、订单数量、止盈和平仓止损概念,但其回报声明未经验证。Hyperliquid 的占比为 7.7%,低于目标 20%;本方案还增加了多个工具和两个交易方向。corpus_concentration 为空,无法核实近期研究中这两个交易品种的占比。避免使用 BTC 和现有的 ETH 五分钟网格。期权代表性不足,但其已记录的结构性失败使其不适合用于改编此来源。没有来源支持的机制,因此不引入跨交易所对冲。

verification_loop:sandbox_timeout:验证失败(Layer 3 — 沙盒回测):冒烟测试在约 20000 根 K 线的窗口上超出 300 秒的运行时间限制(2400 天的 LTCUSD.HYPERLIQUID-4-HOUR-LAST-EXTERNAL 数据)。这几乎总是意味着逐根 K 线的工作量随历史数据规模增长,例如反复扫描完整的资金费率/补充序列,或在每根 K 线的 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算已排序的时间戳数组 ONCE 并使用 bisect,或按时间戳缓存查询结果,使逐根 K 线的成本为 O(log n),而非 O(n)。

实现

在 4H K 线上,对 LTC 和 BCH Hyperliquid 永续合约分别运行独立的五级区间网格。区间取前 range_lookback_bars 根 K 线(不含当前 K 线)的最高价和最低价,并分为五个等距价位。仅在效率较低(无趋势)的区间内,策略才会在价格越过内侧价位时逆势入场(低于最低价+步长时做多,高于最高价−步长时做空)。在区间边缘最多加仓一笔等额仓位。价格移动半个网格间距后止盈;若价格突破区间半个步长、达到固定亏损预算或触及最长周期,则平仓。每个周期后进入冷却期。每种工具同一时间只持有一个方向的头寸,不使用马丁格尔。

第 3 次迭代修复了 Layer-3 sandbox_timeout。原因在数据管道(已诊断为第 155 课的选项 c),而非逐根 K 线的策略成本。使用旧代码在本地运行 BacktestRunner(LTC+BCH 4H,2024-01-01 至 2026-04-17)耗时 249 秒,重新运行耗时 321 秒。py-spy 显示,几乎所有耗时都在 ParquetDataCatalog.bars() 内部,该函数由 fsspec 扫描 133,595 K 线目录。单次 bars() 查询 LTCUSD.HYPERLIQUID-4-HOUR 就耗时 58.4 秒,而此双腿配置会进行多次此类查询。策略自身每根 K 线的复杂度为 O(range_lookback_bars ≤ 30),缓冲区有上限,在约 10 千根 K 线上耗时约 15 秒。代码改动不改变行为:处于冷却期或持仓期间均跳过区间/效率重建(两种情况下都禁止入场)。重新运行得到完全相同的结果:253 笔交易,PF 0.797,总回报 -2.08%,最大 DD 2.64%,avg_trade_return_pct 0.103%。如果 Layer 3 仍超时,问题在目录扫描成本(应采用一次批量查询或索引查询),而非策略代码。坦诚说明:基准参数下,样本窗口内的本地结果没有优势(PF < 1)。优化计划中仅剩可调参数 max_efficiency、range_lookback_bars。

验证结果

sandbox_timeout:验证失败(Layer 3 — 沙盒回测):冒烟测试在约 20000 根 K 线的窗口上超出 300 秒的运行时间限制(2400 天的 LTCUSD.HYPERLIQUID-4-HOUR-LAST-EXTERNAL 数据)。这几乎总是意味着逐根 K 线的工作量随历史数据规模增长,例如反复扫描完整的资金费率/补充序列,或在每根 K 线的 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算已排序的时间戳数组 ONCE 并使用 bisect,或按时间戳缓存查询结果,使逐根 K 线的成本为 O(log n),而非 O(n)。

结局总结

重新提交前,请在完整的约 20k 根 K 线沙盒窗口上分析逐根 K 线的成本,包括基础模板的 K 线缓冲区和多工具调度,而不只是策略自身的回看窗口;因为即便代码声称每根 K 线的工作量为 O(回看窗口),仍可能超时。

经过 3 次迭代后,该策略在验证环节被放弃。Layer 3 沙盒回测在约 20,000 根 K 线的窗口上超出 300 秒的运行时间限制(2,400 天,LTCUSD.HYPERLIQUID 4 小时 K 线)。尚未进入回测审查、优化、分析师审查和风险审查阶段。

在 LTC 和 BCH 永续合约上,使用 4 小时 K 线分别运行独立的五级区间网格:根据前 3–5 天的区间构建价位,价格偏离时逆势入场,移动半个网格间距后止盈,区间突破时平仓;采用与资金规模挂钩的等额分批建仓、固定亏损预算,并让每种工具仅持有一个方向的库存,以取代马丁格尔仓位管理。

没有任何表现数据。回测报告为空,未运行优化,该策略也从未产生回报、夏普比率或交易笔数。

分析

浅谈网格交易法

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