MATLAB 美国标准普尔500指数(sp500)的资产收益率分布的拟合与检验 统计图 拟合检验 描述性统计量分析 matlab

文章目录

  • 实验内容
    • 实验(一):下载并保存数据
    • 实验(二):数据的描述性统计与拟合检验
  • 实验过程
    • 实验(一):
      • 1、下载数据
      • 2、保存数据
    • 实验(二):
      • 一、描述性统计量
      • 二、绘制统计图
        • 1、箱线图
        • 2、经验分布函数图
        • 3、频率直方图
        • 4、正态概率图
      • 三、分布的拟合检验
        • 1、chi2gof函数
        • 2、jbtest函数
        • 3、kstest函数
        • 4、kstest2函数
        • 5、lillietest函数
        • 6、结论分析
  • 总结
  • 部分代码示例

实验内容

实验(一):下载并保存数据

从网上下载2010年1月1日至2021年12月30日SP500历史价格数据(以天为单位),存储到excel表中,利用matlab读取数据;

实验(二):数据的描述性统计与拟合检验

对历史价格数据(收盘价)的收益率进行描述统计分析和分布的拟合检验。

实验过程

实验(一):

1、下载数据

从网上下载的2010年1月1日至2021年12月30日的美国标准普尔500指数的数据形式如图所示

2、保存数据

创建2行1列的绘图区域,通过绘图的方式展示2010年1月1日至2021年12月30日SP500的历史收盘价格以及收益率的大概趋势,图示如下:

然后,通过matlab操作excel文件的函数xlsread,读取数据并保存为mat格式的文件,以便分析时使用。

实验(二):

一、描述性统计量

1、均值
mean函数用来计算样本均值,样本均值描述了样本观测数据取值相对集中的中心位置。 下面用 mean函数计算SP500指数平均收益率

2、标准差
样本标准差描述了样本观测数据变异程度的大小,使用std函数用来计算上述两种形式的标准差

3、最大值
使用max函数用来计算样本的最大值,并获取到最大值所在的位置,展示最大收益率所在的日期

4、最小值
使用min函数用来计算样本最小值。并获取到最小值所在的位置,展示最小收益率所在的日期

5、极差
range函数用来计算样本的极差,即最大最小值之差,极差可以作为样本观测数据变异程度大小的一个简单度量。

6、中位数
将样本观测值从小到大依次排列,位于中间的那个观测值,称为样本中位数,它描述了样本观测数据的中间位置大小。median函数用来计算样本的中位数

7、众数
mode函数用来计算样本的众数,众数描述了样本观测数据中出现次数最多的数。若没有相同的两个数,就选最小的值

8、变异系数
变异系数是衡量数据资料中各变量观测值变异程度的一个统计量。当进行两个或多个变
量变异程度的比较时,如果单位与平均值均相同,则可以直接利用标准差来比较。如果单位或平均值不同时,比较其变异程度就不能采用标准差,而需采用标准差与平均数的比值,即相对值来比较。标准差与平均值的比值称为变异系数。使用std和 mean函数的比值来计算变异系数。

9、偏度
skewness函数用来计算样本的偏度,样本偏度反映了总体分布密度曲线的对称性信息,偏度越接近于0,说明分布越对称,否则分布越偏斜。若偏度为负,则说明样本服从左偏分布,若偏度为正,则样本服从右偏分布。

10、峰度
kurtosis函数用于计算样本的峰度。样本峰度反映了总体分布密度曲线在其峰值附近的陡峭程度。正态分布的峰度为3,若样本峰度大于3,则说明总体分布密度曲线在其峰值附近比正态分布来得陡;若样本峰度小于3,则说明总体分布密度曲线在其峰值附近比正态分布来得平缓。

二、绘制统计图

1、箱线图

箱线图非常直观地反映了样本数据的分散程度以及总体分布的对称性和尾重,利用箱线图还可以直观地识别样本数据中的离群点异常值。为了方便调用以及简洁代码,将绘图的代码封装成一个个自定义函数是一个很好的选择

绘制的箱线图如图所示,图中箱子的左右边界分别是样本25%分位数m0.25 和75%分位数m0.75,箱子中间刻槽处的标记线位置是样本中位数 m0.5。默认情况下,从箱子左边界引出的虚线延伸至m0.25 -1.5(m0.75 -m0.25)位置,从箱子右边界引出的虚线延伸至 m0.75 +1.5(m0.75 -m0.25)位置,而落在区间 [m0.25 -1.5(m0.75 -m0.25),m0.75 +1.5(m0.75 -m0.25)]
之外的样本点被作为异常点(或称离群点),用红色的“+”号标出。

