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

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

实验内容

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

从网上下载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、分布的拟合检验
在这里插入图片描述

  • 10
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无心同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值