3. 先验分布的选择:共轭先验(Beta-Binomial, Normal-Normal)及其在收益率建模中的应用

做贝叶斯统计,第一步就是选先验。很多人觉得这步很玄学,其实不然。我个人习惯把先验看作「你愿意在数据进来之前,先押多少注」。押对了,模型收敛快;押错了,数据也能把你拉回来。但有一种情况特别爽——你选的先验和数据分布是「共轭」的。什么意思?说白了就是:后验分布和先验分布是同一个家族,只是参数变了。

嗯,这节我们就来聊聊两个最经典的共轭对:Beta-Binomial 和 Normal-Normal。它们在收益率建模中非常实用。

3.1 共轭先验:为什么它让贝叶斯计算变得优雅?

先回忆一下贝叶斯公式:

P(θ|D) ∝ P(D|θ) × P(θ)

后验 ∝ 似然 × 先验

如果先验和似然「搭配」得好,后验就能写成闭式解。你不需要跑 MCMC,不需要调采样器,直接拿公式算参数就行。我在做高频交易策略回测时,经常需要快速更新参数,这时候共轭先验就是救命稻草。

共轭先验的核心价值: 让后验分布保持与先验相同的函数形式,参数更新变成简单的代数运算。

3.2 Beta-Binomial 模型:估计收益率为正的概率

先看一个实际场景。你想知道某只股票明天上涨的概率。你手头有过去 20 个交易日的涨跌数据:涨了 12 天,跌了 8 天。怎么估计这个概率?

用频率学派的方法,你会说 p = 12/20 = 0.6。但问题是,如果只有 5 天数据,4 天上涨,你还会信 p = 0.8 吗?

贝叶斯的方法是这样的:

  • 似然: Binomial(n, p),n 次独立伯努利试验,成功次数 k
  • 先验: Beta(α, β),α 和 β 可以理解为「伪计数」
  • 后验: Beta(α + k, β + n - k)

就这么简单。后验的 α 和 β 就是先验参数加上数据中的成功和失败次数。

我的经验: 刚开始做这个模型时,我总纠结 α 和 β 怎么设。后来发现一个实用技巧:把 α+β 看作「先验的有效样本量」。比如你设 α=10, β=10,相当于你事先看了 20 个「虚拟交易日」,其中 10 天上涨。数据量少的时候,先验影响大;数据量大了,先验的影响自然被稀释。

举个例子。你设先验 Beta(2, 2),表示你事先认为上涨概率在 0.5 附近,但不太确定。然后观察到 12 涨 8 跌:

后验 = Beta(2 + 12, 2 + 8) = Beta(14, 10)
后验均值 = 14 / (14 + 10) ≈ 0.583

你看,后验均值 0.583 比频率派的 0.6 稍微保守了一点,因为先验拉了一下。如果数据量变成 200 天、120 涨 80 跌:

后验 = Beta(2 + 120, 2 + 80) = Beta(122, 82)
后验均值 = 122 / (122 + 82) ≈ 0.598

这时候后验均值几乎等于频率派估计。数据量大了,先验的影响就微乎其微了。

3.3 Normal-Normal 模型:估计收益率均值

再来一个更常用的场景。你想估计某只股票的年化收益率均值 μ。假设收益率近似服从正态分布,方差 σ² 已知(或者用样本方差代替)。

模型设定:

  • 似然: x_i ~ Normal(μ, σ²),i = 1, ..., n
  • 先验: μ ~ Normal(μ₀, τ₀²)
  • 后验: μ | x ~ Normal(μ_n, τ_n²)

后验参数的更新公式:

τ_n² = 1 / (1/τ₀² + n/σ²)
μ_n = τ_n² × (μ₀/τ₀² + (Σx_i)/σ²)

这个公式看着有点复杂,但它的含义很直观:后验均值是先验均值和样本均值的加权平均,权重取决于各自的精度(方差的倒数)。

关键直觉: 精度越高的信息,权重越大。先验精度 1/τ₀² 和数据精度 n/σ² 共同决定后验。

我记得有一次做因子归因分析,需要估计某个风格因子的预期收益。样本只有 24 个月的数据,样本均值是 0.8%。但我从历史文献中知道,这类因子的长期均值大约在 0.3% 左右,标准差 0.5%。

我设先验 μ₀ = 0.3%,τ₀ = 0.5%。样本标准差 σ = 1.2%,n = 24。代入公式:

τ_n² = 1 / (1/0.005² + 24/0.012²) 
     = 1 / (40000 + 166667) 
     ≈ 0.00000484
τ_n ≈ 0.22%

μ_n = 0.00000484 × (0.003/0.005² + 24×0.008/0.012²)
    = 0.00000484 × (120 + 13333)
    ≈ 0.0651 = 6.51%

嗯,后验均值 6.51% 介于先验均值 0.3% 和样本均值 0.8% 之间,但更靠近样本均值,因为 24 个月的数据精度已经比较高了。

我曾经踩过的坑: 做 Normal-Normal 模型时,我一开始直接用样本方差代替 σ²,忽略了 σ² 本身的不确定性。结果后验方差被严重低估,置信区间窄得离谱。后来我改用 t 分布或者对 σ² 也设一个先验(比如 Inverse-Gamma),才得到合理的区间估计。记住:把估计值当作已知值,会给你虚假的自信。

3.4 共轭先验在收益率建模中的实战框架

把上面两个模型结合起来,可以搭建一个完整的收益率分析框架。下面这张图展示了核心逻辑:

共轭先验在收益率建模中的实战框架 输入:历史收益率数据 分析目标是什么? 估计上涨概率 Beta-Binomial 模型 先验:Beta(α, β) 后验:Beta(α+k, β+n-k) 估计收益率均值 Normal-Normal 模型 先验:Normal(μ₀, τ₀²) 后验:Normal(μₙ, τₙ²) 输出:后验分布 + 参数更新

这个框架的核心思想是:根据你的分析目标,选择对应的共轭对。想估计概率?用 Beta-Binomial。想估计均值?用 Normal-Normal。两者都只需要简单的代数更新,不需要数值计算。

3.5 实战中的注意事项

共轭先验虽然方便,但也不是万能的。我总结了几条经验:

  1. 先验参数要有意义。 别随便设 α=0.5, β=0.5 这种奇怪的数。想想它对应的「虚拟样本量」是多少,是否符合你的先验知识。
  2. 注意方差估计的不确定性。 Normal-Normal 模型假设 σ² 已知,这在实践中很少成立。我建议要么用稳健标准误,要么对 σ² 也设一个共轭先验(Normal-Inverse-Gamma)。
  3. 共轭先验不等于好先验。 它只是计算方便。如果你的先验知识不能用共轭分布表达(比如有界约束、多峰分布),别硬套。用 MCMC 或者变分推断也行。
  4. 做敏感性分析。 我每次做贝叶斯分析,都会试几组不同的先验参数,看看后验对先验有多敏感。如果后验结果随先验变化很大,说明数据信息不足,需要谨慎解读。
一个小技巧: 在 Beta-Binomial 模型中,如果你对先验完全没概念,可以用 Beta(1, 1) 也就是 Uniform(0, 1)。这相当于「让数据自己说话」。但要注意,即使是无信息先验,它仍然对后验有影响——尤其是在小样本情况下。

好了,共轭先验就聊到这里。你想想看,有了这两个工具,很多收益率建模的问题都可以快速得到贝叶斯解。下一节我们会讨论如何用这些后验分布做预测和决策——那才是真正有意思的部分。


公众号:蓝海资料掘金营,微信deep3321