量化交易全流程(六)

本节目录

多因子风险模型

自从股票市场产生以来,大量的学者、业界人员都在研究股票的价格波动究竟是由什么决定的。一个明显的事实是,股票的价格波动一定是由多种因素决定的,比如大盘因素、市值因素和行业因素。对于大盘因素,股票的波动是会受大盘影响的。对于市值因素,不同市值的股票,波动率也会有较大的区别。对于行业因素,不同行业的股票,波动率往往也会有较大区别。
所谓多因子策略,就是要发掘诸如此类的因素(因子),确定这些因子对股价波动确实有影响,然后以一种合理的方式组合起来,形成模型,用于支持投资操作。
股价波动对应着股票的风险,所以多因子模型中的因子,往往又被称作风险因子,即这些因子共同解释了股票的风险。
本节将从最简单的风险定义开始,逐步展开介绍多因子风险模型。
风险定义
根据前面介绍的金融基本概念可知,风险可以简单定义为收益的标准差。我们可以通过计算历史收益率的标准差来获得股票的风险估计。假设一个投资组合的收益率为R,那么投资组合的风险

\delta _p=Std(R_p)

按照这个定义,我们可以证明,假设投资组合中有N支股票,而且这些股票是完全不相关的,每支股票本身的风险都是δ,那么投资组合的风险为:

\delta _p=\frac{\delta }{\sqrt{N}}

由此可见,在投资组合中引入不相关的股票,可以降低投资组合的风险。当然实际情况中,股票不太可能完全不相关。所以我们将模型推广一下,假设所有股票的相关性都为\rho,那么可以证明,投资组合的风险为:(证明略)

\delta _p=\delta \sqrt{\frac{1+\rho (N-1)}{N}}

这种计算风险的方法是由马科维茨提出的。在该模型下,分散投资是可以降低风险的。然而,有些风险,无论怎么分散,都没有办法消除,因为所有股票都倾向于随着大盘的涨跌而涨跌。这种市场性的风险称为系统性风险。在马科维茨的模型中,这种系统性风险并没有体现出来。

CAPM

为了体现系统性风险,夏普等学者提出了资本资产定价模型(Capital Asset Pricing Model),简称CAPM。CAPM体现了预期收益和市场风险之间的关系。公式如下:

E(r_i)=r_f+\beta _iE(r_m-r_f)

其中\beta_i=\frac{COV[r_i, r_m]}{Var[r_m]},为资产i的系统性风险。

CAPM的核心思想是,投资者只有承担了市场风险,才能获得对应比例的超额回报
CAPM中最核心的参数就是股票的Beta系数。Beta系数衡量了某种证券或者投资组合对于整体市场波动性的敏感程度。直观地理解就是,假设某支股票的Beta系数是1,那么市场上涨10%,股票也会对应上涨10%。如果Beta系数是2,那么市场上涨10%,股票将会对应上涨20%,如果市场下跌10%,股票也会对应下跌20%。
计算Beta系数也是CAPM中最重要的一环。一种简单的方式是选取一段历史样本,使用公式\beta_i=\frac{COV[r_i, r_m]}{Var[r_m]}进行计算。同时,也要注意到,Beta系数不一定是稳定的,而且不同的历史样本,算出来的 Beta 系数肯定是不一样的。所以如何更准确地估计Beta系数,并不是一个简单的问题。CAPM提供了一个新的视角来看待投资组合的风险。然而,CAPM离真实市场还是有较大的距离的。后来,美国学者斯蒂芬·罗斯(Stephen A. Ross)给出了一个以无套利定价为基础的多因素资产定价模型,也称套利定价理论(Arbitrage Pricing Theory)模型。

APT

1970年,投资界发现有类似特征的股票倾向于有类似的收益率表现(比如相同行业的、市值大小相近的,等等)。基于此发现,斯蒂芬·罗斯提出了套利定价理论(Arbitrage Pricing Theory),简称APT。

APT的核心思想是,证券或者投资组合的预期收益率与一组未知的系统性因素相关,同时也满足一价定律,即风险—收益性质相同的资产,价格也必须相同。否则会出现套利行为。模型推导出的资产收益率取决于一系列影响资产收益的因素,而不完全依赖于市场资产的组合,而套利活动则保证了市场均衡的实现。
实际上,CAPM是APT 模型的一种特殊形式。如果假设只有市场收益率这一个因子会影响证券的收益率,那么APT模型实际上就是CAPM。所以APT模型可以算是CAPM的一种推广,将单一的市场因子推广到多种因子。APT 模型的计算公式具体如下:

r_i=\alpha_i+\sum_{k=1}^{K}b_{ik}f_k+\xi _i

f_k为风险因子,b_{ik}因子载荷,敏感度,\xi _i资产本身风险。

APT 的因子模型更符合人对证券投资的直觉,所以更贴合于市场。不过,虽然APT 模型提出了一个很好的框架,但该理论并没有告诉我们,因子是什么,如何计算一只股票对因子的风险头寸,所以APT还需要进行进一步的完善和研究,才能真正用于实际投资。
对于这个问题,BARRA公司进行了大量的研究,并提出了BARRA多因子模型(Multi-factor Model)。

MFM

多因子模型(Multi-Factor Model,MFM)是建立在这样的概念基础之上的,即一只股票的收益可以由一系列公共因子加上一个股票自身特殊的因子来解释。通俗地说,类似的股票应该有类似的收益率。所谓的"类似",主要是通过股票的各个特征来表现的,包括股票价量数据、财务报表中的基本面数据等。

MFM可用于识别股票之间共同的因子,并且计算股票收益率对于这些因子的敏感度。最终的风险模型将所有股票的收益率表达为因子收益和特殊收益的加权之和。当我们得到模型之后,任何的因子变化都将能够很快反应在模型之中。

多因子模型的优势

使用多因子模型有很多种优势,具体如下。
□可以减小问题规模。假设有3000只股票,如果使用收益率来计算协方差,那么我们将会有3000x(3000-1)/2= 4 498 500个协方差。但是如果我们将股票表示为20个因子,那么我们更多地就只需要研究这20个因子之间的关系。问题的规模就小得多了。
□多因子模型对风险进行了比较全面的分解和分析。其在进行风险暴露分析的时候比诸如CAPM的模型能分析得更为全面。
□在选择因子的时候,由于引入了经济逻辑,所以多因子模型的分析不会局限于纯历史数据的挖掘。

建立多因子模型的一般流程

风险因子的种类
建立多因子模型,第一步就是要选择合适的因子。一般来说,因子可以分成三大类:反映外部影响的因子、代表资产特点的截面比较因子、纯内部因子或者统计因子。

反映外部影响的因子

很明显,外部经济力量与股票市场间应该存在明确的联系。相关的因子便试图抓住这种联系。这些因子包括但不限于通货膨胀系数、石油价格变动、汇率变化、工业生产量变化等。这些因子通常又被称为宏观因子。宏观因子有时非常有效,但其也有如下三方面的缺陷。
第一个缺陷是,必须通过回归分析或者类似的方法来估计资产收益对这些因素的反应系数。如果我们需要估计3000只股票,那么每个月都需要进行3000次时间序列回归。这将会产生估计误差。
第二个缺陷是,我们的估计通常是建立在对历史数据的估计基础之上的,比如说5年。这些估计虽然可能能够比较精确地描述历史情形,但未必能够精确描述当前或者未来的情况。也就是说,这些反应系数是不稳定的。
第三个缺陷是,一些宏观经济数据的质量较差,收集过程可能会存在错误和延迟。而且有的数据可能因为频率较低而没有太大的使用价值。

资产截面因子

资产截面因子用于比较股票自身的特征,与宏观经济无关。截面因子通常也可以分为两类:基本面特征和市场特征。基本面特征包括诸如派息比例、每股收益、股票市值等。市场特征则包括过去一段时期的收益率、波动率、成交量、换手率等。

统计因子

统计因子是一类因子,这些因子有可能与股票收益率相关,虽然其中并不存在明显的金融经济学逻辑,但是从统计上可以得到很好的解释效果。

一般来说,我们要回避统计因子,因为统计估计往往会得出一些虚假相关性,而且统计因子往往还非常难以解释。一般来说,我们需要挑选具有经济意义,可解释,而且具有统计意义的因子。典型的因子包含两类:行业因子和风险因子。行业因子用于衡量不同行业股票的不同行为,风险因子用于衡量其他的非行业尺度上不同股票的不同行为。

行业因子

