社区所有版块导航
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学习  »  机器学习算法

基于机器学习及宏观经济状态检测的战术资产配置

QuantML • 4 月前 • 70 次点击  

本文旨在通过将宏观经济状态建模与机器学习技术相结合,扩展战术资产配置(TAA)的研究领域。

一、引言:资产配置与战术资产配置概述

资产配置领域主要关注构建符合投资者效用函数的最佳投资组合。Harry Markowitz 提出的均值-方差优化(MVO)框架是资产配置和投资组合选择领域最具影响力的方法。该方法通过估计金融资产预期收益和协方差来解决优化问题,以确定投资组合权重。该方法在实践中被广泛用于在给定风险水平下最大化投资组合收益。

战术资产配置(TAA)领域在 Markowitz 的基础上进一步发展,重点关注可用于战术性调整投资组合以规避尾部风险信号的信号。典型的 TAA 模型通常包含以下三个步骤:

  1. 构建信号以模拟经济或资产状态:
  • 传统方法主要依赖资产价格时间序列数据,但这些数据往往存在噪声,可能导致模型准确性降低。
  • 近年来,越来越多研究开始关注能够反映经济或资产状态变化的信号,例如宏观经济指标等。
  • 利用资产价格时间序列或上一步构建的信号来预测单个资产的未来表现:
    • 预测过程通常涉及对资产未来收益和/或波动性的估计。
  • 将预测结果映射到投资组合权重或配置中:
    • 不同的配置方法会导致不同的投资组合构建方式,例如等权重法、买入持有法等。

    在各种用于 TAA 的信号中,基于状态动态的模型输出尤其值得关注。状态建模旨在利用观测数据估计给定数量的不可观测状态(状态)的概率。这些模型能够捕捉金融时间序列的关键特征,例如肥尾、时变相关性、偏度和非线性等。

    二、相关工作:状态建模与资产配置领域的融合

    状态建模的概念已被从业者广泛用于捕捉金融市场的复杂性。状态反映了经济或金融过程的不同阶段或状态,例如高波动性和低波动性时期,或商业周期的其他阶段。

    (一)计量经济学视角下的状态建模

    • 状态转换模型(Regime-switching models)奠定了该领域的基础,其核心思想是假设经济或金融过程在不同状态之间转换,并使用马尔可夫链来描述状态之间的转换概率。
      • 该模型已被广泛应用于股票市场预测、波动性预测以及货币政策分析等领域。
      • 例如,一些研究利用状态转换模型来捕捉股票收益的动态变化,并取得了良好的预测效果。
      • 另一些研究则将状态转换模型应用于波动性预测,并证明了其相对于传统 GARCH 模型的优越性。

    (二)机器学习视角下的状态建模

    • 机器学习领域的研究同样主要使用资产收益作为状态模型的输入,并采用聚类技术来识别资产价格中的状态。
      • 例如,k-means 聚类算法被用于识别不同波动性状态,以进行波动性预测。
      • 一些研究将相似性学习或聚类应用于领先-滞后分析,以探索不同资产类别之间的动态关系。
      • 另一些研究则将聚类技术应用于投资组合优化框架,以构建基于状态的资产配置策略。

    (三)现有方法的局限性

    • 现有方法大多依赖资产收益数据,而收益数据往往存在噪声,这会降低状态检测的准确性。
    • 此外,大多数方法仅依赖于市场数据,而忽略了更广泛的经济信号,这可能导致对市场动态的理解不够全面。

    三、方法论:基于宏观经济数据的状态检测与资产配置框架

    本文提出了一种基于宏观经济数据的状态检测方法,并将其与投资组合优化模型相结合,以构建更有效的 TAA 策略。以下将详细介绍该方法的各个步骤。

    (一) 状态分类

    1. 数据选择与预处理:
    • 这些变量涵盖产出和收入、消费、订单和库存、劳动力市场、住房、货币和信贷以及价格等多个方面。
    • 为了消除不同变量量纲的影响,对数据进行标准化处理。
    • 为了降低维度并提取关键因素,使用主成分分析(PCA)将数据降维到 61 个主成分,这些主成分解释了 95% 的数据方差。
    • 本文使用来自 FRED-MD 数据库的 127 个宏观经济变量来表征美国经济的月度状态。
  • 异常值检测与剔除:
    • 由于  距离对异常值敏感,该过程有效地剔除了异常月份,保留了最典型的月份。
    • 将 A 聚类中的月份标记为状态 0,并将其余月份用于后续的状态分类。
    • 使用基于  距离的 k-means 聚类算法(k=2)将数据分为两个聚类:典型月份(A)和异常月份(B)。
  • 典型样本的进一步划分:
    • 状态 0 代表宏观经济状况异常的月份。
    • 其余状态代表不同类型的常规市场行为。
    • 余弦相似度忽略了向量的方向而忽略了其大小,因此适用于对幅度大小不敏感的聚类任务。
    • 使用 k-means “肘部”启发式方法确定最佳聚类数 r。
    • 对 B 聚类中的月份使用基于余弦相似度的 k-means 聚类算法进行进一步划分。
    • 最终,每个月份被划分为 r+1 个状态之一:

    (二) 计算状态概率分布

    为了使该工具在实践中更有用,它应该能够输出每个状态的概率分布,而不是仅仅输出离散的状态分类。本文通过以下步骤实现这一目标:

    1. 从 k-means 算法中获取概率分布:

    • 该方法本质上与模糊 c-means 方法相同,只是实现方式略有不同。
    • 使用该方法计算  和 KMeans[Cosine] 的概率分布。
    • 对于任何给定的样本,k-means 算法使用该样本与每个聚类质心的距离对其进行分类。
    • 因此,距离可以被解释为该样本被分类为每个相应聚类的“接近”程度。
    • 对于给定的向量 x,其与质心 i 的距离为 ,定义该向量属于聚类  的概率为:
  • 结合来自不同 k-means 实例的概率分布:

    • 最后,对分布进行重新归一化以获得最终的状态概率分布。
    • 将 KMeans[Cosine] 的分布乘以  过于简单化,因为这可能会导致  过于分散,导致最终分布与算法 1 的输出不一致。
    • 相反,首先计算  的概率分布,然后使用公式 (4) 计算新的缩放值  :

    (三) 计算状态转换概率矩阵

    在将每个月分类到某个状态之后,计算状态之间的转换概率矩阵可以深入了解市场动态的月度变化,并描述状态之间的关系。

    • 每个矩阵元素可以通过计算给定状态转换为其他每个状态的次数,然后除以该状态在数据集中出现的次数来计算。
    • 图 5 展示了这样一个转换概率矩阵的示例。

    (四) 状态分析与市场行为分析

    • 通过分析每个状态内关键 FRED-MD 统计数据的平均值,可以了解不同状态之间的经济差异。
      • 例如,状态 0 包含所有使用  算法过滤出的“异常”月份,最符合经济困难时期。
      • 状态 0 的特点是失业率最高,消费者信心、联邦基金利率和实际个人收入最低。
    • 通过分析状态转换概率矩阵,可以了解状态之间的关系以及市场随时间的变化趋势。
      • 大多数概率密度集中在对角线上,表明下个月最可能的状态始终是当前月份的状态,即状态转换并不频繁。
      • 一些矩阵元素的值很小,有些则为零,这意味着某些状态转换是不可能的或至少是极不可能的。
    • 通过将状态转换概率矩阵可视化为网络图,可以更直观地了解市场随时间的变化。
      • 图 6 展示了这种网络图,其中节点的位置已重新排列以突出显示从状态数据中出现的强路径图。

    (五) 预测实验

    本文展示了如何利用这些状态来增强预测模型,以提高其预测准确性。

    1. 状态作为概率条件:
    • 状态可以通过作为底层资产预测的概率条件来增强预测模型。
    • 在处理当前状态估计的不确定性时,应考虑当前状态的可能分布,而不是将当前月份的输出标签视为确定的事实。
    • 在实践中,这意味着应结合当前状态的分布和状态转换概率矩阵,然后再将其应用于任何选择的预测模型。
  • 预测模型:
    • 朴素预测模型:  是一种无参数模型,仅依赖于以状态分类为条件的的历史数据。
    • Black-Litterman 模型:  结合市场均衡收益和投资者自身的观点来生成调整后的预期收益。在本文中,使用样本均值和协方差作为先验信念,并使用基于状态的条件预期收益构建投资者观点。
    • 线性岭回归模型:  使用简单学习模型来预测下一个时间步的收益。该模型预测的是收益而不是夏普比率,并且具有可学习的参数,这些参数会随着每个新时间步的更新而更新。
    • 本文采用了三种简单的预测策略来展示对当前市场状况和转换概率的了解如何提高模型准确性:
  • 头寸规模调整:
    • 本文探讨了不同的头寸规模调整策略,包括多头、空头、多空混合以及根据不同状态调整头寸规模的方法。
    • 实证结果表明,在大多数情况下,多头策略表现最佳,而空头策略仅在经济困难时期才能带来可观的回报。

    (六) 实证结果

    • 通过对不同模型和头寸规模调整策略的实证分析,本文得出以下结论:
      • 基于非随机状态的策略在夏普比率、索蒂诺比率和正回报百分比方面均优于基于随机状态的策略。
      • 其中,线性岭回归方法在所有策略中表现最为突出,其多头策略在风险调整后的收益方面表现尤为出色。
      • 此外,本文还发现,在基于状态的策略中,多头策略的表现优于多空策略,这表明增加复杂性可能会带来更多噪声而不是信号。
      • 此外,较低维度的模型(l=2 或 l=3)始终优于较高维度的模型(l=4),这表明更简单的规格可能更能捕捉基本的市场动态。

    四、结论与未来展望

    本文通过利用机器学习中的聚类技术,开发了一种基于宏观经济数据的新型数据驱动状态检测方法。

    • 本文展示了该方法如何揭示与市场动态相关的见解,并使用状态检测机制构建了与现有经济直觉相吻合的状态转换图。
    • 最后,本文展示了如何利用这些状态通过在历史数据上应用概率条件来增强预测模型。

    未来研究方向包括:

    • 探索其他更复杂的聚类技术如何用于金融状态检测。
    • 研究宏观经济特征的选择如何影响最终聚类分类的质量。
    • 探讨如何利用这些状态来改进其他金融分析过程,例如风险管理和投资组合优化等。





    更多资源见星球,加入QuantML星球,与星主和800+专业人士一起交流学习:


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