股票市场周期波动分析的MATLAB实现(1)
【摘要】本文主要基于MATLAB结合霍华德·马克斯的《周期》一文实现对上证指数的分析。《周期》一书着重强调了股市周期的存在,而在周期中的买进和卖出位置就决定了投资收益。因而利用现有数据选择股票或者基金以及分析当前所处的周期位置是买卖的重点,基于此本文利用tushare的数据和MATLAB对市场数据进行分析,并建立投资策略。
说明
参考:
周期.霍华德·马斯克著:刘建位译.北京:中信出版社,2019.2
高宏.股票市场周期波动的数学原理及分析方法
Tushare的MATLAB使用方式。通过Matlab SDK 获取数据
数据来源
Tushare大数据开放社区。数据内容将扩大到包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。并提供python和Matlab的接口,便于研究者运用和处理数据。
笔者Tushare ID:407591
非常感谢Tushare社区为作为学生的我提供免费的数据接口和教程。
编程环境
MATLAB2020b,只要2016b以上版本即可。
数据的选取
《周期》中认为短期的经济周期受到心理、情绪和决策过程的影响,而同时一个公司的经营受到企业管理者的心态和管理方式影响,因此对于公司短期的股价存在较大的不确定性,无法显示出较为良好的周期。基于这个原因,本文的分析主要集中在指数基金和黄金这两类数据,其受到的影响因素相对较少,具有较好的稳定性。
数据导入和处理
文件下载
在利用MATLAB获取Tushare进行数据的获取和处理前,需要下载相关程序包,连接为 Tushare的MATLAB程序包下载和使用说明
下载并解压后,在MATLAB中添加路径即可。
数据导入
如下为建立API与网站通信的方式,其中xxxxx代表的是自己的接口token
token = 'xxxxxxxxxxxxxxxx';
api = pro_api(token);
利用以下代码即可获取上证指数的历史数据,其中第一个输入参数index_daily代表获取的数据类型为指数; ‘ts_code’, '000001.SH’代表数据在股票交易所的代码,000001.SH为上证指数的代码;后面两组数据分别代表获取数据的起始日期和截止日期。
shangzheng_his_day = api.query('index_daily', 'ts_code', '000001.SH', 'start_date', '19910715', 'end_date', '');
如图为获取的上证数据截图,其中包括开盘,收盘,最低价,最高价等数据,本文默认以收盘价作为分析的主要对象。
数据评估
利用plot函数绘制上证指数的价格如下:
在上图中无法较好地评估出上证指数的变化数据,因此笔者选取了时间跨度较为长的黄金价格数据,数据来源为黄金历史价格。
可以从图中看出,数据基本上符号指数增长的趋势。《周期》一书中,认为一国经济的增长至于工作小时总数,与人口增长比例和生产效率基本上成正比,而这些在国家趋于稳定后基本上保持一个较为稳定的状态,因此可以认为一国的经济增长在稳定期后基本上保持指数状态,股市大盘指数和黄金长期而言也会服从指数增长趋势。
所以本文后续以上证指数长期而言服从指数增长为前提进行分析。
数据处理与绘图
因为假设上证指数服从指数趋势,所以绘制上证指数的对数数据代码和图如下:
log_data=log(data);
plot(log_data)
从上图可以看出,前面的数据存在较大的偏差,因此删除前面200组数据。借用高宏博士文中的观点,上证每天的变化量基本上与白噪声吻合,因而对于每天的变化很难预测。
求解最值
利用如下代码求解上证指数的峰值和谷值
for i=101:1:length(log_data)-100[zhi_min_pre,num_min_pre]=min(log_data(i-100:i));[zhi_min_post,num_min_post]=min(log_data(i:i+100));[zhi_max_pre,num_max_pre]=max(log_data(i-100:i));[zhi_max_post,num_max_post]=max(log_data(i:i+100));if zhi_min_pre==zhi_min_post && (num_min_pre+i-101)==(num_min_post+i-1)j=j+1;num_min(j)=i;zhi_min(j)=zhi_min_pre;plot(i,zhi_min_pre,'g*')endif zhi_max_pre==zhi_max_post && (num_max_pre+i-101)==(num_max_post+i-1)k=k+1;num_max(k)=i;zhi_max(k)=zhi_max_pre;plot(i,zhi_max_pre,'r*')end
end
得到的示意图如下:
如《周期》中所说,由于人们的心理机制影响,往往峰值和估值都会严重偏离均值。
均值拟合
利用MATLAB 中的polyfit函数可以完成线性拟合,代码如下:
x=1:length(log_data);
x=x(:);
[p_log,S_log] = polyfit(x,log_data,1);%线性拟合
[y_log_fit,delta_log] = polyval(p_log,x,S_log);
利用上一节中的最低值和最高值的数据来确定上证指数的分布极值。为了风险较低,可以利用第二或者第三最低值作为选择的标准,最终绘制的图形如下。可以看出上证指数大部分时间是在最高线和最低线之间。
误差分布
在建立回归直线后,分析上证指数沿回归直线的误差分布。从上证指数的误差分布可知,分布基本上服从正态分布。但是从误差分布也能看出来,在0线附近,负值比正值多,符合中国A股市场熊多牛少,熊长牛短的现实。
总结
本文只要介绍了如何利用Tushare和MATLAB 对指数进行简单的分析,会后续制定相关的策略打下基础。
股票市场周期波动分析的MATLAB实现(2)将分析如何对比多种指数或者黄金等确定投资组合。
股票市场周期波动分析的MATLAB实现(1)相关推荐
- 【数据分析】多重分形去趋势波动分析附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 新技术带来产业格局周期波动的3个阶段(以智能汽车领域为例分析)
前言:本文是,@胡含.@左左左左左 等多位"AI产品经理大本营"成员和@hanniman一起讨论的干货总结,欢迎读者们也来加入交流:) 目录 一.新技术(互联网/移动互联网/AI) ...
- 2021年中国股票市场成交情况、政策调整与股票市场异常波动及政策建议分析[图]
一.定义及分类 股票是一种有价证券,是股份公司在筹集资本时向出资人发行的股份凭证,代表着其持有者(即股东)对股份公司的所有权,购买股票也是购买企业生意的一部分,即可和企业共同成长发展. 这种所有权为一 ...
- 功率谱估计性能分析及matlab仿真,功率谱估计性能分析及Matlab仿真.doc
您所在位置:网站首页 > 海量文档  > 计算机 > matlab 功率谱估计性能分析及Matlab仿真.doc19页 ...
- 使用MATLAB绘制周期信号的,周期信号频域分析及MATLAB实现.ppt
周期信号频域分析及MATLAB实现.ppt 第七章 信号频域分析及 MATLAB 实现 7.1 周期信号的傅利叶级数与信号的频谱 7.2 周期信号的频谱分析及MATLAB实现 7.3 用MATLAB分 ...
- 数据统计分析案例(对比分析、销量定比分析、同比、双坐标图、环比、shift、贡献度分析(帕累托法则)、差异化分析、resample、季节性波动分析)
本文来自<Python数据分析从入门到精通>--明日科技编著 本章以案例为主,通过简单的知识讲解使读者了解数据统计分析中常用的分析方法,如对比分析,同比.定比和环比分析,贡献度分析,差异化 ...
- matlab混沌信号 仿真,蔡氏混沌电路的分析和MATLAB仿真
与<蔡氏混沌电路的分析和MATLAB仿真>相关的范文 蔡氏二极管实现方法研究 摘要:该文首先基于一种常用的蔡氏二极管实现方法对蔡氏电路进行了仿真研究,分别使用Matlab 和PSpice ...
- 动态相关系数dcc_【分享吧】基于DCCMVGARCH模型的期货与股票市场收益率波动的动态相关分析...
摘要 金融市场间联动性的讨论是现代金融分析的重要内容,在投资组合.风险管理.市场一体化程度判断等方面都涉及相关性的估计和预测.同时由于市场环境瞬息万变,动态相关性较静态相关性更能充分反映市场相关性的时 ...
- ahp层次分析法matlab代码_Matlab数据分析实战,基于AHP高校食堂满意度调查分析
层次分析法(Analytical Hierachy Process,AHP)是匹兹堡大学T.L.Saaty教授在20世纪70年代初期提出对定性问题进行定量分析的一种渐变灵活的多准则决策方案. 其特点是 ...
最新文章
- C语言:随笔8--结构体
- 写SpringBoot项目的时候,报错Ordinal parameter not bound
- NLP、CV、ML全覆盖,这份私藏论文清单你一定要看看
- java高并发(十二)并发容器J.U.C
- mysql mgr简介_MySQL Group Replication(MGR)使用简介与注意事项
- 记录一次cookie导致登录失败的惨案
- SharePoint 2013 开发——其他社交功能
- 华为cor—al10_cor al10是华为什么型号 cor al10是华为啥型号
- c语言模拟试题快速排序,快速排序(东软喜欢考类似的算法填空题,又如堆排序的算法等)...
- SC15 供应商质量管理工程师(武汉)
- 线程安全的三大不安全案例以及解决方法
- [转]Resource for Windows Phone 7
- 《Spring揭秘》读后感
- android 手机主题制作,怎么制作手机主题?
- 优思学院|六西格玛管理的经典六步法
- vmware 提示该虚拟机正在使用中
- mfc 中文乱码转换为正常中文_MFC下遇到的字符集和中文乱码问题
- 【c51单片机】交通红绿灯设计
- 使用域名访问后台系统、Nginx反向代理服务器
- 教你如何ping指定指定IP的指定端口
热门文章
- JAVA微信小程序共享视频小程序系统毕业设计 开题报告
- 怎么用vue自动更新页面数据
- 前台线程和后台线程的理解
- java我的世界1.6.2_我的世界1.6.2纯净版下载 我的世界1.6.2下载
- 基于Django的图书管理系统开发
- Unity项目进阶之保卫萝卜一.UI搭建
- 小程序:区域滚动、下拉刷新、上拉加载更多
- 使用CDN网站加速的好处
- 史上最易懂的红黑树动态图解!
- python安装email模块_Python byemail包_程序模块 - PyPI - Python中文网