基于 Python 的股票价格序列相似性分析

基于 Python 的股票价格序列相似性分析 摘要:本文主要能够根据用户所提供的股票寻找同行业内与其价格序列相似的股票,并能通过其在历史中的重复性对今后的趋势做预测

本文包含相关资料包-----> 点击直达获取<-------

基于 Python 的股票价格序列相似性分析

摘要:本文主要能够根据用户所提供的股票寻找同行业内与其价格序列相似的股票,并能通过其在历史中的重复性对今后的趋势做预测。使用 Python 及相关库,结合动态时间弯曲(DTW)算法,用折线图的方式形象直观地展现出分析结果。

关键字:Python;股票价格序列;相似性;时间动态弯曲法;DTW

研究目的与意义

随着经济的发展,人民生活水平的提高,越来越多的人开始在股票、债券、基金等金融产品中投资理财。其中,股票市场无疑是非常火热的一个地方。如何找到一个好的投资策略无疑是大家最关心的问题。股票之间的关联度非常高,因此股市之间的联动性研究成为了股票市场研究的一个重要内容。股票市场联动性的研究不仅能够帮助投资者分析股票信息、掌握市场动态,还能够协助投资者做出相对正确的投资策略,从而实现收益增加[1]。

证券市场是否有效率,一直是金融理论界和业界关注的问题。1965 年,美国学者尤金·法马提出了“市场有效性假说”(EMH)。在这个假说下,证券市场的有效性是指信息的有效性,也就是说,若“市场内所有证券的价格在任何时候都能准确地反映出所有有关的信息”,则称市场是有效的。从法马提出 EMH 之后的近 40 多年来,市场有效性假说一直是金融学理论的核心命题。按照这一理论,证券市场的许多现象都可以用理性交易者模型来诠释[2]。

本项目基于时间动态弯曲算法(DTW)对股票市场进行分析,得到样本空间中与给定股票同行业内九支最相似的股票序列,并得到此支股票特定时间段的涨跌幅在历史上的可重复性与未来的可预测性,以供投资者做决策参考。

研究内容与方法

时间动态弯曲算法(DTW)

本算法通过动态规划计算两个序列的相似距离,其本质与求解字符串的最长公共子串类似[3]。

dp[i][j]表示序列 a[0:i]和 b[0:j]之间的相似距离的平方,状态转移方程为:

c++ +b[0])2 i=0,j=0 -b[j])2+dp[0][j-1] i=0 -b[0])2+dp[i-1][0] j=0 -b[j])2+min(dp[i-1][j], dp[j-1][i], dp[i-1][j-1]) i,j>0

dp[len(a)-1][len(b)-1]即为两个序列相似距离的平方。

图 1 两序列距离比较 图 2 两序列通过 DTW 比较距离

图 1 中可以直观看出实线与虚线序列相似度很高,距离很小,只是在时间轴上未对齐。若是采用左侧红色的欧氏距离进行计算,显然是不合理的,应采用右侧蓝线进行比较,如图 2 所示即为 DTW 算法找到两个序列波形对齐的点计算距离,可对两个序列可进行错位匹配[4]。

股票序列获取及处理

图 3 算法流程图

由投资者输入特定股票、时间段和分析指标和历史可追溯年数,通过 tushare 的接口获取其每日开盘价、收盘价、最高价、最低价、昨收价,并对每个指标除以第一个值获得其增幅序列,后文简称此增幅序列为序列。假定此股票为 A。

与股票 A 同行业股票分析

通过 tushare 接口筛选与 A 同时间段同行业(industry)的所有序列,并将其写入 database 数据库中的 industry_same 表中,对每一支序列计算其与 A 序列相似距离,取前 9 支距离最小的序列,利用 Python 的 tkinter 窗体展示这 9 支股票名称、对应曲线以供投资者做决策参考。

股票 A 自身涨跌幅的未来预测

通过 tushare 接口将股票 A 从回溯年数前至今的序列写入 database 数据库中的 self_future 表中,采用滚动窗口构建模型计算每一段子序列与 A 序列的相似距离,取前 9 支距离最小的序列,利用 Python 的 tkinter 窗体展示该序列。

数据结果

以平安银行(000001.SZ),日期始末为 2018.9.1~2018.11.1,评价指标收盘价,追溯 5 年为例。

图 4 用户输入界面

图 5 同行业股票绘图

其中蓝线为特定股票 A,红线为筛选出的股票序列

图 6 自身涨跌幅预测绘图

其中蓝线为特定股票 A,红线为股票 A 历史 5 年中与之相近的序列和之后 5 天的序列。

结论

通过图 5 可筛选出与平安银行(000001.SZ)同行业的银行股票中最相近的 9 支,分别是:宁波银行(002141.SZ)、南京银行(601009.SH)、工商银行(601398.SH)、张家港行(002839.SZ)、常熟银行(601128.SH)、江阴银行(002807.SZ)、民生银行(600016.SH)、华夏银行(600015.SH)、苏农银行(603323.SH)。

通过图 6 可知平安银行在 2018.9.1 至 2018.11.1 的收盘价收益率序列后续在 5 年内有 78% 的概率是上涨的,可供投资者做决策参考。

个人体会

通过本项目我不仅对金融中的股票领域有了初步的认知,了解股票分析一般用哪些参数,掌握了两个不同序列求距离可以利用时间动态弯曲算法求解;对 Python 的运用也更加熟练。因为代码量较大,需要及时进行 try、except 检验,如图 7 所示。

图 7 检验程序在每个关键处是否出现异常

总结与反思

本项目我认为还应该完善的是搜索,相似度算法以及存储数据方面的优化。目前时间复杂度较高,后期可将全盘数据提前存入数据库,并运用搜索算法,改进相似度算法以使程序运行更高效,缩短投资者的等待时间。

