分析沪深300指数基金定投日对收益的影响

之前分享过选择基金投资,最好是选择股票型的指数基金,而且是采用不定期不定额的投资方式,那么针对没有空闲时间的上班族,如果选择每周定投、每两周定投,选择不同的定投日对收益有什么影响呢?
对这个非常的好奇,所以上网抓取了大成沪深300指数基金和工银沪深300指数基金从成立以来的历史数据,主要是分析每个交易日中,基金上涨的概率,通过这个结果再探讨假设每周一、周二、周三、周四、周五定投,收益率各是多少。

一、大成沪深300指数基金
1、网页抓取数据&数据整理
##从网页上抓取数据
library("XML")
n <- 0:44
for(i in n){
url_a <-     "http://quotes.money.163.com/fund/jzzs_519300_"
url_b <- ".html?start=2006-03-02&end=2017-05-    05&sort=TDATE&order=desc"
url = paste(url_a,i,url_b,sep="")
tbls <- readHTMLTable(url) #确定网页地址,通过网页地址分析网页表格
sapply(tbls,nrow) ##第1个表格是需要的表格
fund_data <- readHTMLTable(url,which=1)
datapath=paste("F:/大成沪深300/fund_data",i,".csv",sep="")
print(write.csv(fund_data,file = datapath))
}

总共抓取了44个文件,再将这44个文件汇总到一个文件中:

##将44个文件内的数据整合到一个文件夹中
setwd("F:/") 
a = list.files("大成沪深300指数") 
dir = paste("./大成沪深300指数/",a,sep="") 
n = length(dir)
fund_data = read.csv(file = dir[1],header=T,sep=",")
for (i in 2:n){
 new.data = read.csv(file = dir[i], header=T, sep=",")
 fund_data = rbind(fund_data,new.data)
}
write.csv(fund_data,file = "./大成沪深300指数/fund_data.csv",row.names=F)

到这里,抓取历史数据就结束了。

2、数据处理
fund_data <- read_excel("F:/大成沪深300指数/fund_data.xlsx")
View(fund_data)
##重命名
names(fund_data) <- c("date","days","Unit net     worth","Accumulated net worth","growth rate")
##删除多余的一列
fund_data <- fund_data[,-6]
fund_data
##按日期进行排序。
library(dplyr)
fund_data <- arrange(fund_data,desc(date))
fund_data
##按照days分组.
days_funddata <- group_by(fund_data,days)
days_funddata##数据计算,用summarise()函数
days_funddata <- summarise(days_funddata,count=n())
days_funddata

得到的结果是分成了7组,我觉得挺奇怪的,就计算了一下每个组的类别,得到以下结果:


周六、周日各有4天和2天的交易日,难道之前还有周末也进行交易了?
接着,开始筛选出各个交易日上涨的数据,以及上涨的次数,同时计算上涨的概率:

##自定义函数计算每天增长率大于0的数据。
  days_data <- function(n){
  days_data <- fund_data[fund_data$days == n,]
  days_data <- days_data[days_data$`growth rate` > 0,]
  return(days_data)
}
##周一增长率大于0的数据
days_data(1)
##周二增长率大于0的数据
days_data(2)
##周三增长率大于0的数据
days_data(3)
##周四增长率大于0的数据
days_data(4)
##周五增长率大于0的数据
days_data(5)
##重新组合成数据
newdays <- c("1","2","3","4","5")      ##周一到周五
newtotal <- c("527","542","544","540","536")   ##周一到周    五总共的交易日
newcount <- c("308","302","287","245","300")   ##周一到    周五总共的交易日上涨次数
newdata <- data.frame(newdays,newtotal,newcount)
##计算周一到周五交易日上涨的概率
newcount <- as.numeric(newcount)
newtotal <- as.numeric(newtotal)
rate <- newcount/newtotal
newdata <- cbind(newdata,rate)

结果如下:

数据1

也就是说,每周定投,不同的交易日对于大成沪深300指数基金的收益还是有点影响的,比如说周一和周五上涨的概率大些,而周四上涨概率相对低些,但是,总体概率相差不大。
那么是不是真的如此呢?
接着计算周一到周五分别的收益率。

3.定投日为周一到周五的收益率

选择了2012年1月4日至2017年5月5日的历史数据,假设5月5日将全部份额的基金赎回,计算收益率。

