金融统计
本文使用Rstudio完成。由于一些内容是重复的,所以这里只给出了部分结果图(省略的都是完全一样的步骤只是数据不一样)。
数据来源于yahoo财经,因为特殊原因上证380指数无法通过yahoo网站直接获得读取,所以这里用网易163财经获取。
设置工作目录
setwd('/Users/shop250/Desktop/金融统计学')
R包准备
library(zoo)
library(xts)
library(TTR)
library(quantmod)
library(pedquant)
library(timeSeries)
library(tseries)
library(PerformanceAnalytics)
数据获取
上证380:
#data shangzheng380
setSymbolLookup(SZ380 = list(name = "000009.SS")) #shangzheng380
getSymbols("SZ380",src = "yahoo",from = "2015-01-01",to = "2022-09-16")
SZ380 = md_stock(symbol = c('^000009'),
from = "2015-01-01",to = "2022-09-16", source = "163")
pq_plot(SZ380)
输出结果:
> SZ380 = md_stock(symbol=c('^000009'),
+ from="2015-01-01",to="2022-09-16", source="163")
1/1 ^000009
0s
> pq_plot(SZ380)
$`000009.SS`
TableGrob (2 x 1) "arrange": 2 grobs
z cells name grob
p0 1 (1-1,1-1) arrange gtable[layout]
p1 2 (2-2,1-1) arrange gtable[layout]
其他股票数据获取:
#others
#guyuelongshan 600059
setSymbolLookup(GYLS = list(name = "600059.SS"))
getSymbols("GYLS",src = "yahoo",from = "2015-01-01",to = "2022-09-16")
#damingcheng 600094
setSymbolLookup(DMC = list(name = "600094.SS"))
getSymbols("DMC",src = "yahoo",from = "2015-01-01",to = "2022-09-16")
#shengwugufen 600201
setSymbolLookup(SWGF = list(name = "600201.SS"))
getSymbols("SWGF",src = "yahoo",from = "2015-01-01",to = "2022-09-16")
#hakongtiao 600202
setSymbolLookup(HKT = list(name = "600202.SS"))
getSymbols("HKT",src = "yahoo",from = "2015-01-01",to = "2022-09-16")
#guanghuinengyuan 600256
setSymbolLookup(GHNY = list(name = "600256.SS"))
getSymbols("GHNY",src = "yahoo",from = "2015-01-01",to = "2022-09-16")
#hangtianxinxi 600271
setSymbolLookup(HTXX = list(name = "600271.SS"))
getSymbols("HTXX",src = "yahoo",from = "2015-01-01",to = "2022-09-16")
写入文件
write.csv(stocks,file = "stocks1.csv")
绘制个股价格序列图
古越龙山:
chartSeries(GYLS, up.col = 'red', dn.col = 'green', TA = "addVo(); addMACD(); addSMA(n=10)")
大名城:
chartSeries(DMC, up.col = 'red', dn.col = 'green', TA = "addVo(); addMACD(); addSMA(n=10)")
生物股份:
chartSeries(SWGF, up.col = 'red', dn.col = 'green', TA = "addVo(); addMACD(); addSMA(n=10)")
哈空调:
chartSeries(HKT, up.col = 'red', dn.col = 'green', TA = "addVo(); addMACD(); addSMA(n=10)")
广汇能源:
chartSeries(GHNY, up.col = 'red', dn.col = 'green', TA = "addVo(); addMACD(); addSMA(n=10)")
航天信息:
chartSeries(HTXX, up.col = 'red', dn.col = 'green', TA = "addVo(); addMACD(); addSMA(n=10)")
个股的周收益率
古越龙山:
assets <- merge.xts(GYLS,all=FALSE)
assets.w <- to.weekly(assets)
simreturn = CalculateReturns(assets.w$assets.Close, method = c("discrete","log"))
chart.CumReturns(simreturn,main="cumulative return")
大名城:
assets <- merge.xts(DMC,all=FALSE)
assets.w <- to.weekly(assets)
simreturn = CalculateReturns(assets.w$assets.Close, method = c("discrete","log"))
chart.CumReturns(simreturn,main="DMC return")
生物股份:
assets <- merge.xts(SWGF,all=FALSE)
assets.w <- to.weekly(assets)
simreturn = CalculateReturns(assets.w$assets.Close, method = c("discrete","log"))
chart.CumReturns(simreturn,main="SWGF return")
哈空调:
assets <- merge.xts(HKT,all=FALSE)
assets.w <- to.weekly(assets)
simreturn = CalculateReturns(assets.w$assets.Close, method = c("discrete","log"))
chart.CumReturns(simreturn,main="HKT return")
广汇能源:
assets <- merge.xts(GHNY,all=FALSE)
assets.w <- to.weekly(assets)
simreturn = CalculateReturns(assets.w$assets.Close, method = c("discrete","log"))
chart.CumReturns(simreturn,main="GHNY return")
航天信息:
assets <- merge.xts(HTXX,all=FALSE)
assets.w <- to.weekly(assets)
simreturn = CalculateReturns(assets.w$assets.Close, method = c("discrete","log"))
chart.CumReturns(simreturn,main="HTXX return")
等权重收益率与上证380对比
stocks<-merge.xts(GYLS,DMC,SWGF,HKT,GHNY,HTXX)
closeprice = stocks[,c(4,10,16,22,28,34)]
a = dailyReturn(closeprice[,1]) #个股收益
b = dailyReturn(closeprice[,2])
c = dailyReturn(closeprice[,3])
d = dailyReturn(closeprice[,4])
e = dailyReturn(closeprice[,5])
f = dailyReturn(closeprice[,6])
SZ = dailyReturn(SZ380)
AME = (a + b + c + d + e)/6 #等权重收益率
AME
部分结果展示:
绘图:
install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
#收益率绘图
chart.CumReturns(AME,main = "cumulative return total")
chart.CumReturns(a,main = "cumulative return SZ380")
将两图合并:
y <- merge(AME,a,all=T)
chart.CumReturns(y,main="merge")
上图为二者合并的图,其中红色是上证380,黑色是收益率,将两个时间序列图合并后更好观察二者的变化从而进行对比。
可以看出二者的大致趋势相同,而上证指数的波动更小,上证指数多以大盘为主,虽然大盘指数涨跌对市场影响很大,但从图中发现2021上半年六只股票的收益率与上证指数有一定差距。
附录:
部分csv文件内容展示:
个股收盘价汇总: