程式

多期回報表

  • November 22, 2018

為了表現表現,需要一個多時期(或多層次)表。我的意思是一張表格,顯示了自成立以來的過去一個月、季度、年初至今和其他子時期。

所以我想有一種簡單的方法來計算這個,返回任意長度和頻率的輸入。換句話說,輸入可以是 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] 

要選擇其他時段,只需將startend參數設置為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

引用自:https://quant.stackexchange.com/questions/42722