根据当前行情,计算历史上与当前最相似的行情python实现
一、获取历史行情数据
使用tushare库进行数据获取
http://tushare.org/trading.html#id2
import tushare as tsts.get_hist_data('600848') #一次性获取全部日k线数据
open high close low volume p_change ma5 \
date
2012-01-11 6.880 7.380 7.060 6.880 14129.96 2.62 7.060
2012-01-12 7.050 7.100 6.980 6.900 7895.19 -1.13 7.020
2012-01-13 6.950 7.000 6.700 6.690 6611.87 -4.01 6.913
2012-01-16 6.680 6.750 6.510 6.480 2941.63 -2.84 6.813
2012-01-17 6.660 6.880 6.860 6.460 8642.57 5.38 6.822
2012-01-18 7.000 7.300 6.890 6.880 13075.40 0.44 6.788
2012-01-19 6.690 6.950 6.890 6.680 6117.32 0.00 6.770
2012-01-20 6.870 7.080 7.010 6.870 6813.09 1.74 6.832ma10 ma20 v_ma5 v_ma10 v_ma20 turnover
date
2012-01-11 7.060 7.060 14129.96 14129.96 14129.96 0.48
2012-01-12 7.020 7.020 11012.58 11012.58 11012.58 0.27
2012-01-13 6.913 6.913 9545.67 9545.67 9545.67 0.23
2012-01-16 6.813 6.813 7894.66 7894.66 7894.66 0.10
2012-01-17 6.822 6.822 8044.24 8044.24 8044.24 0.30
2012-01-18 6.833 6.833 7833.33 8882.77 8882.77 0.45
2012-01-19 6.841 6.841 7477.76 8487.71 8487.71 0.21
2012-01-20 6.863 6.863 7518.00 8278.38 8278.38 0.23
二、标准化
使用零均值归一化
这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1。
三、相似度计算
相似性使用余弦距离
我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。将某天行情开盘价,收盘价等指标想象成N维空间上的一个向量,则它和某个样本夹角越小,则它们越相似。
四、绘制图像
使用2020年7月15日收盘行情,计算历史上与哪些天行情最相似,并绘制结果如下:
从图中看到除去2020年7月15日附近行情,跟2019年3月上旬和4月上旬行情很相似。
五、分析
python代码
# @Time : 2020/7/16
# @Author : 大太阳小白
# @Software: PyCharm
# @blog:https://blog.csdn.net/weixin_41579863
import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
top = 10
# 获取上证指数,并保存
# data = ts.get_hist_data('sh')
# print(data)
# data.to_excel('data.xlsx')
data = pd.read_excel('data.xlsx')
# 取出当天行情,要跟历史进行对比
today_quote = data.values[0, 1:]
his_data = data.values[1:, 1:].astype(np.float32)
# 使用零均值归一化,所以要计算历史数据的标准差和均值
quote_std = np.std(his_data, axis=0)
quote_mean = np.std(his_data, axis=0)
# 进行数据归一化
normal_his_data = (his_data - quote_mean)/quote_std
normal_today_quote = (today_quote - quote_mean)/quote_std
sim_array = np.zeros((len(normal_his_data), 1))
for index, normal_his_data_item in enumerate(normal_his_data):# 遍历计算余弦距离a_b = np.mat(normal_today_quote)*np.mat(normal_his_data_item).Ta = np.mat(normal_today_quote) * np.mat(normal_today_quote).Tb = np.mat(normal_his_data_item) * np.mat(normal_his_data_item).Tsim = a_b.A.astype(np.float32)/(np.sqrt(a.A.astype(np.float32)) * np.sqrt(b.A.astype(np.float32)))sim_array[index] = sim[0][0]
# 对结果进行降序排序,并获取topN的索引
top_n = np.argsort(sim_array, axis=0)[::-1][:top]
# 绘图
fig = plt.figure()
for top_index, value in enumerate(top_n):ax1 = fig.add_subplot(top/2, 2, top_index+1)ax1.set_title(data.values[value+1,0][0])row = value[0]y = his_data[row:row+20, 2][::-1]x = range(len(y))ax1.plot(x, y)
plt.show()
根据当前行情,计算历史上与当前最相似的行情python实现相关推荐
- 【历史上的今天】8 月 2 日:字节跳动收购 Musical.ly;PlayStation 之父诞生;早期的女性计算机先驱
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 8 月 2 日,在 20 年前的这个八月,"电子表格之父"丹·布兰克林(Dan ...
- Musical.ly:从风靡全美到被同行收购 | 历史上的今天
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 2015 年的夏天,一款应用程序在 iOS App Store 中攀升至榜首,从那以后,它就没有在海外跌破 App Sto ...
- 【历史上的今天】11 月 11 日:腾讯成立;信息论先驱出生;阿德曼提出 DNA 计算
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 11 月 11 日,1924 年的今天,中山大学成立:中山大学由原中山大学和中山医科大学合并组建,是 ...
- 计算机与网络安全经历了几个阶段,计算机历史上计算范式经历了哪六个发展阶段?...
计算机历史上计算范式经历了哪六个发展阶段? 孟神通2015-04-04浏览 从历史的角度来看,计算机诞生至今,其计算范式已经经历了至少六个明显的发展阶段. 第一阶段可以称为主机(mainframe)阶 ...
- 【历史上的今天】11 月 25 日:P2P 鼻祖 Napster 被收购;机械计算器之父诞生;高春辉的个人网站
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 11 月 25 日,在 1926 年的今天,物理学家李政道出生,他和杨振宁提出了弱相互作用中宇称不守 ...
- 【历史上的今天】3 月 14 日:微软发布 IE9;黑莓创始人出生;圆周率计算创造新纪录
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 3 月 14 日,在 143 年前的今天,1879 年 3 月 14 日,爱因斯坦诞辰.阿尔伯特·爱 ...
- 【历史上的今天】12 月 31 日:千年虫问题;DNA 计算之父出生;微机先驱 Cromemco 成立
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 31 日,也是 2021 年的最后一天.在 1993 年的今天,我国第一张电子报纸在杭州问 ...
- 【历史上的今天】3 月 20 日:周以真提出计算思维;Docker 发布;思科收购 Linksys
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 3 月 20 日,在 1999 年的今天,人类首次成功乘热气球环球飞行.在 23 年的今天,瑞士人皮 ...
- 哪位科学家设计了第一架计算机器,奖-谁于哪年设计并创制了历史上第一架机械计算机器?(专搜竞答)...
帕斯卡 于1642-1644年,设计并创制了历史上第一架机械计算机器. 帕斯卡,B. 法国数学家,物理学家,哲学家.1623年6月19日生于克莱蒙费朗,1631年移居巴黎.1635年左右开始对数学发生 ...
最新文章
- spring官方文档阅读笔记
- SSM中shiro的基本使用
- 提高编程能力的7条建议
- 如何访问SAP Spartacus里的config数据
- 工作189:配置表头即可
- 【转】老邹说Magento的前世今生
- jdbc 连接 mysql 时的中文乱码问题
- c4d细分曲面的使用和导出的一些快捷键笔记
- 2017年网络小说人气排行榜
- Python 批量修改文件名称测试
- visa支付—Springboot
- 采购销售价格搞错的后果及处理逻辑
- 三台Centos7虚拟机之间实现ssh,rsh互连,虚拟机和本机基于ssh进行文件传输
- 怎么保存python文件_pycharm怎么保存py文件
- 键盘各个键所对应的键值
- Windows CMD常用命令大全
- 微信小程序的安全登录
- 数据分析七种降维方法
- 什么是promise,promise的用法。
- Reso | Noise 网易云音乐插件
热门文章
- 中国节日主题网站设计 红色建军节HTML+CSS 红色中国文化主题网站设计 HTML学生作业网页
- 第48章 	MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列
- 谷歌gke_GKE教程:Google Kubernetes引擎入门
- BLOB/TEXT column ‘sup_content‘ used in key specification without a key length
- Linux中的压缩和解压缩命令zip|tar
- 【MineCraft】-- 使用Java开发我的世界Mod
- HEALER: Relation Learning Guided Kernel Fuzzing学习笔记
- js实现instanceof+实现原理
- android保存网站在桌面,如何将网站保存到手机桌面(Android)?
- 信号生成和可视化——周期性/非周期性波形