跳至正文
全部策略

策略

ETH OKX 4H 正偏度趋势异象(Lemperiere et al. 2014):波动率标准化的 EMA 距离趋势,带空仓死区,多空交易,兼看偏度与收益评分(ETHUSDT.OKX 4H,纯 OHLCV,单腿)

结局: 已放弃

EthOkxVolNormEmaDistanceTrendLS

结局总结

该假设预先登记了一项波动率标准化的 EMA 距离趋势规则,应用于 ETHUSDT.OKX 4H,预测收益为正且偏度为正,同时胜率较低,并有大额赢家构成的右尾。代码经历了 3 次迭代。最后一次只改变了性能:EMA 和滚动波动率改为 O(1) 运行更新,交易规则保持不变。Layer 3 沙盒回测仍在约 20k 根 K 线的窗口上超过 300s 限时,因此在验证循环中放弃了运行。流程未进入回测、优化、分析师审查或风险审查,因此预先登记的偏度主张在流程中仍未得到检验。

假设

摘要对一条可交易规则提出了一项可检验的主张。大多数风险溢价通过承担负偏度(即崩盘风险)来获得夏普比率。趋势跟踪是个例外:它带来正超额收益 WITH 正偏度。我们在加密货币市场检验这一主张:使用 ETHUSDT.OKX(OKX USDT 永续掉期,4 小时 K 线,数据来自 2019-12-25,约 14.8k 根 K 线)。OKX 占语料的 0.3%,是纯 OHLCV 交易场所,符合教训 L160 的要求。信号:s_t = (close_t - EMA_100(close)_t) / (close_t * sigma_100_t),其中 sigma_100 是 100 个四小时对数收益的滚动标准差。因此,s 表示以每根 K 线波动率单位衡量的趋势距离。自上次退出以来,只要 |s| 尚未超出 2,策略就处于 FLAT。该死区是 L150 要求的空仓状态,并非额外的市场状态过滤条件。s 上穿 +2 时做多,下穿 -2 时做空,穿越零点时退出。除收益外,该假设还预测交易分布的 SHAPE:胜率较低(约 30%),大额赢家构成右尾,且偏度为正。这是论文的诊断标准。如果回测盈利但偏度为负,即使夏普比率为正,也会证伪这一前提。时间点前置研究(收盘到收盘,扣除 0.10% 往返成本,在编写代码前完成):259 笔交易,单笔平均净收益 +2.17%,t = 2.8,交易收益偏度 +2.9,胜率 32%,7 个日历年中有 7 个为正。结果在 3x3 网格范围内稳健:EMA 跨度、20/50/100 x 阈值 1/2/3,在每个 4H 单元中 t 均介于 1.7 与 2.9 之间,且偏度均为正。我们预先登记右侧中央单元(100,2),并将 NOT 把它优化掉。按 L122 说明选择依据:选 ETH,因为它是流动性最高且有 2019+ 历史数据的 OKX 掉期(BNB OKX 从 2022 开始,其他品种约有 2 天数据);选 OKX 以利用未充分使用的交易场所;选 4H,因为 1D 只有 35-135 笔交易,低于样本下限。

迭代 3 仅修复 Layer-3 sandbox_timeout,交易规则保持不变。每根 K 线的工作量现在严格为 O(1)。EMA 是递归标量。Sigma 来自对 vol_window 个收益中 r 和 r^2 的运行标量求和:每根 K 线加入最新收益,并移除离开窗口的收益,两者均按索引从 K 线缓冲区读取。这样替代了每根 K 线都根据 101 个收盘价重建 numpy 数组的做法。只有时间戳链中断时,或每隔 2000 根 K 线,为防止浮点漂移才会从缓冲区重新初始化状态。所有状态都是 self 上的普通标量,因此重启后仍会保留。预计每根 K 线约需 10 次浮点运算,与跨度无关。请注意,先前代码已经是 O(window),并使用有界缓冲区,因此超时部分可能由主机负载导致。

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

实现

Lemperiere 等人(2014)在 ETHUSDT.OKX 4H 上提出的波动率标准化 EMA 距离趋势:s=(close-EMA100)/(close*sigma100),sigma 为 4H 对数收益的标准差。s>+2 时做多,s<-2 时做空,否则空仓;s 穿越零点时退出。50% 名义权益,杠杆为 1x。

验证结果

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

结局总结

简单规则仍必须符合约 20k 根 K 线的沙盒预算,因此在首次提交前就应将每根 K 线的成本设计为不随历史数据增长。迭代 3 将 EMA/波动率状态改写为 O(1) 运行求和,但尚未确认该改写能及时通过 Layer 3。

经过 3 次迭代后,在验证循环中放弃了这项工作。Layer 3 沙盒冒烟测试在约 20,000 根 K 线(2,400 天)的 ETHUSDT.OKX 4H 窗口上超过了 300s 的墙钟时间限额,因此回测审查、分析师审查和风险审查均未运行。

一条适用于 ETHUSDT.OKX 4H K 线的多空趋势规则(Lemperiere et al. 2014):当收盘价相对 EMA_100 的距离以 100 根 K 线收益波动率为单位计量并穿越 ±2 时入场,距离穿越零点时退出,中间设有空仓死区。测试旨在检验该策略能否实现正收益及正交易收益偏度。

不存在流程回测或优化指标,因为该策略未能通过验证。唯一的数字来自假设本身的前置研究,研究在编写任何代码前完成:259 笔交易,单笔平均净收益 +2.17%,t = 2.8,偏度 +2.9,胜率 32%,7 年中有 7 年为正。流程从未证实这些结果。

分析

风险溢价:不对称尾部风险与超额收益

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