Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析

米筐科技(RiceQuant)策略研究报告:Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析

江嘉键江嘉键
1 年前1 概述

Barra 结构化风险模型是全球知名的投资组合表现和风险分析工具。最近一段时间,我们米筐科技量化策略研究团队对该模型进行了系统研究,并在米筐科技公司的策略研究平台上进行了实现。接下来一段时间,我们将以系列专题的形式展示我们的研究成果。在这一份报告里,我们将对 Barra 结构化模型作简单介绍,并对因子的构建及暴露度的计算进行探讨。为了对因子的有效性作简单的测试,我们对沪深 300 组合 从 2014 年 5 月到 2016 年 3 月共 23 期的因子暴露度进行了计算和分析。


2 均值-方差模型(Markowitz Mean-Variance Model)

1952 年,马柯维茨发表了《证券组合选择》,建立起现代投资组合理论的框架。马科维茨认为,投资者可以用预期收益率 E[ R_{p} ],以及收益率的标准差 \sigma _{p} 来完全构建和衡量一个投资组合,因此,该模型又称为均值-方差模型。依据他的观点,对于一个资产数目为 N ,且各资产头寸相同的投资组合,如果已知每一个资产收益率的方差 Var(R_{p} ) 和资产两两之间的协方差 Cov(R_{i} R_{j}) ,则我们可以计算这个投资组合的方差:

Var(R_{p}) =  Var(R_{1} + R_{2} + \cdot \cdot \cdot + R_{N}  )=\sum_{i=1}^{N}{Var(R_{i})} + \sum_{i=j=1}^{N}{Cov(R_{i}R_{j}})

对于包含 N 个资产的投资组合,我们需要计算 N(N-1) 个协方差,通常以协方差矩阵来表示:

此时,资产的协方差矩阵包含了我们投资组合的一切风险信息。在实际计算中,我们需要通过历史数据来计算经验协方差矩阵 (empirical covariance matrix),作为协方差矩阵的估计。然而,使用经验协方差矩阵存在以下问题:

(1)数据量要求大。要对协方差矩阵实现较为准确的估计,需要保证观测值数目大于矩阵的维数。考虑以沪深 300 的 300 个成分股作为投资组合,以月度数据计算经验协方差矩阵,则需要至少 300/12 = 25 年的数据,因此缺乏现实可行性;

(2)依据历史数据进行协方差估计无法反映投资组合中资产的结构性变化(例如并购);

(3)大量资产两两之间的协方差计算,容易出现多重比较谬误(multiple comparison fallacy)的问题,因而引起资产之间相关性的错误判断。

(4)历史数据中包含大量的噪音,因此简单使用资产的协方差矩阵进行预测会造成较大的偏差。


2 结构化风险模型 (Structural Risk Model, SRM)

针对以上用资产的协方差矩阵来衡量投资组合风险所存在的缺陷,国际著名的投资组合表现分析研究机构 MSCI Barra 使用结构化风险模型(也称多因子模型,以下简称 SRM)来衡量投资组合的表现和风险。其核心思想是,我们可以选取一系列公共因子(common factors)和特异因子 (idiosyncratic factors)来描述一个投资组合的风险。常用的公共因子有所属行业,成长性,市盈率等,特异因子则是和公共因子相对的概念,用于解释每个资产的收益率中不能用公共因子解释的部分。基于这个思路,投资组合的收益率 R_{p} 可以用资产的头寸 W,因子暴露(factor exposure)矩阵 X,因子收益率 R_{X} 和特异因子(idiosyncratic factors)收益率 \mu 的线性组合来表示:

R_{p} = W^{T} (R_{X} + \mu  )

其中,因子暴露 X 又称因子载荷(factor loading),用于衡量因子对投资组合收益率的贡献。当因子为行业因子时,X 为取值只有 0 和 1 的哑变量(dummy variable),表示该资产是否属于该行业;当因子为市盈率等连续变量时,为减少回归建模中残差的异方差性,通常要进行剔除离群值和标准化的处理。

