2017-09-13 1 views
-1

나는 나의 투자 포트폴리오의 수익을 늦게 계산하려고하는 약간의 문제에 봉착했다. Rstudio 블로그에서 권장되는 한 가지 방법이 있습니다.이것은 실제로 포트폴리오의 총 수익을 반환합니까?

이 방법은 PerformanceAnalyticsReturn.portfolio 함수를 사용하며 포트폴리오의 '달러 증가'를 보여줍니다. 누구든지이 경험이 있으면 정확한 방법인지 여부에 대한 생각을 듣고 싶습니다.

library(PerformanceAnalytics) 
library(quantmod) 
library(dygraphs) 

symbols <- c("GOOG", "AMZN", "BA", "FB", "AAPL") 
stock.weights <- c(.15, .20, .25, .225, .175) 
getSymbols(symbols, src = 'google', from="2017-01-01") 
#merge closing together 
port.closing <- merge.xts(GOOG[,4], AMZN[,4], BA[,4], FB[,4], AAPL[,4]) 
#change closings to returns 
port.return <- na.omit(Return.calculate(port.closing)) 
#portfolio returns with wealth.index = TRUE to apply to $1 invested - no rebalance 
port.norebal = Return.portfolio(port.return, 
    weights = stock.weights, wealth.index = TRUE) 
#visualise dollar growth 
dygraph(port.norebal) 
#calculating return on portfolio taking the current date and dividing it by investment date 
PortfolioReturn <- as.numeric(tail(port.norebal,1))/as.numeric(head(port.norebal, 1)) 
PortfolioReturn 

그래서, Return.portfolio 기능에 의해 계산 된 내 포트폴리오의 $ 1 성장있어 내가 현재 날짜와 투자 날짜 사이의 증가율을 계산합니다. 이것은 정확하게 포트폴리오의 자본 증가를 보여줍니까?

답변

0

아니요 :에서 2017-01-03으로 시작하면 2017-01-03의 값을 1로 가정하는 색인이 제공됩니다.하지만 실제로는 1을 포함하지 않습니다. 시리즈의 2017-01-03.

포트폴리오 수익률은 as.numeric(tail(port.norebal,1))입니다. as.numeric(head(port.norebal, 1))으로 나눌 경우 포트폴리오의 두 번째 날 이후 수익이 발생합니다 (첫날 이후가 아닌). 즉, 계산에서 2017-01-04의 수익을 버리는 것입니다.

또한 환급 계산에서 1을 빼는 것을 잊지 마십시오. 포트폴리오는 140 %가 아니라 40 %를 반환합니다.

end.price = port.closing["2017-09-13"] 
start.price = port.closing["2017-01-03"] 
mean(as.numeric(end.price)/as.numeric(start.price) - 1) 
:

문제 주위에 내 머리를 정리하기 위해 내가 먼저 원칙에서

stock.weights <- rep(0.2, 5) 

와 그 다음 내가 계산 된 수익을 당신의 stock.weights 라인을 교체하여 포트폴리오의 동일 가중 버전을 계산

이것은 0.382475를 나타내며 이는 as.numeric(tail(port.norebal,1)) - 1과 같습니다.

관련 문제