4. 价差计算:基础价差公式、对数价差与百分比价差的区别
说到价差计算,很多新手第一反应就是「A减B」。嗯,没错,这是最直观的方式。但实际做量化交易时,你会发现事情没那么简单。
我个人习惯把价差计算分成三个层次:基础价差、对数价差和百分比价差。它们各有各的适用场景,选错了,策略可能直接崩掉。
4.1 基础价差公式:最直观,但坑最多
基础价差就是两个价格直接相减:
spread = price_A - price_B
这有什么好说的?你想想看,如果BTC在交易所A是50000 USDT,在交易所B是50050 USDT,那价差就是-50 USDT。简单吧?
但我在项目中遇到过一个大坑:价格尺度不一致。比如ETH价格是3000 USDT,而某个山寨币价格是0.5 USDT。你直接相减,价差几乎完全被ETH的价格波动主导,山寨币那点变化根本看不出来。
另外,基础价差还有一个隐含假设——价差是平稳的。如果两个币种的价格趋势不同,价差会随时间漂移,这时候用基础价差做均值回归,大概率亏钱。
4.2 对数价差:我个人的首选
对数价差长这样:
log_spread = log(price_A) - log(price_B)
说白了,就是取对数后再相减。为什么这么做?
第一,对数价差天然是百分比变化的近似。当价格变化很小时,log(price_A) - log(price_B) ≈ (price_A - price_B) / price_B。也就是说,它衡量的是相对变化,而不是绝对变化。
第二,对数价差更稳定。我记得有一次做ETH/BTC的价差套利,ETH从300涨到3000,BTC从10000涨到60000。基础价差从-9700变成了-57000,完全没法用。但对数价差呢?log(300)-log(10000) ≈ -3.5,log(3000)-log(60000) ≈ -3.0,变化幅度小得多,而且均值回归特征明显。
第三,对数价差可以处理价格归一化。如果你把两个价格都除以某个基准,对数价差不变。这在实际操作中非常方便。
4.3 百分比价差:直观但容易误导
百分比价差有两种常见形式:
pct_spread_1 = (price_A - price_B) / price_B
pct_spread_2 = (price_A - price_B) / ((price_A + price_B) / 2)
第一种是相对于B的百分比,第二种是相对于平均价格的百分比(也叫中点法)。
百分比价差的好处是直观——「价差是0.5%」,一听就懂。但问题也在这里。
我曾经犯过一个错误:用百分比价差做统计套利,结果发现阈值很难设。为什么?因为百分比价差的分布不是对称的。当price_A远大于price_B时,百分比价差接近+100%;当price_A远小于price_B时,百分比价差接近-100%。但实际交易中,价差很少会到±100%,所以阈值设小了没信号,设大了又错过机会。
4.4 三种价差的对比
我把它们的核心区别整理成了表格,方便你对照:
| 特性 | 基础价差 | 对数价差 | 百分比价差 |
|---|---|---|---|
| 计算公式 | P_A - P_B | ln(P_A) - ln(P_B) | (P_A - P_B)/P_B |
| 适用场景 | 同品种跨交易所 | 不同品种、不同尺度 | 快速监控、展示 |
| 平稳性 | 差(受趋势影响) | 好(比例关系) | 中等(受分母影响) |
| 对称性 | 对称 | 近似对称 | 不对称 |
| 统计建模友好度 | 低 | 高 | 中 |
4.5 实战中的选择逻辑
说了这么多,到底怎么选?我一般按这个逻辑来:
- 同币种、同交易所、不同账户:用基础价差。比如你在两个账户之间搬砖,价格尺度完全一致,直接相减就行。
- 同币种、不同交易所:用基础价差或对数价差都行。但要注意,如果交易所之间价差波动很大,对数价差更稳定。
- 不同币种(如ETH/BTC):必须用对数价差。这是最稳妥的选择,没有之一。
- 快速展示给团队或客户:用百分比价差。大家一听就懂,不需要解释对数是什么。
4.6 知识体系图
下面这张图总结了三种价差的核心逻辑和选择路径:
嗯,这张图基本把选择逻辑说清楚了。你从「价差计算」出发,先问自己是不是同品种,然后根据场景选对应的方法。记住,对数价差是万金油,基础价差是特例,百分比价差是展示工具。
最后说一句,价差计算只是第一步。真正决定策略生死的是价差的统计特性——它是不是平稳的?它的波动率是多少?它的自相关结构如何?这些才是你后续要深挖的东西。
公众号:蓝海资料掘金营,微信deep3321