另外,SRM 给出了以下的两个假设:(1)对于同一个资产 i,因子收益率和特异收益率不存在线性相关,即 Cov(R_{i}, \mu _{i} ) = 0;(2)对于两个不同的资产 i 和 j,它们的特异收益率也不存在线性相关,即 Cov(\mu _{i}, \mu _{j} ) = 0 。基于这两个假设,我们可以推导出 SRM 的投资组合风险表达式:

\sigma _{p}  = \sqrt{W^{T}[XCov(R_{X})X^{T}+\Delta ] W}

其中 \sigma _{p} 为投资组合收益率的标准差,Cov(R_{X} ) 为因子收益率的协方差矩阵。W 和 \Delta 分别为权重向量和特异因子收益率方差矩阵。

上述两个表达式即为结构化风险模型的核心。虽然它们的形式上稍显复杂,但它们的意义是明确的:投资组合的风险可以用因子收益率的协方差矩阵,而非投资组合中资产的收益率的协方差矩阵来描述。从数据处理的角度来看,SRM是一种数据降维技术。因此,它具有数据降维通常的优点:

(1)去除数据中的噪音;

(2)它能够大大减少计算量,因此也降低了出现多重比较谬误的可能性。例如,一个包含 500 个资产的投资组合,如果要构建其相关系数矩阵,则需要计算 500*(500-1)/2 = 124,750 个相关系数,如果选用 50 个因子的相关系数来描述,则只需要计算 50*(50-1)/2 = 1225 个相关系数;

(3)因子的统计量通常比资产的统计量有更好的稳定性,因此基于SRM能给出更精确的长期预测;

(4)因子暴露度的调整可以捕捉资产的结构性变化;

(5)因子本身有清晰的经济学涵义,在对 SRM 的因子进行筛选的过程中,也会加深我们对于投资组合风险来源的认识。


3 公共因子的选择

在一般的 SRM 实现中,因子被分为两大类:行业因子和风格因子。参照国家统计局的行业分类方法,我们选定了 19 个行业因子(表1),以取值为 0 或 1 的哑变量(dummy variable)表示。而风格因子则对应一些选择投资组合常见的主题和标准,包括9个类型:贝塔值(beta),动量(momentum),规模(size),盈利率(earnings yield),波动率(volatility),成长性(growth),价值(value),杠杆(leverage)和流动性(liquidity)。因此在目前的建模中,我们一共使用28个因子。


4 风格因子的实现

行业因子的定义见表1。

表1:依据国家统计局的分类选定的行业因子


接下来我们将介绍如何构建风格因子。在部分风格因子的构建中,我们使用了多个细分因子(一些资料称其为 atom descriptors)来组成一个因子,以表征该因子不同的特征。例如,在盈利率因子的构建中,我们使用了市盈率,每股经营活动产生的现金流量净额和每股收益(扣除/稀释)三个描述变量。如果在线性回归模型中直接使用这些细分因子,因为它们所属的类型相同,因此可能会导致有多个细分因子所属的因子类型对模型参数估计的影响力过大,且容易引起共线性的问题。对此,我们把属于同一类型的多个因子进行加权组合得到该类型对应的暴露度。而因子的权重可通过对上一期数据进行随机森林(random forest)回归分析获得。

另外我们需要对一些稳定性较差(自相关性较低)的因子(动量和波动率)进行指数加权处理,给予时间较近的交易日数据较大的权重。具体地,我们采用半衰期为30天的指数系数(\lambda =\sqrt[30]{0.5} =0.977),此时在风险暴露度矩阵的估计中,近 30 个交易日的数据将会占一半的权重。我们在 200 个交易日处做截断(更早的交易日的权重非常小,已可忽略不计)。在下面的因子计算中,我们将会统一使用 W_{\lambda } 表示归一化指数权重向量。

最后,在风格因子的计算中,除了在 RiceQuant 策略研究平台上调用的变量外,我们还需要定义以下的衍生变量和运算:

衍生变量:

R_{a,e}和 R_{b,e} 分别表示股票和基准组合的 200 个交易日的每日超额收益率时间序列;R_{a}和 R_{b}分别表示股票和基准组合中资产的 200 个交易日的每日收益率时间序列;W_{\lambda } 表示归一化指数权重;\varepsilon_{a} 是贝塔值计算后得到的残差+截距项。outstanding_shares 表示流通股本,TotalVolumeTraded/outstanding_shares 计算得到的即我们通常说的换手率。

运算:

Cov(\cdot ) 表示计算变量的协方差;Var(\cdot )表示计算变量的方差; A\cdot B 表示计算向量 A 和向量 B 的内积;ln(\cdot ) 表示对变量取对数;std(\cdot ) 表示计算变量的标准差;\mu (\cdot ) 表示计算变量均值,max(\cdot )和 min(\cdot ) 分别表示取一组数据中的最大值和最小值。

基于以上的讨论,我们的风格因子构建所需的变量见表2,具体计算见表3。

表2:RiceQuant 策略研究平台上调用的变量



表3:风格因子的的定义和计算


5 沪深300的因子暴露度分析

接下来,我们将把沪深300指数和各个风格因子的变化趋势进行比较分析(图1和图2)。在这里,我们首先给出沪深300指数的基本计算公式:

报告期指数=报告期成份股的调整市值/基日成份股的调整市值×1000

其中基日为2004年12月31日。由于可以看出,沪深300指数主要决定于其成分股的市值。基于这个认识,我们对各个风格因子的变化进行分析。


5.1 规模因子,盈利率因子和价值因子

基于风格因子的定义,规模因子的暴露度是直接对市值取对数,而盈利率因子暴露度中的市盈率和市值成正比,因此这两个因子和沪深300的变化趋势基本一致(图1);而对于价值因子的暴露度,其和市值成反比,因此和沪深300的变化呈相反趋势(图2)。


5.2 贝塔值因子

贝塔值是衡量一个投资组合对基准组合的敏感性的指标。在这里,虽然我们使用的投资组合是沪深300的300个成分股,但贝塔值并不恒等于1。其原因在于,我们进行每一期因子暴露度计算时,都使用月底的成分股权重,和过去 200 个交易日沪深 300 指数成分股的权重稍有不同。在图 1 中,我们可以看到当指数出现大幅震荡时,贝塔值因子暴露度会明显偏离于 1,即依据每期月末的权重构建的沪深 300 成分股组合,和过去 200 个交易日的沪深 300 指数的敏感性显著提高或是降低(图1)。


5.3 动量因子

在动量因子的构建过程中,我们使用了 200 个交易日的加权平均值来展示个股的长期动量,对比沪深 300 指数的和动量因子的变化趋势,可以发现当市场出现大幅震荡时,这个因子暴露度的变化呈现出一定的滞后性。2015年下半年市场出现大幅下跌,但2016年2月动量才从正变为负(图1)。


5.4 波动率因子

波动率因子暴露度的走势和沪深300指数的走势基本一致,较好地反映了市场的波动情况(图1)。


5.5 成长性因子

成长性因子的构建使用了四个变量的同比增长率,和企业的股票市值并没有直接联系。有意思的是,沪深300的成长性因子暴露度出现三个峰值,这三个峰值均出现在市场波动较小的阶段,可能反映出在市场行情较为平淡时,投资者较为倾向于投资具有较好成长性的股票(图2)。


5.6 杠杆因子

杠杆因子的计算公式是:(负债合计+总资产)/总资产,和企业的股票市值没有直接联系,但其暴露度变化和沪深300指数的变化呈现相反的趋势。可能反映在牛市当中,杠杆低的企业的股票更受投资者青睐(图2)。


5.7 流动性因子

流动性因子的走势和沪深300指数的走势基本一致,较好地反映了市场的整体交易情况(图2)。

图1 沪深300指数变化和风格因子(贝塔值,动量,规模,盈利率和波动率)的对比

图2 沪深300指数变化和风格因子(成长性,价值,杠杆和流动性)的对比


6 总结

