量化交易全流程(六)

本节目录

多因子风险模型

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

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

相关文章

最新AI创作系统/AI绘画系统/ChatGPT系统+H5源码+微信公众号版+支持Prompt应用

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…

一个基于人工智能的视频分析和管理工具——Chat Video

Chat Video是一个基于人工智能的视频分析和管理工具,致力于帮助用户高效学习和管理视频。在这个视频泛滥的时代,Chat Video 凭借其独特的AI技术,为用户节省大量时间,真正释放视频的价值。 Chat Video 通过语音识别技术&#xff0…

Socket通信

优质博文IT-BLOG-CN 一、简介 Socket套接字:描述了计算机的IP地址和端口,运行在计算机中的程序之间采用socket进行数据通信。通信的两端都有socket,它是一个通道,数据在两个socket之间进行传输。socket把复杂的TCP/IP协议族隐藏在…

2023年-华为机试题库B卷(Python)【满分】

华为机试题库B卷 已于5月10号 更新为2023 B卷 (2023-10-04 更新本文) 华为机试有三道题目,前两道属于简单或中等题,分值为100分,第三道为中等或困难题,分值为200分。总分为 400 分,150分钟考试…

systrace/perfetto抓取方式分享

背景 近来有一些同学反馈性能分析,现在大部分都是其实已经开始使用perfetto了,连sdk上都已经找不到哦systrace相关工具,让马哥可以分享一些这个相关内容,其实以前企业里面那时候大部分都是使用老版本systrace的,相比新…

【10】c++设计模式——>依赖倒转原则

关于依赖倒转原则,对应的是两条非常抽象的描述: 1.高层模块不应该依赖低层模块,两个都应该依赖抽象。 2.抽象不应该依赖细节,细节应该依赖抽象。 先用人话解释一下这两句话中的一些抽象概念: 1.高层模块:可…

QT实现TCP服务器客户端

服务器 .cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);// 此时,服务器已经成功进入监听状…

flutter开发实战-应用更新apk下载、安装apk、启动应用实现

flutter开发实战-应用更新apk下载、安装apk、启动应用实现 在开发过程中,经常遇到需要更新下载新版本的apk文件,之后进行应用更新apk下载、安装apk、启动应用。我们在flutter工程中实现下载apk,判断当前版本与需要更新安装的版本进行比对判断…

竞赛选题 机器视觉目标检测 - opencv 深度学习

文章目录 0 前言2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 0 前言 &#x1f5…

SystemUI导航栏

SystemUI导航栏 1、系统中参数项1.1 相关开关属性2.2 属性设置代码 2、设置中设置“三按钮”导航更新流程2.1 属性资源覆盖叠加2.2 SystemUI导航栏接收改变广播2.3 SystemUI导航栏布局更新2.4 时序图 android13-release 1、系统中参数项 1.1 相关开关属性 设置->系统->…

VC++创建windows服务程序

目录 1.关于windows标准可执行程序和服务程序 2.服务相关整理 2.1 VC编写服务 2.2 服务注册 2.3 服务卸载 2.4 启动服务 2.5 关闭服务 2.6 sc命令 2.7 查看服务 3.标准程序 3.1 后台方式运行标准程序 3.2 查找进程 3.3 终止进程 以前经常在Linux下编写服务器程序…

web漏洞-PHP反序列化

目录 PHP反序列化序列化反序列化原理涉及技术利用危害CTF靶场 PHP反序列化 序列化 将对象转换成字符串 反序列化 相反,将字符串转换成对象。 数据格式的转换对象的序列化有利于对象的保存和传输,也可以让多个文件共享对象。 原理 未对用户输入的序列化字…