使用高斯混合模型检测不同的股票市场状况

在本篇文章中将试图使用高斯混合模型 (GMM) 对股市中的不同市场行情进行聚类分析

介绍

通过过去的十年的发展,普通人越来越容易进入股票市场,每天进出市场的资金量创历史新高。

作为投资者,你可以通过多种方式培养何时买入或卖出的经验和直觉。其中一种最简单的方法是咨询朋友或其他投资者,但他们很快就会用相互矛盾的观点淹没你。

本篇文章将试图用严谨的数学工具而不是生硬的意见解决这个赚钱的黄金问题——我应该什么时候买入或卖出?

我将演示如何使用高斯混合模型来帮助确定资金何时进入或退出市场。

从数学上讲,任何给定时间的市场行情都可以称为“市场状态”。行情通常可以解释为任意数量的概念,例如熊市或牛市;波动大小等等。我们可以根据一些特征将交易日的状态进行聚类,这样会比每个对每个概念单独命名要好的多。

由于市场行情没有明确的定义——因此也没有代表市场的响应变量——所以使用无监督机器学习模型来确认市场状态可能要比监督式模型好很多,这也是本篇文章的理论假设。

有监督与无监督机器学习

这两种方法的区别在于使用的数据集是否有标记:监督学习使用有标注的输入和输出数据,而无监督学习算法没有确定的输出。数据集的标注是响应变量或试图预测的变量包含数值或分类值。因此,当使用监督机器学习算法时,预测变量是明确定义的。一个非常简单但强大的监督学习的例子是线性回归。通过x预测y

高斯混合模型(GMM)

高斯混合模型是p维空间中多个正态分布的重叠。 空间的维度由变量的数量生成。 例如,如果我们有一个变量(标准普尔 500 指数回报),GMM 将基于一维数据进行拟合。 GMM 可用于模拟股票市场以及其他金融应用程序的状态。 股市回报的一个特征是由高波动日产生的重尾。 在分布的尾部捕获高度波动的日子的能力对于在建模过程中捕获信息十分重要。

上图代表了一些具有 4 个集群的多模态数据。 高斯混合模型是一种用于标记数据的聚类模型。

使用 GMM 进行无监督聚类的一个主要好处是包含每个聚类的空间可以呈现椭圆形状。 高斯混合模型不仅考虑均值,还考虑协方差来形成集群

GMM 方法的一个优点是它完全是数据驱动的。 提供给模型的数据就可以进行聚类。 重要的是,每个集群的标签可以是数字,因为数据驱动了潜在的特征,而不是人类的意见。

GMM 的数学解释

高斯混合模型的目标是将数据点分配到n个多正态分布中的一个。 为此,使用期望最大化 (EM) 算法来求解每个多正态分布的参数。

第 1步:随机初始化起始正态分布参数

第 2 步:执行E步(Expectation),根据当前的参数值,计算样本隐藏变量的期望;

第 3 步:执行M步(Maximum),根据当前样本的隐藏变量,求解参数的最大似然估计;

第 4 步:计算(数据给状态的分数,平均值,协方差)的联合概率的对数似然

第 5 步:重复第 2-4 步,直到对数似然收敛

每个数据点属于某个集群的概率如下所示。在索引的基础上,我们得到了每个数据点属于每个独立集群的概率。矩阵的大小将是按集群数量计算的数据点数。因为它是一个概率矩阵,在索引“i”下的值和为1。

索引i代表每个数据点或向量。 索引 c 代表给定的集群; 如果我们有三个集群 © 将是 1 或 2 或 3。

上面是多变量高斯公式,其中 mu 和 sigma 是需要使用 EM 算法进行估计的参数。

另一个关键概念是我们空间中的每个高斯分布都是无界的并且彼此重叠。 根据数据点的位置,从每个分布中为其分配一个概率。 属于任何集群的每个数据点的概率总和为 1。

最后,由于 EM 算法是一个迭代过程,我们需要衡量每一步的进度以了解何时停止。 为此,我们使用模型的对数似然函数来测量参数何时收敛。

GMM 的实现

本节将分为两节,每节代表 GMM 的一个应用。

使用 GMM 将 S&P500 的回报分为三个状态。 数据来自雅虎财经。

import pandas as pd
import numpy as np
from datetime import datetime , timedelta 
import yfinance as yf  #import data via Yahoo
sp_list = ['SPY']today = datetime.today()# dd/mm/YY
#get last business day
offset = max(1, (today.weekday() + 6) % 7 - 3)
timed = timedelta(offset)
today_business = today - timed
print("d1 =", today_business)
today = today_business.strftime("%Y-%m-%d")symbols_list = sp_list
start = '2000-01-01' 
end = todayprint('S&P500 Stock download')
r = yf.download(symbols_list, start,end)df_pivot = r
#replace all nan data with zero
treasury_yeild = df_pivot.Close

在这里我需要确定有多少状态最能代表市场环境,我们将假设三种状态——熊市、震荡、牛市。

我将使用 S&P500 的对数回报来拟合 GMM。

一维数据上 GMM 的 Python 实现非常简单。

from scipy.stats import multivariate_normal
from sklearn.mixture import GaussianMixture
#'10YrYeild':treasury_yeild.Close.values
# 0. Create dataset
sp_list = ['SPY']symbols_list = sp_list
start = '2008-01-01'print('S&P500 Stock download')
r = yf.download(symbols_list, start,end)daily_returns = (r.Close.pct_change()) #Daily log returns Close price for each day -  Y observations 
daily_returns = daily_returns.iloc[1:]X = daily_returns.valuesGMM = GaussianMixture(n_components=3).fit(X.reshape(-1,1)) # Instantiate and fit the model

使用 sklearn 的高斯混合模型就可以找到我们想得到的状态。

从上面的分析来看,两个状态也可能就可以了

可能出现的一个问题是趋同性。有可能是基于初始条件和EM算法中某个阈值的标准的定义上,也有可能是形成不同的分布。这个还需要进一步的调查。

使用符合 GMM 的宏观经济数据对美国经济进行分类

为了直观演示 GMM,我将使用二维数据(两个变量)。 每个对应的簇都是三个维度的多正态分布。 在这个例子中,第一个维度是通胀值(我们称之为 X),第二个维度是 S&P500 的月回报率(我们称之为 Y),第三个维度是 X&Y 的联合概率。 换句话说,X 和 Y 的某个组合的概率是多少。

from scipy.stats import multivariate_normal
from sklearn.mixture import GaussianMixture
#'10YrYeild':treasury_yeild.Close.values
# 0. Create dataset
gmm_data = pd.DataFrame({'Inflation':inflation.Weight,'Market_return':spy.Close.values})
gmm_data = gmm_data.to_numpy()X = gmm_datax,y = np.meshgrid(np.sort(X[:,0]),np.sort(X[:,1]))
XY = np.array([x.flatten(),y.flatten()]).TGMM = GaussianMixture(n_components=3).fit(X) # Instantiate and fit the model
print('Converged:',GMM.converged_) # Check if the model has converged

该图展示了GMM相对于其他聚类算法的一个主要优点。正态分布可以产生椭圆形状,这个性质来自协方差矩阵。

给定二维数据,GMM 能够产生三种不同的状态。

最后,如果要创建一个有意义的模型,应该考虑更多的变量。 实际上一系列不同的指标构成了美国经济及其表现。我们可以继续并合并任意数量的维度,但是在进入 n 维度之前,了解提供给模型的数据的相关结构很重要。

总结

这是我们如何将 GMM 应用于金融市场和经济的简单介绍。 请记住这只是一个介绍, 引入 GMM 方法是为了提高将股票市场价格数据分类为状态的稳健性,市场条件和经济之间的联系还需要更加深入的研究。

作者:Ethan Johnson-Skinner, MSc

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

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

相关文章

股票的量化分析模型是怎样的?

在当前看来,股票量化分析强调的是一种新兴的系统化金融投资方法,利用计算机强大的运算力从庞大的股票历史数据中回测交易策略的盈亏“概率”,通过管理盈亏的概率帮助投资者做出准确的决策。那么,股票的量化分析模型是怎样的呢&…

抱抱脸开源GPT不用注册直接玩!后续可选各种大模型,网友:“安卓时代”来了...

杨净 萧箫 发自 凹非寺量子位 | 公众号 QbitAI 不用注册直接玩,抱抱脸Chat来了! 列清单写邮件,还是写个代码都不在话下~不过目前有个bug就是几乎不会说中文。 可以看到的是,背后运行的AI正是当前号称最大也是最好的ChatGPT开源平替…

HuggingChat 发布!免注册直接使用,立志做成模型商店

夕小瑶科技说 分享 来源 | 量子位 作者 | 杨净 萧箫 不用注册直接玩,抱抱脸Chat来了! 列清单写邮件,还是写个代码都不在话下~不过目前有个bug就是几乎不会说中文。 可以看到的是,背后运行的AI正是当前号称最大也是最好的ChatGPT…

chatgpt赋能Python-pythonright

Pythonright: 优秀的Python SEO工具 Python是世界上最具有影响力和广泛应用的计算机语言之一,但在SEO方面,使用Python来进行分析和优化的工具却相对较少。Pythonright就是一款专门为优化SEO而设计的Python工具。 Pythonright的主要功能 Pythonright具…

chatgpt赋能python:Python交互

Python交互 Python作为一种高级编程语言,被广泛应用于数据分析、人工智能、网络编程等众多领域。除了编写脚本程序以外,Python还具备良好的交互性,方便用户进行代码的调试和测试。 什么是Python交互? Python交互是指在命令行界…

软件工程(之 传统方法学)

开发软件中一般有两种方法,1.传统方法学2.面向对象方法学 首先我们看一下传统方法学。 传统方法学主要是结构化的思想。传统方法的开发分为三个阶段如下图: 首先是结构化分析阶段,这个阶段主要是搞清楚我们所要开发的软件是为了解决什么问题、以及在…

【中国人民大学】考研初试复试资料分享

给同学们送福利啦~ 提供给同学们计算机/软件工程等相关专业的各种学校的初试复试资料集合。 资料一般包含初试真题,往年学长学姐考研经验,通知,复试资料等等。 这次分享的是 中国人民大学 的考研资料~ https://pan.baidu.com/s/1LI8poPKnZDr4…

[论文素材]Previous Work----自动仇恨言论检测和冒犯性语言问题

目录 摘要 介绍 相关工作 数据 特征 模型 结果 结论 https://arxiv.org/pdf/1703.04009.pdf 发布时间:2017 年 3 月 11 日 (Google翻译) 摘要 社交媒体上自动仇恨言论检测的一个关键挑战是将仇恨言论与其他攻击性语言实例分开。词汇检测方法的精度往往较…

入门UVM验证方法学

1 验证的本质:尽可能的找出设计的bug; 2 测试向量文件 测试文件(testbench)以模拟的方式来验证逻辑时序的正确性,以源的方式来激励用户编写的逻辑功能模块; 3 验证的3要素 (1)灌激励:输入信…

第二讲 综合评价分析—TOPSIS法

TOPSIS法简称优劣解距离法,是一种常用的综合评价法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。 层次分析法的一些局限性 (1)评价的决策层不能太多,太多的话n会很大&#xff0c…

传统方法学和面向对象方法学

原创不易,麻烦点个关注,点个赞,谢谢各位。 传统方法学 也称为生命周期方法学或结构化范型。它采用结构化技术完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。 这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成…

2.2 法学的历史(二):中国法学的历史

2.2 法学的历史(二):中国法学的历史 中国法学的三个历史阶段 先秦:“刑名法术之学” 汉代至清代:律学 清末:西方法学的输入 一、先秦:“刑名法术之学” 第一件是祭祀祖先,保佑…

软件工程复试——九、面向对象方法学引论

九、面向对象方法学引论 ​ 面向对象方法学的出发点和原则是尽可能模拟人类思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,使描述空间的问题域与求解域在结构上保持一致。 面向对象方法的四个要点: 认为客观…

吉林大学的法硕非法学和武汉大学的法硕非法学哪个更难?

从分数上来说 武汉大学20年法硕(非法学)录取最高分为419吉林大学20年法硕(非法学)录取最高分为396比较直观的可以看到武汉大学的法硕(非法学)竞争的人选大神偏多,基本上是高分打架,…

2.1 法学的历史(一):西方法学的历史

2.1 法学的历史(一):西方法学的历史 西方法学的四个阶段 起源:古希腊 奠基:古罗马 接续:中世纪后期 鼎盛:近代 第一次重大的契机 古希腊历史上引发法(理)学思考的…

AI Chat 设计模式:4. 建造者模式

本文是该系列的第四篇,采用问答式的方式展开,问题由我提出,答案由 Chat AI 作出,灰色背景的文字则主要是我的旁白与思考。 问题列表 Q.1 说说建造者模式A.1Q.2 “将一个复杂对象的构建过程和其表示分离”,这里不是很清…

九龙证券|利好政策密集发布,机构扎堆看好的高增长公司曝光

新能源轿车销量和保有量快速增长,带来了充电桩商场的微弱需求。 日前,商务部部长王文涛表明,本年将在落实好方针的一起,活跃出台新方针办法,比方辅导当地展开新能源轿车下乡活动,优化充电等使用环境&#x…

用post man 上传图片到微信

用post man 上传图片到微信 记录一下 我目前完成的小程序后端开发过程 这里用post man 做测试上传客服群的qrcode 有在网路上搜寻了一下发现都没有相关的教学可能是太简单了 但我相信还是会有人用的到的 不多说直接来吧 1.参考文档 https://developers.weixin.qq.com/minipro…

75岁母亲被6个子女遗弃身亡,“凶手”一句话惹怒全网:当你老了,真相比想象中更残忍

看到一个让人唏嘘的新闻。 江西上饶,一名老人被发现在竹林中去世。 没人能想到,导致老人死亡的“凶手”,会是她的亲生儿女。 老人陈阿婆一生有过三次婚姻,共育有6个子女。 第二次婚姻结束后,她带着9岁的儿子黄某改嫁&a…