在这一份报告里,我们简要介绍了Barra 结构化风险模型,并对一系列风格因子进行了构建和分析。我们以沪深 300 成分股作为投资组合进行测试。测试结果表明,大部分因子均较好地反映了沪深 300 指数的变化特征,以及在不同的市场环境下投资者的一些投资倾向。在动量因子的分析中,我们发现因子只能反映市场的长期动量变化,而当市场出现大幅震荡的行情时,其变化出现了一定的滞后性。所以在下一步的建模中,我们将进一步添加表征短期和中期动量的细分因子,使其能够捕捉不同情况下的市场变化趋势。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习资料挑的眼花啦?小夕帮你做选择!

小夕还记得几年前刚入坑的时候,老师给的入门资料就是一堆论文!害的小夕差点放弃。。。如今深度学习应用的开发成本越来越低,学习资料越来越多,于是对初学者来说进入了另一个相反的困境——资料过多,让人眼花缭乱&#…

干货 | 深度学习的可解释性研究(一):让模型「说人话」

在这篇文章中:可解释性是什么?我们为什么需要可解释性?有哪些可解释性方法?在建模之前的可解释性方法建立本身具备可解释性的模型在建模之后使用可解释性性方法作出解释关于 BIGSCity参考文献不以人类可以理解的方式给出的解释都叫…

深度解析LSTM神经网络的设计原理

引人入胜的开篇:想要搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗?想知道simple RNN是如何一步步的走向了LSTM吗?觉得LSTM的工作机制看不透?恭喜你打开了正确的文章! 前方核弹级高能预警!本文信息…

Step-by-step to LSTM: 解析LSTM神经网络设计原理

Ps:喂喂喂,你萌不要光收藏不点赞呀_(:з」∠)_emmmm... 搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗?想知道simple RNN是如何一步步的走向了LSTM吗?觉得LSTM的工作机制看不透?恭喜你打开了正确的文章&#…

【论文翻译】用知识图谱的多任务特征学习来增强推荐

Wang H, Zhang F, Zhao M, et al. Multi-task feature learning for knowledge graph enhanced recommendation[C]//The World Wide Web Conference. 2019: 2000-2010. 原文链接:https://arxiv.org/pdf/1901.08907.pdf 代码实现:https://github.com/hwwa…

LeetCode-二叉树算法总结-层次遍历,路径总和等

版权声明&#xff1a;本文为博主原创文章&#xff0c;欢迎转载&#xff0c;但请注明出处&#xff0c;谢谢愿意分享知识的你~~ https://blog.csdn.net/qq_32690999/article/details/80484440 </div><link rel"stylesheet" href"https://csdnimg.…

记录一次闲鱼维权事件

-----2017.11.16 最后一次更新----- 小夕也真的没有想到&#xff0c;在万般绝望之时竟然得到了这么多人的帮助。在本文发出后&#xff0c;多位阿里人员积极联系我了解了情况&#xff0c;很感激一位阿里的专家帮我将此事递交给相关部门&#xff0c;让专业的客服直接受理和重审此…

百度作业帮-产品分析

一、商业模式分析 1.1、问答时期&#xff08;2014年2月-2015年1月&#xff09; 商业模式之作业帮V1.0.png两点值得注意&#xff1a; 作业帮的出现有明显的历史原因&#xff0c;即由百度知道团队出品&#xff0c;因此切入K12教育初期&#xff0c;采取的是之前的问答模式&#xf…

【Python自然语言处理】中文分词技术——统计分词

中文分词方法 本文参考自书籍《Python自然语言处理实战&#xff1a;核心技术与算法》 用做个人的学习笔记和分享 1. 规则分词 规则分词的详细笔记 2. 统计分词 2.1 一般步骤 建立统计语言模型。句子划分为单词&#xff0c;对划分结果进行概率分析&#xff0c;获得概率最大的…

你的模型真的陷入局部最优点了吗?

小夕曾经收到过一个提问&#xff1a;“小夕&#xff0c;我的模型总是在前几次迭代后很快收敛了&#xff0c;陷入到了一个局部最优点&#xff0c;怎么也跳不出来&#xff0c;怎么办&#xff1f;”本文不是单纯对这个问题的回答&#xff0c;不是罗列工程tricks&#xff0c;而是希…

如何与深度学习服务器优雅的交互?(长期更新)

