社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

JFQA | 基于深度学习的排序特征因子模型

QuantML • 6 月前 • 197 次点击  


本文提出了一种新的结构化深度神经网络方法,用于构建资产定价中的潜在因子模型,以解释横截面资产收益。该方法将传统的基于公司特征的排序方法推广为一种非线性建模框架,并通过生成风险因子(隐藏层)来拟合横截面收益。

一、引言

1. 资产定价模型与因子模型概述

跨期资本资产定价模型 (ICAPM) 认为,一系列共同风险因子组合可以解释预期收益的横截面。根据 ICAPM,资产收益时间序列对共同因子的回归截距应为零,即阿尔法为零。

然而,传统的基于公司特征的排序方法构建的风险因子,例如Fama-French三因子模型(SMB、HML),以及后续提出的各种因子模型,都未能通过零阿尔法假设检验。这表明,添加因子可能会导致统计过度拟合(增加回归 R2),但不一定能提高资产定价拟合度(降低回归截距)。

2. 传统排序方法的局限性

传统的风险因子构建方法存在以下局限性:

  • 非线性建模: 基于公司特征的排序本质上是一种非线性建模方法,而因子在因子模型中被视为线性输入。
  • 维度诅咒: 排序方法容易受到维度诅咒的影响,研究人员可能会遇到没有股票的区域,即使使用双重或三重排序方法也是如此。

3. 本文研究目标与创新点

本文旨在通过深度学习架构构建一种新的潜在因子模型,以解决传统排序方法的局限性,并更有效地捕捉风险与收益之间的关系。

具体而言,本文贡献如下:

  • 提出了一种新的结构化深度神经网络方法:
    • 将排序特征因子模型概念化为深度学习模型。
    • 将公司特征作为输入,通过深度学习网络生成潜在因子(隐藏层)来拟合横截面收益。
    • 采用经济导向的目标函数,最小化平均实现的定价误差。
  • 连接了统计因子模型与经济因子模型的文献:
    • 现有文献主要关注输入(因子)和输出(资产收益)之间的关系,而忽略了风险因子是如何生成的。
    • 本文采用自下而上的方法,从公司级特征到潜在因子,填补了这一空白。
  • 提供了一种系统化的方法,将安全性排序过程自动化:
    • 利用深度学习术语(如输入、中间特征、输出和目标函数)来解释安全性排序。
    • 提出的结构化深度学习方法可以通过数据驱动的方式发现公司特征,以揭示风险与收益之间的基本关系,从而补充人类学习研究。
    • 该模型可以简化金融经济学家数十年来一直使用的安全性排序流程。

二、深度学习与实证资产定价

2.1 资产定价优化

本文采用深度学习框架,在最小化平均实现的定价误差的同时,生成潜在因子来解释资产收益。

传统的资产定价线性因子模型将超额资产收益分解为因子风险溢价:

其中, 为资产 i 在时间 t 的超额收益, 为时间 t-1 更新后的因子载荷, 为 Kx1 因子 的风险溢价。

为了测试资产定价模型,Gibbons 等人 (1989) 建议对资产间向量 进行联合检验。GRS 检验统计量核是加权平方阿尔法之和 ,其中 是资产间的协方差矩阵。

本文提出了一种新的方法来解决因子模型是否足以解释横截面收益的问题。与其仅仅检验因子模型的充分性,不如建议生成额外的潜在因子来最小化平均实现的定价误差。

2.2 深度学习中的排序特征因子模型

为了对风险调整后的超额收益进行建模,本文提出的增强型深度因子模型在 Pb 因子基准模型 (例如 CAPM 或 FF5 模型)的基础上,生成 Pa 个深度因子 ,以共同对单个股票收益进行定价。

模型构建步骤如下:

  1. 输入: 滞后公司特征
  2. 排序: 根据深度特征对股票进行排序,得到中间特征 ,即长期-短期投资组合权重。
  3. 因子生成: 深度因子 是由个股实现收益 构成的交易组合。
  4. 因子载荷: 因子载荷 是以公司特征 为条件的,并通过深度因子学习得到。
  5. 模型拟合: 深度因子可以与基准模型 一起构建,以拟合个股收益

模型的目标函数是所有时期和资产的总平方实现定价误差:

其中, 是正则化参数,用于稳定网络模型训练,并引入稀疏性以选择特征。

2.3 深度学习中的 Fama-French 五因子模型

本文将 FF5 模型纳入完整的深度学习架构中,以构建排序特征因子模型。

研究人员首先根据滞后公司特征对个股进行排序,确定长期-短期投资组合权重。然后,使用投资组合权重和个股实现收益构建因子,并构建因子模型来解释测试资产的超额收益。

