利用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 检验三个方面来证明了该股票收益数据程非正态分布。
从数据获取,包的选用和图像绘制,实践中想通过列表来批量获取所有数据失败了,所以做了单股票的分析,面对批量获取数据还需要进一步来实践,检验方法的话借用现成的分析方法,在统计学和金融知识方面还有很大的欠缺。

R语言学习-(金融数据获取和简单的分析)的更多相关文章

  1. R语言实现金融数据的时间序列分析及建模

    R语言实现金融数据的时间序列分析及建模 一 移动平均    移动平均能消除数据中的季节变动和不规则变动.若序列中存在周期变动,则通常以周期为移动平均项数.移动平均法可以通过数据显示出数据长期趋势的变动 ...

  2. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  3. R语言学习路线和常用数据挖掘包(转)

    对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来.当然,这不是最好的学习方式,最好的方式是——看书.目前,市面上介绍R语言的 ...

  4. R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...

  5. R语言学习笔记-机器学习1-3章

    在折腾完爬虫还有一些感兴趣的内容后,我最近在看用R语言进行简单机器学习的知识,主要参考了<机器学习-实用案例解析>这本书. 这本书是目前市面少有的,纯粹以R语言为基础讲解的机器学习知识,书 ...

  6. R语言学习笔记:小试R环境

    买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...

  7. R语言学习 第一篇:变量和向量

    R是向量化的语言,最突出的特点是对向量的运算不需要显式编写循环语句,它会自动地应用于向量的每一个元素.对象是R中存储数据的数据结构,存储在内存中,通过名称或符号访问.对象的名称由大小写字母.数字0-9 ...

  8. R语言学习笔记(二)

    今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...

  9. R语言学习笔记(一)

    1.不同的行业对数据集(即表格)的行和列称谓不同,统计学家称其为观测(observation)和变量(variable): 2.R语言存储数据的结构: ①向量:类似于C语言里的一位数组,执行组合功能的 ...

随机推荐

  1. 一分钟理解Redo Undo

    数据库中有一种特殊的"日志文件"叫 Redo(重做) Undo(撤销),传统意义上的日志文件是记录系统运行状态的,主要用于系统工程师或者程序员排错.而 Reod/Undo 文件是数 ...

  2. MySQL存储引擎入门介绍

    什么是MySQL? MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的. ...

  3. npm包的发布和管理

    npm包管理 npm其实是Node.js的包管理工具(node package manager). 为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScrip ...

  4. springmvc 源码分析(一)-- DisparcherServlet的创建和注册到tomcat

    一. servlet 3.0 的使用 1.1 环境搭建: servlet跟spring没有任何关系,我创建一个servlet可以不依赖spring,现在搭建一个纯的servlet项目,并实现简单的类似 ...

  5. Centos-zip压缩-文件或目录-zip unzip

    zip uzip 将一般文件或者目录进行压缩或者解压,默认以 .zip为后缀名 zip 相关选项 -r 递归压缩目录 -d 从压缩包中删除指定文件 -i  压缩指定文件列表文件 -x 压缩排除指定文件 ...

  6. Python-装饰器中保留被装饰函数元数据

     函数的元数据包括哪些呢? 1. 函数名 .__name__ 2. 函数注释 .__doc__ ... 那,如何保留被装饰函数元数据,通过wraps装饰器保留被装饰函数的元数据 import time ...

  7. c#数据处理总结(分组、交并差与递归)

    前言:最近项目比较忙,完全没有时间写下总结笔记,今天抽出时间来写下笔记,供写后台的你来做数据处理后台代码编写的参考. 一.分组 var GroupForList = numberList.GroupB ...

  8. 实验 2:Mininet 实验——拓扑的命令脚本生成

    一.实验目的 掌握 Mininet 的自定义拓扑生成方法:命令行创建.Python 脚本编写 二.实验任务 通过使用命令行创建.Python 脚本编写生成拓扑,熟悉 Mininet 的基本功能. 三. ...

  9. C语言&C++ 中External dependencies

    参考:https://blog.csdn.net/yyyzlf/article/details/4419593 External   Dependencies是说你没有把这个文件加入到这个工程中,但是 ...

  10. 怀疑安装MySQL之后,导致OrCAD Capture、Allegro就打不开

    记得在异常出现之前,只安装了MySQL,之后OrCAD Capture.Allegro就打不开了. Capture.exe - 系统错误 allegro.exe - 系统错误 我尝试在Cadence的 ...