量化投资基础(一)之Black-Litterman模型

点赞、关注,养成良好习惯
Life is short, U need Python
量化投资基础系列,不断更新中


1. 投资组合收益率与风险

假设市场有 N N N 个资产,其随机收益率分别为 R 1 , R 2 , … , R N R_1,R_2,\dots,R_N R1,R2,,RN ,对应的投资比例分别为 w 1 , w 2 , … , w N w_1,w_2,\dots,w_N w1,w2,,wN,且 w 1 + w 2 + ⋯ + w N = 1 w_1+w_2+\dots+w_N=1 w1+w2++wN=1

  • 投资组合的收益率
    R p = ω 1 R 1 + ω 2 R 2 + ⋯ + ω N R N R_{p} = \omega_{1}R_{1}+\omega_{2}R_{2}+\dots+\omega_{N}R_{N} Rp=ω1R1+ω2R2++ωNRN
  • 投资组合收益率的期望(期望收益率)
    E ( R p ) = ω 1 E ( R 1 ) + ω 2 E ( R 2 ) + ⋯ + ω N E ( R N ) \mathbb{E}(R_{p}) = \omega_{1}\mathbb{E}(R_{1})+\omega_{2}\mathbb{E}(R_{2})+\dots+\omega_{N}\mathbb{E}(R_{N}) E(Rp)=ω1E(R1)+ω2E(R2)++ωNE(RN)
  • 投资组合收益率的方差
    σ 2 ( R p ) = σ 2 ( ∑ i = 1 N ω i R i ) = ∑ i = 1 N ω i 2 σ 2 ( R i ) + ∑ i ≠ j ω i ω j σ ( R i , R j ) \begin{aligned} \sigma^{2}\left(R_{p}\right) &=\sigma^{2}\left(\sum_{i=1}^{N} \omega_{i} R_{i}\right) \\ &=\sum_{i=1}^{N} \omega_{i}^{2} \sigma^{2}\left(R_{i}\right)+\sum_{i \neq j} \omega_{i} \omega_{j} \sigma\left(R_{i}, R_{j}\right) \end{aligned} σ2(Rp)=σ2(i=1NωiRi)=i=1Nωi2σ2(Ri)+i=jωiωjσ(Ri,Rj)

2. Black-Litterman模型

均值–方差模型中资产配置的前提是对未来形成预期(即已知未来各资产 R 1 , R 2 , … , R n R_1,R_2,\dots,R_n R1,R2,,Rn 的概率分布),然后利用Markowitz模型求得最优资产配比。Markowitz模型的输入参数包括历史数据法(均值、方差、协方差矩阵)和情景分析法(主观因素,随意性强)两种。

MV模型的不足之处

(1)基于历史数据法的基础是相信未来资产收益率分布与过去相同,但现实中,历史并不一定完全重演。


(2)历史数据法对样本区间非常敏感。

1992年,Fisher Black 和 Robert Litterman 对全球债券投资组合研究发现,当对债券预期报酬率做0.1%微调后,资产组合的投资比例由原来的10.0%提高到55.0%,这充分说明 Markowitz 模型的最优资产配比对输入参数十分敏感。

1992年,Fisher Black 和 Robert Litterman 提出了改进的模型——Black-Litterman模型(简称BL模型),其核心思想是将投资者对大类资产的观点(主观观点)与市场均衡收益(先验预期收益)相结合,从而形成新的预期收益率(后验预期收益率)。该模型自提出以来,逐渐被华尔街主流所接受,现成为高盛公司资产管理部门在资产配置上的一个主要工具。

2.1 BL模型的步骤

(1)使用历史数据估计预期收益率的协方差矩阵,根据 N N N 种资产过去 T T T 期的收益率资料, 则协方差矩阵为:

