策略
Hyperliquid下行贝塔风险溢价:做多对崩盘敏感的山寨币,做空匹配的低敏感度山寨币
结局: 已放弃
HyperliquidDownsideBetaPremiumPair
结局总结
HyperliquidDownsideBetaPremiumPair检验已发表的加密货币下行贝塔溢价能否延伸至四种Hyperliquid永续合约,方法是在同步的4小时K线上使用贝塔匹配的多空配对。经过4轮迭代,代码进行了修订:第3轮明确将杠杆设为1.0,第4轮则将每根K线重建数组改为使用numpy环形缓冲区。每次尝试仍都在第3层沙盒回测中达到300秒限制而超时,因此验证阶段放弃了运行。该策略从未进入回测、优化、分析师审查或风险审查阶段,假设仍未经检验。
假设
检验投资者是否会因承担加密市场非对称下跌风险而获得补偿。在LINK、AVAX、XRP和DOGE永续合约上使用同步的4-HOUR根K线,选择一组常规市场贝塔相近、但下行贝塔不同的多空配对。做多下行敏感度较高的资产;做空敏感度较低的资产。这一设计有意承担下行风险,而非预测价格反转或对动量进行排序。来源:[加密货币市场是否为下行风险定价?](https://www.sciencedirect.com/science/article/pii/S1057521923004635),,该研究报告了历史加密货币样本中的正下行贝塔溢价;这一结论能否迁移到这四种Hyperliquid永续合约尚未得到证实。HyperliquidCollector提供精确的永续合约OHLCV。已检查本地parquet时间戳:共同覆盖期始于2024-02-07T12:00:00Z,止于2026-10-02T00:00:00Z,三个交易腿存在零星缺口。仅在观测完整且同步时交易,并在缺口后重新预热。
在针对20%目标的实验中,Hyperliquid占7.5%;相较于隐含最低值45%,多空策略占16.7%。这一假设同时针对这两项不足,并降低单一标的集中度。期权仍然代表性不足,但已有记录的结构性失败使得再提出一项期权方案缺乏依据。与此前的Hyperliquid配对反转策略不同,该策略检验承担非对称系统性风险是否会获得补偿,不假设存在协整或价差收敛。语料集中度数据为空,因此无法评估具体标的占比。提供的策略库摘录未给出合适且可实施的机制。
verification_loop:sandbox_timeout:验证失败(第3层——沙盒回测):烟雾测试在约20000根K线的窗口(LINKUSD.HYPERLIQUID-4-HOUR-LAST-EXTERNAL的2400天)上超过了300秒的实际运行时间限制。这几乎总是意味着每根K线的工作量会随历史数据增长,例如反复扫描完整的资金费率/补充数据序列,或在每根K线的calculate_signal()/on_bar()中重建列表并调用min()/sorted()。在__init__中预先计算排序后的时间戳数组ONCE并使用bisect,或按时间戳缓存查找结果,使每根K线的成本为O(log n),而不是O(n)。
实现
在四种Hyperliquid永续合约(LINK、AVAX、XRP、DOGE)上进行多空配对交易,使用4小时K线。每次观测完整且同步时,策略会在beta_lookback_bars的窗口内,依据等权市场因子估算各交易腿的常规贝塔和下行贝塔。在常规贝塔位于[0.5, 2.0]且差值不超过0.2的配对中,选取下行贝塔差最大的组合。若该差至少为asymmetry_gap,则等名义金额做多高下行贝塔交易腿,并做空低下行贝塔交易腿。仓位持有84根K线;配对止损以入场时为锚点(取8%和2x价差波动率中的较小值),并设有6根K线的冷却期。
第4轮迭代修复了第-3层沙盒超时。唯一的代码改动是每根K线使用的数据结构:原先每根K线都将收益元组的deque重新转换为np.asarray(每根约耗时1毫秒),现在改为原地使用预分配的numpy环形缓冲区。所有窗口统计量都与顺序无关,因此信号、配对选择、仓位规模和退出方式均未改变。由于预热会重建环形缓冲区,因此在PERSIST_EXCLUDE中加入了环形缓冲区计数器。然而,使用py-spy对本地沙盒运行进行性能分析后发现,耗时并非来自策略代码。回测子进程在加载主交易腿时、任何K线到达策略之前,于NautilusTrader的ParquetDataCatalog.bars() -> fsspec glob/walk中耗时超过6分钟;该过程遍历了data/catalog/data/bar下包含133,589个K线目录的路径,位置在runner.py:683。即便如此,旧版每根K线的numpy开销在14千根K线的窗口中也仅约为15-20秒。如果再次超时,原因是目录文件枚举(工程问题),而非假设或策略,应升级处理而不是继续迭代(教训155 c/b)。
验证结果
sandbox_timeout:验证失败(第3层——沙盒回测):烟雾测试在约20000根K线的窗口(LINKUSD.HYPERLIQUID-4-HOUR-LAST-EXTERNAL的2400天)上超过了300秒的实际运行时间限制。这几乎总是意味着每根K线的工作量会随历史数据增长,例如反复扫描完整的资金费率/补充数据序列,或在每根K线的calculate_signal()/on_bar()中重建列表并调用min()/sorted()。在__init__中预先计算排序后的时间戳数组ONCE并使用bisect,或按时间戳缓存查找结果,使每根K线的成本为O(log n),而不是O(n)。
提交后,在下一根K线上检查两条腿是否都有未平仓头寸或挂单。如果仅有一条腿存在,应将其平仓,而不是将配对视为已开仓。
两个交易腿分别提交。如果_submit_entry_instrument丢弃其中一腿(市场未就绪、入场已在处理中,或遇到暂停区块),_pair_open仍会被设为True。剩余交易腿随后最多会在未对冲状态下持有84根K线。_manage_open仍用两腿的收盘价计算配对盈亏,因此止损是根据一个并不存在的仓位来衡量的。
保持现状,或在后续迭代中考虑采用不包含交易腿的更广泛市场因子。这需要修改假设并声明额外的交易标的。
市场因子是四个交易腿的等权平均值。每个腿占其自身基准的25%,这会使常规贝塔趋向1并降低下行贝塔的离散度。假设没有指定市场代理,开发者称这是有意为之,以使策略保持在所声明的交易范围内,因此可以接受。但与原论文相比,它仍是较弱的市场代理。
可选:如需更严格地控制损失,可为每个交易腿添加仅减仓止损单。
配对止损仅在4小时K线收盘时检查,并以市价单退出,因此价格跳空越过止损位时,损失可能超过stop_pct。该假设未规定固定止损,因此此处仅供参考。
将窗口缓存为滚动numpy环形缓冲区,或仅在空仓且冷却期结束后重新计算贝塔。持有配对时不需要贝塔,因为退出仅依据时间和价格。
运行时间:沙盒处理4,340根四腿K线耗时258秒,接近300秒的限制。每根K线的工作量有界(通过deque重建360x4 numpy窗口,不重新扫描历史数据),因此成本不会随回测跨度增加。不过,完整运行约5,800根K线并进行多轮优化试验仍会很慢。已设置runtime_review_required。
沙盒运行了725天,平仓14组配对(28个仓位)。利润因子为0.998,且avg_trade_return_pct 0.027%,远低于约0.15%的往返交易底线。模拟冲击成本占毛收益的110%,因此仅冲击成本就超过了毛优势。资金费率未计入(funding_events_available=0),尽管每组配对在Hyperliquid永续合约上持有14天,而每个交易腿每天的资金费率可能达到数个基点。分析师应先检查扣除冲击成本和资金费率后的全历史逐对收益。还应检查样本外下行贝塔差是否持续存在(贝塔是相对于四币等权篮子估算的,而非广泛市场)。原论文的溢价是数百种币的横截面结果;正如假设本身所述,将其迁移到从四种币中选出的一组配对尚未得到证实。
分析
迭代历史
验证失败(第3层——回测流程):策略无法在回测流程中加载/构建: ory/src/backtesting/supp_collector.py", 第684行,在 _ensure_then_load_supp return await _load_supp_with_per_leg_funding(instrument_id, legs, db_url, keys) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/backtesting/supp_collector.py", 第749行,在 _load_supp_with_per_leg_funding await load_supplementary_data(instrument_id, db_url=db_url, only_keys=keys) File "/opt/strategy-factory/src/backtesting/supp_collector.py", 第812行,在 load_supplementary_data hl_db_funding = await _load_hl_funding_from_db(db_url, base) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/backtesting/supp_collector.py", 第598行,在 _load_hl_funding_from_db add_funding_observation(out, ts_ns, row[1], f"hyperliquid/{base_symbol}") File "/opt/strategy-factory/src/ba
验证失败(第1.5层——假设/配置一致性)[类别=hypothesis_mismatch]: - optimization_plan将杠杆固定为1.0
结局总结
多腿配对策略若在每根K线上为每个候选配对重新计算滚动协方差和下行贝塔统计量,就必须控制每根K线的工作量,确保其足够低以满足沙盒时间预算;提交前应在完整长度的窗口上进行性能分析。
经过4轮迭代后,该方案在验证循环中被放弃。第3层沙盒烟雾测试在约20,000根K线的窗口(LINKUSD.HYPERLIQUID根4小时K线,历时2400天)上超过了300秒的墙钟时间限制;即使第4轮迭代将同步收益移入预分配的numpy环形缓冲区后,仍再次发生。
在Hyperliquid的4小时永续合约(LINK、AVAX、XRP、DOGE)上获取下行贝塔风险溢价:做多对崩盘更敏感的交易腿,做空常规贝塔相近但下行贝塔较低的匹配交易腿。
没有可用的绩效指标:回测报告为空,且未进行优化,因此没有收益、夏普比率或交易次数数据。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。