2、经验分布函数图

MATLAB统计工具箱中提供了cdfplot和ecdf函数,用来绘制样本经验分布函数图。可以把经验分布函数图和某种理论分布的分布函数图叠放在一起,以对比它们的区别。

可视化结果如下:

如图所示,将经验分布函数图和均值为-4.7675e-04,标准差为0.0109的正态分布的分布函数图叠放在一起,可以看出它们两端接近,但是在中间两条线的差异还是有点大的,不足以证明SP500的收益率数据服从正态分布

3、频率直方图

利用 MATLAB统计工具箱中的ecdf和ecdfhist函数,可以绘制频率直方图,可视化结果如下:

以上代码做出的频率直方图如图所示,可以看出频率直方图与均值为-4.7675e-04,标准差为0.0109的正态分布的密度函数图趋势大致相同。

4、正态概率图

MATLAB统计工具箱中提供了normplot函数,用来绘制正态概率图

绘制的正态概率图如图所示,可以看出,数据点并没有完全落在直线上,说明了数据与正态分布存在一定的差异,具有明显的“厚尾”效应。

三、分布的拟合检验

1、chi2gof函数

chi2gof函数用来作卡方分布的拟合优度检验,检验样本是否服从指定的分布。它用若干个小区间把样本观测数据进行分组(默认情况下分成10个组),使得理论上每组(或区间)包含5个以上的观测数据,即每组的理论频数大于或等5,若不满足这个要求,则可以通过合并相邻的组来达到这个要求。根据分组结果计算的卡方检验统计量,当样本容量足够大时,该统计量近似服从自由度为nbins-1-nparams的卡方分布,其中nbins为组数,nparams 为总体分布中待估参数。当卡方检验统计量的观测值超过临界值α(nbins-1-nparams)时, 在显著性水平α下即可认为样本不服从指定的分布。

由于h =1,p=7.5280e-06<0.05,所以在显著性水平0.05下,可以认为数据不服从均值为-4.7675e-04,标准差为0.0109的正态分布。结构体变量stats的值表明通过合并相邻区间,初始的10个小区间 最终被合并成4个小区间,从stats.edges的值查看区间端点,从stats.O值查看每个小区间实际包含的观测个数,从stats.E的值查看每个小区间对应的理论频数。

2、jbtest函数

jbtest函数用来作Jarque Bera检验,检验样本是否服从正态分布,调用该函数时不需要指定分布的均值和方差。由于正态分布的偏度为0,峰度为3,若样本服从正态分布,则样本偏度应接近于0,样本峰度应接近于3。当样本容量n 足够大时,Jarque Bera公式的检验统计量近似服从自由度为2的卡方分布。但是jbtest函数只是基于样本偏度和峰度进行正态性检验,结果受异常值的影响比较大,可能会出现比较大的偏差。

由于h = 1,p 值小于给定的显著性水平0.05,且检验统计量的观测值jbstat≥检验的临界值critval,所以在显著性水平0.05下拒绝原假设,认为收益率数据不服从正态分布。鉴于jbtest函数的局限性,这个结论仅作为参考,还应结合其他函数的检验结果,做出综合的推断。

3、kstest函数

kstest函数用来作单个样本的 Kolmogorov Smirnov检验,它可以作双侧检验,检验样本是否服从指定的分布;也可以作单侧检验,检验样本的分布函数是否在指定的分布函数之上 或之下,这里的分布是完全确定的,不含有未知参数。kstest函数把计算出的检验的p 值与用户指定的显著性水平α 作比较,从而做出拒绝或接受原假设的判断。对于双侧检验,当p ≤ α/2 时,拒绝原假设;对于单侧检验,当p ≤α 时,拒绝原假设。

由于h =1,且p值小于0.05,检验统计量的观测值ksstat>临界值cv,所以在显著性水平0.05下拒绝原假设,即数据不服从均值为-4.7675e-04,标准差为0.0109的正态分布。

4、kstest2函数