Σ ^ = [ σ ^ 11 σ ^ 12 ⋯ σ ^ 1 N σ ^ 21 σ ^ 22 ⋯ σ ^ 2 N ⋮ ⋮ ⋱ ⋮ σ ^ N 1 σ ^ N 2 ⋯ σ ^ N N ] \hat{\Sigma}=\left[\begin{array}{cccc} \hat{\sigma}_{11} & \hat{\sigma}_{12} & \cdots & \hat{\sigma}_{1 N} \\ \hat{\sigma}_{21} & \hat{\sigma}_{22} & \cdots & \hat{\sigma}_{2 N} \\ \vdots & \vdots & \ddots & \vdots \\ \hat{\sigma}_{N 1} & \hat{\sigma}_{N 2} & \cdots & \hat{\sigma}_{N N} \end{array}\right] Σ^= σ^11σ^21σ^N1σ^12σ^22σ^N2σ^1Nσ^2Nσ^NN

式中 σ ^ i j \hat{\sigma}_{i j} σ^ij 是根据样本数据估计出来的资产 i i i 与 j$ $ 的协方差, 表达式为 σ ^ i j = E [ ( R i , t − μ ^ i ) ( R j , t − μ ^ j ) ] \hat{\sigma}_{i j}=\mathbb{E}\left[\left(R_{i, t}-\right.\right. \left.\left.\hat{\mu}_{i}\right)\left(R_{j, t}-\hat{\mu}_{j}\right)\right] σ^ij=E[(Ri,tμ^i)(Rj,tμ^j)] , 其中 μ ^ i \hat{\mu}_{i} μ^i 为资产 i i i 的历史平均收益率, μ ^ i = ∑ t = 1 T R i , t T \hat{\mu}_{i}=\frac{\sum_{t=1}^{T} R_{i, t}}{T} μ^i=Tt=1TRi,t

(2)确定市场预期之收益率向量($ N \times 1$ 列向量) ,也就是先验预期收益之期望值。

  • 可以用历史收益率均值作为先验预期收益之期望值, 即
    π = μ ^ \pi=\hat{\mu} π=μ^
  • 也可以根据市场现有的价格、市场组合构成反推出市场隐含的均衡收益率(Implied Equilibrium Return)来作为先验预期收益之期望,即
    π = λ Σ ^ ω m \pi=\lambda \hat{\Sigma} \omega^{m} π=λΣ^ωm
    其中 λ = E [ R m ] − R f σ m 2 \lambda=\frac{\mathbb{E}\left[R_{m}\right]-R_{f}}{\sigma_{m}^{2}} λ=σm2E[Rm]Rf 为市场组合单位风险的超额收益, 反应了市场对风险趋避的程度, R m R_{m} Rm 为市场组合之收益率, R f R_{f} Rf 为无风险收益, σ m 2 \sigma_{m}^{2} σm2 为市场组合收益率之方差), ω m \omega^{m} ωm 为市场组合各资产的投资比例, Σ ^ \hat{\Sigma} Σ^ 为估计出来的协方差矩阵。
  • 还可以根据 CAPM 模型中的 Alpha(历史超额收益率)来估计 $\pi $ 。

(3)融合投资人的个人观点, 即确定 P 、 Q 、 Ω P 、 Q 、 \Omega PQΩ

比如,现在市场有五种资产 A 、 B 、 C 、 D 、 E A 、 B 、 C 、 D 、 E ABCDE,投资人基于自己的经验及分析,形成以下判断:

  • 资产 A A A 的收益率为 15 % 15 \% 15%
  • 资产 B B B 比资产 D D D 的收益率高 5 % 5 \% 5%
  • 资产 B B B C C C 比资产 A A A 的收益率低 6 % 6 \% 6%

据此, 可以写出反应投资人主观观点的矩阵:
P = [ 1 0 0 0 0 0 1 0 − 1 0 − 1 1 2 1 2 0 0 ] P=\left[\begin{array}{ccccc} 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & -1 & 0 \\ -1 & \frac{1}{2} & \frac{1}{2} & 0 & 0 \end{array}\right] P= 10101210021010000

看法向量:
q = [ 15 % , 5 % , 6 % ] T q=[15 \%, 5 \%, 6 \%]^{T} q=[15%,5%,6%]T

