当前位置 博文首页 > 苍林翠竹的博客:R语言金融分析作业(三)

    苍林翠竹的博客:R语言金融分析作业(三)

    作者:[db:作者] 时间:2021-06-30 15:35

    下载、安装quantmod 、fBasics程序包。在线下载新浪股份近三年的交易数据
    1)查看它的维数及前、后各三个观测
    2)计算股票收盘价的对数收益率
    3)画出其密度函数图,在密度函数图上增加一条均值、方差相同的正态分布曲线(虚线)
    4)获得股票收益数据的基本统计量,加以说明。
    5)检验股票收益率的正态性

    install.packages("quantmod")
    

    调用 quantmod 软件包 在导入数据之前需要调用已下载的 quantmod 软件包,需要用到 library() 函数。载入依赖的包

    library(zoo)
    library(xts)
    library(TTR)
    library(quantmod)
    

    我们需要使用 getSymbols 命令来访问网络上的数据,对于金融数据我们可以直接从 Yahoo、google 等网站上直接下载。( SINA 是新浪股票的代码,如果要读取其他股票,需要先查询相应股票的代码)
    P.S. 2018年之后Google不再提供此项服务,因此现在只能使用yahoo

    stock<-data.frame(getSymbols("SINA",src="yahoo",from='2017-04-03',to='2020-04-03',auto.assign=FALSE))
    

    查看数据
    由于数据量太大,不便查看全部数据,但可以查看该股票数据前后一小部分数据。这需要用到 head (默认查看前 6 行数据) tail (默认查看后 6 行数据)函数。
    也可以运用 dim 函数来查看数据的规模。 其中,第一列 756 表示变量中包含的数据的行数,第二列 6 表示变量的维数。

    #1)查看它的维数及前、后各三个观测
    dim(stock)
    head(stock,3)
    tail(stock,3)
    

    在这里插入图片描述
    我们下载的股票数据的 6 个维度包含:开盘价、最高价、最低价、收盘价、成交量、调整的收盘价。研究股票收益率是股票投资分析最基本的操作,股票收益率通常简化为股票价格对数变化来表示,股票价格使用调整后的收盘价。
    计算股票收益率通常需要用到 log(求对数) diff(求差分) 函数。

    #2)计算股票收盘价的对数收益率
    close<-stock[,6]
    rate<-diff(log(close))
    head(rate,3)
    

    股票收益率的密度函数图 在画密度函数图之前我们要先下载载入 fBasics 软件包。操作同下载 quantmod 软件包一致。

    install.packages("fBasics")
    library(fBasics)
    

    然后,开始画密度函数图。

    #3)画出其密度函数图,在密度函数图上增加一条均值、方差相同的正态分布曲线(虚线)
    den<-density(rate)
    range(rate)#查看对数收益率的范围
    x<-seq(-0.081,0.084,0.001)#根据对数收益率的范围决定上下界和间隔
    plot(den$x,den$y,xlab='x',ylab='density',type='l')#画密度函数图
    y<-dnorm(x,mean(rate),stdev(rate))#作均值和标准差与对数收益率相同的正态分布曲线
    lines(x,y,lty=2,col='red')#设定曲线类型为虚线,颜色为红色,并添加到密度函数图上
    

    在这里插入图片描述
    在这里插入图片描述
    我们可以看到新浪股票数据的密度函数有明显的高峰厚尾现象,与正态分布有明显的差别,显然不是正态分布的。

    股票收益率的正态性检验 要获得股票收益数据的基本统计量的值,我们需要使用 fBasics 软件包中的 basicStats 函数。

    #4)获得股票收益数据的基本统计量,加以说明。
    basicStats(rate)
    

    在这里插入图片描述
    根据上图结果,我们可以得到新浪股票收益率的各种基本统计结果:
    nobs(数据个数)、Mean(均值)、Median(中位数)、Sum(总和)、Variance(方差)、Stdev(标准差)、Skewness(偏度)、Kurtosis(峰度)。
    mean=-0.0011,接近于0,也就是说新浪股票收益率具有比较明显的向0集中的趋势。
    Variance=0.0008,接近于0,也就是说新浪股票收益率的离散程度较小,不分散。
    Skewness=-0.2658, 明显不等于0,也就是说新浪股票收益率是非对称分布的。
    Kurtosis=7.3253 ,明显大于3,也就是说新浪股票收益率存在明显的高峰厚尾现象。

    股票收益率的正态性检验
    正态性检验原理

    #5)检验股票收益率的正态性
    normalTest(rate,method='jb') #'jb'代表JB整体性检验
    

    在此处所用的检验为 JB 正态性检验,是 Jarque 和 Bera 两个人将单独的偏度 t 检验和峰度 t 检验融合在一起而建立的正态性检验原理。
    来自百度百科JB统计量词条
    检验结果
    在这里插入图片描述
    p值在规定的显著性水平下(通常为 5% ),拒绝原假设,即不满足正态分布。