量化交易全流程(六)

news2024/12/28 5:29:51

本节目录

多因子风险模型

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

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

相关文章

【Linux】Linux常用命令—文件管理(上)

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

Mysql内置函数、复合查询和内外连笔记

目录 一、mysql内置函数 1.1.日期函数 1.2.字符串函数 1.3.数学函数 1.4.其他函数 二、复合查询 2.2 自连接 2.3 子查询 2.3.1单行自查询 2.3.2 多行子查询 2.3.3 多列子查询 2.3.4在from子句中使用子查询 2.3.5合并查询 三、表的内连和外连 3.1内连接 3.2外连接…

KNN算法与SVM支持向量机

KNN算法 KNN算法就是把要分类的对象&#xff08;例如一个特征向量&#xff09;与训练集中已知类标记的所有对象进行对比&#xff0c;并由K近邻对分类对象进行判断为那个类别。这种方法的效果好&#xff0c;但是也有弊端&#xff0c;与K-means聚类算法一样&#xff0c;需要先预…

【微服务】springboot整合neo4j使用详解

一、前言 在上一篇我们详细了解了neo4j的使用&#xff0c;从搭建到相关的语法操作&#xff0c;本篇紧接着之前的内容&#xff0c;来详细聊聊如何在springboot应用中集成和使用neo4j。 二、Spring Data Neo4j 和很多其他的中间件类似&#xff0c;都提供了类似jpa的方式与sprin…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验

课程1_第2周_测验题 目录&#xff1a;目录 第一题 1.神经元计算什么&#xff1f; A. 【  】神经元计算激活函数后&#xff0c;再计算线性函数&#xff08;zWxb&#xff09; B. 【  】神经元计算一个线性函数&#xff08;zWxb&#xff09;&#xff0c;然后接一个激活函数…

【Stm32-F407】Keil uVision5 的安装

文章内容如下&#xff1a; 1&#xff09;Keil uVision5 安装包的获取2&#xff09;Keil uVision5 的安装3&#xff09;Keil uVision5 中 Stm32-F407 芯片包的获取与安装4&#xff09;注册 Keil uVision5 1&#xff09;Keil uVision5 安装包的获取 Keil uVision5 安装包链接: h…

【LeetCode热题100】--199.二叉树的右视图

199.二叉树的右视图 思路&#xff1a; 使用根->右->左方法进行遍历节点&#xff0c;同时记录层数&#xff0c;将当前层数与记录的层数进行比较&#xff0c;如果当前层数大于记录的层数&#xff0c;添加该元素&#xff0c;若当前层数小于记录的层数&#xff0c;说明该层已…

接口测试复习

一。基本概念 接口概念&#xff1a;系统与系统之间 数据交互的通道。 接⼝测试概念&#xff1a;校验 预期结果 与 实际结果 是否⼀致。 特征&#xff1a; 测试⻚⾯测试发现不了的问题。&#xff08;因为&#xff1a;接⼝测试 绕过前端界⾯。 &#xff09; 符合质量控制前移理…

Python PEP8 代码规范常见问题及解决方案

Win11查看安装的Python路径及安装的库 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anac…

为什么要用PLL时钟芯片替换传统晶体和振荡器?

随着社会智能化程度越来越高&#xff0c;数字化转型全面加速&#xff0c;市场对电子系统的精确度要求也越来越高&#xff01; 电子系统&#xff0c;如何保障运行精确度&#xff1f; 一般情况下需要用到“时钟信号”&#xff0c;用来同步各种组件的操作体系对应的数字逻辑&…

stm32之雨滴传感器使用记录

一、简介 雨滴传感器、烟雾传感器&#xff08;MQ2&#xff09;、轨迹传感器、干黄管等的原理都类似&#xff0c;都是将检测到的信号通过LM393进行处理之后再输出&#xff0c;可以输出数字信号DO&#xff08;0和1&#xff09;和模拟信号A0。 雨滴传感器在正常情况下是AO输出的是…

插入排序:简单而有效的排序方法

在计算机科学中&#xff0c;排序算法是一个重要且常见的主题&#xff0c;它们用于对数据进行有序排列。插入排序&#xff08;Insertion Sort&#xff09;是其中一个简单但有效的排序算法。本文将详细解释插入排序的原理和步骤&#xff0c;并提供Java语言的实现示例。 插入排序的…

react项目从webpack迁移到vite的解决方案

虽然webpack是前端工程编译工具的王者&#xff0c;但是最近vite牛逼吹的震天响&#xff0c;说什么开发/生产打包速度甩webpack 100条街。不管是不是事实&#xff0c;总得尝试一下吧。 于是说干就干&#xff0c;在网上找了很多资料&#xff0c;终于搞定了&#xff0c;以下就是r…

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);// 此时&#xff0c;服务器已经成功进入监听状…

区间搜索指令(博途SCL)

S型速度曲线行车位置控制,停靠位置搜索功能会用到区间搜索指令,下面我们详细介绍区间搜索指令的相关应用。 S型加减速行车位置控制(支持点动和停车位置搜索)-CSDN博客S型加减速位置控制详细算法和应用场景介绍,请查看下面文章博客。本篇文章不再赘述,这里主要介绍点动动和…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验

课程1_第1周_测验题 目录&#xff1a;目录 第一题 1.“人工智能是新电力” 这个比喻指的是什么&#xff1f; A. 【  】人工智能为我们的家庭和办公室的个人设备供电&#xff0c;类似于电力。 B. 【  】通过“智能电网”&#xff0c;人工智能正在传递新一波的电力。 C. …

【多级缓存】

文章目录 1. JVM进程缓存2. Lua语法3. 实现多级缓存3.1 反向代理流程3.2 OpenResty快速入门 4. 查询Tomcat4.1 发送http请求的API4.2 封装http工具4.3 基于ID负载均衡4.4 流程小结 5. Redis缓存预热 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如…

App分发苹果ios内测ipa应用文件签名分发平台剖析其运行模式及法律注意事项

随着移动应用的快速发展&#xff0c;为了确保应用的质量和稳定性&#xff0c;开发者们通常在发布应用之前会进行内部测试。而App内测签名分发平台作为一种解决方案&#xff0c;不仅能够提供快速的应用分发和安装&#xff0c;还能确保应用的完整性和可靠性。本文将详细分析App内…

【算法|动态规划No.11】leetcode53. 最大子数组和

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

input允许多行输入

input允许多行输入 input允许多行输入 ______________________________ 表示停止输入想象一下&#xff0c;我们现在身处一间充满活力的课堂。学生们坐在自己的座位上&#xff0c;准备聆听老师的讲解。老师站在讲台上&#xff0c;充满激情地开始教授代码。 老师&#xff1a;同…