跳至正文
全部策略

策略

忠实移植 QuantConnect BasePairsTradingAlphaModel:BTC/ETH 价格比率区间回归,相对于比率的 500 根柱 EMA,±1% 区间,持有 1 天,方向交替(OKX USDT 次切换,DAILY)

结局: 已放弃

BtcEthOkxLeanPairsRatioBand

结局总结

该策略将 LEAN 的配对交易 alpha 模型移植到 OKX 永续合约的 BTC/ETH 比率上:使用 500 根柱的 EMA 和 ±1% 区间,持有一天并交替方向。该假设的预研究仅发现约 5.3 年内有 19 次切换,每笔交易的价差平均收益约为 +0.11%,大致相当于往返成本,且统计上不显著(t ≈ 0.3)。经历 2 次迭代后,运行因编码三次超时(“coding_stuck_3_timeouts”)而在编码阶段放弃,因此未进入验证或回测,也没有实测绩效。

假设

本文忠实呈现 QuantConnect LEAN 的 BasePairsTradingAlphaModel(Apache-2.0,致谢:QuantConnect Corporation,https://github.com/QuantConnect/Lean/blob/856327ff33869cba98393781000c4ab1d2af423d/Algorithm.Framework/Alphas/BasePairsTradingAlphaModel.py).)。源代码是一套完整、可交易的配对规则,并非实用工具库。其 has_passed_test() 返回 True,因此基础模型会交易其资产池中的每一对资产,不进行协整检验。我们在 ONE 交易对上运行该模型:BTCUSDT.OKX 和 ETHUSDT.OKX USDT 永续掉期。OKX 占语料的 0.3%,与 BINANCE 的 67% 对比;两条腿均有从 2020-01-02 开始的每日历史数据。 配对顺序遵循代码。交易对符号按顺序排序,因此 asset1 = BTCUSDT.OKX,asset2 = ETHUSDT.OKX,且 ratio =……展开收起

本文忠实呈现 QuantConnect LEAN 的 BasePairsTradingAlphaModel(Apache-2.0,致谢:QuantConnect Corporation,https://github.com/QuantConnect/Lean/blob/856327ff33869cba98393781000c4ab1d2af423d/Algorithm.Framework/Alphas/BasePairsTradingAlphaModel.py).)。源代码是一套完整、可交易的配对规则,并非实用工具库。其 has_passed_test() 返回 True,因此基础模型会交易其资产池中的每一对资产,不进行协整检验。我们在 ONE 交易对上运行该模型:BTCUSDT.OKX 和 ETHUSDT.OKX USDT 永续掉期。OKX 占语料的 0.3%,与 BINANCE 的 67% 对比;两条腿均有从 2020-01-02 开始的每日历史数据。 配对顺序遵循代码。交易对符号按顺序排序,因此 asset1 = BTCUSDT.OKX,asset2 = ETHUSDT.OKX,且 ratio = close(asset1) / close(asset2) = BTC/ETH。 默认参数与代码完全一致:lookback = 1,resolution = DAILY,threshold = 1(百分比)。推导值:prediction_interval = 1 天;mean = EMA(500),即比率的均值(500 为硬编码);上轨 = mean x 1.01;下轨 = mean x 0.99。每日收盘价的恒等指标用于计算比率和 EMA。在 EMA(500) 准备就绪前不会产生信号,时间约为 2021 年五月中旬。 状态机:该交易对初始状态为 FLAT_RATIO。它不会重复发出当前方向的信号,也不会重置为空仓。只有穿越相反方向的带线时才会切换。命名上的特殊之处:代码将 ratio > upper 的情况称为“LONG_RATIO”,但实际交易方向是 SHORT asset1 / LONG asset2。请翻译操作含义,不要翻译枚举名称。 洞察信号有效期为 prediction_interval = 1 天。根据 LEAN 的默认 EqualWeighting 投资组合构建方式,洞察信号到期时目标仓位归零。因此,每笔交易持有一个日线周期,组合在下次切换前保持空仓。仓位规模:每条腿为权益的 50%,杠杆 1.0,美元中性。每条腿的 OKX 手续费为 0.02% 做市方 / 0.05% 吃单方。 研究前基于时点数据对我们的目录进行分析:约 5.3 年内有 19 次切换。每笔交易的次日价差收益均值约为 +0.11%,标准差约为 1.5%(t ≈ 0.3)。这与往返交易成本大致相当。预计该组合约有 99% 的时间处于空仓状态。

译文保留了 LEAN 的指标定义:Identity 收盘价,按排序后的交易品种计算比率 = asset1/asset2,以 SMA 初始化的 EMA(500),以及位于 mean*(1±threshold/100) 的区间。译文也保留了状态机和一天的洞察期限。无论是否持仓,状态都会每根柱推进,正如 LEAN 的 update() 所做的那样。平台迫使我们做出的改动:(1) 成交使用信号柱收盘价的市价单,而 LEAN 在日线分辨率下于下一开盘价成交市价单;(2) 每条腿占权益的 50%,与两条洞察组成一组时的 EqualWeighting 一致;(3) 每条腿分别在各自交易品种提交;(4) 仅当 ETH 收盘柱时间戳与 BTC 柱相同时才使用该收盘价(对齐屏障)。一个罕见边缘情况:若在前一笔一天期交易退出的同一柱上触及相反区间,则该方向变化不会成交,而 LEAN 会重新设定目标。约 5 年内只有 19 次变化,因此影响很小。我预计该策略会因费用和样本量而失败:预研究发现 19 笔交易,每笔收益为 +0.11%(t≈0.3),约等于两条腿的往返成本。尽管如此,我仍按要求实现了。所有状态均为普通标量(EMA、计数、状态、入场时间戳),因此重启后会得到相同决策。

coding_stuck_3_timeouts

实现

在 BTCUSDT.OKX / ETHUSDT.OKX 日线上忠实移植 QuantConnect LEAN 的 BasePairsTradingAlphaModel。比率为 BTC/ETH。其均值采用 LEAN 风格的 EMA(500),以 SMA 初始化,在 500 根柱后就绪,区间设在均值的 ±1%。状态机交替运行:初始为空仓,不重复当前方向,仅在价格突破相反区间时改变方向。比率高于上轨意味着做空 BTC / 做多 ETH;低于下轨意味着做多 BTC / 做空 ETH。每次方向改变都会建立美元中性配对仓位(每条腿占权益的 50%,杠杆 1),持有一根日线柱,符合 EqualWeighting 下的洞察到期时间。之后持仓簿保持空仓,直到下一次改变。

迭代历史

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

结局总结

预研究表明,仅有 19 笔交易时,优势已约等于往返成本(t ≈ 0.3),因此在编码超时之前,这一假设就已是较弱的候选方案;在编码前筛除如此微薄的优势,可以节省流程资源。

运行在编码阶段因“coding_stuck_3_timeouts”而放弃,历经 2 次迭代。验证、回测、分析师审查和风险审查均未进行。

忠实移植 QuantConnect LEAN 的 BasePairsTradingAlphaModel,应用于 BTC/ETH OKX USDT 互换合约价格比率:当日线比率突破围绕其 500 根柱 EMA 的 ±1% 区间时,建立美元中性配对交易(每条腿占权益的 50%),押注比率回归,持有一根日线柱,且仅在突破相反区间时切换方向。

没有回测或优化结果(回测报告为空)。唯一数据来自该假设的预研究:约 19 次切换,历时约 5.3 年;每笔交易的次日价差平均收益约为 +0.11%(标准差约 1.5%,t ≈ 0.3),与往返成本大致相当。

分析

BasePairsTradingAlphaModel

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