Python环境下基于最大离散重叠小波变换和支持向量回归的金融时间序列预测

金融时间序列具有非线性、高频性、随机性等特点,其波动情况不仅与当前股票市场、房地产市场、贸易市场等有强联动性,而且大幅度起伏对于其他市场有较大的影响和冲击。由于金融市场受多种因素影响且各影响因素间也存在一定复杂动态交互关系,导致金融时间序列成为一个具有非平稳性、时序相关性等特征的复杂系统,更加准确地把握金融时间序列的走势风向能够引导投资者正确的投资行为,相关的预测研究成为近几年的研究重点。因此,构建一个稳定、有效的金融时间序列预测模型是一项具有挑战性、实际应用价值的任务。

目前,金融时间序列预测方法主要可以分为计量预测方法和机器学习方法两种。一方面,计量预测方法包括差分整合移动平均自回归模型、动态模型平均、广义自回归条件异方差模型等,然而计量模型对时间序列有部分条件限制,要求时间序列的平稳性,针对非线性、非平稳数据处理效果较差。另一方面,常见的机器学习方法包括支持向量机、BP神经网络、循环神经网络等,这些模型由于在对复杂非线性、非平稳的数据进行处理时,不需要提供特定条件,具有更多的优势,获得了广泛的应用。尽管机器学习方法不是必然提升对复杂动态系统的预测准确率,但针对性的应用在非线性时间序列数据上往往能够细粒化读取数据信息、提升预测准确率。

提出一种基于最大离散重叠小波变换和支持向量回归的金融时间序列预测方法,程序运行环境为Python或Jupyter Notebook,所用模块如下:

import numpy as np
import pandas as pd
import copy
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import mean_squared_error
from numpy.lib.stride_tricks import sliding_window_view
from modwt import modwt, modwtmra,imodwt

部分代码如下:

#第一部分,使用原始时间序列的SVM + 滑动窗口
#读取数据
prices = pd.read_csv('Data/AUD-JPY-2003-2014-day.csv',delimiter=";", header=0, encoding='utf-8', parse_dates=['Date'])
prices
# 删除不使用的列
prices.drop(["Open", "High", "Low"],axis = 1, inplace = True)
#定义变量
dates = prices['Date'].copy()
closing_prices = prices['Close'].copy()
#使用 matplotlib 绘制原始时间序列
plt.subplots(figsize=(16,4))
plt.plot(dates, closing_prices, label='Original series AUD-JPY 2003-2014')
plt.legend(loc = 'best')
plt.show()
#SVM + 滑动窗口实现
#实现滑动窗口
def slideWindow(series, window_lenght = 2):_X, _Y = [], []#Auxiliary variable to store the sliding window combinations. We sum up +1 as we are taking the last values of Aux_window#as the output values of our time seriesaux_Window =  sliding_window_view(series, window_lenght+1)#将第一个“window_lenght”值作为输入 (X),将最后一个值 (window_lenght+1) 作为输出 (Y)for i in range(len(aux_Window)):_Y.append(aux_Window[i][-1])_X.append(aux_Window[i][:-1])return _X, _Y
window_lenght = 2
#调用滑动窗函数    
X, Y = slideWindow(closing_prices,window_lenght)
#25% 的数据用于测试 SVM
idx_test_date = int(0.75*len(Y)) + window_lenght
df = pd.DataFrame(columns = ['test_date']) 
df['test_date'] = prices['Date'].iloc[idx_test_date:]
##Splitting and plotting test data#拆分和绘制测试数据,将数据拆分为训练数据(75%)和测试数据(25%) 
#shuffle = False 表示不是随机打乱数据,而是要保持有序
x_train,x_test,y_train,y_test = train_test_split(X, Y, test_size=0.25, random_state=None, shuffle=False)fig, ax = plt.subplots(2,1,figsize=(16,8))
ax[0].plot(dates, closing_prices, label='Original')
ax[0].plot(df['test_date'], y_test, label='Values to test the model out',color='orange')
ax[1].plot(df['test_date'], y_test, label='Values to test the model out',color='orange')ax[0].legend(loc = 'best')
ax[1].legend(loc = 'best')
plt.show()
#构建SVR 
def evaluateSVR(_x_train,_y_train,_x_test,_y_test, kernel = 'rbf'):if (kernel == 'rbf'):clf = svm.SVR(kernel ='rbf', C=1e3, gamma=0.1)elif (kernel == 'poly'):clf = svm.SVR(kernel ='poly', C=1e3, degree=2)else:clf = svm.SVR(kernel ='linear',C=1e3)_y_predict = clf.fit(_x_train,_y_train).predict(_x_test)return _y_predicty_predict = evaluateSVR(x_train,y_train,x_test,y_test)plotValuesWt = y_test.copy()

