【金融统计】R语言获取股票数据,计算资产组合等权重收益率,与上证380指数收益进行比较

金融统计

​ 本文使用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文件内容展示:

请添加图片描述

个股收盘价汇总:

请添加图片描述

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OLSRR

随缘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值