统计学基础
上一章解决了「数据是什么口径」,这一章解决「怎么用数字描述数据」。量化里的每一句话——「这个策略年化 15%、最大回撤 8%」「这两只股票相关性很高」「这个信号显著」——背后都是统计学的概念。这一章是全教程数学最重的一章,但每个公式都只有三件事:它怎么写、它说人话是什么意思、拿几个真数字手算一遍。
收益率:一切统计的起点
Section titled “收益率:一切统计的起点”统计学不直接研究价格,研究的是收益率。原因很简单:茅台 1700 元涨 17 元和一只 100 元的股票涨 1 元,价格变动差了 17 倍,但对持有人来说都是 +1%。收益率把不同价位的股票换算到同一把尺子上。
人话解释:今天赚的钱除以昨天的本钱。 是第 天的(复权)收盘价, 是前一天的。 就是「今天赚了 2%」。
手算一遍:一只股票昨天收盘 10 元,今天收盘 11 元:
如果明天从 11 元跌回 10 元:。注意这个不对称:涨 10% 再跌 9.09%,价格回到原点,但两个简单收益率加起来是 +0.91%,不是 0。
人话解释: 是自然对数,先把「今天价格是昨天的几倍」取对数再当收益率用。它的数值和简单收益率非常接近(涨跌幅度小时差别在小数点后三位),但有一个简单收益率没有的好性质:可以直接相加。两天的对数收益之和 = 两天的总对数收益。
手算一遍:还是 10 元涨到 11 元:
第二天跌回 10 元:。两天相加正好等于 0——价格回到原点,对数收益归零,对上了。而简单收益率那笔账(+10%、−9.09%)要靠乘法才能复原:。
实际怎么用:算单日涨跌、给客户看业绩,用简单收益率(直观);做统计建模、把多期收益加总,用对数收益率(可加)。本章后面的例子都用简单收益率,因为手算更直观。
均值、方差、标准差
Section titled “均值、方差、标准差”拿到一串收益率,最先问的三个问题:平均赚多少?波动有多大?波动用「平均赚多少」的单位怎么表达?分别对应均值、方差、标准差。
人话解释:把所有天的收益率加起来除以天数, 就是「求和」的记号。日均收益 0.1%,一年 250 个交易日,粗略年化就是 25%。
方差与标准差
Section titled “方差与标准差”
人话解释:方差是「每天收益偏离均值多远」的平方的平均——先平方是为了让涨 2% 和跌 2% 都算「偏离」,不至于正负抵消。除以 而不是 是统计学的修正(样本方差), 大时两者几乎没区别。方差的单位是「百分比的平方」,没法和收益率直接比,所以开平方得到标准差 ——它和收益率同单位,日收益的标准差就是交易员口中的日波动率。
手算一遍:某只股票 5 天的日收益率(%):1、−2、3、0、2。
均值:。
每天的偏离:、、、、。
平方:、、、、,合计 。
样本方差:(%²)。标准差:。
解读:这只股票平均日涨 0.8%,典型的一天在均值上下约 2 个百分点的范围里晃。注意均值(0.8%)还不到波动(1.92%)的一半——单日的涨跌里噪声远大于趋势,这是后面假设检验一节重要的直觉基础。
收益的分布:直方图与正态分布
Section titled “收益的分布:直方图与正态分布”均值和方差是两个数字,分布是完整的一张图:把所有收益率按大小分桶,数每个桶里有几天,画成柱状图,就是直方图。
下面是用 500 个合成日收益(模拟一只日波动约 2% 的股票两年的行情)画的直方图,柱子上叠加了一条同均值、同标准差的正态分布曲线(那条钟形曲线,就是「理想情况」长什么样):
人话解读:正态分布是统计学的「标准答案」——大部分日子挤在均值附近,越极端的日子越少,左右对称。它有个著名的经验法则:约 68% 的日子落在均值 ±1 个标准差内,约 95% 落在 ±2 个标准差内,±3 个标准差以外的日子理论上只占 0.27%。
但仔细看这张图,实际分布和正态曲线有两处对不上:
- 中间更尖:正态曲线预测的峰值天数约 62 天,实际中间的桶有 74 天——小涨小跌的日子比正态预期的更多;
- 两端更厚:±3 个标准差以外的日子,正态预期 500 天里约 1.4 天,实际有 11 天——暴涨暴跌比正态预期的多得多。
中间尖、两端厚,合起来叫厚尾(fat tails),是真实股票收益的普遍特征。这份合成数据是故意按厚尾生成的,超额峰度约 3.5(正态分布是 0)——真实 A 股个股的日收益,厚尾程度往往比这还夸张。记住这张图:任何假设收益服从正态分布的公式,都在低估极端行情的概率。
偏度与峰度:分布的形状参数
Section titled “偏度与峰度:分布的形状参数”均值和方差描述了分布的「位置」和「宽度」,偏度和峰度描述「形状」。
人话解释:结构和方差几乎一样,只是把平方换成了立方。立方保留正负号:右边(大涨)的极端值立方后是巨大的正数,左边(大跌)是巨大的负数。加总之后哪边赢,分布就偏向哪边:
- 偏度 > 0(右偏/正偏):右边尾巴更长——大多数时候小跌,偶尔暴涨(彩票型);
- 偏度 < 0(左偏/负偏):左边尾巴更长——大多数时候小涨,偶尔暴跌(瀑布型,个股和爆仓策略的典型形态);
- 偏度 ≈ 0:左右大致对称。
手算一遍(简化为符号判断):5 天收益率(%):0、1、1、1、4。均值 ,偏离为 −1.4、−0.4、−0.4、−0.4、+2.6。立方:
合计 。右边那个 +4% 的极端值在立方后被放大成 17.6,压过了左边所有项——正偏,和「偶尔暴涨」的直觉一致。把数据镜像成 −4、−1、−1、−1、0,所有立方变号,合计 −14.64,负偏。
人话解释:峰度是四次方版的偏离加总(公式结构和偏度相同,指数从 3 换成 4,这里不展开)。四次方把极端值放大得更狠,所以峰度本质上是在称量尾巴的重量。实际报告里都用超额峰度 = 峰度 − 3,这样正态分布正好是 0:
- 超额峰度 > 0:厚尾,极端行情比正态预测的多——股票收益的常态;
- 超额峰度 ≈ 0:接近正态;
- 超额峰度 < 0:薄尾,罕见。
本节合成数据的超额峰度约 3.5、偏度约 0.16——轻微正偏、明显厚尾。直方图里看到的「尖峰厚尾」,用这两个数就量化了。
相关系数:两个序列有多像
Section titled “相关系数:两个序列有多像”
人话解释:协方差 度量两个序列「同涨同跌」的程度:每天把 X 的偏离和 Y 的偏离相乘,同向得正、反向得负,再加总平均。问题是协方差的数值没有上限、单位也怪,没法判断「多大算大」。于是除以两个标准差把它压缩到 −1 和 +1 之间,这就是相关系数 :+1 是完全同步,−1 是完全反向,0 是线性上互不相关。
手算一遍:股票 A 和股票 B 的 5 日收益(%):
| 日 | A | B |
|---|---|---|
| 1 | 1 | 2 |
| 2 | −2 | −3 |
| 3 | 3 | 4 |
| 4 | 0 | −1 |
| 5 | 2 | 3 |
均值:(上一节算过),。
偏离相乘,逐日算:、、、、,合计 。
协方差:(%²)。
标准差:;。
两只股票几乎完全同步——这不奇怪,看数据就知道 B 每天的涨跌方向和幅度都紧跟着 A。量化的用途:组合里放两只 ρ = 0.98 的股票等于加倍下注同一件事,没有分散效果;真正的分散要找 ρ 接近 0 甚至为负的资产。
一元线性回归:β 的直觉
Section titled “一元线性回归:β 的直觉”
人话解释:把个股收益 拆成三部分:大盘收益 能解释的部分()、与大盘无关的固定部分()、解释不了的噪声()。 是相对波动的放大倍数:β = 1.5 表示大盘涨 1%,这只股票平均涨 1.5%;β = 0.5 表示它只跟一半。α 是去掉大盘影响后「白赚」的部分——选股 Alpha 这个词就来自这里。
不是拍脑袋定的,它和上一节的相关系数是一家人:
手算一遍:沿用上面 A、B 两只股票的数据,把 A 当「大盘」、B 当「个股」:
解读:B 的波动是 A 的约 1.5 倍(β = 1.49),但去掉跟随 A 的部分后,B 平均每天还跑输 0.19%(α 为负)——高 β 不等于好股票,它只是放大器。用 验算:,两条路算出来一致。
假设检验与 p 值:这个结果是不是运气
Section titled “假设检验与 p 值:这个结果是不是运气”这是全章最重要、也最容易被用错的一节。
场景:一个策略回测了 100 天,赚了钱。它是真有用,还是瞎猫碰上死耗子?假设检验的处理方式是反着问:先假设策略没用(这叫原假设),再算「在策略没用的前提下,出现这么好(或更好)结果的概率」——这个概率就是 p 值。p 值越小,「纯靠运气」这个解释越站不住脚。
掷硬币类比:有人声称能预测硬币,抛 10 次猜中 8 次。他真有超能力吗?先假设他没有(猜中的概率就是 50%),算「纯蒙也能蒙对 8 次或更多」的概率:
人话解读:一个纯蒙的人,每 1000 次「抛 10 次」的实验里,约有 55 次能蒙对 8 次以上——不算太罕见。所以 10 中 8 不足以让我们相信他有超能力,这就是「p = 5.5%,不显著」的含义。
p 值最常见的误读:p = 5.5% 不是「策略没用的概率是 5.5%」,也不是「结论正确的概率是 94.5%」。它只回答了一个问题:如果策略没用,看到这么极端的结果有多意外。原假设本身为真的概率,p 值给不出来。
两条实战推论:
- 5% 这条线是人为约定的,p = 4.9% 和 p = 5.1% 没有本质区别,别把「显著/不显著」当开关用;
- 试得越多,假阳性越多:每个无效策略都有 5% 的概率蒙出 p < 5%。如果你回测了 100 个策略只报告最好的那个,它「显著」很可能只是 100 次抽奖里的中奖者。策略池越大,对 p 值的要求就该越苛刻。
QQ 图:一眼看穿「是不是正态」
Section titled “QQ 图:一眼看穿「是不是正态」”直方图看厚尾要靠眼力,QQ 图(分位数-分位数图)把这个问题变成「点是否在一条直线上」。
做法:把 500 个收益从小到大排序,第 个就是样本的 分位数(比如中位数是第 250 个);再算标准正态分布在同样位置的分位数应该是多少;把两者配成点对画出来。如果收益真是正态分布,所有点应该落在 y = x 这条 45° 直线上(图中红色虚线)。
人话解读:图中间的点基本贴在直线上——普通日子的收益确实接近正态;但两端的点明显「翘起来」离开直线:最左端的点理论值约 −3.1 个标准差,实际到了 −4.9;最右端理论 +3.1,实际 +4.4。两端上翘(下翘)成 S 形,就是厚尾的图形签名。以后看任何收益序列,画一张 QQ 图,三秒钟就能判断「能不能用正态假设」。
伪代码:从收益序列到统计量
Section titled “伪代码:从收益序列到统计量”给定一串复权收盘价,算出收益率,再算均值、方差、偏度——这是后面每一章都会复用的流程:
输入:复权收盘价序列 prices[0..n](共 n+1 个价格)输出:均值 mean、标准差 sd、偏度 skew
第一步:计算收益率 对 t 从 1 到 n: r[t] = prices[t] / prices[t-1] - 1 (收益率比价格少一个点,共 n 个)
第二步:均值 sum = 0 对每个 r[t]:sum = sum + r[t] mean = sum / n
第三步:方差与标准差 sq = 0 对每个 r[t]:sq = sq + (r[t] - mean) 的平方 variance = sq / (n - 1) // 样本方差,除以 n-1 sd = variance 开平方
第四步:偏度 cube = 0 对每个 r[t]:cube = cube + ((r[t] - mean) / sd) 的立方 skew = cube * n / ((n - 1) * (n - 2))
第五步:健全性检查 若 sd 等于 0:序列没有波动,偏度无法计算,直接报错 若 n 小于 30:打印警告「样本太少,统计量不可靠」- 相关 ≠ 因果。两只股票 ρ = 0.98,不一定是 A 带动 B——很可能它们同属一个板块,被同一个因素(行业政策、大盘情绪)同时驱动。冰淇淋销量和溺水人数高度相关,因为背后都是「天热」。拿相关性当因果用,会做出「买入 A 就能预测 B」之类的错误策略。
- 小样本的统计量不可靠。20 天回测算出的夏普比率 3.0、5 天数据算出的相关系数 0.9,噪声远大于信号。经验上,均值和相关系数至少需要上百个观测才谈得上稳定,偏度峰度需要更多。样本不够时,正确的做法是承认「不知道」,而不是把噪声当结论。
- 用正态假设给尾部风险定价。直方图一节已经看到:±3 个标准差以外的日子,正态预测 1.4 天、实际 11 天,差了近 8 倍。凡是以正态为前提的风控公式(如经典 VaR),都会系统性地低估爆仓概率。厚尾不是理论细节,是真金白银。
统计语言备齐了:收益率是原料,均值方差是概况,偏度峰度看形状,相关与回归看关系,p 值负责泼冷水。下一章用这套语言定义「假设」与「信号」——把一个模糊的交易想法,变成可以被数据检验的命题。