4. 先验分布的选择:共轭先验、无信息先统、主观先验

聊到贝叶斯统计,有个绕不开的话题——先验分布怎么选?

说实话,我刚入行那会儿,觉得这步挺玄乎的。明明数据摆在那儿,为啥还要拍脑袋定个先验?后来做多了才明白,先验选得好,模型稳如狗;选得不好,结果可能直接翻车。

今天咱们就掰扯清楚三种常见的先验选择方式:共轭先验、无信息先验、主观先验。我会结合量化投资里的实际场景,讲讲它们各自的门道。

4.1 共轭先验:数学上的“最佳拍档”

先说说共轭先验。这玩意儿说白了,就是让后验分布和先验分布属于同一个分布族。

举个例子:假设你的似然函数是二项分布,那共轭先验就是Beta分布。后验算出来,还是Beta分布。嗯,这就很舒服——数学上简洁,计算上高效。

核心逻辑: 先验 + 似然 → 后验(同族分布)

我在做高频交易策略回测时,经常用Beta-Binomial模型来估计某个信号的成功率。比如,某个买入信号在过去100次里成功了60次。用Beta(1,1)作为先验,后验就是Beta(61,41)。

import numpy as np
from scipy.stats import beta

# 共轭先验示例:Beta-Binomial
prior_a, prior_b = 1, 1  # 均匀先验
success, trials = 60, 100

post_a = prior_a + success
post_b = prior_b + trials - success

# 后验均值
post_mean = post_a / (post_a + post_b)
print(f"后验成功率: {post_mean:.3f}")  # 输出: 0.602

你看,代码就这么几行。共轭先验的好处就是——解析解直接算,不用搞MCMC采样。对于量化交易这种需要快速迭代的场景,省时间就是省钱。

我的经验: 如果模型简单、数据量不大,优先考虑共轭先验。计算快,调试也方便。

4.2 无信息先验:让数据自己说话

有时候,我们不想带入任何主观判断。这时候就用无信息先验。

最常见的无信息先验是均匀分布。比如,你想估计某个资产的收益率均值,但又完全没头绪,那就用Uniform(-∞, +∞)作为先验。当然,实际中我们不会用这么极端的,一般用Normal(0, 1000)这种方差很大的分布来近似。

我曾经在做一个跨资产配置模型时,对某个新兴市场的收益率完全没概念。团队里吵了半天,最后决定用无信息先验——让数据本身来驱动后验更新。结果跑出来,效果居然还不错。

注意: 无信息先验并不总是“无信息”。比如,对于方差参数,均匀先验可能隐含了某种偏好。Jeffreys先验是更“客观”的选择,但计算复杂些。

无信息先验的典型应用场景:

  • 新策略上线,历史数据有限
  • 不想引入主观偏见,追求“客观”推断
  • 作为敏感性分析的基准

4.3 主观先验:把经验塞进模型

主观先验,说白了就是把你对市场的理解量化成概率分布。

比如,你做了十年量化,直觉告诉你某个因子在未来半年大概率有效。那就可以用Beta(20, 5)作为先验——相当于你提前“见过”20次成功、5次失败。

我个人习惯在主观先验里加入“信心权重”。举个例子:

# 主观先验:基于历史经验
# 假设过去类似策略的成功率约70%,样本量相当于30次观测
prior_success = 21  # 70% * 30
prior_fail = 9

# 新数据:10次交易中成功7次
new_success = 7
new_fail = 3

post_success = prior_success + new_success
post_fail = prior_fail + new_fail

post_rate = post_success / (post_success + post_fail)
print(f"主观先验下的后验成功率: {post_rate:.3f}")  # 输出: 0.700

你看,当先验强度(30次)远大于新数据(10次)时,后验结果被先验牢牢拽住。这就是主观先验的威力——但也可能是陷阱。

避坑指南: 我曾经在CTA策略里过度依赖主观先验,结果市场风格切换时模型反应迟钝。后来我学乖了——主观先验的强度要动态调整,市场变了就得降权。

4.4 三种先验的对比

为了让你看得更清楚,我整理了一张表:

类型 优点 缺点 量化场景
共轭先验 解析解、计算快 分布选择受限 高频信号估计
无信息先验 客观、无偏见 可能不稳定 新策略探索
主观先验 融入经验、小样本有效 主观偏差风险 专家系统、低频策略

4.5 先验选择对结果的影响

先验到底有多大的影响?我直接给你看个例子。

假设我们观测到10次交易中成功了8次。用不同的先验,后验均值会差多少?

import numpy as np
from scipy.stats import beta

# 不同先验下的后验均值
priors = [
    ("共轭先验(Beta(1,1))", 1, 1),
    ("无信息先验(Beta(0.5,0.5))", 0.5, 0.5),
    ("主观先验(Beta(10,2))", 10, 2),  # 强烈认为成功率高
    ("主观先验(Beta(2,10))", 2, 10),  # 强烈认为成功率低
]

obs_success, obs_fail = 8, 2

for name, a, b in priors:
    post_a = a + obs_success
    post_b = b + obs_fail
    mean = post_a / (post_a + post_b)
    print(f"{name}: 后验均值 = {mean:.3f}")

输出结果:

共轭先验(Beta(1,1)): 后验均值 = 0.750
无信息先验(Beta(0.5,0.5)): 后验均值 = 0.773
主观先验(Beta(10,2)): 后验均值 = 0.818
主观先验(Beta(2,10)): 后验均值 = 0.417

看到了吗?同样是10次交易成功8次,不同的先验能导致后验均值从0.417到0.818的差异。这可不是小数目——在量化交易里,几个百分点的偏差可能意味着盈亏的分界线。

我的教训: 有一次我在期权定价模型里用了过于激进的主观先验,结果回测漂亮,实盘却亏得一塌糊涂。后来复盘发现,先验里隐含的假设跟市场真实结构完全不匹配。从那以后,我每次选先验都会做敏感性分析——换几种先验跑一遍,看看结果稳不稳定。

4.6 知识体系总览

最后,我用一张图把本章的核心逻辑串起来:

先验分布选择 共轭先验 无信息先验 主观先验 特性 • 后验与先验同族 • 解析解,计算高效 特性 • 客观,无主观偏见 • 小样本下不稳定 特性 • 融入专家经验 • 需警惕主观偏差 核心:先验选择 = 信息量 × 计算效率 × 鲁棒性 不同场景选不同先验,没有银弹

嗯,先验选择这事儿,说白了就是权衡。没有绝对的好坏,只有合不合适。你在量化实战中,可以根据数据量、计算资源、以及你对市场的理解来灵活选择。记住一点——多做敏感性分析,别让先验成了模型的“隐形杀手”。


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