程式
多期回報表
為了表現表現,需要一個多時期(或多層次)表。我的意思是一張表格,顯示了自成立以來的過去一個月、季度、年初至今和其他子時期。
所以我想有一種簡單的方法來計算這個,返回任意長度和頻率的輸入。換句話說,輸入可以是 2 年數據的每日系列,10 年數據的每月系列等。
這是在 Excel 中完成的一項簡單任務,儘管它可能容易出現公式拼寫錯誤和其他已知缺點。
我正在尋找一個 R 實現。看過 PerformanceAnalytics,它能夠計算自成立以來的年度化或帶有月份的日曆年表。但是,這些功能受到限制,因為日曆表需要月度數據,並且除了自成立以來計運算元期間沒有靈活性。
我知道我可以為此編寫一個自定義函式;然而,這似乎是一種在行業中顯示數據的非常常見的方式,我想已經有一些實現了。
計算固定時期的總回報相當簡單(最後價格除以第一個價格減 1),因此觀察頻率(每小時、每天、每週……)並不重要。但是您需要一個工具來將您的時間序列限制在感興趣的視窗內,例如前兩年。
為此,我建議學習時間序列課程。一個例子,我使用
zoo
. 事實證明,它zoo
附帶了一種方法window
,可以讓您提取指定的時間視窗。從 Yahoo 下載 DAX(德國股市指數)數據:
library("tseries") P <- drop(get.hist.quote("^GDAXI", quote = "Close", retclass = "zoo")) plot(P)
對於計算回報,我將使用包
PMwR
(我維護)。library("PMwR") returns(P, period = "mtd") ## -1.8% [31 Oct 2018 -- 21 Nov 2018] returns(P, period = "ytd") ## -13.0% [29 Dec 2017 -- 21 Nov 2018] ## returns over the previous 2 years returns(window(P, start = Sys.Date()-365*2), period = "itd") ## 4.9% [22 Nov 2016 -- 21 Nov 2018] ## returns over the previous 3 years returns(window(P, start = Sys.Date()-365*3), period = "itd") ## 1.4% [23 Nov 2015 -- 21 Nov 2018]
要選擇其他時段,只需將
start
和end
參數設置為window
。如果你想快速了解一下,你也可以說
summary(as.NAVseries(P), na.rm = TRUE) ## --------------------------------------------------------- ## 02 Jan 1991 ==> 21 Nov 2018 (7189 data points, 133 NAs) ## 1359.43 11244.2 ## --------------------------------------------------------- ## High 13559.60 (23 Jan 2018) ## Low 1317.17 (15 Jan 1991) ## --------------------------------------------------------- ## Return (%) 7.9 (annualised) ## --------------------------------------------------------- ## Max. drawdown (%) 72.7 ## _ peak 8064.97 (07 Mar 2000) ## _ trough 2202.96 (12 Mar 2003) ## _ recovery (20 Jun 2007) ## _ underwater now (%) 17.1 ## --------------------------------------------------------- ## Volatility (%) 20.2 (annualised) ## _ upside 15.0 ## _ downside 13.7 ## --------------------------------------------------------- ## ## Monthly returns ▁▁▂▇█▁▁ ## ## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec YTD ## 1991 4.5 10.1 -3.1 6.0 6.3 -4.9 -0.3 1.9 -2.7 -1.6 -0.6 0.4 16.0 ## 1992 6.9 3.6 -1.6 0.6 4.5 -2.8 -8.3 -4.9 -3.9 1.3 3.7 -0.4 -2.5 ## [ ...... ] ## 2015 9.1 6.6 5.0 -4.3 -0.4 -4.1 3.3 -9.3 -5.8 12.3 4.9 -5.6 9.6 ## 2016 -8.8 -3.1 5.0 0.7 2.2 -5.7 6.8 2.5 -0.8 1.5 -0.2 7.9 6.9 ## 2017 0.5 2.6 4.0 1.0 1.4 -2.3 -1.7 -0.5 6.4 3.1 -1.6 -0.8 12.5 ## 2018 2.1 -5.7 -2.7 4.3 -0.1 -2.4 4.1 -3.4 -0.9 -6.5 -1.8 -13.0