(二十八)业绩归因之Brinson模型

2023-11-03

单期Brinson模型

  一个时期的基金收益可以分为四个部分:资产配置收益、个股选择收益、交互收益和基准组合收益。先构建4个概念性的组合:
  Q1、Q4:基准收益组合和实际投资组合;
  Q2:积极资产配置组合。这表示基金经理能自主选择资产配置的比例,但是每个资产类别内部则完全按照其业绩基准配置,即每个资产i的收益等于在基准中资产i的收益;
  Q3:积极股票选择组合。这表示基金经理完全按照业绩基准的比例进行资产类别的配置,但是每个资产内部能够自主选择个股,即组合中每个资产i的权重等于基准中资产i的权重。
  它们的计算公式如下图:
在这里插入图片描述
  资产配置收益,即仅改变资产权重:
在这里插入图片描述
  个股选择收益,即仅改变资产类别:
在这里插入图片描述
  交互收益,即由资产配置和个股选择的交互带来的:
在这里插入图片描述
  总超额收益=Q4-Q1=AR+SR+IR。根据权重之和为1,AR也可以写成如下形式,其中基准组合收益rb=Q1:
在这里插入图片描述
在这里插入图片描述

  尽管新定义的加入了基准收益,但由于权重之和都为1,所以更改后的资产配置收益和原结果在总和上是相等的。这两者的差异在于,原定义强调超额资产配置的收益来源于对收益更高的资产i的超配,或对收益低的资产j的低配,比如在普涨行情中,AR要求对所有上涨行业都进行超配,但这显然是做不到的,因为一定会以对另一个行业的低配为代价。而新定义强调对表现优于基准总收益的类别i超配,或劣于基准总收益的类别j低配,这种更符合实际。
  另外,绩效评价者也可以根据自身需要对超额收益进行重新划分,比如FRM考试中将交互收益也归于个股选择收益中去,如上图。

多期行业Brinson模型

在这里插入图片描述
在这里插入图片描述

案例分析

  考虑一个投资于11个资产大类的基准投资组合以及与该基准组合投资资产类别相同的投资组合p,具体类别和各类别投资权重见代码。试对该组合的收益率表现进行业绩归因:

import pandas as pd
name = ['现金','能源','原材料','非必需消费品','必需消费品','医疗保健','金融','信息技术','电信服务','公共服务','工业']
w1 = [0.3406,0.0599,0.0173,0.0837,0.0000,0.0444,0.1678,0.0000,0.0000,0.0000,0.2863]
w2 = [0.0000,0.0279,0.0672,0.1136,0.0678,0.0443,0.4150,0.0776,0.0104,0.0000,0.1762]
r1 = [0.0000,0.6824,5.4289,0.6665,0.0000,5.8276,1.4278,0.0000,0.0000,0.0000,1.1677]
r2 = [0.0000,0.0132,0.0760,0.1019,0.2125,0.1364,0.0256,0.0681,0.0649,0.0000,-0.0033]
df = pd.DataFrame({'wp_i': w1,'wb_i': w2,'rp_i': r1,'rb_i': r2},index = name)
df
Out[1]: 
          wp_i    wb_i    rp_i    rb_i
现金      0.3406  0.0000  0.0000  0.0000
能源      0.0599  0.0279  0.6824  0.0132
原材料     0.0173  0.0672  5.4289  0.0760
非必需消费品  0.0837  0.1136  0.6665  0.1019
必需消费品   0.0000  0.0678  0.0000  0.2125
医疗保健    0.0444  0.0443  5.8276  0.1364
金融      0.1678  0.4150  1.4278  0.0256
信息技术    0.0000  0.0776  0.0000  0.0681
电信服务    0.0000  0.0104  0.0000  0.0649
公共服务    0.0000  0.0000  0.0000  0.0000
工业      0.2863  0.1762  1.1677 -0.0033

  计算各版块的Q1、Q2、Q3和Q4

df['Q1'] = df['rb_i']*df['wb_i']
df['Q2'] = df['rb_i']*df['wp_i']
df['Q3'] = df['rp_i']*df['wb_i']
df['Q4'] = df['rp_i']*df['wp_i']
df
Out[3]: 
          wp_i    wb_i    rp_i    rb_i        Q1        Q2        Q3        Q4