看法向量误差项的协方差矩阵:
ω i j = { p ( τ Σ ) p T ∀ i = j 0 ∀ i ≠ j 或 Ω = diag ⁡ ( P ( τ Σ ) P T ) \begin{gathered} \omega_{i j}= \begin{cases}p(\tau \Sigma) p^{T} & \forall i=j \\ 0 & \forall i \neq j\end{cases} \\ \text{或}\\ \Omega=\operatorname{diag}\left(P(\tau \Sigma) P^{T}\right) \end{gathered} ωij={p(τΣ)pT0i=ji=jΩ=diag(P(τΣ)PT)

(4)修正后验收益。

  • 后验预期收益率的期望值: E ( R ∣ q ; Ω ) = μ B L \text{后验预期收益率的期望值:}\mathbb{E}\left(\left.R\right|_{q ; \Omega}\right) = \mu_{B L} 后验预期收益率的期望值:E(Rq;Ω)=μBL
  • 后验预期收益率的方差: Σ B L = Σ + Σ B L μ \text{后验预期收益率的方差:}\Sigma_{B L} = \Sigma+\Sigma_{B L}^{\mu} 后验预期收益率的方差:ΣBL=Σ+ΣBLμ
  • μ B L = [ ( τ Σ ) − 1 + P T Ω − 1 P ] − 1 [ ( τ Σ ) − 1 π + P T Ω − 1 q ] \mu_{B L}=\left[(\tau \Sigma)^{-1}+P^{T} \Omega^{-1} P\right]^{-1}\left[(\tau \Sigma)^{-1} \pi+P^{T} \Omega^{-1} q\right] μBL=[(τΣ)1+PTΩ1P]1[(τΣ)1π+PTΩ1q]
  • Σ B L μ = [ ( τ Σ ) − 1 + P T Ω − 1 P ] − 1 \Sigma_{B L}^{\mu}=\left[(\tau \Sigma)^{-1}+P^{T} \Omega^{-1} P\right]^{-1} ΣBLμ=[(τΣ)1+PTΩ1P]1

(5)投资组合优化:通过Black-Litterman模型,可以获得后验收益的期望值与协方差矩阵。

  • 根据这些信息,可以进行资产配置,比如利用 Makowitz模型进行资产配置。
  • 定义均值方差模型函数(详见代码):blminVar()

2.2 BL模型的设定

(1)计算出历史收益率之均值 μ ^ \hat{\mu} μ^ 及协方差矩阵 Σ ^ \hat{\Sigma} Σ^

(2)用历史收益率均值作为先验预期收益之期望值,即 π = μ ^ \pi = \hat{\mu} π=μ^

(3)结合投资者个人的观点(由 P 、 Q 、 Ω P、Q、\Omega PQΩ 代表,其中 P 、 Q P、Q PQ 为已知的输入变量, Ω \Omega Ω 要自己计算)。

(4)根据 公式 计算出后验分布之期望值、协方差。

3. Black-Litterman模型之Python实现

数据集:“stock_data.txt”

# 导入包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False

读取数据集

# 读取数据
stock = pd.read_csv('datas\stock_data.txt',sep='\t',index_col='Trddt')
# 转换时间格式
stock.index = pd.to_datetime(stock.index)       
stock.head()      
###################################################### 提取部分数据##############################################################
## 福建高速(600033)
fjgs = stock.loc[stock.Stkcd==600033,'Dretwd'] 
fjgs.name = 'fjgs'

## 浙能电力(600023)
zndl = stock.loc[stock.Stkcd==600023,'Dretwd']
zndl.name='zndl'

## 生益科技(600183)
sykj = stock.loc[stock.Stkcd==600183,'Dretwd']
sykj.name='sykj'

## 华夏银行(600015)
hxyh = stock.loc[stock.Stkcd==600015,'Dretwd']
hxyh.name = 'hxyh'

## 白云机场(600004)
byjc = stock.loc[stock.Stkcd==600004,'Dretwd']
byjc.name = 'byjc'
# 合并数据集(DataFrame)
sh_return = pd.concat([byjc,fjgs,hxyh,sykj,zndl],axis=1)          
sh_return.head()                                               

数据处理

# 删除缺失数据(NaN)
sh_return = sh_return.dropna()                  
sh_return.head()

# 累积求和(cumsum),求积(cumprod):默认参数0表示列求和、积,参数1表示行求和、积
cumreturn = (1 + sh_return).cumprod()            
cumreturn.head()

数据可视化分析

# 绘制收益率时序图
sh_return.plot(figsize=(8,6))

plt.title('5只股票的日收益率时序图(2014-2015)')
plt.xlabel('date')
plt.ylabel('return')
# plt.legend(loc='lower center',bbox_to_anchor=(0.5,-0.3),ncol=5, fancybox=True, shadow=True)
plt.legend()

plt.show()

在这里插入图片描述

# 绘制累积收益率时序图
cumreturn.plot(figsize=(8,6))

plt.title('5只股票的累计日收益率时序图(2014-2015)')
plt.xlabel('date')
plt.ylabel('cumreturn')

plt.show()

在这里插入图片描述

BL模型的回测

代码及上述文档资源详见资源包(含数据)!

在这里插入图片描述
通过上图发现:通过与MV模型对比,BL模型得到的最优投资组合累计收益率在初期比MV模型有着明显提高,虽然在期末时期略低于MV模型,但是,整个期间改进的BL模型投资策略还是不错的。

4. 小结

  • 本案例主要对均值-方差模型进行了改进,引入投资者对资产的主观观点到模型中,进而形成新的预期收益率,即Black-Litterman模型,实证分析结果显示该模型策略还是不错的!

5. 参考资料

  • 蔡立耑. 量化投资以Python为工具[M]. 北京:电子工业出版社,2017.
  • PyQuant. 量化投资基础[M]. 北京:科学出版社,2024.

6. 资源包下载

  • 链接:https://pan.baidu.com/s/1Q_jCCcln1ajgvne71hCAeA
  • 提取码:1234

  • 写作不易,切勿白剽
  • 点赞关注,最大鼓励
  • 持续更新,未完待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/799607.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【香橙派 AIpro测评:探索高效图片分类项目实战】

前言 最近入手了一块香橙派 AIpro开发板,在使用中被它的强大深深震撼,有感而发写下这篇文章。 本文旨在深入探讨OrangePi AIpro的各项性能,从硬件配置、软件兼容性到实际应用案例,全方位解析这款设备如何在开源社区中脱颖而出&am…

python中的类

类 类的创建 使用class关键字定义一个新的类 创建实例和使用 修改属性 类的访问权限(只有属性和方法有访问权限) 概念 种类 公有(Public):公有成员可以被类的外部访问。这是默认的权限级别,如果不特别指定…

I2C子系统-内核视角

I2C驱动层级 内核自带的通用I2C驱动程序i2c-dev 编写一个设备驱动程序 控制器驱动程序I2C Adapter框架 GPIO模拟I2C,实现I2C_Adapter驱动 具体芯片下I2C_Adapter驱动 I2C驱动层级 一张图整理,可以看完后面的具体内容再回来看这张图: 接…

Docker的虚拟化安装、常用命令和使用案例

文章目录 一、Docker的虚拟机安装1、完成虚拟机的更新2、完成Docker安装3、配置镜像加速器 二、Docker常用命令三、Docker的容器创建四、理解虚拟机中的Docker容器 一、Docker的虚拟机安装 1、完成虚拟机的更新 详见我的文章。 2、完成Docker安装 yum list installed|grep …

第二周周日学习总结

题目总结 1. 给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的 字典序最小的字符串 。 如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性…

2024年7月9日~2024年7月15日周报

目录 一、前言 二、完成情况 2.1 特征图保存方法 2.1.1 定义网络模型 2.1.2 定义保存特征图的钩子函数 2.1.3 为模型层注册钩子 2.1.4 运行模型并检查特征图 2.2 实验情况 三、下周计划 一、前言 本周的7月11日~7月14日参加了机器培训的学习讨论会,对很多概…

六、 SpringBoot 配置⽂件 ★ ✔【value的引号注意事项、@ConfigurationProperties 、】

六、 SpringBoot 配置⽂件 本节⽬标1. 配置⽂件作⽤2. 配置⽂件快速⼊⼿3. 配置⽂件的格式4. properties 配置⽂件说明4.1 properties 基本语法4.2 读取配置⽂件4.3 properties 缺点分析 5. yml 配置⽂件说明5.1 yml 基本语法5.2 yml 使⽤进阶5.2.1 yml 配置不同数据类型及 nul…

记录些MySQL题集(1)

Innodb 是如何实现事务的? InnoDB是MySQL数据库的一个存储引擎,它支持事务处理。事务处理是数据库管理系统执行过程中的一个逻辑单位,由一个或多个SQL语句组成,这些语句要么全部执行,要么全部不执行,是一个…

Poetry2Image:专为中文古诗词图像生成,忠于原诗意境和语义。

直接基于文本的图像生成通常会导致丢失图像中的关键元素。为了解决此问题,哈工大提出Poetry2Image,通过实施有针对性的图像校正解决这个问题,有效地捕捉这首诗所传达的语义和艺术精髓。 Poetry2Image流程分为如下几步: 搜索和翻译…

免费进销存软件哪个好用?首选象过河

在快节奏的商业环境中,进销存管理一直是不可忽视的重要环节,关乎着企业的运营成本控制和运营效率的高低。传统的纸质记录已难以满足企业发展需求,很多企业管理者为了节约成本,都想寻找一款免费进销存软件。那么,免费进…

(day18) leetcode 204.计数质数

描述 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2: 输入:n 0 输出:0示例 3…

计算机系统复习——文件系统和目录

文件系统 存储管理: 文件系统负责将文件存储在存储设备(如硬盘、固态硬盘)中,并记录文件的位置和大小。 文件访问控制: 文件系统管理文件的访问权限,确保只有授权用户可以读取、写入或执行文件。 数据…

PostgreSQL 中如何解决因长事务阻塞导致的其他事务等待问题?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何解决因长事务阻塞导致的其他事务等待问题?一、了解长事务阻塞的原因&…

Qt进阶版五子棋

五子棋是一种两人对弈的棋类游戏,目标是在横、竖、斜任意方向上连成五个子。在Qt中实现五子棋程序,你需要设计棋盘界面、处理下棋逻辑、判断胜负等。以下是实现一个基本五子棋程序的步骤: 创建项目和界面 使用Qt Creator创建一个新的Qt Widge…

人工智能大模型讲师培训老师叶梓介绍及多模态大模型原理与实践提纲

培训需要解决的问题 通过本次培训,拓展对多模态AI应用领域的视野,帮助团队聚焦AI赋能创新突破,提升对AI服务的技术认知与理解,更好地助力业务智能化业务建设。 培训时长 1天 培训老师介绍 叶梓,工学博士&#xff0…

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

​​​​​​​ 目录 一、引言 二、自动语音识别(automatic-speech-recognition) 2.1 概述 2.2 技术原理 2.2.1 whisper模型 2.2.2 Wav2vec 2.0模型 2.3 pipeline参数 2.3.1 pipeline对象实例化参数​​​​​​​ 2.3.2 pipeline对象使用参数…

HiFi Asia 2024圆满落幕,琛蓝生物分享企业成果

一个时代,一个风口。其中有些风口切中时代脉搏,顺势而为的人因此成功登顶,有些风口则被证伪,热潮散去之后留下一地鸡毛。在当今时代,倘若要寻找下一个时代风口,那么“大健康”毫无疑问是确定性最强大那一个…

BernNet Learning Arbitrary Graph Spectral Filters via Bernstein Approximation

发表于:neurips21 推荐指数: #paper/⭐⭐ 设定:在本文中,h是过滤器. bernstein 多项式逼近(这个证明有点稀里糊涂的,反正我觉得一点点问题,可能因为我水平低) p K ( t ) : ∑ k 0 K θ k ⋅ b k K ( t ) ∑ k 0 K f ( k K ) ⋅ ( K k ) ( 1 − t ) K − k t k . p_K(t):…

下载利器:IDM绿色版/一款Windows平台多线程下载工具

大家好!我是闷声轻创!今天给你们分享一款神器Internet Download Manager(简称IDM)这款软件是需要激活需要付费的【免注册激活,无假冒序列号弹窗】适用于Windows 系统,对于经常需要下载大量数据的用户来说&a…

自定义方法耗时监控告警

自定义方法耗时监控告警 用于记录代码耗时,当代码耗时超过指定阈值时打印告警日志 自定义注解 通过自定义注解的方式可以更方便的使用,只需要在需要做耗时兼容的方法上增加上该注解即可 package com.huakai.springenv.aspect.profiler;import java.lan…