3.1每周定投计算过程如下:
##自定义函数,每周定投1000,计算从2012年1月2日至2017年5月5日
 vote_data <- function(n,money){
  ##选择子集
  vote_data <- fund_data[1:1298,-(4:5)]
  vote_data
  ##每周定投1000
  days_votedata <- vote_data[vote_data$days == n,]   ##n为周几定投
  days_votedata
  unit_worth <- days_votedata$`Unit net worth`
  days_votedata$share <- (money-    money*0.0012)/(unit_worth)  ##计算每次定投时购买的份额数
  days_votedata$money <- money                       ##定投的金额
  share <- sum(days_votedata$share)                 ##定投购    买的总份额数
  fundUnit <- 0.9887                                ##2017-05-05的单位净值
  total_worth <- share*fundUnit                     ##计算2017-05-05账面的总额
  total_money <- sum(days_votedata$money)           ##计算定投的总金额
  total_Purchasefee <- total_money*0.0012           ##计算申购费的总金额
  total_Redemptionfee <- total_worth*0.005          ##计算赎回费的总金额
  Actual_income <- total_worth-total_Redemptionfee  ##计算赎回到账实际金额
  income <- Actual_income-total_money               ##计算定投的收益
  rate_incom <- income/total_money*100                 ##计算收益率
  startday <- as.Date("2012-01-04")
  endday <- as.Date("2017-05-05")
  days <- as.numeric(endday-startday)               ##计算投资天数
  year <- days/360                                  ##计算投资年数
  year_rate <- rate_incom/year
  return(rate_incom)
}
##每周一定投
vote_data(1,1000)
##每周二定投
vote_data(2,1000)
##每周三定投
vote_data(3,1000)
##每周四定投
vote_data(4,1000)
##每周五定投
vote_data(5,1000)

计算出来的结果如下:

数据

从结果中,也可以得出跟刚刚一样的结论,无论是哪天进行定投,收益不会相差很大,如果说真的要找出一天的话,在这里显示周五收益更高一些,所以可以选择每周五定投大成沪深300指数基金,同时,也跟上面算出的周一上涨概率更高相呼应。当然,在这里是不考虑任何的国家政策影响的走势。

3.2每两周定投计算过程如下:
##自定义函数,每两周定投1000,计算从2012年1月2日至2017年5月5日
vote_data <- function(n,money){
  ##选择子集
  vote_data <- fund_data[1:1298,-(4:5)]
  vote_data
  ##每两周定投投1000
  vote_data$number <- c(1,2)
  days_votedata <- vote_data[vote_data$days == n &         vote_data$number == 2 ,]   ##n为周几定投,2为每两周定投
  days_votedata
  unit_worth <- days_votedata$`Unit net worth`
  days_votedata$share <- (money-    money*0.0012)/(unit_worth)  ##计算每次定投时购买的份额数
  days_votedata$money <- money                       ##定投的金额
  share <- sum(days_votedata$share)                 ##定投购买的总份额数
  fundUnit <- 0.9887                                ##2017-05-05的单位净值
  total_worth <- share*fundUnit                     ##计算2017-05-05账面的总额
  total_money <- sum(days_votedata$money)           ##计算定投的总金额
  total_Purchasefee <- total_money*0.0012           ##计算申购费的总金额
  total_Redemptionfee <- total_worth*0.005          ##计算赎回费的总金额
  Actual_income <- total_worth-total_Redemptionfee  ##计算赎回到账实际金额
  income <- Actual_income-total_money               ##计算定投的收益
  rate_incom <- income/total_money*100                 ##计算收益率
  startday <- as.Date("2012-01-04")
  endday <- as.Date("2017-05-05")
  days <- as.numeric(endday-startday)               ##计算投资天数
  year <- days/360                                  ##计算投资年数
  year_rate <- rate_incom/year
  return(rate_incom)
}
##每两周一定投
vote_data(1,1000)
##每两周二定投
vote_data(2,1000)
##每两周三定投
vote_data(3,1000)
##每两周四定投
vote_data(4,1000)
##每两周五定投
vote_data(5,1000)

计算结果如下:

数据

这里的结论跟上面的一样,也是选择周五定投收益率相对来说稍微高一点。

二、工银沪深300指数基金

工银沪深300指数基金的计算过程跟大成沪深300指数一样,在这里省略计算过程,直接得出结论:

##从网页上抓取数据
library("XML")
n <- 0:33
for(i in n){
  url_a <- "http://quotes.money.163.com/fund/jzzs_481009_"
  url_b <- ".html?start=2009-02-03&end=2017-05-05&sort=TDATE&order=desc"
  url = paste(url_a,i,url_b,sep="")
  tbls <- readHTMLTable(url)  #确定网页地址,通过网页地址分析网页表格
  sapply(tbls,nrow)       ##第1个表格是需要的表格
  fund_data <- readHTMLTable(url,which=1)
  datapath=paste("F:/工银沪深300指数/fund_data",i,".csv",sep="")
  print(write.csv(fund_data,file = datapath))
}
##将44个文件内的数据整合到一个文件夹中
setwd("F:/")                                                                    
a = list.files("工银沪深300指数") 
dir = paste("./工银沪深300指数/",a,sep="")  
n = length(dir)
fund_data = read.csv(file = dir[1],header=T,sep=",")
for (i in 2:n){
  new.data = read.csv(file = dir[i], header=T, sep=",")
  fund_data = rbind(fund_data,new.data)
}
write.csv(fund_data,file = "./工银沪深300指    数/fund_data.csv",row.names=F)
##得到所需的文件fund_data
library(readxl)
fund_data <- read_excel("F:/工银沪深300指数/fund_data.xlsx")
View(fund_data)
##重命名
names(fund_data) <- c("date","days","Unit net     worth","Accumulated net worth","growth rate")
##删除多余的一列
fund_data <- fund_data[,-6]
fund_data
##按日期进行排序。
library(dplyr)
fund_data <- arrange(fund_data,desc(date))
fund_data
##按照days分组.
days_funddata <- group_by(fund_data,days)
days_funddata
##数据计算,用summarise()函数
days_funddata <- summarise(days_funddata,count=n())
days_funddata
##自定义函数计算每天增长率大于0的数据。
days_data <- function(n){
  days_data <- fund_data[fund_data$days == n,]
  days_data <- days_data[days_data$`growth rate` > 0,]
  return(days_data)
}
##周一增长率大于0的数据
days_data(1)
##周二增长率大于0的数据
days_data(2)
##周三增长率大于0的数据
days_data(3)
##周四增长率大于0的数据
days_data(4)
##周五增长率大于0的数据
days_data(5)
##重新组合成数据
newdays <- c("1","2","3","4","5")      ##周一到周五
newtotal <- c("382","397","399","397","397")   ##周一到周五总共的交易日
newcount <- c("211","216","203","170","226")   ##周一到周    五总共的交易日上涨次数
newdata <- data.frame(newdays,newtotal,newcount)
newdata
##计算周一到周五交易日上涨的概率
newcount <- as.numeric(newcount)
newtotal <- as.numeric(newtotal)
rate <- newcount/newtotal
newdata <- cbind(newdata,rate)
newdata
##自定义函数,每周定投1000,计算从2012年1月2日至2017年5月5日
vote_data <- function(n,money){
  ##选择子集
  vote_data <- fund_data[1:1298,-(4:5)]
  ##每周定投1000
  money <- 1000
  days_votedata <- vote_data[vote_data$days == n,]   ##n为周几定投
  days_votedata
  unit_worth <- days_votedata$`Unit net worth`
  days_votedata$share <- (money-money*0.0012)/(unit_worth)  ##计算每次定投时购买的份额数
  days_votedata$money <- money                       ##定投的金额
  share <- sum(days_votedata$share)                 ##定投购买的总份额数
  fundUnit <- 0.9816                                ##2017-05-05的单位净值
  total_worth <- share*fundUnit                     ##计算2017-05-05账面的总额
  total_money <- sum(days_votedata$money)           ##计算定投的总金额
  total_Purchasefee <- total_money*0.0012           ##计算申购费的总金额
  total_Redemptionfee <- total_worth*0.005          ##计算赎回费的总金额
  Actual_income <- total_worth-total_Redemptionfee  ##计算赎回到账实际金额
  income <- Actual_income-total_money               ##计算定投的收益
  rate_incom <- income/total_money*100                 ##计算收益率
  startday <- as.Date("2012-01-04")
  endday <- as.Date("2017-05-05")
  days <- as.numeric(endday-startday)               ##计算投资天数
  year <- days/360                                  ##计算投资年数
  year_rate <- rate_incom/year
  return(rate_incom)
}
##每周一定投
vote_data(1,1000)
##每周二定投
vote_data(2,1000)
##每周三定投
vote_data(3,1000)
##每周四定投
vote_data(4,1000)
##每周五定投
vote_data(5,1000)

结果如下:

数据

从这个数据也可以得出是周五定投时,收益率更高一些。所以,不考虑任何的政策导致的走势,可以选择周五定投工银沪深300指数。

总结:
由于大成沪深300指数基金和工银沪深300指数基金都是跟踪沪深300指数的,所以沪深300指数基金的走势大致上差异不大,因此,在不考虑任何客观因素的情况下,我们定投沪深300指数时,可以考虑周五定投。

疑惑的是,为什么同样是沪深300指数的基金,两者的收益会差这么大呢?经过蓝老师的解惑,原来是两个基金的分红情况不同,工银沪深300指数基金多次分红,导致基金净值下降。所以,下一篇模拟一下看看同样是跟踪沪深300指数的基金,收益率是否相差很大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 基金 一、什么是基金 1、广义的基金,是指为了某种目的而设立的一笔资金。比如说信托就是一种基金,或者反过来说,基金...
    朱进伟西农阅读 10,242评论 18 212
  • 前几天有小伙伴在群里一直咨询,为什么同样是追踪同一个指数的基金,收益有差别?为什么选择这个指数基金,而不是那个指数...
    smallfen阅读 888评论 1 9
  • 都有哪些渠道能买基金 1、银行 2、基金公司官网 3、第三方理财平台 4、证券公司代销 2、渠道购买流程 银行 1...
    朱进伟西农阅读 13,059评论 2 24
  • 翻看微博时,无意中看到的你。第一眼,还不知道是什么,去搜了一下。然后,关注,官方微博,搜百度贴吧,网友分享等,进一...
    泪尽成陌阅读 231评论 0 0
  • 你有没有被父母误解过?你有没有不信任你的孩子?也许,父母对孩子最大的伤害不是打他骂他,而是不信任他! 其实...
    蓝心老师阅读 150评论 0 0