halo 的技术博客

返回

量化投资本质上是一门处理不确定性的艺术。市场的运行充满随机性,每一个交易决策都是在信息不完备条件下的概率判断。传统统计方法在处理这种不确定性时往往显得过于生硬,而概率编程(Probabilistic Programming)提供了一套优雅的框架,让机器能够像人类推理一样,自然地表达和操作不确定性。

为什么量化研究需要贝叶斯思维#

在经典频率学派统计中,参数被视为固定但未知的常量,我们通过大量观测数据来估计这个固定值。而贝叶斯学派则将参数本身视为随机变量,认为在看到数据之前,我们对参数就应该有一个先验的信念分布,随着新数据的观测,不断更新这个信念。

对于量化研究而言,贝叶斯思维具有天然的契合度。当我们构建一个选股因子时,因子的真实预测能力本身就是不确定的——它可能在历史上表现优异,但在未来市场环境中可能失效。频率学派的方法会告诉我们这个因子在回测期间的平均收益,而贝叶斯方法则会给出一个预测能力的后验分布,帮助我们量化这种不确定性本身。

概率编程语言如 PyMC、Stan、Turing.jl 等,让研究者无需深入数学推导,就能灵活地指定复杂的概率模型,让 MCMC(马尔可夫链蒙特卡洛)或变分推断算法自动完成推理过程。

从线性回归到层次化因子模型#

传统多因子模型通常假设因子暴露(factor exposures)是固定不变的,不同股票之间的因子相关性也是恒定的。这种假设过于简化,无法捕捉市场的动态演化特性。

通过概率编程,我们可以构建更加真实的层次化因子模型。在层次化结构中,因子的预测能力被建模为一个从全局先验分布中抽取的随机变量,不同行业或不同市值组的因子强度存在差异,但彼此之间又通过共享的全局分布相互关联。

这种层次化结构带来了几个实际好处。首先,它提供了自然的正则化机制:数据稀少的因子组会向全局均值收缩,避免过拟合;其次,它允许因子强度在不同市场环境间动态变化,提高了模型的适应性;第三,它为因子筛选提供了概率化的依据——我们可以计算每个因子被纳入模型的后验概率,而不仅仅依赖统计显著性检验。

不确定性量化:超越点估计#

概率编程最吸引量化研究者的特性之一,是它对不确定性的一流支持。在传统框架下,我们计算因子 IC(信息系数)得到一个点估计,但不知道这个估计本身的波动有多大。而在贝叶斯框架下,我们得到的是 IC 的后验分布,可以直接回答”IC 大于 0.05 的概率是多少”这样的问题。

这种能力对于风险管理具有直接价值。当模型对某个因子的预测高度不确定时,系统可以自动降低对该因子信号的依赖权重,或者在极端情况下选择不依赖该因子。这比简单地设定固定阈值要智能得多。

更进一步,概率模型可以区分两种不同来源的不确定性:偶然不确定性(Epistemic Uncertainty)来自数据的有限性,可以通过更多数据来减少;认知不确定性(Aleatoric Uncertainty)来自市场本身的随机性,无法通过数据量来消除。识别这两种不确定性有助于研究者更准确地评估模型的可改进空间。

因子交互与非线性效应#

现实市场中,因子之间往往存在复杂的交互作用。小市值因子在动量强势时表现更好,在市场反转期间表现更差——这种交互效应在传统线性模型中需要手动构造交互项来捕捉。

概率编程允许我们以更加灵活的方式建模因子交互。可以指定因子的非线性效应,比如某个因子的边际贡献随着其暴露的增加而递减(类似对数函数形态)。也可以指定条件效应,让一个因子的表现依赖于另一个因子的状态。

高斯过程(Gaussian Processes)是一种特别强大的非参数贝叶斯方法,可以用于建模因子收益的平滑时变曲线,而无需事先指定函数形式。通过概率编程框架,这些复杂模型可以被无缝整合到因子研究流程中。

模型比较与选择#

概率编程框架还提供了优雅的模型比较工具。对于两个竞争性的因子模型,可以计算它们在给定数据下的边际似然(Marginal Likelihood),从而进行贝叶斯模型选择。这比传统的 AIC、BIC 等准则更加原则化,因为它直接基于模型的预测能力进行评判。

更实用的做法是使用贝叶斯因子(Bayes Factor)来比较两个假设——比如”动量因子有效”vs”动量因子无效”。贝叶斯因子不仅告诉我们哪个假设更可能是真的,还量化了支持的程度。这比单纯的 p 值检验提供了更加丰富的信息。

计算挑战与实用技巧#

概率编程的主要瓶颈在于计算。当模型复杂、数据量大时,MCMC 采样的计算开销可能令人望而却步。变分推断(Variational Inference)通过将精确后验分布近似为简单的分布族,可以大幅加速推理过程,虽然牺牲了一些精度,但在许多实际场景中已经足够好。

实用中的一些技巧包括:先在小样本上调试模型,再扩展到全量数据;使用 GPU 加速的推断引擎如 NumPyro;对高度相关的参数进行重新参数化以改善采样效率。

分层模型的设计需要注意先验的选择。无信息先验在层次化结构中可能产生不合理的极端值,而适度信息化的先验(如 weakly informative priors)可以引导采样过程收敛到合理的区域。

面向未来的因子研究#

概率编程正在从学术研究走向量化实盘。随着推理算法的效率提升和概率编程库的成熟,越来越多的量化团队开始将贝叶斯方法纳入因子研究的常规工具箱。

可以预见,未来的因子发现流程将更加概率化:不是寻找”最佳”的单一因子,而是维护一个因子有效性的概率分布;不是追求预测误差的最小化,而是优化不确定性下的风险调整收益;因子之间的权重不是固定的,而是根据当前市场状态动态调整的后验分布。

这种思维方式的转变,不仅是技术层面的升级,更是对市场本质理解的一次深化。市场永远充满不确定性,承认并合理量化这种不确定性,是持续获取 Alpha 的前提条件。

贝叶斯因子模型示意

不确定性量化示意

贝叶斯思维驯服不确定性:概率编程在量化因子发现中的应用
https://blog.halo26812.eu.org/blog/probabilistic-programming-factor-discovery
Author halo
Published at 2026年7月27日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