0. 故事序言 如果有人问小夕&#xff1a;"小夕&#xff0c;要是人工智能的就业岗位一夜之间消失了&#xff0c;你会去转行做什么呢&#xff1f;" 答曰&#xff1a;"当然是去做Linux运维啊23333" 小夕有一台自己负责的GPU服务器&#xff0c;她可让小夕操碎了…

风控模型师面试准备--技术篇(逻辑回归、决策树、集成学习)

原文地址&#xff1a;https://zhuanlan.zhihu.com/p/56175215 编辑于2019-02-12&#xff0c;持续更新中&#xff0c;有风控建模工作经验的&#xff0c;或者想转行风控建模的小伙伴可以互相交流下... 一.算法 逻辑回归决策树集成学习&#xff08;随机森林&#xff0c;Adaboost&…

step-by-step: 夕小瑶版神经网络调参指南(上)

距离上一篇文章已经过去好久好久好久啦。闭关几个月后&#xff0c;其实早有继续码文章的打算&#xff0c;先后写了一下核函数与神经网络的一些思考、文本预处理tricks、不均衡文本分类问题、多标签分类问题、tensorflow常用tricks、噪声对比估算与负采样等文章&#xff0c;结果…

谷歌发布端到端AI平台,还有用于视频和表格的AutoML、文档理解API等多款工具

谷歌又有了大动作。在大洋彼岸的谷歌Cloud Next conference大会上&#xff0c;谷歌一口气发布了多款AI新品和工具&#xff0c;主要包括&#xff1a; 端到端的AI平台 用于处理视频和表格数据的AutoML Tables和AutoML Video 文档理解API 联络中心AI 视觉产品搜索 对于开发者…

跨性别,你所不知道的事

今晚原计划在订阅号里推送南溪妹子前几天录制的跨性别科普视频&#xff0c;没想到今天收到南溪的私信&#xff0c;说不做科普了&#xff0c;还是算了吧。急忙去了解了一下原因 (http://www.zhihu.com/pin/963101597957644288) &#xff0c;才知道南溪因这段视频所遭受的无故攻击…

文本分类问题不需要ResNet?小夕解析DPCNN设计原理(上)

历史回顾回顾一下图像和文本的发展史&#xff0c;似乎这就是一场你追我赶的游戏。在上一阶段的斗争中&#xff0c;朴素贝叶斯、最大熵、条件随机场这些理论完备的统计机器学习模型使得文本分类、中文分词、NER等诸多自然语言处理问题取得了差强人意&#xff08;释义&#xff1a…

【Tensorflow】TensorFlow的嵌入layer和多层layer

计算图中的操作 # python 3.6 import tensorflow as tf import numpy as npsess tf.Session()# 将张量和占位符对象组成一个计算图&#xff0c;创建一个简单的分类器# 一、计算图中的操作 # 1. 声明张量和占位符&#xff0c;创建numpy数组&#xff0c;传入计算图操作 x_vals …

文本分类问题不需要ResNet?小夕解析DPCNN设计原理(下)

哎呀呀&#xff0c;说好的不拖稿的又拖了两天T_T&#xff0c;小夕过一阵子分享给你们这两天的开心事哦。后台催稿调参系列的小伙伴们不要急&#xff0c;下一篇就是第二篇调参文啦。好啦&#xff0c;接着上一篇文章&#xff0c;直接搬来DPCNN、ShallowCNN、ResNet的对比图。从图…

注意力机制-深度学习中的注意力机制+注意力机制在自然语言处理中的应用

1 深度学习中的注意力机制 https://mp.weixin.qq.com/s?__bizMzA4Mzc0NjkwNA&mid2650783542&idx1&sn3846652d54d48e315e31b59507e34e9e&chksm87fad601b08d5f17f41b27bb21829ed2c2e511cf2049ba6f5c7244c6e4e1bd7144715faa8f67&mpshare1&scene1&src…

【TensorFlow】常用的损失函数及其TensorFlow实现

1 损失函数 定义&#xff1a;将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。 应用&#xff1a;作为学习准则与优化问题相联系&#xff0c;即通过最小化损失函数求解和评估模型。 分类&#xff1a;回归问题、分类问题 2 回归问…