halo 的技术博客

返回

传统均值方差优化的困境#

Markowitz均值方差模型理论上优雅,但实务中存在严重缺陷:

1. 输入敏感性问题#

预期收益率的微小变化会导致权重剧烈波动。假设无风险利率3%,股票预期收益从8%调至9%,最优权重可能从30%飙升至70%。

2. 集中化倾向#

均值方差优化往往产生极端权重配置(如某资产权重>50%),缺乏分散化效果。

3. 估计误差放大#

当资产数量N较大时,需要估计N个预期收益率、N个方差、N(N-1)/2个协方差,估计误差会严重扭曲优化结果。

Black-Litterman模型的核心思想#

Black-Litterman模型(1992)由Fischer Black和Robert Litterman在Goldman Sachs开发,巧妙地将市场均衡组合投资者主观观点结合。

模型框架#

先验分布(市场均衡) + 投资者观点 → 后验分布(修正预期收益)
plaintext

关键公式:

E[R] = [(τΣ)⁻¹ + P'Ω⁻¹P]⁻¹[(τΣ)⁻¹Π + P'Ω⁻¹Q]
plaintext

其中:

  • Π:市场隐含预期收益(逆优化求解)
  • Q:投资者主观观点收益
  • P:观点映射矩阵
  • Ω:观点不确定性矩阵
  • τ:缩放因子(通常取1/(市场总市值))

Black-Litterman框架

实务实现步骤#

Step 1: 计算市场均衡组合#

采用市值加权组合作为均衡组合 proxy:

import numpy as np
import pandas as pd

def compute_equilibrium_returns(cov_matrix, market_weights, risk_aversion=2.5):
    """
    通过逆优化计算市场均衡预期收益
    
    Parameters:
    - cov_matrix: 协方差矩阵 (N x N)
    - market_weights: 市值权重 (N,)
    - risk_aversion: 风险厌恶系数
    """
    # Π = λ * Σ * w_mkt
    eq_returns = risk_aversion * cov_matrix @ market_weights
    return eq_returns
python

Step 2: 构建观点矩阵#

假设我们有3个观点:

  1. 沪深300成分股中,银行股未来半年将跑赢市场2%
  2. 新能源板块将跑输市场1%
  3. 消费板块收益不确定(绝对观点)
# 相对观点示例
P_relative = np.array([
    [1, -1, 0, 0, 0],  # 银行 - 市场
    [0, 1, -1, 0, 0],  # 新能源 - 市场
])
Q_relative = np.array([0.02, -0.01])  # 超额收益

# 绝对观点示例
P_absolute = np.array([
    [0, 0, 0, 1, 0],  # 仅消费板块
])
Q_absolute = np.array([0.08])  # 绝对收益8%
python

Step 3: 设置观点置信度#

观点不确定性Ω通常与预测误差成正比:

def compute_omega(P, tau, cov_matrix, confidences):
    """
    计算观点不确定性矩阵
    
    Parameters:
    - confidences: 每个观点的置信度 (0-1)
    """
    omega = np.zeros((len(Q), len(Q)))
    
    for i, conf in enumerate(confidences):
        # 不确定性 = τ * P * Σ * P' / 置信度
        p = P[i, :].reshape(1, -1)
        omega[i, i] = tau * p @ cov_matrix @ p.T / conf
    
    return omega
python

Step 4: 计算后验预期收益#

A股实战案例分析#

案例背景#

假设当前时点为2026年6月,基于宏观研判给出以下观点:

观点类型预期超额收益置信度
银行板块将受益于利率上行相对+3%0.7
新能源板块短期产能过剩相对-2%0.6
消费板块受益内需复苏绝对10%0.8

组合优化结果#

BL模型权重对比

关键观察

  • 均衡组合中银行板块权重15%,BL后提升至22%
  • 新能源板块权重从12%降至8%
  • 消费板块权重从18%提升至25%

绩效对比(2020-2025回测)#

策略年化收益波动率夏普比率最大回撤
市值加权6.8%18.2%0.32-35.4%
均值方差8.1%22.7%0.31-42.1%
Black-Litterman9.3%17.5%0.44-28.6%

模型参数敏感性分析#

τ参数的选择#

τ控制均衡信息的权重:

  • τ过小(如0.01):过度依赖均衡,观点影响微弱
  • τ过大(如0.5):过度依赖观点,易过拟合

经验法则:τ = 1 / 市场总市值(标准化后约0.01-0.05)

观点置信度的校准#

不建议将所有观点设为相同置信度,可根据:

  1. 历史准确率:过去类似观点的实现概率
  2. 观点来源数量:多源验证的观点置信度更高
  3. 市场不确定性:高波动期降低观点权重

实务中的扩展#

1. 动态观点更新#

固定观点会导致组合僵化,可采用:

  • 滚动时间窗口更新观点
  • 基于机器学习预测调整Q值
  • 结合宏观经济周期切换观点方向

2. 非线性观点#

标准BL模型假设观点是线性的,实务中可扩展为:

  • 分位数观点(某资产收益位于前30%)
  • 期权隐含观点(从期权价格反推分布)

3. 交易成本整合#

在BL后验收益基础上,加入换手率约束:

# 带交易成本的目标函数
def objective(weights, post_returns, cov_matrix, turnover_penalty):
    expected_return = post_returns @ weights
    variance = weights @ cov_matrix @ weights
    
    # 换手率惩罚项
    turnover = np.sum(np.abs(weights - benchmark_weights))
    
    return -(expected_return - 0.5 * variance + turnover_penalty * turnover)
python

局限性与风险#

  1. 观点错误风险:若主观观点系统性偏差,BL会放大错误
  2. 协方差估计风险:Σ的准确性直接影响结果
  3. 过度自信风险:高置信度观点可能导致组合过度集中

结论#

Black-Litterman模型提供了将主观判断与量化模型结合的优雅框架,特别适合:

  • 有多位研究员提供观点的机构
  • 需要在基准基础上做微调的配置场景
  • 希望避免纯量化模型极端权重的实务需求

未来可探索的方向包括:基于NLP自动提取观点、高频数据下的动态BL、多资产类别的BL扩展等。


参考文献

  • Black, F., & Litterman, R. (1992). Global Portfolio Optimization.
  • He, G., & Litterman, R. (1999). The Intuition Behind Black-Litterman Model Portfolios.
  • Satchell, S., & Scowcroft, A. (2000). A Demystification of the Black–Litterman Model.
Black-Litterman模型实战:从CAPM到主观观点的量化融合
https://blog.halo26812.eu.org/blog/black-litterman-practical
Author halo
Published at 2026年6月12日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