Skip to content

7.4 最大熵原理与量化应用

最大熵原理(Maximum Entropy Principle)认为,在所有满足约束条件的分布中,应选择熵最大的那一个——即最无偏、最保守的分布。这是量化金融中从期权价格提取风险中性分布的强大工具。


最大熵原理

基本思想

在 Jaynes(1957)的表述中:当我们需要从部分信息(如已知的矩条件)推断一个概率分布时,应该选择熵最大的那个分布——因为任何其他分布都隐含了额外的、未被数据支持的假设。

核心原则:不要假设你不知道的信息。

数学形式

给定 mm 个约束条件 E[fk(X)]=μk\mathbb{E}[f_k(X)] = \mu_kk=1,,mk=1,\dots,m),求解:

maxqH(q)=jqjlogqjs.t.jqjfk(xj)=μk,  jqj=1\max_{q} H(q) = -\sum_{j} q_j \log q_j \quad \text{s.t.} \quad \sum_{j} q_j f_k(x_j) = \mu_k,\; \sum_j q_j = 1

这是一个凸优化问题,解的形式为指数族分布

qj=exp(kλkfk(xj))jexp(kλkfk(xj))q_j^* = \frac{\exp\left(-\sum_{k} \lambda_k f_k(x_j)\right)}{\sum_j \exp\left(-\sum_{k} \lambda_k f_k(x_j)\right)}

其中 λk\lambda_k 是拉格朗日乘子,通过求解约束方程确定。

经典例子

  • 仅已知均值 → 最大熵分布是指数分布
  • 仅已知均值和方差 → 最大熵分布是正态分布
  • 仅已知支持区间 → 最大熵分布是均匀分布

给定 NN 只看涨期权的市场价格 CiC_i,最大熵方法求解以下优化问题:

maxqH(q)=jqjlogqjs.t.jqj(SjKi)+=Ci,  jqj=1\max_{q} H(q) = -\sum_{j} q_j \log q_j \quad \text{s.t.} \quad \sum_{j} q_j (S_j - K_i)^+ = C_i,\; \sum_j q_j = 1

其中 qjq_j 是到期时资产价格 SjS_j 的风险中性概率,(SjKi)+(S_j - K_i)^+ 为行权价 KiK_i 的期权收益。这给出了最无偏的隐含分布。

Avellaneda 方法

Avellaneda 等人(1996)将最大熵方法应用于从期权价格中提取风险中性分布:

  1. 收集不同行权价的期权市场价格
  2. 以这些价格为约束条件
  3. 最大化熵得到最无偏的定价测度
  4. 该分布可以用于定价奇异期权或计算风险指标

优势:与 Black-Scholes 不同,最大熵方法不需要假设收益率服从正态分布——它是一种非参数方法。


在资产配置中,熵池(Entropy Pooling)方法(Meucci, 2008)将先验观点和新的市场信号通过最小化 KL 散度来融合:

minqDKL(qp)s.t.新约束条件\min_{q} D_{\text{KL}}(q \parallel p) \quad \text{s.t.} \quad \text{新约束条件}

其中 pp 是先验分布(如历史分布),qq 是后验分布。这与最大熵原理互补——最大熵处理"无先验"情况,熵池处理"有先验"情况。

应用场景

场景方法输入输出
期权定价测度提取最大熵期权市场价格风险中性分布
资产配置观点融合熵池先验分布 + 新观点后验分布
压力测试熵池历史分布 + 极端情景约束压力情景分布

Python 示例:最大熵分布

python
import numpy as np
from scipy.optimize import minimize

def max_entropy_distribution(mu, f_values, support):
    """
    给定约束 E[f(X)] = mu,求解最大熵分布
    
    参数:
        mu: 约束的期望值
        f_values: 每个支撑点上的 f(x_j) 值
        support: 分布的支撑点
    """
    n = len(support)
    
    def entropy(q):
        q = np.maximum(q, 1e-15)
        return -np.sum(q * np.log(q))
    
    def constraint_mean(q):
        return np.sum(q * f_values) - mu
    
    def constraint_sum(q):
        return np.sum(q) - 1.0
    
    # 初始值:均匀分布
    q0 = np.ones(n) / n
    
    constraints = [
        {'type': 'eq', 'fun': constraint_mean},
        {'type': 'eq', 'fun': constraint_sum}
    ]
    bounds = [(0, 1)] * n
    
    result = minimize(lambda q: -entropy(q), q0,
                      method='SLSQP', bounds=bounds,
                      constraints=constraints)
    
    return result.x

# 示例:已知均值为 3 的离散分布(支撑点 1,2,3,4,5)
support = np.array([1, 2, 3, 4, 5])
# 约束:均值为 3
q_maxent = max_entropy_distribution(mu=3.0, f_values=support, support=support)
print("最大熵分布:", np.round(q_maxent, 4))
# 输出应为对称分布,围绕均值 3

小结

最大熵原理和熵池方法是量化金融中先验信息融合分布推断的核心工具:

方法目标约束条件金融应用
最大熵maxH(q)\max H(q)矩条件(期权价格)风险中性测度提取
熵池minDKL(qp)\min D_{\text{KL}}(q | p)新市场观点资产配置更新
最小交叉熵minDKL(qp)\min D_{\text{KL}}(q | p)约束条件压力测试情景生成
\n> 下一步回到本章概述

Built with VitePress