跳至正文
全部策略

策略

Bybit PCA-残差(Avellaneda-Lee s-score)均值回归:时点可得的 Bybit USDT永续合约前-20名,基于60日每日收益的3因子PCA,z<-1.5做多 / z>+1.5做空,作为独立单币种头寸;当 |z|<0.5 或经过10日时退出(1-DAY根柱线;没有币种偏离时保持空仓)

结局: 已放弃

BybitPcaResidualSScoreReversionDaily

结局总结

该假设将 Avellaneda-Lee 的 PCA s-score 均值回归思路从 US 只股票移植到 Bybit USDT 永续合约的时点前 N 大标的池,基于日线交易两端,作为未对冲的单标的押注。在 3 次迭代中,该策略因超过 300s 的墙钟时间限制,始终未能通过 Layer 3 沙盒验证。最后一次修订只调整了性能:将池缩减为 8 个流动性最深的永续合约(BTC、ETH、SOL、XRP、DOGE、ADA、LINK、LTC),信号保持不变,但仍未通过。该运行在生成任何回测指标之前便被放弃。

假设

分类:(a)具体交易思路。原始策略按美元成交额选取前 N 名US股票,用3个成分拟合PCA,再对各个标的进行因子回归,将最新残差标准化为 z-score,并按 |z| 加权买入 z < -1.5 的标的。策略每30日重新平衡,报告年化约7%,回撤约为40%(未经验证)。我们正在将其移植到USEQ,目前已NOT。经验L128禁止使用日线USEQ;每月重新平衡20只股票,在10年内约有115次调仓,去膨胀处理总会剔除这类效果。我们从基本原理重新表述该机制,应用于 Bybit USDT线性永续合约(语料占比0.8%,目标 >= 5%;按L160采用纯价格触发)。标的范围(按时点可得数据,依据L151):候选池包括目录中日线历史起始时间不晚于2021-12-31的所有 Bybit USDT永续合约(共78份合约;这是数据可用性规则,并非人工挑选)。每个日线收盘时,在截至该日期至少有90根日线柱的币种中,按过去30日美元成交额选取前20名。因子模型遵循论文而非教程:在由标准化日对数RETURNS构成的60日 x 20个标的矩阵上运行PCA(3)(教程使用对数价格水平,属于非平稳数据)。对每个标的,基于3个因子收益进行OLS回归,将残差累积为 X,并在60日窗口内设 z = (X_last - X 均值) / X 标准差。相较教程的改动:同时交易两端(论文采用对称方式);每个头寸都是独立单币种交易,不设对冲腿(L137);每日进行决策,并以 z 值触发退出,而非盲目每30日重新平衡(L166)。声明的空仓状态:没有币种满足 |z| >= 1.5 时不持仓(预计约占30-40%的交易日)。

第 3 次迭代仅修复性能问题。超时源于 ParquetDataCatalog 对每个标的都要对目录树执行 glob,这是每条腿的固定开销,与窗口长度无关(在同类多腿策略上进行性能分析,在主机负载约为 40 时,每条腿约需 10 s 以上)。逐根 K 线的策略运算量很小,不会随时间跨度增加。腿数从 13 降至 8,保留数据早于 2022 的 Bybit USDT 中流动性最深的永续合约。信号、退出和仓位规模均未改变。偏差:假设要求从 78 个合约组成的池中选取时点前排名前 -20 的标的,但在此框架中无法在 300 s 沙盒上限内完成。使用 3 个因子的 8 个标的构成更窄的横截面,残差将更多地依赖 BTC/ETH 市场因子。如果分析师需要完整的 20 个标的横截面,限制在于沙盒预算,而非代码。为使持仓数低于 8 个标的的上限,max_positions 从 6 调整为 4(总敞口仍 <= 1x 权益)。

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

实现

Avellaneda-Lee PCA残差 s-score 均值回归策略:在每日时点可得的8个流动性较好的 Bybit USDT永续合约中,按过去30日美元成交额选取前 N 名。PCA(3)基于60日日对数收益率构成的相关矩阵运行;每个币种对特征投资组合因子收益进行OLS回归,并将残差累积为60日 z-score。z<=-1.5时做多,z>=+1.5时做空,均为独立单币种头寸(同时最多持有4个,每个占权益的1/4,总敞口 <= 1x)。当 |z|<0.5 或经过10日后退出。没有币种偏离时保持空仓。

验证结果

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

结局总结

多腿横截面策略可能因逐腿加载目录而超过 300s 沙盒限制,并非因为逐根 K 线计算,因此从初稿开始就应保持腿数较少,或确认设计符合沙盒时间预算。

该策略在验证循环中被放弃。Layer 3 沙盒回测超时,在约 20000 根 K 线的窗口上超过了 300s 限制(2400 天的 BTCUSDT.BYBIT 1-DAY K 线)。即使第 3 次迭代将标的池从 13 条腿缩减至 8 条腿以减少目录加载,仍然超时。

Avellaneda-Lee PCA残差均值回归策略,应用于 Bybit USDT永续合约:拟合3因子PCA,使用60日每日收益率,将各币种累积残差转为 z-score;z<-1.5时建立独立单币种多头,z>+1.5时建立空头;当 |z|<0.5 或经过10日后退出。

没有任何绩效数据。回测报告为空,该策略也从未进入优化、回测审查、分析师审查或风险审查阶段。

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