【大数据部落】 用机器学习识别不断变化的股市状况—隐马尔可夫模型(HMM)股票指数预测实战

news/2025/1/22 7:58:38/文章来源:https://www.cnblogs.com/tecdat/p/18238080

原文链接:http://tecdat.cn/?p=1557

原文出处:拓端数据部落公众号

 

“了解不同的股市状况,改变交易策略,对股市收益有很大的影响。 弄清楚何时开始或何时止损,调整风险和资金管理技巧,都取决于股市的当前状况。

有些策略在波澜不惊的股市中表现良好,而有些策略可能适合强劲增长或长期下跌的情况。

在本文中,我们将通过使用一类强大的机器学习算法“隐马尔科夫模型”(HMM)来探索如何识别不同的股市状况。

【拓端数据】用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用 Part 1

影片1

 

▍隐马尔科夫模型

 

马尔科夫模型是一个概率过程,查看当前状态来预测下一个状态。 一个简单的例子就是看天气。

假设我们有三种天气情况:下雨、多云、阳光明媚。 如果今天下雨,马尔科夫模型就会寻找每种不同天气的概率。 例如,明天可能会持续下雨的可能性较高,变得多云的可能性略低,而会变得晴朗的几率很小。

 

▍构建模型

 

基于以上背景, 然后我们可以用来找到不同的股市状况优化我们的交易策略。 我们使用2004年至今的上证指数(000001.ss)来构建模型。

首先,我们得到上证指数的收盘价数据,计算得到收益率数据,并建立HMM模型比较模型的预测结果。

 

绘制上证指数的收盘价和收益率数据,我们看到2004年和2017年期间股市的波动情况。

对收益率拟合了三状态隐马尔可夫模型之后, 绘制每个状态的后验概率:

2007 – 2009年间,由于次贷危机,股市出现了惊人的波动,迅速改变了不同状态的后验概率,可以看到2008年前后状态2和状态3的概率出现了很大的变化。

股市在2010年后变得平静,因此状态2和状态3的概率处于平衡状态。

基于以上判断,我们将三种不同的状态进行定义。状态1认为是震荡市场,状态2认为是下跌市场,状态3认为是上涨市场。然后将不同状态的预测结果返回到真实的上证指数来观察是否符合客观逻辑。

通过真实数据拟合,我们看到状态1(紫色)震荡市场,状态2(绿色)下跌市场,状态3(红色)上涨市场符合实际的情况。

通过隐马尔科夫模型,可以深入了解不断变化的股市状况。 从而提高交易策略的性能。就从我们的简单探索来看,这个模型应当是值得花一些时间去打磨的。可改进的地方非常多。例如可以引入多因子分析,建立多元模型等。


参考文献

1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

2.R语言GARCH-DCC模型和DCC(MVT)建模估计

3.R语言实现 Copula 算法建模依赖性案例分析报告

4.R语言使用ARIMA模型预测股票收益

5.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

6.用R语言实现神经网络预测股票实例

7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.R语言如何做马尔科夫转换模型markov switching model

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

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

相关文章

非线性混合效应 NLME模型对抗哮喘药物茶碱动力学研究|附代码数据

全文下载链接:http://tecdat.cn/?p=24074 最近我们被客户要求撰写关于非线性混合效应 NLME模型的研究报告,包括一些图形和统计输出。 茶碱数据文件报告来自抗哮喘药物茶碱动力学研究的数据。给 12 名受试者口服茶碱,然后在接下来的 25 小时内在 11 个时间点测量血清浓度 h…

BionetServer-No1使用说明-进阶(Docker方式)

BionetServer-No1使用说明-进阶(Docker方式)Version:1.0 基础篇更新记录:简化了文档的内容,拆分了文档分为入门和进阶使用,Docker版本添加R的使用,删除了Matlab版本的内容,请使用桌面版本。Date: 2024.06.07 Authors:NeoNeuxs 目录BionetServer-No1使用说明-进阶(Dock…

ffmpeg音频编码之pcm转码aac

方法1:命令转码# 转码ffmpeg -ac 2 -ar 48000 -f s16le -i input.pcm -acodec libfdk_aac output.aac # 播放 ffplay output.aac方法2:代码转码 main.c#include "libavutil/log.h" #include "libavutil/avutil.h" #include "libavcodec/avcodec.h&q…

2024第一届甲壳虫跑团百公里接力赛

2024第一届甲壳虫跑团百公里接力赛活动记录 经过统计大家的投票结果,甲壳虫跑团管理层决定于2024年6月2号举行第一届百公里接力赛活动。活动奖励每位参与接力和摄影的同学迷你玻璃杯一个。活动过程 早上八点,在东操场开始了第一棒的出发,本次接力采取传递“跑表”的形式,每…

Day17| 110.平衡二叉树、 257. 二叉树的所有路径 、 404.左叶子之和

110.平衡二叉树 (优先掌握递归) 再一次涉及到,什么是高度,什么是深度,可以巩固一下。 题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.平衡二叉树.html # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=Non…

2024.6.7

18万条数据public class HotCategoryTop10_3 {public static void main(String[] args) {// TODO 搭建Spark的运行环境SparkConf conf = new SparkConf();conf.setAppName("HotCategoryTop10");conf.setMaster("local[*]"); // Yarn : Spark On YarnJavaSp…

Android Media Framework(三)OpenMAX API阅读与分析

这篇文章我们将聚焦Control API的功能与用法,为实现OMX Core、Component打下坚实的基础。1、OMX_Core.h OMX Core在OpenMAX IL架构中的位置位于IL Client与实际的OMX组件之间,OMX Core提供了两组API给IL Client使用,一组API用于管理OMX组件,另一组API用于操作/使用创建的OM…

Java (Redis)

前沿 让我们来学习下Redis吧官网下载客户端 https://app.redislabs.com/#/rlec-downloads什么是 Redis?Redis(Remote Dictionary Server)是一个开源的、高性能的、基于内存的键值存储系统。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。由于其基于内存的设…

NSSCTF——crypto

[鹤城杯 2021]easy_crypto [强网拟态 2021]拟态签到题 [SWPUCTF 2021 新生赛]crypto8[SWPUCTF 2021 新生赛]crypto7[SWPUCTF 2021 新生赛]crypto6[SWPUCTF 2021 新生赛]ez_caesar[SWPUCTF 2021 新生赛]…

攻防世界

misc 1.MeowMeowMeow 首先是是一个猫猫的图片,习惯先看看属性,放入hex中,发现一些特殊的符合继续往上翻,发现有一段密码用base64解码,得到提示Do you know what Ascii art is? Hint:I put the serect in a 01 Ascii art.像这样的艺术字,发现下面编码有点像字母 解出来是…

__init__.py

在Python的项目中,通常会看到__init__.py文件,当我们导入这个项目时,会优先执行该项目的__init__.py文件。当我们导入这个项目。或者这个项目的子模块时,都会优先执行该项目下的__init__.py文件。 该过程有缓存机制,连续导入一个父模块的不同子模块时,只会执行一次父模块…

PHP历理 PhpStorm的设置PHP版本

打开 文件 -> 设置 -> PHP -> 选择对应的PHP版本