• R语言学习-(金融数据获取和简单的分析)


    利用R语言中的quantmod包和fBasics对股票数据的获取和简要的分析,

    通过获取的数据进行典型图像绘制,使用JB正态性检验来检验是否服从于正态分布。

    前提概要:
    quantmod 包默认是访问 yahoo finance 的数据,其中包括上证和深证的股票数据,还有港股数据。
    上证代码是 ss,深证代码是 sz,港股代码是 hk
    比如茅台:6000519.ss,万科 000002.sz,长江实业 0001.hk
    在R的控制台里使用如下命令:
    > library(quantmod)
    > setSymbolLookup(WK=list(name="000002.sz",src="yahoo"))
    > getSymbols("WK")
    [1] "WK"
    > chartSeries(WK)

    head(WK)#查看头部数据
    tail(WK)#查看尾部数据
    dim(WK)#查看数据的规模

    实例:利用公司BSOFT的股票数据分析
    > install.packages("quantmod",destdir = "D:/soft/R/R_download")#载入quantmod包

    > library(quantmod)
    > library(zoo)
    > library(xts)
    > library(TTR)
    > setSymbolLookup(BSOFT=list(name="300451.sz",src="yahoo"))#查询某股票数据
    > getSymbols("BSOFT")
    [1] "BSOFT"
    > chartSeries(BSOFT)
    > View(BSOFT)
    > tail(BSOFT,10)
    > dim(BSOFT)
    > getSymbols("BSOFT",from="2019-01-01",to="2019-07-01")#获取1-7月份的股票数据

    > chartSeries(BSOFT)
    #计算股票收益率通常需要用到 log(求对数) diff(求差分) 函数
    > BSOFT.Profit= diff(log(BSOFT$`300451.SZ.Adjusted`))
    > chartSeries(BSOFT.Profit,theme = "white") #时序图(K线)

    #股票收益率的密度函数图
    > install.packages("fBasics")
    > install.packages("fBasics",destdir = "D:/soft/R/R_download")

    > library(fBasics)
    > library(timeDate)
    > library(timeSeries)

    #由于 BSOFT.Profit 是通过一阶差分得来的数据, 在第一行有一个空值(NA),需要先删除掉第一行才能继续画图。
    > BSOFT.Pro=na.omit(BSOFT.Profit)
    > de=density(BSOFT.Pro) #获取密度函数
    > range(BSOFT.Pro) #查看数据的取值范围,相当于 c(min(x),max(x))
    [1] -0.11568179 0.06698923
    > x=seq(-.12,.07,.001) #生成一个下界是 -0.12,上界是 .07,时间间隔是 0.001 的数据,取值范围主要由 range 的结果决定
    > plot(de$x,de$y,xlab="x",ylab="density",type="l") #画密度函数图
    > ys=dnorm(x,mean(BSOFT.Pro),stdev(BSOFT.Pro)) #新建一个与 BSOFT.Pro 均值和标准差一致的正态分布函数
    > lines(x,ys,lty=2) #在密度函数图上增加正态分布曲线(图中虚线)

    结论:可以看到某公司股票数据的密度函数有明显的高峰厚尾现象,
    与正态分布有明显的差别,因此用JB检验来检验SINA股票是否符合正态分布的假设。

    ---正态性检验----
    (1)股票收益率的基本统计量

    > basicStats(BSOFT.Pro)
    X300451.SZ.Adjusted
    nobs 114.000000
    NAs 0.000000
    Minimum -0.115682
    Maximum 0.066989
    1. Quartile -0.016940
    3. Quartile 0.017947
    Mean 0.001556
    Median 0.000541
    Sum 0.177419
    SE Mean 0.002750
    LCL Mean -0.003891
    UCL Mean 0.007004
    Variance 0.000862
    Stdev 0.029357
    Skewness -0.356699
    Kurtosis 1.350244

    mean=0.001556,接近于0,也就是说新浪股票收益率具有比较明显的向0集中的趋势。
    Variance=0.000862,接近于0,也就是说新浪股票收益率的离散程度较小,不分散。
    Skewness=0.166731, 明显不等于0,也就是说新浪股票收益率是非对称分布的。
    Kurtosis=1.350244,

    (2)股票收益率的正态性检验
    > normalTest(BSOFT.Pro,method = "jb")

    Title:
    Jarque - Bera Normalality Test

    Test Results:
    STATISTIC:
    X-squared: 12.1626
    P VALUE:
    Asymptotic p Value: 0.002285

    检验统计量 JB=12.1626,p<0.002285<0.05,
    也就是说在5%的显著性水平上拒绝该公司股票收益率服
    从正态分布函数的原假设,即改公司股票收益率不服从正态分布。

    结合 :
    R 语言的 quantmod 和 fBasics 软件包下载股票数据,实现数据的可视化,包括直观的 K 线图、收益率的时序图,以及密度函数图,最终从图形、统计结果以及 JB 检验三个方面来证明了该股票收益数据程非正态分布。
    从数据获取,包的选用和图像绘制,实践中想通过列表来批量获取所有数据失败了,所以做了单股票的分析,面对批量获取数据还需要进一步来实践,检验方法的话借用现成的分析方法,在统计学和金融知识方面还有很大的欠缺。

  • 相关阅读:
    aspnet自定义控件Treeview基本用法
    .net4 wpf App 使用log4net 错误:The type or namespace name 'log4net' could not be found (are you missing a using directive or an assembly reference?)
    asp_UpdatePanel PostBack返回后执行Javascript
    JqueryUI dialog model和asp_UpdatePanel 例子
    Asp.net中使用mshtml
    Windows 2008 R2使用WLAN
    AJAXToolkit_ ModalPopupExtender弹出窗中 使用分页方法
    Ajax.BeginForm MVC3 使用
    WPF错误 Set connectionId threw an exception
    高亮显示当前行
  • 原文地址:https://www.cnblogs.com/tuanz/p/11170640.html
Copyright © 2020-2023  润新知