kstest2函数用来作两个样本的 Kolmogorov Smirnov检验,它可以作双侧检验,检验两个样本是否服从相同的分布,也可以作单侧检验,检验一个样本的分布函数是否在另一个样本的分布函数之上或之下,这里的分布是完全确定的,不含有未知参数。kstest2函数对比两样本的经验分布函数,构造检验统计量:KS = max|F1(x)-F2(x)| ,F1(x)-F2(x)分别为两样本的经验分布函数。为了方便调用,将该函数封装成自定义函数。针对SP500收益率的数据,调用kstest2函数检验2019年和2020年的收益率数据是否服从相同的分布

由于h =1,且p值小于0.05,所以在显著性水平0.05下,拒绝原假设,认为2019年和2020年的数据不服从相同的分布。下面做出两组收益率的经验分布函数图,如图所示,从图中也可直观地看出分布存在差异,即认为2019年和2020年的数据不服从相同的分布

5、lillietest函数

当总体均值和方差未知时,Lilliefors提出用样本均值x和标准差s代替总体的均值μ和标准差σ,然后使用 Kolmogorov Smirnov检验,这就是Lilliefors检验。lillietest函数用来作 Lilliefors检验,检验样本是否服从指定的分布,这里分布的参数都是未知的,需根据样本做出估计。可用的分布有正态分布、指数分布和极值分布,它们都属于 、位置尺度分布族(分布中包含位置参数和尺度参数),lillietest函数不能用于非位置尺度分布族分布的检验。Lilliefors检验是双侧拟合优度检验,它根据样本经验分布函数和指定分布的分布函数构造检验统计量:KS=max|SCDF(x)-CDF(x)|,SCDF(x)是样本经验分布函数;CDF(x)是指定分布的分布函数。当 Lilliefors公式的检验统计量的观测值大于或等于临界值时,lillietest函数会做出拒绝原假设的推断,其中原假 设表示样本服从指定的分布。

由于h =1,p<0.05,且检验统计量的观测值kstat>检验的临界值critval,所以在显著性水平0.05下,拒绝原假设,即SP500收益率不服从正态分布,由于Lilliefors检验用样本均值x和标准差s代替总体的均值μ和标准差σ,故正态分布的均值为-4.7675e-04,标准差为0.0109。故SP500收益率不服从均值为-4.7675e-04,标准差为0.0109的正态分布。

6、结论分析

以上使用了chi2gof、jbtest、kstest、kstest2、lillietest五种函数的用法,并分别调用这些函数 对SP500指数收益率数据进行了正态性检验,原假设是收益率数据服从数学期望为-4.7675e-04,标准差为0.0109的正态分布。如图所示展示了以上函数的检验结果。
正态性检验的结果(显著性水平为0.05)

函数名 检验结果 检验的p值
chi2gof 拒绝原假设 7.5280e-06
jbtest 拒绝原假设 1.0000e-03
kstest 拒绝原假设 9.6995e-33
kstest2 拒绝原假设 0.0011
lillietest 拒绝原假设 1.0000e-03

如图可以看出,在显著性水平α=0.05下,chi2gof、jbtest、kstest、kstest2、lillietest五个函数对SP500指数收益率序列的检验结果为:都不服从正态分布。即可推断SP500指数收益率序列在0.05的显著性水平下不服从正态分布。

总结

本次实验,完成了对美国标准普尔500指数2010年1月1日至2021年12月30日的数据的收益率描述统计分析以及分布的拟合与检验,通过完成这次实验,让我对matlab关于描述性统计的指标以及运用有了更深刻的认识,以及了解了该使用什么检验方式对数据进行拟合以及检验,最后验证是否满足某一分布,有了这些工作,能更方便我们在之后对美国标准普尔500指数进行预测。

部分代码示例

实验(一):
保存为mat文件代码:


绘图代码:
实验(二):
1、描述性统计量代码:

2、绘制统计图代码:

3、分布的拟合检验