致谢

感谢华东理工大学信息科学与工程学院提供的“创新实践育人”平台

感谢陈苏老师的悉心指导

参考文献

林星.基于局部相似性分析的股票市场投资策略研究[D].山东:山东大学,2017.

田存志.市场非有效性:基于理性或行为金融学[J].广西社会科学,2004,(4):45-47. DOI:10.3969/j.issn.1004-6917.2004.04.015.

孙宏伟,王会青,张建辉.基于滑动窗口分段的动态时间弯曲下界算法[J].小型微型计算机系统,2016,37(4):768-772.

c++ Wang X, Mueen A, Ding H, et al. Explerimental comparison of representation methods and distance measures foe time series data[J]. Data Mining and Knowledge Discovery, 2013, 26(2):275-309.

参考文献

  • 基于Android移动端的优惠券比价系统设计与实现(长安大学·李刚柱)
  • 基于Heritrix和Lucene的国内机票比价系统的设计与实现(上海交通大学·李祥仪)
  • 基于深度学习的短期股市价格趋势预测研究(兰州大学·覃勉)
  • 基于机器学习的股票预测及股票推荐系统的设计与实现(北京交通大学·胡杰)
  • 基于node.js的股票行情浏览及分析系统的设计与实现(山东大学·魏榆静)
  • 并购重组后公司股票的数据挖掘(西南财经大学·刘荣娜)
  • 基于node.js的股票行情浏览及分析系统的设计与实现(山东大学·魏榆静)
  • 基于Android移动端的优惠券比价系统设计与实现(长安大学·李刚柱)
  • 基于Heritrix和Lucene的国内机票比价系统的设计与实现(上海交通大学·李祥仪)
  • 基于机器学习的A股市场统计套利溢价研究(上海财经大学·曾毅)
  • 基于深度学习的科创板股票价格预测系统的设计与实现(北京邮电大学·王鹏飞)
  • 基于Android移动端的优惠券比价系统设计与实现(长安大学·李刚柱)
  • 融合知识图谱和情感分析的股价预测模型(华东师范大学·熊浩博)
  • 基于多类特征的股票走势预测及推荐系统(哈尔滨工业大学·魏侨池)
  • 基于股票数据流和投资者情绪的股价预测系统的设计与实现(华南理工大学·陈泽铭)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码驿站 ,原文地址:https://m.bishedaima.com/yuanma/36093.html

相关推荐

  • 基于Python实现损失函数的参数估计

    1, 实验目的 理解逻辑回归模型,掌握逻辑回归模型的参数估计算法, 2, 实验要求 实现两种损失函数的参数估计(1,无惩罚项;2,加入对参数的惩罚),可以采用梯度下降
    2024年05月14日
    1 1 1
  • 基于jsp和mysql实现的个人博客系统

    基于jsp和mysql实现的个人博客系统 1,项目简介 1,1 项目概述 这是一个简单的个人博客系统,个人练手,完成会部署到云服务器作为记录自己生活学习的点点滴滴的一个工具
    2024年05月14日
    17 1 3
  • 在线文档管理系统

    这是一个🔥🔥基于SpringBoot框架的在线文档管理系统设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    1 1 1
  • 基于JSP和MySQL的宠物网站设计与实现

    基于JSP和MySQL的宠物网站设计与实现 摘 要 本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在Spring和Struts2框架之上
    2024年05月14日
    11 1 2
  • Java+SSH酒店预订管理网站

    这是一个🔥🔥SSH酒店预订管理网站🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 酒店预订开发技术栈为SSH项目,可以作为毕业设计课程设计作业基于Java+SSH技术(Struts2
    2024年05月23日
    3 1 1
  • 基于Java+SSM的房屋租赁管理系统、javaweb+mysql框架

    房屋租赁管理系统在当今社会扮演着重要角色,随着城市化进程的不断加快,人们对于房屋租赁的需求也日益增长,基于Java+SSM的房屋租赁管理系统具有极大的应用潜力,本论文旨在探讨如何利用Javaweb技术开发一个全面而高效的房屋租赁管理系统
    2024年05月07日
    3 1 1
  • 基于Python实现的新闻网络爬虫程序

    基于Python实现的新闻网络爬虫程序 1,简介 1,1 引用术语与缩写解释 缩写,术语 解 释 Python 一种简洁而强大的解释型脚本语言 pyodbc Python下的ODBC数据库访问组件 SQLAlchemy Python下的ORM数据访问组件 pywin32 Python下的Win32接口访问组件 requests Python下的Web访问组件 Pillow Python下的图像处理组件 解释型语言 无需编译源码可敏捷部署并执行的语言 IOC 控制反转
    2024年05月14日
    3 1 2
  • 基于ASR的语音词频提取云平台(python)

    基于ASR的语音词频提取云平台(python) 摘要 随着互联网的发展,语音文件成为了人们接触得越来越多文件,如何高效的从一段录音中提取出关键信息
    2024年05月14日
    2 1 2
  • 基于Java+SSH的在线教学交流平台、基于JavaWeb的在线教学交流平台

    在当今信息化时代,教育行业迎来了数字化转型的浪潮,基于Java+SSH框架(struts2+spring+hibernate)的在线教学交流平台应运而生,本研究旨在设计和开发一个全面的师生学习交流平台
    2024年05月07日
    6 1 3
  • 基于Java Web和MySQL的学生信息管理系统

    基于Java Web和MySQL的学生信息管理系统 1,系统概述 1,1 课设目的 复习,巩固JavaWeb,数据库,AJAX,JQuery,HTML的基础知识
    2024年05月14日
    2 1 1

发表回复

登录后才能评论