现金      0.3406  0.0000  0.0000  0.0000  0.000000  0.000000  0.000000  0.000000
能源      0.0599  0.0279  0.6824  0.0132  0.000368  0.000791  0.019039  0.040876
原材料     0.0173  0.0672  5.4289  0.0760  0.005107  0.001315  0.364822  0.093920
非必需消费品  0.0837  0.1136  0.6665  0.1019  0.011576  0.008529  0.075714  0.055786
必需消费品   0.0000  0.0678  0.0000  0.2125  0.014408  0.000000  0.000000  0.000000
医疗保健    0.0444  0.0443  5.8276  0.1364  0.006043  0.006056  0.258163  0.258745
金融      0.1678  0.4150  1.4278  0.0256  0.010624  0.004296  0.592537  0.239585
信息技术    0.0000  0.0776  0.0000  0.0681  0.005285  0.000000  0.000000  0.000000
电信服务    0.0000  0.0104  0.0000  0.0649  0.000675  0.000000  0.000000  0.000000
公共服务    0.0000  0.0000  0.0000  0.0000  0.000000  0.000000  0.000000  0.000000
工业      0.2863  0.1762  1.1677 -0.0033 -0.000581 -0.000945  0.205749  0.334313

  进行业绩归因。注意这里的板块配置用的是AR’,其中基准组合的收益率为常数 rb = ∑(rb_i×wb_i) = Q1 = sum(df[‘Q1’])。

result = pd.DataFrame()
result['板块配置'] = df['Q2']-df['Q1']-(df['wp_i']-df['wb_i'])*sum(df['Q1'])
result['板块内选股'] = df['Q3']-df['Q1']
result['交互收益'] = df['Q4']-df['Q3']-df['Q2']+df['Q1']
result['总超额收益'] = df['Q4']-df['Q1']
result.loc['合计'] = result.apply(lambda x:x.sum(),axis=0)
result
Out[4]: 
         板块配置    板块内选股    交互收益    总超额收益
现金     -0.018223  0.000000  0.000000  0.000000
能源     -0.001290  0.018671  0.021414  0.040507
原材料    -0.001123  0.359715 -0.267110  0.088813
非必需消费品 -0.001447  0.064139 -0.016882  0.044210
必需消费品  -0.010780 -0.014408  0.014408 -0.014408
医疗保健    0.000008  0.252120  0.000569  0.252703
金融      0.006898  0.581913 -0.346624  0.228961
信息技术   -0.001133 -0.005285  0.005285 -0.005285
电信服务   -0.000119 -0.000675  0.000675 -0.000675
公共服务    0.000000  0.000000  0.000000  0.000000
工业     -0.006254  0.206330  0.128927  0.334894
合计     -0.033462  1.462520 -0.459337  0.969721

AR=result.loc['合计','板块配置']
SR=result.loc['合计','板块内选股']+result.loc['合计','交互收益']
total_R=result.loc['合计','总超额收益']
print('AR={:.2%},SR={:.2%},总超额收益={:.2%}'.format(AR,SR,total_R))
AR=-3.35%,SR=100.32%,总超额收益=96.97%

  也就是说在资产组合p的总超额收益96.97%中,板块配置(择时能力)贡献了-3.35%,个股选择(选股能力,包含交互收益)贡献了100.32%。

参考文献