股票所属行业是一项非常重要的特征。不过有的公司涉及多种行业,所以对股票进行行业分类需要一个标准。A 股票的行业的分类标准有很多种,比如申万行业分类、证监会行业分类等。
其中,申万行业在业内使用得较多。股票分类又分为一级行业分类、二级行业分类等。所谓一级行业分类就是比较粗的分类,二级行业分类相当于一级行业分类的子分类。

二级行业分类众多,这里就不列举了。
在进行回归分析的时候,行业的头寸一般设为0或1的哑变量,主要目的是检测因子的表现是否有明显的行业倾向

风险因子分类

行业并不是产生股票风险的唯一来源,风险因子也是一大类的风险来源。一般来说,风险因子可以分为如下几个大类。
□波动率(volatility):根据波动率的不同来区分股票。波动率的概念在前面的章节中曾提到过,是股份一项十分重要的特征。

□动量(momentum):根据股票当前的绩效来进行区分。学术中曾有实证研究,动量效应确实是存在的,即处于涨势的股票总是会倾向于上涨得更多,处于跌势中的股票也倾向于跌得更多。
口规模(size):股票的规模一般会使用市值来表示。著名的Fama-French三因子模型中就有市值的因子。
□流动性(liquidity):流动性也是股票一项非常重要的指标,一般使用股票的交易量来表示。
□成长性(growth):根据过去的和预期的收益成长性来进行区分。
□价值(value):根据股票的一些基本面数据来区分股票。比如股息、现金流、账面价值等。
□财务杠杆(financial leverage):根据净资产负债率和利率风险来进行区分。

每一个大类通常都会包含几个特定的度量尺度,这些特定的度量尺度称为描述符(descriptors)。例如,波动率包括近期每日收益率波动率、期权隐含的波动率、近期价格范围等。尽管同一类别中的各个描述符通常都是相关的,但是每一个描述符都描述了风险因子的某一个方面。我们也可以在某大类因子的不同描述符中分配头寸权重。

投资组合风险分析

多因子风险模型可用于分析当期投资组合风险。它既能衡量整体风险,也能利用多种途径来分散风险。风险的分散可以鉴别出资产组合中重要的风险来源。
风险分析对于消极管理和积极管理都很重要。消极管理通常可以理解为指数基金,指数基金一般与一个特定的基准组合相匹配。然而,即使有了基准组合,管理者的投资也不一定包括基准组合中的所有股票。比如,对于一个包含几百上千只股票的基准组合,管理者不太可能持有所有的股票。当前的投资组合的风险分析就可以告诉消极管理者其投资组合相对于基准组合的风险水平。这就是跟踪误差。这是投资组合与基准组合之间收益差异的波动率来源,消极的管理者的目标是最小化跟踪误差
当然,更多的投资者所关注的可能是积极型管理。积极型管理者的目标不是尽可能地接近基准组合,而是要尽可能地超越基准组合。同样的,风险分析对于积极型管理关注积极型策略也十分重要。积极型管理者只承担他们获得超额收益所面临的风险。
通过恰当地分解当前投资组合的风险,积极型管理者可以更好地理解他们投资组合的们为什么以及如何才能改变它。资产配置。风险分析不仅可以告诉积极型管理者他们的积极型风险是什么,还可以告诉他们为什么以及如何才能改变它。

基准组合

在实际情况中,积极型资产管理者通常被要求其管理的基金绩效要高于基准组合。所谓基准组合,在实际中,其实并不是真正的"市场组合"。比如沪深300或者上证指数,并不是真正的"整体市场"的表现,毕竟A股有3000只股票,而这些指数只是包括了其中一部分的股票。另外,当我们在投资债券或者商品期货的时候,沪深300明显也不是一个合适的基准组合。所以在实际中,我们很少真正地去对"整体市场"进行比较和分析,取而代之的是人为选择出来的"基准组合"。
那么之前提到的β值,就不再是相对于整体市场的,而是相对于基准组合的了。

因子选择和测试