MATLAB 美国标准普尔500指数(sp500)的资产收益率分布的拟合与检验 统计图 拟合检验 描述性统计量分析 matlab相关推荐

  1. 基于pyecharts的Kline以及pandas对美国标准普尔500指数历史数据(SP500)进行数据可视化分析

    基于pyecharts的Kline以及pandas对美国标准普尔500指数历史数据(SP500)进行数据可视化分析 k线图简述 对股票数据的描述,我们最常用的还是k线图,k线图包含四个数据,即开盘价. ...

  2. R语言标准普尔500指数Garch(1,1)模型

     一.例3.3 标准普尔500指数的月超额收益率,从1926年开始,共792个观察值,如图所示.记rt为超额收益率,rt的样本ACF和rt2的样本PACF .在间隔为1,3时有少许序列相关性,但主 ...

  3. Python算法练习(五)// 算法:KMeans,数据集:标准普尔500指数

    本练习利用KMeans算法对标准普尔500指数的股票进行聚类,为进一步投资提供决策参考.该数据集有2个特征,借助散点图明显看出股票可以分为4类.建立模型后,通过肘部法和轮廓系数得到最佳的簇数为4.最后 ...

  4. 特斯拉入选标准普尔500指数,与苹果、微软为同重量级企业

    特斯拉将被添加到标准普尔500指数中,这是一个里程碑,它将扩大其投资者基础,并将电动汽车制造商与苹果,伯克希尔·哈撒韦和微软等重量级公司置于同一公司. 标普道琼斯指数周一下午宣布了这一消息,该股在盘后 ...

  5. R语言GARCH建模常用软件包比较、拟合标准普尔SP 500指数波动率时间序列和预测可视化...

    原文链接:http://tecdat.cn/?p=24441 我们研究波动聚集,以及使用单变量 GARCH(1,1) 模型对其进行建模. 波动聚集 波动聚集--存在相对平稳时期和高波动时期的现象--是 ...

  6. R语言量化:合成波动率指数移动平均策略分析标准普尔500波动率指数(VIX)

    最近我们被客户要求撰写关于量化策略的研究报告,包括一些图形和统计输出. To 本文目标是创建合成波动率指数,1)当应用于标准普尔500指数时,尽可能地反映VIX指数:2)完全依靠价格作为输入,因此它可 ...

  7. 标普500指数抬高市值门槛,未来该指数“科技含量”要大增?

    年底将至,美股三大股指的标配500迎来各种利好消息. 12月8日,华尔街投行开始对标普500指数明年的走势做出展望,而就截至目前为止作出了此类展望的8大投行而言,所有投行都预计该指数还将继续上涨.其中 ...

  8. python——标准普尔500预测

    题目描述 标准普尔500指数是一种股市指数,包含500家大公司的股票信息.标准普尔500指数是股市的重要指标之一,代表了整体市场的表现."StandardPoors500-week-2014 ...

  9. Matlab正态分布、历史模拟法、加权移动平均线 EWMA估计风险价值VaR和回测标准普尔指数 SP500时间序列...

    原文链接:http://tecdat.cn/?p=24480 此示例说明如何使用三种方法估计风险价值 (VaR) 并执行 VaR 回测分析.这三种方法是:(点击文末"阅读原文"获取 ...

最新文章

  1. 比特币和以太坊本质有什么区别?
  2. 远程桌面连接“发生身份验证错误。 无法连接到本地安全机构”解决方法
  3. 中断处理程序上半部和下半部
  4. ProtoBuf在使用protoc进行编译时提示: Required fields are not allowed in proto3
  5. Redis高频面试笔记:mysql8.0新特性
  6. int 取值范围_一定范围内的随机数
  7. 移除List中的元素,你的姿势对了吗?
  8. 财务管理属于计算机网络,浅谈如何应用计算机网络进行财务管理
  9. json同一个参数不同类型_js基础之变量类型
  10. bat文件获取当前时间并格式化输出
  11. Baumer相机Error Codes
  12. Mac OSX安装MongoDB
  13. 调和级数 java,再探π^2/6
  14. android11 动态设置屏幕旋转方向
  15. Godaddy SSL证书解析到阿里云后配置nginx服务器https
  16. 2023年全国最新工会考试精选真题及答案33
  17. 素数p阶群乘法循环群啥意思_如何证明素数阶群都是abel群?
  18. python爬取携程网航班机票信息并存储到数据库中,2020年最新版本
  19. UDS-下载示例解读
  20. 虚拟服务器如何接显示器,如何来实现一台主机带动六台显示器

热门文章

  1. 在Vue中将文字以语音进行播报
  2. JPA的CRITICAL API
  3. Arduino RGB-LED灯
  4. 【按键你不知道的那些事】简单几句话实现按键按下下、长按、抬起、单击、双击动作
  5. 2020年程序员节杂记:老骥明知桑榆晚,不用扬鞭自奋蹄
  6. android顶部微信搜索,微信顶部栏有两个搜索栏
  7. iOS开发之网络编程SocKet
  8. jquery回弹_jQuery实现导航回弹效果
  9. android常驻型广播,Android 常驻广播和非常驻广播
  10. python技能排名_Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计