https://www.ricequant.com/community/topic/4204?page=1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(二十八)业绩归因之Brinson模型 的相关文章

  • 时间复杂度-线性对数时间nlogn的一些研究

    文章目录 排序算法的时间复杂度 二叉树与 n l o g 2 n
  • Rabbitmq的消息转换器

    Spring会把你发送的消息序列化为字节发送给MQ 接收消息的时候 还会把字节反序列化为Java对象 只不过 默认情况下Spring采用的序列化方式是JDK序列化 众所周知 JDK序列化存在下列问题 数据体积过大 有安全漏洞 可读性差 默认
  • 微信公众号H5页面(vue)跳转至微信小程序页面方案总结

    微信公众号H5跳转微信小程序方案总结 1 需求背景 最近由于发挥小程序的性能与用户体验优势 决定将微信公众号的部分功能跳转至小程序相关模块 解决方案 注意开放对象如下 已认证的服务号 服务号绑定 JS接口安全域名 下的网页可跳转任意合法合规
  • 使用腾讯云轻量服务器Matomo应用模板建网站流量统计系统

    腾讯云百科分享使用腾讯云轻量应用服务器Matomo应用模板搭建网站流量统计系统 Matomo 是一款开源的网站数据统计软件 可以用于跟踪 分析您的网站的流量 同时充分保障数据安全性 隐私性 该镜像基于 CentOS 7 6 64位操作系统
  • 【性能】Android中的内存溢出(Out Of Memory,OOM)

    性能 Android中的内存溢出 Out Of Memory OOM 1 JVM内存区域介绍 2 OOM形成的原因 3 造成OOM的有哪些 3 1 从JVM的角度 3 2 从具体使用角度 3 2 1 内存泄漏导致的内存溢出 3 2 2 资源
  • 【设计】低压差稳压器(LDO)的设计分析

    本简短教程介绍了一些常用的LDO 相关术语 以及一些基本概念 如压差 裕量电压 静态电流 接地电流 关断电流 效率 直流输入电压和负载调整率 输入电压和负载瞬态响应 电源抑制比 PSRR 输出噪声和精度 同时 为了方便理解 文中采用了示例和
  • WebStorm 初步使用 & HTML5 学习报告

    WebStorm 初步使用 WebStorm介绍 WebStorm是Jetbrains公司旗下的一款JavaScript开发工具 因其界面简洁 操作方便 被广大国内JS开发者誉为 Web前端开发神器 WebStorm具有智能代码补全 代码格
  • 宝塔面板部署Java项目

    宝塔面板部署Java项目 使用宝塔面板里面的 Java 项目管理器来进行部署 首先注意 1 tomcat7 8 9使用的端口依次是8081 8082 8083 安装的那个版本Tomcat就 开启对应的端口 2 该管理器项目不是部署在tomc
  • 【JMeter】RSA加密传参处理方法

    问题 登录请求参数中输入了正确的账号密码 响应结果报错 用户名或密码错误 原因分析 密码需要以RSA加密的方式传参 不能明文 解决方法 在该登录接口下新增一个 B e a n
  • UDP的抓包和网络协议

    背景 一直都在wireshar抓包 但是经常看的都是应用的报文 没有关注到udp的本身传输协议 所以花了一点时间查看了一下UDP的传输协议是什么样的 报文 这个是之前抓包的udp 的协议报文然后对应协议的字段进行协议 目前查看的话还是比较清
  • [编程题] 等差数列

    如果一个数列S满足对于所有的合法的i 都有S i 1 S i d 这里的d也可以是负数和零 我们就称数列S为等差数列 小易现在有一个长度为n的数列x 小易想把x变为一个等差数列 小易允许在数列上做交换任意两个位置的数值的操作 并且交换操作允
  • linux下使用socat

    其实网络协议比较简单 一般都是一个固定的套路 传 输 包 传 输 的 数
  • MES系统各部门评估建议

    生产部 如果期望通过项目推动来解决库存和交期的问题 需要首先针对我们最大的短板和痛点 供应商交期和品质 有针对性的改善 否则系统上了后也会因短板没有解决 无法实现最终目的 如果是为了解决目前制造部各单元计划协同性及准确性问题 以及针对急单插

随机推荐

  • Linux网络文件共享服务(一)存储类型和文件传输协议FTP

    成功不易 加倍努力 网络文件共享服务 本章总目录 1 存储类型 1 1 DAS存储 1 2 NAS存储 1 3 SAN存储 1 4 三种存储比较 2 文件传输协议 FTP 2 1 FTP工作原理介绍 2 2 常见 FTP 相关软件 2 3
  • 谈谈To B业务的难点

    最近有个说法 中国互联网的新增长点是 To B业务 而一个经常被提及的事实是 中美互联网巨头对比 在To C业务上的收益和市值近乎并驾齐驱 虽有差距 但至少是可以相提并论的 而在To B业务上 美国巨头的市场规模 比起中国的同类公司 高两个
  • STM32CubeMX之emWin移植

    前面两章介绍了SDRAM和LTDC的使用 本篇文章将介绍emWin移植到STM32 硬件环境 STM32F429IGT6 软件环境 STM32CubeMX v5 5 0 HAL库版本 STM32CubeF4 Firmware Package
  • 什么叫泛型?有什么作用?

    作者 Java3y 链接 https www zhihu com question 272185241 answer 366129174 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 一 什么是泛型 Jav
  • MySQL的B+树索引和hash索引的区别

    简述一下索引 索引是数据库表中一列或多列的值进行排序的一种数据结构 索引分为聚集索引和非聚集索引 聚集索引查询类似书的目录 快速定位查找的数据 非聚集索引查询一般需要再次回表查询一次 如果不使用索引就会进行全表扫描 还有可以进行多字段组成联
  • svn历史版本操作说明

    svn历史操作简写说明 操作的字母缩写为R 一般我们常见的操作为 A D M R A add 新增 C conflict 冲突 D delete 删除 M modify 本地已经修改 G modify and merGed 本地文件修改并且
  • centos安装gcc时出现问题:Delta RPMs disabled because /usr/bin/applydeltarpm not installed.

    解决办法 此问题安装Deltarpm包 增量 RPM 套件 即可解决 当然您也可以先使用一下命令 查看是哪个包提供applydeltarpm yum provides applydeltarpm yum install deltarpm y
  • 我见过的最糟糕代码

    作者 Mehdi Zed 在本文 将向读者展示一些作者见过的一些最糟糕的代码 除非你希望被同事和用户讨厌 否则这些 魔鬼 永远都不应该被放到人间 我们会发现 通过一些好的实践 其实很容易避免它们 01 魔鬼代码 需要改进的代码与所谓的 魔鬼
  • 2023年Node.js全网详细下载安装的最新教程

    文章目录 1 文章引言 2 下载安装 3 检查是否安装成功 4 补充说明 1 文章引言 今天准备写下载和安装vue js的博文 但安装vue js的前提是要安装node和npm 我们在安装node js时 会自动安装的npm包管理器 接下来
  • [深度学习]Part2 数据清洗和特征工程Ch06——【DeepBlue学习笔记】

    本文仅供学习使用 数据清洗和特征工程Ch06 1 特征工程 1 1 特征工程介绍 1 2 特征预处理 1 2 1 数据清洗 1 2 1 1 数据清洗 预处理 1 2 1 2 数据清洗 格式内容错误数据清洗 1 2 1 3 数据清洗 逻辑错误
  • linux kernel development 3rd

    很早就听说这本书了 但是一直未看 现在稍微看看 第3章 1 vfork与fork不一样 但是也没多大作用 不看也罢 2 进程pcb task struct保存在process kernel栈的底端 而而thread info在栈顶端 不知具
  • C语言.表白神器.爱你之心之闪耀

    前言 爱你之心之闪耀 这个名字比较沙雕哈哈哈 爱你之心之闪耀 前言 爱心函数的选取 爱心函数1 爱心函数2 简单爱心 粒子发射原理 爱心结构 一些宏 初始化 init 创建若干爱心并初始化 setHeart 展示爱心 showHeart 爱
  • Vue3的使用

    1 安装命令步骤 vue create 命令 接下来我们创建 runoob vue3 app 项目 vue create runoob vue3 app 执行以上命令会出现安装选项界面 Vue CLI v4 4 6 Please pick
  • 解决升级JDK后:找不到sun.misc.Unsafe的类文件

    原因 JDK9以后已经将sun misc Unsafe弃用 同时改进了lib文件的存储方式 将sun misc Unsafe全部存储在了jdk unsupported里面 解决 手动添加弃用的类文件 在编译时 携带参数 add module
  • 运维Shell脚本小试牛刀(七):在函数文脚本件中调用另外一个脚本文件中函数

    运维Shell脚本小试牛刀 一 运维Shell脚本小试牛刀 二 运维Shell脚本小试牛刀 三 cd dirname 0 pwd 命令详解 运维Shell脚本小试牛刀 四 多层嵌套if elif elif else fi 蜗牛杨哥的博客 C
  • react 字段拼接

    Array from columns el index1 gt
  • 正确解决:坑爹的0xc000007b

    1 出现0xc000007b 应用程序无法正常启动 其根本原因是缺乏所需要的DLL 提供了错误版本的dll相当于没有DLL 提示完全一样 2 网上有人说缺乏dx运行环境 如果属实 也是因为缺乏dx相关的dll 所以根本原因 在低一点 3 与
  • PyCharm运行Python代码时出现“未找到模块”错误

    PyCharm运行Python代码时出现 未找到模块 错误 在PyCharm中执行Python脚本时 有时会出现 ModuleNotFoundError No module named XXXX 错误 这种错误是因为在项目中没有安装对应的
  • C++求vector中的最大值

    习惯了Python的编程以后 再回过头来写C 感觉头都被搞大了 Python是一门高级语言 而C 是一门偏底层的语言 所以Python一行解决的问题用C 也许需要好几行 比如在一个列表中找最大值的问题 如果是Python的话 那么代码大概是
  • (二十八)业绩归因之Brinson模型

    单期Brinson模型 一个时期的基金收益可以分为四个部分 资产配置收益 个股选择收益 交互收益和基准组合收益 先构建4个概念性的组合 Q1 Q4 基准收益组合和实际投资组合 Q2 积极资产配置组合 这表示基金经理能自主选择资产配置的比例