R语言:医药股票数据分析

一、实验介绍

本篇文章从我国医药行业中选取四只较为典型的股票数据作为背景,使用R语言进行分析。文章主要包括以下几部分内容:

1. 加载相关程序包
2. 获取股票数据
3. 绘制股票k线图
4. 股票对数收益率
5. 绘制布林线指标
6. 计算医药股票的相关性

二、 R语言操作

1. 加载相关程序包

首先我们需要加载一下接下来文章中所要用到的软件包

install.packages("quantmod")
library(quantmod) 
library(zoo)
library(xts)
library(TTR)
install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
install.packages("psych")
library(psych)
install.packages("corrplot")
library(corrplot)
install.packages("fBasics")
library(fBasics)
library(tseries)

2. 获取股票数据

R语言是一个开源软件,我们可以使用 getSymbols 命令来访问和获取Yahoo或者google上的股票数据,默认访问Yahoo。

其中 from=‘2019-01-10’ 和 to='2019-12-03’表示所获取数据的起始时间和终止时间。

600276.ss表示恒瑞医药,如果要读取其他股票数据,需要先查询相应股票的代码

getSymbols("600276.ss",from='2019-01-10',to='2019-12-03')     #恒瑞医药
getSymbols("000538.sz",from='2019-01-10',to='2019-12-03')     #云南白药
getSymbols("300357.sz",from='2019-01-10',to='2019-12-03')     #我武生物
getSymbols("603939.ss",from='2019-01-10',to='2019-12-03')     #益丰药房

获取数据之后,我们查看一下获得的恒瑞医药股票的数据

当数据量较大时,可以先看一下数据的首尾状态和维度信息

1)查看数据的前6行:

head(`600276.SS`)

2)查看数据后6行:

tail(`600276.SS`)

3)查看数据的维度,6 个维度包含:开盘价、最高价、最低价、收盘价、成交量、调整的收盘价。

dim(`600276.SS`)

显示整张数据表:

View(`600276.SS`)

恒瑞医药股票数据表
R语言:医药股票数据分析_第1张图片

3. 绘制股票k线图

通过绘制股票数据的k线图可以对一只股票有一个直观的印象(股票的时序图)。

我们使用 chartSeries 函数来绘制恒瑞医药股票的k线图。这里只画了恒瑞医药股票的k线图,感兴趣的小伙伴可以自己画一下其他的股票。

chartSeries(`600276.SS`,up.col='red',dn.col='green',theme="white") 

R语言:医药股票数据分析_第2张图片
注:k线图只显示该股票的日收盘价和成交量的时序图

为了后续分析方便,将四只股票数据名称进行替换(非必须):

data1<-`600276.SS`
data2<-`000538.SZ`
data3<-`300357.SZ`
data4<-`603939.SS`

4. 股票对数收益率

4.1 计算日频对数收益率

其中log:求对数,diff:求差分,data1$'600276.SS.Adjusted’表示从data1数据中提取 Adjusted 这一列。

rate1<-diff(log(data1$`600276.SS.Adjusted`))

4.2 绘制对数收益率的时序图

由于我们的 rate1 是通过一阶差分得来的数据, 在第一行有一个空值(NA),需要先删除掉第一行才能继续画图。

new_rate1<-na.omit(rate1)

然后绘制对数收益率的时序图

chartSeries(rate1,theme="white")

R语言:医药股票数据分析_第3张图片

4.3 绘制对数收益率的密度函数图

de=density(new_rate1)     #获取密度函数
range(new_rate1)          #查看数据的取值范围,相当于 c(min(x),max(x))
x=seq(3,4.6,0.01)         #生成一个下界是 3,上界是4.6,时间间隔是 0.01 的数据,取值范围由 range 的结果决定
plot(de$x,de$y,xlab='x',ylab='density',type='l')  #画密度函数图
tt=dnorm(x,mean(new_rate1),stdev(new_rate1))      #新建一个与 SINA.Pro 均值和标准差一致的正态分布函数
lines(x,tt,lty=5)         #在密度函数图上增加正态分布曲线(图中虚线)

R语言:医药股票数据分析_第4张图片

5. 布林线指标

布林线线图通过计算股价的标准差及其信赖区间,绘制了远离移动平均线的两个标准差,用于测量股票的波动范围及未来走势。一般认为,当股价跌至线下,就要卖出;如果高于这条线,可以买入。

addBBands(n=20,sd=2,draw = 'bands') 

R语言:医药股票数据分析_第5张图片

6. 计算四种医药股票的相关性

计算股票之间的相关性主要原因是,在买入组合股票时有一个合理的原则:投资多样化。换言之,不要把所有鸡蛋放入同一个篮子里,投资者应该尝试购入关联性不大的股票,可以最大限度的减少风险。

data<-cbind(data1$`600276.SS.Adjusted`,data2$`000538.SZ.Adjusted`,data3$`300357.SZ.Adjusted`,data4$`603939.SS.Adjusted`)
chart.Correlation(data)

R语言:医药股票数据分析_第6张图片

三、实验总结

首先基于网络上现有的医药股票数据,使用quantmod、fBasics等软件包实现股数据的可视化,并绘制相关时序图和密度函数图。然后通过计算股票的对数收益率,对其进行分析,判断购入的风险和回报。并对多只股票进行关联性检验,分析投资者如何进行组合购买股票能够最大限度的提高回报率。想法预设:使用随机游走理论和蒙特卡洛方法对恒瑞医药股票未来一段时间的价格进行预测。

你可能感兴趣的:(数据分析,R语言,r语言,统计学)