部分出图如下:

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任
《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。

擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

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

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

相关文章

开源项目的三年,我的项目经历了哪些变化?

0.前言 自己一个项目写了三年,到底写了什么东西了,这个项目经历了哪些变化呢?其中的心路历程如何? 兄弟们,要是感觉我的项目有价值,去b站给俺点点关注呐。我更新的更快。点击下面的了解就可以跳转去b站。…

我的docker随笔43:问答平台answer部署

本文介绍开源问答社区平台Answer的容器化部署。 起因 笔者一直想搭建一个类似stack overflower这样的平台,自使用了Typora,就正式全面用MarkdownTyporagit来积累自己的个人知识库,但没有做到web化,现在也还在探索更好的方法。 无…

Spring + Tomcat项目中nacos配置中文乱码问题解决

实际工作的时候碰到了nacos中文乱码的问题,一顿排查最终还是调源码解决了。下面为具体的源码流程,有碰到的可以参考下。 对于nacos配置来说,初始主要源码就在NacosConfigService类中。里面有初始化获取配置content以及设置对应监听器的操作。…

已解决org.springframework.web.servlet.NoHandlerFoundException异常的正确解决方法,亲测有效!!!

已解决org.springframework.web.servlet.NoHandlerFoundException异常的正确解决方法,亲测有效!!! 文章目录 问题分析 报错原因 解决思路 解决方法 总结 问题分析 org.springframework.web.servlet.NoHandlerFoundExceptio…

配备Apple T2 安全芯片的 Mac 机型及T2芯片mac电脑U盘装系统教程

T2 芯片为 Mac 提供了一系列功能,例如加密储存和安全启动功能、增强的图像信号处理功能,以及适用于触控 ID 数据的安全保护功能。哪些电脑配备了 T2 安全芯片呢,T2芯片mac电脑又如何重装系统呢?跟随小编一起来看看吧! …

集群及LVS简介、LVSNAT模式原理、LVSNAT模式配置、LVSDR模式原理、LVSDR模式配置、LVS错误排查

集群 将很多机器组织到一起,作为一个整体对外提供服务 集群在扩展性、性能方面都可以做到很灵活 集群分类: 负载均衡集群:Load Balance高可用集群:High Availability高性能计算:High Performance Computing LVS LVS…

6-3、T型加减速单片机程序【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:根据前两节内容,已完成所有计算工作,本节内容介绍具体单片机程序流程及代码 一、程序流程图 根据前两节文章内容可知,T型加减速的关键内容是运动类型的判断以及定时…

CPP项目:Boost搜索引擎

1.项目背景 对于Boost库来说,它是没有搜索功能的,所以我们可以实现一个Boost搜索引擎来实现一个简单的搜索功能,可以更快速的实现Boost库的查找,在这里,我们实现的是站内搜索,而不是全网搜索。 2.对于搜索…

qt/c++实现表情选择框

💂 个人主页:pp不会算法^ v ^ 🤟 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 实现功能 。编解码的设计 。映射关系设计 。匹配机制设计 演示效…