备选因子有两个来源。一个来源是市场信息,比如成交量、价格等,这种信息每天都有。第二个来源是公司的基本面数据,比如利润、净资产、负债等。这些信息一般会体现在季报和年报中。也有些因子是市场信息和基本面信息的组合,比如市盈率(PE)。因子的选择并不是一个简单的过程,需要进行大量严谨的量化研究。
最开始是因子的初步筛选。首先,好的因子,即使单独来看,也应该具有比较明显的意义。换句话说,好的因子应该是被广泛接受的,易于理解的资产相关的特征。其次,好的因子应该能将市场中的股票较好地进行分类,能够较明显地说明投资组合的风险特征。
选中的因子应当是基于经常发布的、准确的数据,而且应当具有预测风险的效用。当将一个因子加到模型里面的时候,对模型的预测作用应该会有所提升,否则的话就不应该加入进来。
为了能将不同的因子结合到一个模型中,我们需要对其进行归一化操作。所谓归一化,就是将不同范围的数据调整到同样的量级,这样做可便于比较。因为不同因子的数值范围差别很大,如果不进行归一化,就会极大地影响模型的有效性。归一化的公式是:

normalized value=\frac{raw value-mean}{standard deviation}

因子归一化之后,我们将资产收益和行业、因子进行回归。每次只对一个因子进行回归,这样就可以对每个因子测试其统计显著性。之后再基于计算的结果选择相应的因子纳入模型中。实际上这是一个迭代的过程,当将最显著的因子纳入模型之后,后面的因子需要接受更为严格的检验才能纳入,只有当它们能够增加模型的解释能力的时候才考虑将其纳入。

Fama-French三因子模型

Fama-French 三因子模型考虑的因子包括CAPM里的市场风险溢价因子,小市值股票回报率减去大市值股票回报因子(SMB),以及低PE股票回报率减去高PE 股票回报率因子(HML)。由于 Eugene Fama 当时研究的对象为美国的股市,而且时代相差太过久远,因此当时有效的模型可能现在在A股中的使用已不是那么有效了,但为了遵从原本的三因子模型,我们还是尽可能原汁原味地遵照原本模型的构建方式。我们相信,数据本身在模型的学习阶段并不重要,能够掌握模型背后的思想才是更为重要的。

在A股当中还原三因子模型时,我们将资产池暂时设定为上证380相关成分股中历史数据较多的股票。其收益率我们以周收益率为准,并且假定每个因子对每只股票都是有效的,代码如下:

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

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

相关文章

uniapp项目实践总结(二十七)苹果应用商店上架教程

导语:之前介绍了如何打包一个苹果安装包文件,如果想要上架苹果 ios 应用商店,那么就来这里学习一下方法吧。 目录 准备材料上架步骤审核事项 准备材料 基本信息 构建版本:需要一个 ipa 格式安装包;logo&#xff1a…

一文拿捏Spring之IOC、循环依赖、Spring的设计模式

1.IOC(控制反转)与DI(依赖注入) 🌟面试题(IOC-DI): IOC控制反转是一种实现对象解耦的思想。传统情况下是采用new的方式来创建对象,这个对象是由我们来直接控制的,但是有了IOC后,我们可以在IOC运行期间通过DI动态的将依赖的对象进…

数组结构与算法

文章目录 数据结构与算法稀疏数组sparse队列单向链表双向链表单向环形列表:CircleSingleLinkedList栈递归排序算法快速排序思路 树赫夫曼树 (HuffmanTree)二叉排序树(Binary sort tree)构建二叉树遍历二叉树 平衡二叉树…

分布式架构篇

1、微服务 微服务架构风格,就像是把一个单独的应用程序开发为一套小服务,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP API。这些服务围绕业务能力来构建,并通过完全自动化部署机制来独立部署。这些…

【3】c++设计模式——>UML表示类之间的关联关系

