分析滬深300指數(shù)基金定投日對(duì)收益的影響

之前分享過(guò)選擇基金投資,最好是選擇股票型的指數(shù)基金,而且是采用不定期不定額的投資方式,那么針對(duì)沒(méi)有空閑時(shí)間的上班族,如果選擇每周定投、每?jī)芍芏ㄍ?,選擇不同的定投日對(duì)收益有什么影響呢?
對(duì)這個(gè)非常的好奇,所以上網(wǎng)抓取了大成滬深300指數(shù)基金和工銀滬深300指數(shù)基金從成立以來(lái)的歷史數(shù)據(jù),主要是分析每個(gè)交易日中,基金上漲的概率,通過(guò)這個(gè)結(jié)果再探討假設(shè)每周一、周二、周三、周四、周五定投,收益率各是多少。

一、大成滬深300指數(shù)基金
1、網(wǎng)頁(yè)抓取數(shù)據(jù)&數(shù)據(jù)整理
##從網(wǎng)頁(yè)上抓取數(shù)據(jù)
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) #確定網(wǎng)頁(yè)地址,通過(guò)網(wǎng)頁(yè)地址分析網(wǎng)頁(yè)表格
sapply(tbls,nrow) ##第1個(gè)表格是需要的表格
fund_data <- readHTMLTable(url,which=1)
datapath=paste("F:/大成滬深300/fund_data",i,".csv",sep="")
print(write.csv(fund_data,file = datapath))
}

總共抓取了44個(gè)文件,再將這44個(gè)文件匯總到一個(gè)文件中:

##將44個(gè)文件內(nèi)的數(shù)據(jù)整合到一個(gè)文件夾中
setwd("F:/") 
a = list.files("大成滬深300指數(shù)") 
dir = paste("./大成滬深300指數(shù)/",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指數(shù)/fund_data.csv",row.names=F)

到這里,抓取歷史數(shù)據(jù)就結(jié)束了。

2、數(shù)據(jù)處理
fund_data <- read_excel("F:/大成滬深300指數(shù)/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
##按日期進(jìn)行排序。
library(dplyr)
fund_data <- arrange(fund_data,desc(date))
fund_data
##按照days分組.
days_funddata <- group_by(fund_data,days)
days_funddata##數(shù)據(jù)計(jì)算,用summarise()函數(shù)
days_funddata <- summarise(days_funddata,count=n())
days_funddata

得到的結(jié)果是分成了7組,我覺(jué)得挺奇怪的,就計(jì)算了一下每個(gè)組的類(lèi)別,得到以下結(jié)果:


周六、周日各有4天和2天的交易日,難道之前還有周末也進(jìn)行交易了?
接著,開(kāi)始篩選出各個(gè)交易日上漲的數(shù)據(jù),以及上漲的次數(shù),同時(shí)計(jì)算上漲的概率:

##自定義函數(shù)計(jì)算每天增長(zhǎng)率大于0的數(shù)據(jù)。
  days_data <- function(n){
  days_data <- fund_data[fund_data$days == n,]
  days_data <- days_data[days_data$`growth rate` > 0,]
  return(days_data)
}
##周一增長(zhǎng)率大于0的數(shù)據(jù)
days_data(1)
##周二增長(zhǎng)率大于0的數(shù)據(jù)
days_data(2)
##周三增長(zhǎng)率大于0的數(shù)據(jù)
days_data(3)
##周四增長(zhǎng)率大于0的數(shù)據(jù)
days_data(4)
##周五增長(zhǎng)率大于0的數(shù)據(jù)
days_data(5)
##重新組合成數(shù)據(jù)
newdays <- c("1","2","3","4","5")      ##周一到周五
newtotal <- c("527","542","544","540","536")   ##周一到周    五總共的交易日
newcount <- c("308","302","287","245","300")   ##周一到    周五總共的交易日上漲次數(shù)
newdata <- data.frame(newdays,newtotal,newcount)
##計(jì)算周一到周五交易日上漲的概率
newcount <- as.numeric(newcount)
newtotal <- as.numeric(newtotal)
rate <- newcount/newtotal
newdata <- cbind(newdata,rate)

結(jié)果如下:

數(shù)據(jù)1

也就是說(shuō),每周定投,不同的交易日對(duì)于大成滬深300指數(shù)基金的收益還是有點(diǎn)影響的,比如說(shuō)周一和周五上漲的概率大些,而周四上漲概率相對(duì)低些,但是,總體概率相差不大。
那么是不是真的如此呢?
接著計(jì)算周一到周五分別的收益率。

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

選擇了2012年1月4日至2017年5月5日的歷史數(shù)據(jù),假設(shè)5月5日將全部份額的基金贖回,計(jì)算收益率。

3.1每周定投計(jì)算過(guò)程如下:
##自定義函數(shù),每周定投1000,計(jì)算從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)  ##計(jì)算每次定投時(shí)購(gòu)買(mǎi)的份額數(shù)
  days_votedata$money <- money                       ##定投的金額
  share <- sum(days_votedata$share)                 ##定投購(gòu)    買(mǎi)的總份額數(shù)
  fundUnit <- 0.9887                                ##2017-05-05的單位凈值
  total_worth <- share*fundUnit                     ##計(jì)算2017-05-05賬面的總額
  total_money <- sum(days_votedata$money)           ##計(jì)算定投的總金額
  total_Purchasefee <- total_money*0.0012           ##計(jì)算申購(gòu)費(fèi)的總金額
  total_Redemptionfee <- total_worth*0.005          ##計(jì)算贖回費(fèi)的總金額
  Actual_income <- total_worth-total_Redemptionfee  ##計(jì)算贖回到賬實(shí)際金額
  income <- Actual_income-total_money               ##計(jì)算定投的收益
  rate_incom <- income/total_money*100                 ##計(jì)算收益率
  startday <- as.Date("2012-01-04")
  endday <- as.Date("2017-05-05")
  days <- as.numeric(endday-startday)               ##計(jì)算投資天數(shù)
  year <- days/360                                  ##計(jì)算投資年數(shù)
  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)

計(jì)算出來(lái)的結(jié)果如下:

數(shù)據(jù)

從結(jié)果中,也可以得出跟剛剛一樣的結(jié)論,無(wú)論是哪天進(jìn)行定投,收益不會(huì)相差很大,如果說(shuō)真的要找出一天的話,在這里顯示周五收益更高一些,所以可以選擇每周五定投大成滬深300指數(shù)基金,同時(shí),也跟上面算出的周一上漲概率更高相呼應(yīng)。當(dāng)然,在這里是不考慮任何的國(guó)家政策影響的走勢(shì)。

3.2每?jī)芍芏ㄍ队?jì)算過(guò)程如下:
##自定義函數(shù),每?jī)芍芏ㄍ?000,計(jì)算從2012年1月2日至2017年5月5日
vote_data <- function(n,money){
  ##選擇子集
  vote_data <- fund_data[1:1298,-(4:5)]
  vote_data
  ##每?jī)芍芏ㄍ锻?000
  vote_data$number <- c(1,2)
  days_votedata <- vote_data[vote_data$days == n &         vote_data$number == 2 ,]   ##n為周幾定投,2為每?jī)芍芏ㄍ?  days_votedata
  unit_worth <- days_votedata$`Unit net worth`
  days_votedata$share <- (money-    money*0.0012)/(unit_worth)  ##計(jì)算每次定投時(shí)購(gòu)買(mǎi)的份額數(shù)
  days_votedata$money <- money                       ##定投的金額
  share <- sum(days_votedata$share)                 ##定投購(gòu)買(mǎi)的總份額數(shù)
  fundUnit <- 0.9887                                ##2017-05-05的單位凈值
  total_worth <- share*fundUnit                     ##計(jì)算2017-05-05賬面的總額
  total_money <- sum(days_votedata$money)           ##計(jì)算定投的總金額
  total_Purchasefee <- total_money*0.0012           ##計(jì)算申購(gòu)費(fèi)的總金額
  total_Redemptionfee <- total_worth*0.005          ##計(jì)算贖回費(fèi)的總金額
  Actual_income <- total_worth-total_Redemptionfee  ##計(jì)算贖回到賬實(shí)際金額
  income <- Actual_income-total_money               ##計(jì)算定投的收益
  rate_incom <- income/total_money*100                 ##計(jì)算收益率
  startday <- as.Date("2012-01-04")
  endday <- as.Date("2017-05-05")
  days <- as.numeric(endday-startday)               ##計(jì)算投資天數(shù)
  year <- days/360                                  ##計(jì)算投資年數(shù)
  year_rate <- rate_incom/year
  return(rate_incom)
}
##每?jī)芍芤欢ㄍ?vote_data(1,1000)
##每?jī)芍芏ㄍ?vote_data(2,1000)
##每?jī)芍苋ㄍ?vote_data(3,1000)
##每?jī)芍芩亩ㄍ?vote_data(4,1000)
##每?jī)芍芪宥ㄍ?vote_data(5,1000)

計(jì)算結(jié)果如下:

數(shù)據(jù)

這里的結(jié)論跟上面的一樣,也是選擇周五定投收益率相對(duì)來(lái)說(shuō)稍微高一點(diǎn)。

二、工銀滬深300指數(shù)基金

工銀滬深300指數(shù)基金的計(jì)算過(guò)程跟大成滬深300指數(shù)一樣,在這里省略計(jì)算過(guò)程,直接得出結(jié)論:

##從網(wǎng)頁(yè)上抓取數(shù)據(jù)
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)  #確定網(wǎng)頁(yè)地址,通過(guò)網(wǎng)頁(yè)地址分析網(wǎng)頁(yè)表格
  sapply(tbls,nrow)       ##第1個(gè)表格是需要的表格
  fund_data <- readHTMLTable(url,which=1)
  datapath=paste("F:/工銀滬深300指數(shù)/fund_data",i,".csv",sep="")
  print(write.csv(fund_data,file = datapath))
}
##將44個(gè)文件內(nèi)的數(shù)據(jù)整合到一個(gè)文件夾中
setwd("F:/")                                                                    
a = list.files("工銀滬深300指數(shù)") 
dir = paste("./工銀滬深300指數(shù)/",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指    數(shù)/fund_data.csv",row.names=F)
##得到所需的文件fund_data
library(readxl)
fund_data <- read_excel("F:/工銀滬深300指數(shù)/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
##按日期進(jìn)行排序。
library(dplyr)
fund_data <- arrange(fund_data,desc(date))
fund_data
##按照days分組.
days_funddata <- group_by(fund_data,days)
days_funddata
##數(shù)據(jù)計(jì)算,用summarise()函數(shù)
days_funddata <- summarise(days_funddata,count=n())
days_funddata
##自定義函數(shù)計(jì)算每天增長(zhǎng)率大于0的數(shù)據(jù)。
days_data <- function(n){
  days_data <- fund_data[fund_data$days == n,]
  days_data <- days_data[days_data$`growth rate` > 0,]
  return(days_data)
}
##周一增長(zhǎng)率大于0的數(shù)據(jù)
days_data(1)
##周二增長(zhǎng)率大于0的數(shù)據(jù)
days_data(2)
##周三增長(zhǎng)率大于0的數(shù)據(jù)
days_data(3)
##周四增長(zhǎng)率大于0的數(shù)據(jù)
days_data(4)
##周五增長(zhǎng)率大于0的數(shù)據(jù)
days_data(5)
##重新組合成數(shù)據(jù)
newdays <- c("1","2","3","4","5")      ##周一到周五
newtotal <- c("382","397","399","397","397")   ##周一到周五總共的交易日
newcount <- c("211","216","203","170","226")   ##周一到周    五總共的交易日上漲次數(shù)
newdata <- data.frame(newdays,newtotal,newcount)
newdata
##計(jì)算周一到周五交易日上漲的概率
newcount <- as.numeric(newcount)
newtotal <- as.numeric(newtotal)
rate <- newcount/newtotal
newdata <- cbind(newdata,rate)
newdata
##自定義函數(shù),每周定投1000,計(jì)算從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)  ##計(jì)算每次定投時(shí)購(gòu)買(mǎi)的份額數(shù)
  days_votedata$money <- money                       ##定投的金額
  share <- sum(days_votedata$share)                 ##定投購(gòu)買(mǎi)的總份額數(shù)
  fundUnit <- 0.9816                                ##2017-05-05的單位凈值
  total_worth <- share*fundUnit                     ##計(jì)算2017-05-05賬面的總額
  total_money <- sum(days_votedata$money)           ##計(jì)算定投的總金額
  total_Purchasefee <- total_money*0.0012           ##計(jì)算申購(gòu)費(fèi)的總金額
  total_Redemptionfee <- total_worth*0.005          ##計(jì)算贖回費(fèi)的總金額
  Actual_income <- total_worth-total_Redemptionfee  ##計(jì)算贖回到賬實(shí)際金額
  income <- Actual_income-total_money               ##計(jì)算定投的收益
  rate_incom <- income/total_money*100                 ##計(jì)算收益率
  startday <- as.Date("2012-01-04")
  endday <- as.Date("2017-05-05")
  days <- as.numeric(endday-startday)               ##計(jì)算投資天數(shù)
  year <- days/360                                  ##計(jì)算投資年數(shù)
  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)

結(jié)果如下:

數(shù)據(jù)

從這個(gè)數(shù)據(jù)也可以得出是周五定投時(shí),收益率更高一些。所以,不考慮任何的政策導(dǎo)致的走勢(shì),可以選擇周五定投工銀滬深300指數(shù)。

總結(jié):
由于大成滬深300指數(shù)基金和工銀滬深300指數(shù)基金都是跟蹤滬深300指數(shù)的,所以滬深300指數(shù)基金的走勢(shì)大致上差異不大,因此,在不考慮任何客觀因素的情況下,我們定投滬深300指數(shù)時(shí),可以考慮周五定投。

疑惑的是,為什么同樣是滬深300指數(shù)的基金,兩者的收益會(huì)差這么大呢?經(jīng)過(guò)藍(lán)老師的解惑,原來(lái)是兩個(gè)基金的分紅情況不同,工銀滬深300指數(shù)基金多次分紅,導(dǎo)致基金凈值下降。所以,下一篇模擬一下看看同樣是跟蹤滬深300指數(shù)的基金,收益率是否相差很大。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容