FF5 模型在 CAPM 的基础上增加了四个额外的因子 ,其中 是 MktRF。这四个特征(规模、账面市值比、营业利润率和投资)构成滞后公司特征 ,并通过深度学习网络进行训练,以最小化总平方实现定价误差。

三、深度神经网络架构

本文提出的深度神经网络架构包含四个主要部分:

3.1 深度特征

深度特征生成网络将原始输入(公司特征)转换为 Pa 个深度特征,其维度从 Ko 降低到 Pa。

具体而言,模型对每个公司 i 的滞后公司特征 进行多层线性变换和非线性激活:

其中, 为激活函数, 为待训练的权重和偏置。

与标准深度神经网络不同,该架构中的每一层都是一个神经网络矩阵,每一行代表一个深度特征向量,所有列(股票)共享相同的参数。

3.2 排序和非线性权重

为了近似实证资产定价中的安全性排序,模型采用 softmax 函数将深度特征转换为投资组合权重:

其中, 分别为对深度特征进行标准化和非线性变换后的结果。

该权重函数模仿了实证资产定价中常用的排序策略,并考虑了特征分布对权重曲线对称性和曲率的影响。

3.3 深度因子和非线性动态贝塔

深度因子由个股收益和相应的权重计算得到:

此外,深度因子 增强了基准模型 ,例如 CAPM 或 FF5。

深度学习模型允许对非线性贝塔进行建模,贝塔由公司特征驱动:

其中, 为神经网络结构,与因子神经网络共同训练。

3.4 最小化损失函数

模型的目标函数是总平方实现定价误差,并使用 L1 正则化项来稳定模型并保持特征组合稀疏性:

其中, 为神经网络中所有参数的集合, 为模型拟合收益。

模型训练过程等价于通过最小化目标函数来获得生成因子 和动态贝塔 的所有偏置和权重项的联合估计。

四、实证结果

4.1 数据和实现设计

本文使用 1972 年 1 月至 2021 年 12 月的月度数据,并采用 Fama-French 筛选方法选择前 3000 只股票。

模型训练采用个股收益数据,并使用四重交叉验证来确定每个层的最佳调优参数(因子数量和正则化惩罚)。

4.2 性能指标

本文采用以下性能指标来评估模型:

  • 总 R2 和预测 R2: 用于衡量统计模型拟合度。
    • 总 R2 表示因子模型拟合收益解释的实现收益变异的比例。
    • 预测 R2 表示因子模型拟合收益预测的性能。
  • 横截面 R2: 用于评估经济资产定价性能,即零阿尔法的无套利条件。
    • 表示模型拟合预期收益解释的资产平均收益的比例。

4.3 资产定价和统计性能

个股定价:

实证结果表明:

  • 添加深度因子可以显著提高模型性能,无论是对 CAPM 还是 FF5 基准模型。
  • 与 CAPM 和 FF5 相比,IPCA 和 RP-PCA 始终表现出更好的性能。
  • 对 CAPM 基准模型增强的深度因子模型结果较弱,表明在金融数据历史较短的情况下,深度学习的局限性。

测试投资组合定价:

实证结果表明:

  • FF5 模型在总 R2 方面主要优于 CAPM。
  • 添加深度因子可以持续提高 CAPM 或 FF5 基准模型的性能。
  • 增强型深度因子模型对所有类型的测试投资组合都具有良好的定价性能,无论是在样本内还是样本外。
  • 增强型深度因子模型对 CAPM 基准模型的结果较弱,表明深度学习的局限性。

4.4 投资深度因子

本文构建了 MVE 投资组合,并计算了其夏普比率,结果表明:

  • 深度因子投资组合在样本内和样本外均表现出较高的夏普比率,与 IPCA 和 RP-PCA 相当。
  • 深度因子投资组合对基准模型具有完美的对冲性能。

4.5 解释深度特征

本文分析了深度特征的线性暴露和非线性暴露,结果表明:

  • 深度学习模型能够识别出对资产定价重要的原始特征,例如 SUE、MOM1M、BM_IA、ZEROTRADE 和 BM。
  • 深度学习模型能够捕捉原始特征之间复杂的非线性关系。

五、总结

本文提出了一种新的结构化深度神经网络方法,用于构建资产定价中的潜在因子模型。

该方法的优势在于:

  • 将排序特征因子模型概念化为深度学习模型,并提供了一种系统化的实现方法。
  • 填补了现有文献中关于风险因子生成机制的空白。
  • 能够捕捉原始特征之间复杂的非线性关系,并提供对深度特征的直观解释。


(论文及代码见星球)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/177013
 
197 次点击