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 檢驗三個方面來證明了該股票收益數據程非正態分布。
從數據獲取,包的選用和圖像繪制,實踐中想通過列表來批量獲取所有數據失敗了,所以做了單股票的分析,面對批量獲取數據還需要進一步來實踐,檢驗方法的話借用現成的分析方法,在統計學和金融知識方面還有很大的欠缺。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM