首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用高斯混合模型对不同的股票市场状况进行聚类

使用高斯混合模型对不同的股票市场状况进行聚类

作者头像
deephub
发布于 2021-11-23 08:26:44
发布于 2021-11-23 08:26:44
1.9K00
代码可运行
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA
运行总次数:0
代码可运行

点击上方“Deephub Imba”,关注公众号,好文章不错过 !

介绍

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

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

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

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

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

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

有监督与无监督机器学习

这两种方法的区别在于使用的数据集是否有标记:监督学习使用有标注的输入和输出数据,而无监督学习算法没有确定的输出。数据集的标注是响应变量或试图预测的变量包含数值或分类值。因此,当使用监督机器学习算法时,预测变量是明确定义的。一个非常简单但强大的监督学习的例子是线性回归。通过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 代表给定的集群;如果我们有三个集群 (c) 将是 1 或 2 或 3。

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

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

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

GMM 的实现

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 = today

print('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 实现非常简单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.values

GMM = 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 的某个组合的概率是多少。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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_data

x,y = np.meshgrid(np.sort(X[:,0]),np.sort(X[:,1]))
XY = np.array([x.flatten(),y.flatten()]).T

GMM = 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从鹿晗关晓彤恋情事件看运维的节假日准备工作
织云平台团队
2017/10/10
3K0
从鹿晗关晓彤恋情事件看运维的节假日准备工作
看腾讯运维应对“18岁照片全民怀旧”事件的方案,你一定不后悔!
本文主要讲述了腾讯SNG在社交网络事业群中,在运维领域的探索和实践。通过不断演进的运维技术,提高了运维效率和成本效益,保障了业务的高可用性。同时,运维团队贯彻“养兵千日用兵一时”的理念,通过标准化、流程化、自动化的运维体系建设,确保在突发事件中能够快速响应和处置。通过不断实践和优化,最终实现了在相册、直播、点播、微信、手Q、应用宝、游戏、新闻、微云、企鹅影业、腾讯云等多个业务领域的运维支撑。
织云平台团队
2018/01/04
1.4K0
看腾讯运维应对“18岁照片全民怀旧”事件的方案,你一定不后悔!
腾讯云运维干货沙龙-海量运维实践大曝光 (三)
织云平台团队
2017/12/17
5.5K0
腾讯云运维干货沙龙-海量运维实践大曝光 (三)
腾讯海量数据仓库运维系统 : 鹦鹉螺
willsiom
2017/09/11
2.2K0
腾讯海量数据仓库运维系统 : 鹦鹉螺
腾讯最完整的监控体系介绍,看这篇就够了!
织云平台团队
2017/10/18
16.8K0
腾讯最完整的监控体系介绍,看这篇就够了!
腾讯云运维干货沙龙-海量运维实践大曝光 (二)
织云平台团队
2017/12/17
8.9K1
腾讯云运维干货沙龙-海量运维实践大曝光 (二)
自研路由如何解决运维六大挑战?
腾讯内部一些基础服务比如统一鉴权登录、社交关系链、支付被内部很多其他业务调用,调用方往往横跨几个事业群,几十个部门,有数百个模块,上万台设备。
织云平台团队
2018/01/10
1.5K0
自研路由如何解决运维六大挑战?
卓伟:腾讯云人脸融合技术构建
4月13日结束的计算机视觉沙龙圆满落幕。本期沙龙从构建图像识别系统的方法切入,讲述腾讯云人脸识别、文字识别、人脸核身等技术能力原理与行业应用,为各位开发者带来了一场人工智能领域的技术开拓实践之旅。下面是卓伟老师关于腾讯云人脸融合技术构建的总结。
腾讯云开发者社区技术沙龙
2019/04/23
5.1K0
卓伟:腾讯云人脸融合技术构建
走进腾讯,聊运维干货(第一期):海量运维实践大曝光
《走进腾讯,聊运维干货(第一期):海量运维实践大曝光》是腾讯云主办的互联网运维实践系列技术分享沙龙,活动邀请了腾讯云的技术专家分享他们的运维经验。该活动在北京、上海、深圳、广州、厦门、成都等城市举办,主题为海量运维实践大曝光。活动旨在帮助互联网从业者了解腾讯的运维实践和干货,学习如何打造稳定、高效、安全的系统,以应对海量用户的挑战。活动吸引了来自全国各地的开发者、运维工程师、架构师等,在活动现场,大家通过腾讯云社区报名,活动报名人数超过1000人。活动上,腾讯云的技术专家围绕“运维”这一主题,从海量运维、运营规划、运维自动化、智能监控等多个角度,结合实战案例,深度剖析了运维领域的最佳实践和干货。
腾讯云开发者社区
2017/12/08
2.5K0
走进腾讯,聊运维干货(第一期):海量运维实践大曝光
40天14大版本升级,腾讯会议背后大规模容器技术实践
腾讯会议作为面向企业级的关键产品,对产品的可用性和稳定性要求是非常高的,任何服务不稳定都可能会导致用户无法接入会议、会议中断或音视频质量差,从而导致用户投诉,影响到产品口碑,降低用户信任度。
Walton
2020/03/17
2.1K0
DevOps 三步工作法之持续反馈的技术与案例
导言 很高兴参与DevOps时代社区的拆书联盟第一季活动,有幸能与几位DevOps大牛一起解读《DevOps Handbook》一书,这本书作者牛,内容也很牛,就连著名的培训机构把这本书作为DevOp
DevOps时代
2018/02/02
1.6K0
DevOps 三步工作法之持续反馈的技术与案例
腾讯云+运维,助力运维领域技术发展
摘要总结:本文主要介绍了腾讯云和织云联合举办的“腾讯云运维干货”系列沙龙,旨在推进运维领域技术交流发展,让更多的企业完成向云计算的转变。沙龙每期都会邀请腾讯运维领域的专家分享云计算时代的运维思考和实践,同时还会提供腾讯云代金券,助力企业和个人体验腾讯云产品。
腾讯云开发者社区
2017/12/18
5.6K0
腾讯云+运维,助力运维领域技术发展
这样的CMDB设计,居然阻止了海量告警对运维的轰炸
梁定安(大梁),运维技术总监,复旦大学客座 DevOps讲师。多年运维、运营开发和 DevOps 的工作经验,曾负责 Qzone、相册等 SNG 社交平台类业务的运维规划与管理,经历了 SNG 运维标准化、自动化、智能化建设的全程。腾讯织云负责人。 1 标题党一回!本文主要介绍运维 CMDB 的设计思路,恰当的 CMDB 设计,对运维效率的提升,如收敛告警和故障自愈等,有着意想不到的效果。 在运维自动化平台的设计理念中,我们一直提倡“减少运维对象”,并将运维对象进行抽象化、模型化、配置化的录入 CMDB 中
织云平台团队
2018/06/19
1.7K0
GOPS2018--腾讯运维体系专场回顾
听说4月14日腾讯社交网络运营部八位大咖倾巢出动,齐聚深圳圣淘沙酒店。所谓何事? 当然是GOPS全球运维大会--腾讯运维体系专场了,几位老师给大家带来了一场思想盛宴。活动圆满结束!~ 下面跟着小编来去看看活动现场盛况,感受几位讲师的风(yan)采(zhi)吧。 首先,让我们隆重地请出本次专场活动的出品人兼主持人--腾讯运维总监聂鑫,从开发到运维,伴随社交网络运营部成长的十年,负责过腾讯社交产品所有业务运维工作,见证了整个SNG运维体系的建立,发展和成熟过程。有这么重量级的大咖加持,咱们的专场能不诚
织云平台团队
2018/04/17
2.1K1
GOPS2018--腾讯运维体系专场回顾
模型剖析 | 如何解决业务运维的四大难题?
前言 作为业务运维,你是否经常会碰到这样的问题: 1. 新业务上线,开发同学会对服务做性能测试,但是换一种机型后的性能如何?服务版本更新后性能是否发生变化? 2. 节假日即将到来,某个业务预估用户活跃
织云平台团队
2018/08/14
1.8K0
3亿人次的实战演习,如何做到丝般顺滑?
织云平台团队
2017/07/03
1.9K0
3亿人次的实战演习,如何做到丝般顺滑?
8亿人晒军装照背后,竟然只是一款H5产品支持
这两天,相信来自亲朋好友的“军装照”已经刷爆了各位的朋友圈,这个“军装照”是由人民日报客户端策划出品并主导开发,腾讯天天P图提供图像处理支持的一款H5产品。目前,这款H5产品的热度依然,而创纪录的浏览
BestSDK
2018/03/01
1.9K0
8亿人晒军装照背后,竟然只是一款H5产品支持
存储世界,不止如此 : EB级存储引擎背后的技术
TEG云端专业号
2017/07/05
3K0
存储世界,不止如此 : EB级存储引擎背后的技术
少年,你的告警量可以更少些!
作者简介:梁定安,腾讯织云负责人,目前就职于腾讯社交网络运营部,开放运维联盟委员,腾讯云布道师,腾讯课堂运维讲师,EXIN DevOps Master讲师,凤凰项目沙盘教练,复旦大学客座讲师。* 请原
织云平台团队
2017/05/15
4.9K0
少年,你的告警量可以更少些!
青铜到王者:AIOps 平台在腾讯的升级之路
在海量运营方法论的指导下,运维团队构建了体系化的运维能力,为众多产品保驾护航。
织云平台团队
2018/03/28
6.1K1
青铜到王者:AIOps 平台在腾讯的升级之路
推荐阅读
相关推荐
从鹿晗关晓彤恋情事件看运维的节假日准备工作
更多 >
交个朋友
加入[数据] 腾讯云技术交流站
获取数据实战干货 共享技术经验心得
加入数据技术工作实战群
获取实战干货 交流技术经验
加入[数据库] 腾讯云官方技术交流站
数据库问题秒解答 分享实践经验
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验