計算

考慮投資組合再平衡的計算器?

  • March 12, 2019

我正在尋找一個在使用歷史數據估計總回報時考慮重新平衡的計算器。

例如,我會在計算器中輸入以下內容:

  • 我有 10,000 美元的初始投資。
  • 我將 50% 投入基金 A。
  • 我將 50% 投入基金 B。
  • 我每年都會重新平衡。
  • 從 1990 年開始。

然後計算器將使用兩個基金自 1990 年至今的實際表現數據輸出以下內容:

  • 您在 2015 年的投資組合總價值將是 X 美元。

有人知道這樣的計算器嗎?

我的答案是 Microsoft Excel。

Google“VBA for dummies”(認真地)並找出您的經紀公司是否提供“API”。通過對編碼的簡要了解,您可以獲得一個實時連接到您的經紀人數據流的電子表格。

假設您有一個電子表格,其中前兩列(單元格 a1 和 b1)中的每一列都包含 1990 年的值。也許這個公式可能是第三列,它會告訴你買多少或賣多少來重新平衡它們。

=((a1+b1)/2)-a1

然後迭代重新平衡,將 a2 和 b2 設置為=C1並將公式拖動到第 25 行,每年一行。它可能會比這多一點工作,但你明白了。

R 有非常好的軟體包,可以讓你計算重新平衡的投資組合的回報。該包稱為:PerformanceAnalytics(參見: http: //www.inside-r.org/packages/cran/PerformanceAnalytics/docs/Return.portfolio)。

我很快為你寫了一個小腳本,讓你可以做你想做的事。

程式碼:

startAmount <- 10000
library(PerformanceAnalytics)
#a small function to ensure that the data is of the correct type for the package to work
cleanData <- function(df) {
 if(ncol(df) > 0) {
   df <- df[,-1]
   df['Date'] <- as.Date(df[['Date']], format = '%Y-%m-%d')
   #set all the data to numeric data.
   #the first column is the date.
   cols <- c(2:ncol(df))
   df[,cols] <- lapply(df[,cols],function(x) as.numeric(as.character(x)));
   df <- xts(df[,-1], order.by=df[,1])
   return(df)
 } else {
   return("Error; the data.frame does not have any columns.")
 }
}
# use csv2 if you use use a comma as decimal point and a semicolon as field separator
# enter the path to your file where it says: portfolio.csv
yourPortfolio <- cleanData(read.csv('portfolio.csv'))
# the frequency with which you want to rebalance your portfolio is set to yearly. You could also set this to daily, weekly or monthly.
vectorReturns <- Return.portfolio(yourPortfolio, rebalance_on = c(NA, "years"))
dollarAmount <- startAmount*prod(1+vectorReturns)
print(paste("Your portfolio total value in 2015 would be ", dollarAmount, " amount of dollars.", sep = ""))

預設情況下,投資組合會重新平衡為等權重的投資組合。也可以使用自定義權重重新平衡您的投資組合。請參閱有關如何執行此操作的文件。

為了使此程式碼正常工作,您需要將您的數據作為回報條款。您可以在 Excel 中輕鬆完成此操作。確保您在 excel 中的數據如下所示:

            option 1     option 2
2003-10-30 -0.002014099 -0.002014099
2003-10-31 -0.002018163 -0.002018163
2003-11-03 -0.029322548 -0.022605170
2003-11-04 -0.032291667 -0.032128514
2003-11-05  0.019375673  0.017634855

比將您的數據導出到 CSV 文件。

注意:在執行程式碼之前,請確保您已安裝包 PerformanceAnalytics。您可以按如下方式執行此操作:

install.packages("PerformanceAnalytics")

如果您對上述內容有任何疑問,請告訴我。

引用自:https://money.stackexchange.com/questions/46034