源文件:research/quant_digests/2026-04-20_0455_betacorr-gated-betaweighted-futures-pairs-shell.md
README.md + auto_universe_sync.php + pair_scanner.php + functions.php + backtesting.php)+ Binance USDⓈ-M 15m public-data portability probebeta 做两腿权重分配,并避免同一资产在多个 pair 同时占用。> base alpha 不是“相关性高就买”,也不是“资金费率套利”。它的本体就是:pair 的相对错价回归。
更具体地说,这份 CT-OS 里最值得我们 intake 的,不是 Web 面板,也不是 Telegram/2FA/多用户管理,而是这一条完整的交易骨架:
z-score 偏离足够大时开仓;beta 做两腿权重,不是裸 1:1;所以它不是 filter,不是 overlay,也不是“又一个 pairs 教学 demo”。它本体就是:
> pairs / stat-arb / relative-value / mean-reversion raw alpha。
而且是更偏 production shell 的那种 raw alpha,不只是 paper 风格的单条价差回归。
---
最近这条线我们已经看过不少:
如果再写一篇“静态 z-score 开平仓”的 pairs 摘要,其实没什么意思。
这份今天新建的仓库真正补的,不是新的统计检验,而是:
> 把 pair alpha 从“研究脚本”往“可跑的 live OS”再推进半步。
它最有价值的不是 admission 方法本身有多先进,而是它把几件 production 常见但论文里经常拆开的东西连起来了:
correlation gatecointegration / beta validitybeta-weighted sizingdynamic thresholdone-asset-one-open-pairliquidity / spike / stale / cooldown / min-notional veto对 short-cycle desk 来说,这种东西的意义很直接:
> 不是再教你“pairs 是什么”,而是提醒你:raw alpha 本体虽然还是 spread fade,但真正容易决定能不能落地的,是 admission + sizing + overlap governance。
---
cryptoteamgr/CT-OSThe Ultimate Statistical Arbitrage Engine crypto pair trading2026-04-19T21:52:35Z2026-04-19T21:53:45Zmaincryptoteamgr / 文档署名 cryptoteam.grREADME.md 直接把它定义成:
pair_scanner.php、auto_universe_sync.php、price_aggregator.php、backtesting.php、cron_monitor.php。翻成人话:
> 它不是一个“只会给信号”的 notebook,而是把 discovery、signal、execution、monitoring、backtest 都摆出来了。
---
auto_universe_sync.php:不是拍脑袋选 pair,而是先做 correlation universe这个文件给了很明确的 universe 逻辑:
minCorrelationToAdd = 0.85minCorrelationToKeep = 0.75maxTotalPairs = 200)last_z_score 与 last_beta 同步回库也就是说,这个仓库不是先固定几组 pair,而是:
> 先做“相关性发现 → 弱 pair 清退 → 强 pair 保留”的 pair admission 层。
这点很重要,因为很多 pairs 仓库都只给你:
但这里更接近 live universe manager。
pair_scanner.php:真正值得抄的是动态阈值 + overlap vetopair_scanner.php 的交易入口不是裸 abs(z) > threshold,而是加了几层 production guard:
corr >= 0.95 → entry_z = base * 0.90corr < 0.85 → entry_z = base * 1.15ΔZ > 1.2)直接跳过这串逻辑其实比“协整 / OLS / z-score”本身更有 desk 价值,因为它回答的是:
> 同一个 raw alpha,怎么避免在 live 上因为重叠敞口、脏跳点、陈旧数据、pair 质量不稳定而把自己玩死。
functions.php:它不是 1:1 对冲,而是显式 beta-weighted sizing这里最值得记的是两个函数:
calculateQuantityFromCapital()calculateBetaWeighting()核心口径:
capital × leverageweight_a = 1 / (1 + beta)weight_b = beta / (1 + beta)weight_a 限在 [0.30, 0.70]也就是说它的 sizing 逻辑不是:
而是:
> 先用 beta 做相对对冲,再用 clamp 防止某一腿极端失衡。
这对 perp desk 很实用,因为很多 crypto pair 的波动弹性差很多。裸 1:1 很容易把“看起来 market-neutral”的 trade 做成事实上的 directional bet。
backtesting.php:虽然回测口径还粗,但它至少给了完整策略表面backtesting.php 暴露出来的是一整套 production-friendly 参数:
entry_z_scoretp_dollartp_zscoresl_dollarsl_zscoremin_profitcapitalleveragemax_trades而且它的回测逻辑不只做 TP,也做:
虽然它的统计口径仍然比较粗糙(更像 panel backtest,不像严谨研究回测),但至少说明:
> 这份仓库提供的不是“研究想法”,而是一整条可落成 baseline 的参数骨架。
---
如果只把 CT-OS 总结成“高相关 pair 做 z-score 回归”,那就没必要写这篇了。
我认为它真正值得 desk 保留的是下面这条旁支,而且它仍然服务于 raw alpha 本体:
> beta-corr gated pair admission × beta-weighted spread fade × asset exclusivity
拆开就是:
alpha 本体没变,还是:
这层治理外壳不是 generic risk overlay,而是和 alpha 强耦合的:
也就是说:
> 它不是把 raw alpha 改成 filter,而是把 filter / veto 直接镶进 raw alpha 的 admission 与 execution。
这很适合我们当前 desk,因为最近 pairs 线已经不缺“怎么找 spread”,更缺“怎么把 pair book 管得不像事故现场”。
---
fapi/v1/klines15mBTC/ETH/BNB/SOL/XRP/ADA/DOGE/LINK/AVAX/LTC/DOT/TRX1500 根 15m bar(约 15.6 天)1000 / 500 bars为了做 repo portability probe,我写了一个最小实验脚本:
scripts/run_quant_digest_ctos_beta_pair_probe.pyreports/artifacts/quant_digests/ctos_beta_pairs_probe_20260420_0448/映射规则如下:
>= 0.85beta > 0ratio = A / B,用 train 段均值/方差做 z-scorecorr >= 0.95 → entry_z = 1.82.0|ΔZ| > 1.2 不开|z| <= 0.5 或 |z| >= 3.5 或 hold >= 32 根beta-weighted,并把 weight_a clamp 到 [0.30, 0.70]4 / 8 / 12 bps注意:
---
来自:
reports/artifacts/quant_digests/ctos_beta_pairs_probe_20260420_0448/summary.jsonpair_summary.csvportfolio_selected_trades.csv也就是说:
> 如果你真把 corr>=0.85 + beta>0 当 live admission,而不是“看起来像就交易”,当下可交易 pair 数并不多。
这反而是好事:它说明这套壳天然偏 selective,不是满天撒网式 pair spam。
ETHUSDT-SOLUSDT 是这轮最像“能活下来的主 pair”最近样本结果:
corr ≈ 0.866beta ≈ 0.903n_trades = 4gross_total ≈ +50.16 bpsnet_total @ 8bps ≈ +18.16 bpsavg_hold ≈ 32 bars翻成人话:
> 这类高 beta、强共振 majors pair,在 15m 上还能留下正的成本后空间,但交易数不多,持仓也不短。
所以它更像“慢一点的 short-cycle pair book 核心腿”,不是 ultra-HFT 信号。
BTCUSDT-ETHUSDT 也能过,但信号稀疏结果:
corr ≈ 0.889beta ≈ 0.6581 笔交易gross ≈ +21.32 bpsnet @ 8bps ≈ +13.32 bps这说明:
> 最经典的 majors pair 不一定差,但往往问题不是胜率,而是密度太低。
XRPUSDT-LINKUSDT 毛收益为正,但一扣成本就翻负结果:
corr ≈ 0.865beta ≈ 0.665n_trades = 13gross_total ≈ +39.99 bpsnet_total @ 4bps ≈ -12.01 bpsnet_total @ 8bps ≈ -64.01 bpsavg_hold ≈ 16.1 bars这正好给了一个很实用的 desk 教训:
> CT-OS 这类 shell 的真风险,不在于“回归失效”,而在于 signal density 一高,毛边会被成本吃光。
在“同一资产不能同时占多笔 pair” 的组合壳下:
selected_trades = 17distinct_pairs = 2gross_total ≈ +90.15 bpsnet_total @ 4bps ≈ +22.15 bpsnet_total @ 8bps ≈ -45.85 bpsXRPUSDT-LINKUSDT(13 笔)ETHUSDT-SOLUSDT(4 笔)这说明两个事:
所以这条线如果要继续做,关键已经不是“有没有 alpha”,而是:
> 能不能把 execution 做成 maker-first / selective-taker,或者进一步压缩无效 high-turnover pair。
---
当前项目对 pairs / stat-arb 的研究已经不少,但大部分更偏:
CT-OS 这份仓库更稀缺的点是:
> 它把“pair 是什么”之后那一层——book overlap、beta 权重、dirty spike、liquidity veto、cooldown——也一起暴露出来了。
5m / 15m 的迁移非常自然最自然的 desk 版本其实是:
1h:更新 pair admission / corr / beta / coint15m:主信号层(spread fade)5m:执行层(细化入场与撤单,不一定重新算 admission)也就是说它不是低频壳,而是非常适合做:
> 慢 admission + 快 execution
这套东西以后还可以迁移到:
因为它抽象出来的其实是:
这是一种 shared execution governance pattern,但它服务的依然是 raw alpha 本体。
---
README 说的是 stat-arb / cointegration / beta correlation; auto_universe_sync.php 主要做的是 correlation discovery + ratio z-score + beta; pair_scanner.php 又要求数据库里 is_cointegrated = 1。
说明什么?
> 这套系统很可能依赖仓库中未完整展示的额外 cron / DB 流程来补 cointegration 标记。
所以别把它直接当 paper-faithful 统计实现,更适合当工程壳来吸收。
backtesting.php 的回测比较粗它有完整参数表面,但:
所以它给我们的价值主要是:
而不是直接给可信收益表。
本轮 quick probe 已经很明显:
4bps 还能勉强活8bps 很容易翻负所以如果 desk 后续要真做这条:
> 执行质量比“再优化一点 z-score 参数”更重要。
asset exclusivity 是优点,也是容量上限禁止同一资产在多个 pair 同时占用,确实能减少 hidden directional overlap; 但它也会把可扩张性压低。
所以它更适合:
top few pairs不适合一开始就把 pair 数开很大。
---
看哪种顺序在当前 Binance perp majors 上:
asset exclusivity 做成可调 governor直接测三档:
这一步很关键,因为它决定 pair book 的容量上限。
当前 8bps 已经明显吃不消,下一步别再先卷信号,先测:
如果这个环节做不出来,alpha 再漂亮也没用。
dirty spike veto 系统化本轮只用了 |ΔZ| > 1.2 的简单 veto。 下一步建议加:
ΔZ percentile veto现在仓库风格是把 weight_a clamp 到 [0.30, 0.70]。 下一步可以做:
[0.25,0.75][0.30,0.70][0.40,0.60]看在:
之间谁更平衡。
---
> CT-OS 这份今天新建的仓库,不值得我们再把它读成“pairs 回归老故事”;它更该被保留成一条 production-minded raw alpha shell:beta-corr gated pair admission × beta-weighted spread fade × asset exclusivity guard。最近 Binance 15m quick probe 也说明,这套壳不是没边,但高度成本敏感——真正该优先补的不是更多 pair,而是 overlap 治理与低成本执行。
---
auto_universe_sync.php: <https://raw.githubusercontent.com/cryptoteamgr/CT-OS/main/auto_universe_sync.php>pair_scanner.php: <https://raw.githubusercontent.com/cryptoteamgr/CT-OS/main/pair_scanner.php>functions.php: <https://raw.githubusercontent.com/cryptoteamgr/CT-OS/main/functions.php>backtesting.php: <https://raw.githubusercontent.com/cryptoteamgr/CT-OS/main/backtesting.php>---
research/quant_digests/2026-04-20_0455_betacorr-gated-betaweighted-futures-pairs-shell.mdscripts/run_quant_digest_ctos_beta_pair_probe.pyreports/artifacts/quant_digests/ctos_beta_pairs_probe_20260420_0448/