← 返回 Quant Digests · 站点首页

别把 PCA stat-arb 只读成“降维作业”:对 short-cycle crypto desk,更该先拆的是「PCA common-factor residual overextension × zero-cross fade」这条 raw alpha

更新时间:2026-04-21 21:29 UTC 研究时间:2026-04-21 21:20 UTC 类型:2026 GitHub repo source audit(`README.txt` + `src/pca_engine.py` + `src/s_score.py` + `src/strategy.py` + `src/backtester.py`)+ Binance USDⓈ-M public-data portability probe(8 liquid majors,`15m/5m`) 主题标签:cross-sectional / relative-value / stat-arb / PCA / eigenportfolio / residual / OU / mean-reversion / zero-cross / Binance perpetual / 15m / 5m / repo / public-data / cost 证据类型:repo 工程骨架 + 经典论文地基 + public-data first probe

源文件:research/quant_digests/2026-04-21_2120_pca-eigenportfolio-residual-fade-alpha.md

1. 这次看了什么

这轮主来源是一个 2026 更新的 GitHub 研究仓:sophie-lan / crypto-pca-statarb。repo 描述很直接:把 Avellaneda & Lee (2010) 的 PCA statistical arbitrage 框架搬到 crypto assets 上,流程包括:

  1. rolling PCA factor construction;
  2. regression residual extraction;
  3. OU parameter estimation;
  4. s-score generation;
  5. rule-based trading and backtesting。

一句话先回答本轮选题门槛:

> 这篇东西的 base alpha 是什么? > > 答:是 PCA common-factor residual mean reversion。 > > 翻成人话:先把“大家一起涨跌”的横截面共同因子拿掉,再交易某个币相对共同因子的短期过冲回归。

这不是 filter,也不是 regime gate。PCA 只是去噪和中性化工具,真正的 raw alpha 是:残差偏离后回归

来源

2. repo 里真正可交易的壳是什么

repo 的结构很适合 desk intake,因为它不是只给一个“相关性热力图”,而是把 stat-arb 完整链条拆出来了:

2.1 factor construction

src/pca_engine.py 的默认参数:

这一步的作用不是预测,而是回答:

> 当前横截面里,最主要的共同涨跌方向是什么?

2.2 residual + OU + s-score

repo README 写明:先做 regression-based residual extraction,再估计 OU 参数,再生成 s-score。src/s_score.py 里把 residual 累计成 X_t,再用:

``text s = (X_t - m) / sigma_eq ``

其中 m 是 OU 均值,sigma_eq 是均衡标准差。

人话就是:

2.3 entry / exit rule

src/strategy.py 的默认阈值很清楚:

如果翻成 desk 版本:

3. 为什么这条壳和最近 digest 不算重复

最近已经写过不少 stat-arb / pairs / residual 类主题,但这轮有一个明确新增量:

3.1 它不是固定 pair,也不是只对 BTC residualize

对 crypto 短周期,这一点有意义:有些时段是 BTC 领涨领跌,有些时段是 SOL / meme / AI / L2 主题带动。固定 BTC anchor 可能漏掉主题 beta,而 PCA 更像自动提取“当前市场最主要的共振方向”。

3.2 它补的是 raw alpha 素材池里的 cross-sectional RV 线

这条不是 breakout / trend / OI confluence / market-making execution 壳,而是明确补:

这正好符合当前 bot7 的 intake 目标:不要只在单币技术形态里内循环。

4. repo 的不足:别直接照搬原始回测

repo 自己也写得很诚实:

> Transaction costs and slippage are not modelled. All backtest results assume zero fees and perfect execution at hourly close prices.

所以这份 repo 对我们最有价值的不是它的图,而是工程骨架:

但对于 5m/15m crypto,原始版本必须先过三关:

  1. 成本;
  2. turnover;
  3. universe stability。

5. 我们自己的 15m/5m public-data first probe

5.1 probe 口径

我用 Binance USDⓈ-M public klines 做了一个轻量迁移实验,目标不是宣称已经复刻 repo,而是先回答:这条 residual fade 壳在 15m/5m 上有没有 gross 边,扣粗成本后离可交易差多远?

产物:

5.2 结果

核心数字:

| interval | bars | trade_count | gross_mean_bps/bar | gross_cum_pct | gross_sharpe | gross_bps/trade | rough_net_bps/trade | win_rate | avg_hold | |---|---:|---:|---:|---:|---:|---:|---:|---:|---:| | 15m | 1656 | 580 | +0.827 | +14.49% | 10.997 | +2.28 | -5.72 | 57.24% | 1.38 bars | | 5m | 1984 | 494 | +0.183 | +3.63% | 7.674 | +1.07 | -6.93 | 53.64% | 1.45 bars |

5.3 first verdict

这轮 first probe 的结论很清楚:

所以本轮不应该把它判成“可直接 naked 上线”。更准确的 intake 是:

> PCA residual overextension 是一条值得保留的 raw alpha 候选;但要进入实盘候选池,必须先把 exit 改慢、提高 entry band、加 maker-first / batch rebalance 来降低 turnover。

6. 这条 alpha 的第一性逻辑

这条壳能成立,不靠神秘模型,靠三件事:

  1. crypto 横截面里大部分短期波动是共同因子:BTC beta、sector beta、risk-on/off;
  2. 如果某个币剥掉共同因子后仍然极端偏离,很多时候是 idiosyncratic order-flow / liquidity shock;
  3. 这种 idiosyncratic shock 比 market-wide shock 更容易短期均值回复。

换句话说,这条 alpha 不是“币跌多了就买”。它是:

> 在整个市场共同波动解释不了的部分里,找最极端的短期偏离。

这比普通 RSI / BB touch 更像 stat-arb,也更适合和已有 single-asset alpha 做组合。

7. 策略拆解(按 desk 可落地口径)

7.1 entry

每个 15m 父信号点:

  1. 用最近 1~3 天的 15m returns 做 rolling PCA;
  2. 提取前 1~3 个 common factors;
  3. 对每个币回归自身收益到 common factors;
  4. 取 residual 的 rolling z-score / OU s-score;
  5. z <= -entry_band:long residual loser;
  6. z >= +entry_band:short residual winner;
  7. 同一时点只拿 top-1 / top-2 最极端,避免组合太散。

7.2 exit

最小版本:

但本轮 probe 显示 exit 太快会被 cost 吃掉,所以下一版更建议:

7.3 sizing

最小版本:

增强版本:

7.4 risk

必须补的 risk layer:

7.5 cost

这条策略最大风险就是 turnover。下一轮必须做:

8. 和当前 1m/3m/5m/15m 短周期研发的关系

我的判断:

这条 alpha 对当前素材池的价值主要有两个:

  1. 独立 stat-arb raw alpha:PCA residual fade;
  2. shared selector:告诉其他策略“当前哪个币相对共同因子最过冲”。

9. 下一步怎么测

  1. 先做 15m parent + 5m child execution
  2. 父信号保持 PCA residual z-score,不改 alpha 本体;child 只负责:

  1. 扫 entry / exit frontier。
  2. 至少测:

  1. 把 universe 扩到 12~20 个 liquid perp。
  2. PCA 策略需要横截面宽度。8 个币只够 sanity check,不够 production admission。

  1. 补 PC exposure diagnostics。
  2. 每次开仓后检查组合对 PC1/PC2 的暴露;如果 residual 策略最后仍然暴露在 PC1 上,说明所谓 market-neutral 是假的。

  1. 和 BTC-residual fast reversal 做 A/B。
  2. 同一 universe、同一 cost ladder 下比较:

10. 风险与提醒

11. 结论

这轮我会把它放进研究池,但不是以“马上实盘”的形式,而是以 raw alpha skeleton / stat-arb parent signal 的形式保留。

最短判断:

> PCA residual fade 能提供清楚的 cross-sectional mean-reversion raw alpha;15m first probe 有 gross edge,但当前退出太快、单笔太薄,下一步必须围绕 entry band、holding time、maker-first execution 和 cost ladder 做 admission。