跳至正文
全部策略

策略

双重股权价差 OU 均值回归,采用平移不变且考虑成本的阈值(GOOGL/GOOG、NWSA/NWS、FOXA/FOX,基于 USEQ 1-DAY,美元中性多空)

结局: 已放弃

DualClassShareSpreadOUReversion

结局总结

该策略试图利用同一公司的三组股票类别配对进行均值回归。沙盒中每个已平仓头寸的平均值为 0.099%。经过三次迭代,QA 发现,其入场阈值可能允许预期收敛幅度无法覆盖估算执行成本的交易;该次运行在后续阶段开始前终止。

假设

来源:mpeac,“为什么 OU 配对交易的最优进出场阈值不会相对 OU 均值的变化保持不变?”,quant.stackexchange.com/questions/72234(2022-09-18),文中讨论了 Leung 与 Li 的《考虑交易成本和止损退出的最优均值回归交易》。分类:(a)。该帖提出的是理论问题,但指出了具体机制:交易均值回归的 OU 价差,在均值下方或上方设置考虑成本的阈值入场,并在最优水平退出,同时设置止损。对设计有影响的问题答案是:Leung-Li 的阈值不具备平移不变性,因为他们研究的是对价差贴现 LEVEL 的只做多最优停止问题(回报为 e^{-rt}(X_t - c))。对变号的水平进行贴现后,价值取决于 theta 相对 0 的位置。他们研究的不是针对偏离值 X - theta 的对称多空问题。对于持有成本可忽略的双向价差交易者,合适的表述应使用偏离值:入场和退出区间相对于某一时点的 theta 设定,且多空两侧对称。这正是提问者预期的不变性。我们采用这种表述。尚待回答的问题是,哪种价差确实 OU。统计配对在这个策略工厂里已经死了(L113,mean_reversion 标签为……展开收起

来源:mpeac,“为什么 OU 配对交易的最优进出场阈值不会相对 OU 均值的变化保持不变?”,quant.stackexchange.com/questions/72234(2022-09-18),文中讨论了 Leung 与 Li 的《考虑交易成本和止损退出的最优均值回归交易》。分类:(a)。该帖提出的是理论问题,但指出了具体机制:交易均值回归的 OU 价差,在均值下方或上方设置考虑成本的阈值入场,并在最优水平退出,同时设置止损。对设计有影响的问题答案是:Leung-Li 的阈值不具备平移不变性,因为他们研究的是对价差贴现 LEVEL 的只做多最优停止问题(回报为 e^{-rt}(X_t - c))。对变号的水平进行贴现后,价值取决于 theta 相对 0 的位置。他们研究的不是针对偏离值 X - theta 的对称多空问题。对于持有成本可忽略的双向价差交易者,合适的表述应使用偏离值:入场和退出区间相对于某一时点的 theta 设定,且多空两侧对称。这正是提问者预期的不变性。我们采用这种表述。尚待回答的问题是,哪种价差确实 OU。统计配对在这个策略工厂里已经死了(L113,mean_reversion 标签为 0/203),因此我们采用唯一均值回归具有契约依据的价差类别:同一家 SAME 公司的两种股票类别。它们的现金流相同,只有投票权不同。对数价格比受缓慢漂移的投票权溢价(theta)锚定,流动性和指数资金流冲击会使其偏离该溢价。对 log(A/B) 在滚动窗口内拟合 OU,交易相对滚动 theta 的 z 值偏离,持有数日。美元中性:做多便宜的类别,做空价格较高的类别,名义金额相同。三个配对都在同一个策略实例中运行,各自作为独立仓位。USEQ 在实验中的占比偏低,为 5.0%;long_short 占比也偏低,为 15.7%。PRE-STUDY(时点滚动均值和标准差,|z|>k 入场,z 穿越 0 或达到 20 个交易时段上限时退出,通过 load_normalised 获取目录中的日收盘价)。每笔交易的毛收益以双腿总名义金额的百分比计。自 2014-04 以来的 GOOGL/GOOG:L60/k2.0 产生 83 笔交易,毛收益 +0.12%,胜率 77%,13 年中有 12 年为正。L20/k2.0 产生 138 笔交易,+0.12%,胜率 85%,13 年中有 13 年为正。自 2013-07 以来的 NWSA/NWS:L60/k1.5 产生 126 笔交易,+0.25%,中位数 +0.43%,胜率 72%。L120/k2.0 产生 57 笔交易,+0.26%。NWS 有 4 个亏损年份:2013、2021、2023 和 2024。自 2019-03 以来,FOXA/FOX 表现最弱:L20/k2.0 产生 88 笔交易,+0.10%,胜率 76%,较长窗口约为 0。保留 FOX 作为第三个独立仓位,以便用它检验这一假设,而不是据此调参。

这保留了来源中的 OU 阈值机制。它通过使用围绕时点 theta 的对称偏差阈值来回答帖子提出的问题;这些阈值不受 theta 平移影响。它将 OU 假设应用于均值回归有契约依据的唯一价差类别:同一家公司的双重股权类别。它避开了当前流程中已放弃的统计配对和加密货币配对类别:DogeBybitOkxOu、Tadi basket 和 XOM/CVX Bertram 都在流程中或已失败。USEQ(5%)和 long_short(15.7%)占比不足。预研究使用目录数据,采用时点方法。实现说明:日线、6 个交易品种和约 3.3k 个交易时段,每个组合使用 O(1) 双端队列统计量。这避免了导致 Tadi 和 PEAD 运行失败的 sandbox_timeout。

verification_loop:验证失败(Layer 4 — QA 审核)[类别=code_defect]: - [edge_concern] 沙盒中每个已平仓头寸的平均值为 0.099%;应在计入价差、冲击和借券成本后评估完整历史结果。 - [严重] 0.0004 阈值允许预期收敛幅度仅为两条腿名义金额总和的 0.04% 时入场。USEQ 往返价差和冲击成本可能达到约 0.05%,尚未计入卖空借券成本。(第 156 行)——修复:要求预期收敛幅度超过保守的、针对具体配对估算的所有执行成本和借券成本。

实现

三个独立的美元中性组合(GOOGL/GOOG、NWSA/NWS、FOXA/FOX),基于 USEQ 日线。每个组合跟踪两类股票的对数价格比,并在 `lookback` 个交易时段上使用 O(1) 滚动均值/方差。|z| >= entry_z 且偏差超过往返成本时,以等额名义金额做多便宜类别、做空昂贵类别(每条腿占权益的 leg_notional_pct)。z 回归并穿越 exit_z、价差扩大至 stop_z,或持仓达到 max_hold_sessions 个交易时段后退出。

Layer-3 sandbox_timeout的诊断:原因不在策略代码。对完全相同的沙箱调用进行本地复现(src.backtesting.subprocess_entry,窗口从2017-06-09到2024-01-04,6 USEQ条腿),实际耗时220秒,产生224笔交易。cProfile 分析总耗时为291秒。其中,ParquetDataCatalog.query 耗时260秒:fsspec 每次查询都会遍历整个目录(约249千个目录、371千次 ls 调用),每次约耗时111秒。主要的load_normalised()调用支付一次这项开销,批量额外腿的 catalog.bars() 调用再次支付,查询交易品种又增加38秒。策略回调开销可忽略:每根 bar 的工作量为 O(1),总计约10千根 bar。在工厂负载下,仅这两次固定扫描就会使运行时间超过300秒,两次尝试均超时。策略侧的任何改动都无法消除此开销,因此本次重新提交只修改注释,说明每根 bar 的开销和腿对齐规则(经验教训L174/L139)。交易逻辑不变。平台需要修复(经验教训L155(b),基础设施):在 BacktestRunner 中,将主要的bar_type并入单次批量 catalog.bars() 调用,或缓存目录文件列表。任一改动都能为多腿运行节省约111秒。作为参考,本地全窗口运行结果为avg_trade_return_pct 0.091%,Sharpe 为0.14;相较预先登记的0.10% / OOS Sharpe 0.8,表现较弱。

验证结果

验证失败(Layer 4 — QA 审核)[类别=code_defect]: - [edge_concern] 沙盒中每个已平仓头寸的平均值为 0.099%;应在计入价差、冲击和借券成本后评估完整历史结果。 - [严重] 0.0004 阈值允许预期收敛幅度仅为两条腿名义金额总和的 0.04% 时入场。USEQ 往返价差和冲击成本可能达到约 0.05%,尚未计入卖空借券成本。(第 156 行)——修复:要求预期收敛幅度超过保守的、针对具体配对估算的所有执行成本和借券成本。

迭代历史

sandbox_timeout:验证失败(Layer 3 — 沙盒回测):在约 20000 根 bar 的窗口(GOOGL.USEQ-1-DAY-LAST-EXTERNAL 的 2400 天)上,冒烟测试超过 300 秒墙钟时间限制。这几乎总是意味着每根 bar 的工作量随历史长度增加——例如重新扫描完整的资金费率/补充序列,或在每根 bar 中于 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算已排序的时间戳数组 ONCE 并使用 bisect,或按时间戳缓存查询结果,使每根 bar 的成本为 O(log n),而不是 O(n)。

结局总结

要求预期收敛幅度超过保守估算的、针对具体配对的执行成本和借券成本。

经过三次迭代,Layer 4 QA 拒绝了允许预期收敛幅度达到 0.04% 的入场阈值,因为估算的价差和冲击成本可能达到约 0.05%,尚未计入卖空借券成本。验证阶段终止了该次运行。

该策略通过美元中性的多空头寸,交易三组双重股权股票价差的均值回归。

沙盒中每个已平仓头寸的平均值为 0.099%。未提供完整回测或优化报告。

放弃原因

verification_loop:验证失败(Layer 4 — QA 审核)[类别=code_defect]: - [edge_concern] 沙盒中每个已平仓头寸的平均值为 0.099%;应在计入价差、冲击和借券成本后评估完整历史结果。 - [严重] 0.0004 阈值允许预期收敛幅度仅为两条腿名义金额总和的 0.04% 时入场。USEQ 往返价差和冲击成本可能达到约 0.05%,尚未计入卖空借券成本。(第 156 行)——修复:要求预期收敛幅度超过保守的、针对具体配对估算的所有执行成本和借券成本。

分析

为什么39OU配对交易的最优入场/退出阈值不会相对不受OU均值变化影响?

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