关联关系 关联(Assocition)关系是类与类之间最常见的一种关系,它是一种结构化的关系,表示一个对象与另一个对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等。在UML类图中,用(带接头或不…

列表的增删改查和遍历

任务概念 什么是任务 任务是一个参数为指针,无法返回的函数,函数体为死循环不能返回任务的实现过程 每个任务是独立的,需要为任务分别分配栈称为任务栈,通常是预定义的全局数组,也可以是动态分配的一段内存空间&#…

华为云云耀云服务器L实例评测|部署在线影音媒体系统 Jellyfin

华为云云耀云服务器L实例评测|部署在线影音媒体系统 Jellyfin 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 应用场景1.4 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Jellyfin3.1 Jellyfin 介绍3.2 Docke…

全志ARM926 Melis2.0系统的开发指引④

全志ARM926 Melis2.0系统的开发指引④ 编写目的7. 固件打包脚本7.1.概要描述7.2.术语定义7.2.1. makefile7.2.2. image.bat 7.3.工具介绍7.4.打包步骤7.4.1. makefile 部分7.4.2. image.bat 部分 7.5.问题与解决方案7.5.1. 固件由那些文件构成7.5.2. melis100.fex 文件包含什么…

十天学完基础数据结构-第五天(栈(Stack)和队列(Queue))

栈的定义和特点 栈是一种线性数据结构,它遵循后进先出(LIFO)原则。栈具有以下基本概念和特点: 栈顶:栈的顶部元素,是唯一可访问的元素。 入栈:将元素添加到栈顶。 出栈:从栈顶移除…

CUDA C编程权威指南:1.1-CUDA基础知识点梳理

主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的。 1.CUDA 解析:2007年,NVIDIA推出CUDA&#xff08…

微信小程序button按钮去除边框去除背景色

button边框 去除button边框 在button上添加plain“true”在css中添加button.avatar-wrapper {background: none}用于去除button背景色在css中添加button.avatar-wrapper[plain]{ border:0 }用于去除button边框

SpringMVC(二)@RequestMapping注解

我们先新建一个Module。 我们的依赖如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaL…

NXP公司K60N512+PWM控制BLDC电机

本篇文章介绍了使用NXP公司提供的塔式快速原型系统来驱动控制带霍尔传感器的无刷直流电机。文章涉及的塔式快速原型系统主要包括以下四个独立板卡&#xff1a;1.塔式系统支撑模块&#xff08;TWR-Elevator&#xff09;&#xff0c;用以连接微控制器以及周边模块&#xff1b;2.低…

Android开源 Skeleton 骨架屏 V1.3.0

目录 一、简介 二、效果图 三、引用 Skeleton 添加jitpack 仓库 添加依赖: 四、新增 “块”骨架屏 1、bind方法更改和变化&#xff1a; 2、load方法更改和变化&#xff1a; 五、关于上一个版本 一、简介 骨架屏的作用是在网络请求较慢时&#xff0c;提供基础占位&…

LabVIEW开发带式谱感测技术

LabVIEW开发带式谱感测技术 如今&#xff0c;通过无线网络传输的数据量正在迅速增加&#xff0c;并导致频谱稀缺。超过数十亿的无线设备将被连接起来&#xff0c;并需要互联网接入。因此&#xff0c;无线电频谱管理方案的效率不足以授予对所有设备的访问权限。在频谱分配中&am…

开源白板工具 Excalidraw 架构解读

本文讲解开源白板工具 Excalidraw 的架构设计。 版本 0.16.1 技术栈 Vite React TypeScript Yarn Husky。 脚手架原来是用的是 Create React App&#xff0c;但这个脚手架已经不维护了&#xff0c;一年多没发布新版本了。 目前市面上比较流行的 React 脚手架是 Vite&…

CSS学习小结

css的两种使用方式&#xff1a; ①内嵌样式表 ②导入外部样式表&#xff08;实际开发常用&#xff09;<link href"...." rel"stylesheet"/> 选择器&#xff1a; ①标签选择器&#xff1a;通过标签种类决定 ②类选择器&#xff1a;class"..…

SSRF+redis未授权漏洞复现

1.SSRF漏洞简介 SSRF&#xff08;Server-Side Request Forgery&#xff09;即服务器端请求伪造&#xff0c;是一种由攻击者构造攻击链传给服务器&#xff0c;服务器执行并发起请求造成安全问题的漏洞&#xff0c;一般用来在外网探测或攻击内网服务。当网站需要调用指定URL地址…

nodejs+vue养老人员活体鉴权服务系统elementui

系统 统计数据&#xff1a;统计报表、人员台账、机构数据、上报数据、核验报表等&#xff0c;养老人员活体鉴权服务是目前国家养老人员管理的重要环节&#xff0c;主要为以养老机构中养老人员信息为基础&#xff0c;每月进行活体鉴权识别并统计数据为养老补助等管理。前端功能&…

雷达编程实战之提高探测速度

有效帧频率作为雷达一个非常核心的指标&#xff0c;它代表了雷达探测识别的速度&#xff0c;速度越快&#xff0c;后级各项智能驾驶功能就能得到更快、更有效的判断。本篇文章首先从硬件的角度&#xff0c;提供了一种合理利用片上资源提高探测识别速度的常用方法&#xff0c;然…