[英]1 period TS lag return (ROC) to mimic stock momentum
我對R還是比較陌生,在該主題上已經閱讀了盡可能多的文章,但似乎找不到其他問題上想要的東西。
我希望使用月度數據使用TTR和ROC計算12個周期的變化率(動量),但我想忽略最近一個月。 換句話說,我正在尋找t-2到t-12(2016年1月(不包括2016年1月)的12個月動量)的ROC。 這是在投資組合構建文獻中計算動量的標准。
我的數據是所有在南非證券交易所(JSE)上市的股票。 日期標題是第一列(即,日期是行中的變量),股票列在隨后的列中。
我知道下面的代碼非常簡單,但是我嘗試了一些操作,但給出了錯誤。 由於我在20年中擁有約250只股票(列),因此不建議為每個觀察值創建新的滯后變量。
x <- Prices.df
x$DATE <- as.Date(x$DATE, format = "%Y/%m/%d")
y <- xts(x[,-1], order.by = x$DATE) library(TTR)
roc <- ROC(y, n = 12, type = "discrete")
任何幫助將非常感激。
只需使用roc
lag
。 以下代碼適用於模擬數據(18個期間和2個資產):
set.seed(123) # to reproduze the same results
x <- data.frame(matrix(rnorm(18*2,100,2),ncol=2))
x$DATE <- seq.Date(as.Date("2000/01/01"),length.out = 18,by="1 month")
x <- x[,c(3,1,2)]
library(TTR)
library(xts)
y <- xts(x[,-1], order.by = x$DATE)
roc <- ROC(y, n = 12, type = "discrete")
cbind(y,lag(roc))
X1 X2 X1.1 X2.1
1999-12-31 98.87905 101.40271 NA NA
2000-01-31 99.53965 99.05442 NA NA
2000-02-29 103.11742 97.86435 NA NA
2000-03-31 100.14102 99.56405 NA NA
2000-04-30 100.25858 97.94799 NA NA
2000-05-31 103.43013 98.54222 NA NA
2000-06-30 100.92183 98.74992 NA NA
2000-07-31 97.46988 96.62661 NA NA
2000-08-31 98.62629 101.67557 NA NA
2000-09-30 99.10868 100.30675 NA NA
2000-10-31 102.44816 97.72373 NA NA
2000-11-30 100.71963 102.50763 NA NA
2000-12-31 100.80154 100.85293 NA NA
2001-01-31 100.22137 99.40986 0.019442887 -0.005421782
2001-02-28 98.88832 101.79025 0.006848733 0.003588329
2001-03-31 103.57383 101.75627 -0.041012460 0.040115718
2001-04-30 100.99570 101.64316 0.034279755 0.022018156
2001-05-31 96.06677 101.37728 0.007352244 0.037725848
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.