Lustre文件系统fid介绍

fid介绍 fid是lustre文件系统中文件的唯一标识,总共128位,fid序列、fid序列内编号、fid版本号(目前未使用默认为0) /*** File IDentifier.** FID is a cluster-wide unique identifier of a file or an object (stripe).* FIDs …

C++ 获取每一行的数据 FetchRow() 用vector()实现

1、在LXData里面定义结构体 struct LXAPI LXData{const char* data 0;int size 0;}; 2、在LXMysql.h和LXMysql.cpp分别定义和编写代码 //获取一行数据std::vector<LXData>FetchRow(); std::vector<LXData> LXMysql::FetchRow(){std::vector<LXData>re;i…

vue+video-animation-player播放vap视频

1.安装 npm i video-animation-player 2.引入 import Vap from "video-animation-player" 3.使用 // 第二步创建实例 import Vap from "video-animation-player"let dom document.getElementById("vap-warp") let vapPlayer new Vap({cont…

cpp11新特性之类型转换

目录 写在前面 类型转换的方法 static_cast reinterpret_cast dynamic_cast const_cast 关于类型转换的使用建议 致谢&#xff1a; 写在前面 鸽了好多天了&#xff0c;这几天惰性使然博主休息了一下。磨刀不误砍柴工&#xff0c;这几天会逐渐赶上之前的学习进度。今天带…

达梦数据库适配Springboot+MybatisPlus+达梦数据库

问题描述 数据库需要从mysql替换为达梦&#xff0c;项目原本使用的是mysqlSpringbootMybatisPlus,需要替换成达梦7SpringbootMybatisPlus&#xff0c;对配置过程进行一下记录 达梦官方技术文档地址 https://eco.dameng.com/docs/zh-cn/app-dev/java-MyBatis-frame.html步骤 …

HarmonyOS SDK 助力新浪新闻打造精致易用的新闻应用

原生智能是HarmonyOS NEXT的核心亮点之一&#xff0c;依托HarmonyOS SDK丰富全面的开放能力&#xff0c;开发者只需通过几行代码&#xff0c;即可快速实现AI功能。新浪新闻作为鸿蒙原生应用开发的先行者之一&#xff0c;从有声资讯入手&#xff0c;基于Speech Kit朗读控件上线听…

【C#】.net core 6.0 设置根目录下某个文件夹可访问,访问创建的图片等资源

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

记录 | python list extend()

extend() 函数用于在列表末尾一次性追加另一个序列中的多个值&#xff08;用新列表扩展原来的列表&#xff09;。 以下实例展示了 extend()函数的使用方法&#xff1a; #!/usr/bin/pythonaList [123, xyz, zara, abc, 123]; bList [2009, manni]; aList.extend(bList)print …

应用层DoS

应用层&#xff08;application layer&#xff09;是七层OSI模型的第七层。应用层直接和应用程序 对接并提供常见的网络应用服务&#xff0c;能够在实现多个系统应用进程相互通信的同 时&#xff0c;完成一系列业务处理所需的服务。位于应用层的协议有很多&#xff0c;常见的包…

SpringBoot实现统一异常处理

文章目录 前言实现步骤定义统一响应对象类定义业务异常枚举接口和实现定义业务异常基类定义全局异常处理切面测试和验证 总结 前言 近日心血来潮想做一个开源项目&#xff0c;目标是做一款可以适配多端、功能完备的模板工程&#xff0c;包含后台管理系统和前台系统&#xff0c…

Android CMakeLists.txt语法详解

一.CMake简介 你或许听过好几种 Make 工具&#xff0c;例如 GNU Make &#xff0c;QT 的 qmake &#xff0c;微软的 MSnmake&#xff0c;BSD Make&#xff08;pmake&#xff09;&#xff0c;Makepp&#xff0c;等等。这些 Make 工具遵循着不同的规范和标准&#xff0c;所执行的…