1

我之前试图问一个类似的问题,但我现在发现它缺少回答它所需的信息,所以我现在尝试制作一个可复制的示例。

我想在股票市场上测试动量理论,因此必须做一些动量投资组合。我每天都有股票的回报率和回报率排名。

require(quantmod)
options(scipen=999)
getSymbols(c("YHOO","GOOG","MSFT","AAPL")) 
data = merge(AAPL[,4], GOOG[,4], MSFT[,4], YHOO[,4])

return = ROC(data)

RankFUN <- function(x){
  r <- as.xts(t(apply(-x, 1, rank, na.last = "keep", ties.method="first"))) #med ties.method = first velger R
  return(r)                                                                 #å gi lavest verdi den først kolonnen
}     

Rank = RankFUN(return)

因此,回报和排名组织如下:

    AAPL.Close    GOOG.Close   MSFT.Close    YHOO.Close
2016-02-22  0.008708287  0.0078871623  0.015890101  0.0369262336
2016-02-23 -0.022864649 -0.0151325292 -0.028317446 -0.0161711157
2016-02-24  0.014780876  0.0053174777  0.003510848  0.0090880533
2016-02-25  0.006844411  0.0088095040  0.014305232  0.0131601959
2016-02-26  0.001549048 -0.0009639685 -0.015474178  0.0003188267
2016-02-29 -0.002272749 -0.0104075344 -0.008220794  0.0132997523

           AAPL.Close GOOG.Close MSFT.Close YHOO.Close
2016-02-22          3          4          2          1
2016-02-23          3          1          4          2
2016-02-24          1          3          4          2
2016-02-25          4          3          1          2
2016-02-26          1          3          4          2
2016-02-29          2          4          3          1

它在这里我遇到问题。我需要能够编写一些代码,使 R 根据时间 t-1 的性能购买 %top 分位数并出售 %bottom,并保持它们直到 t+1,然后重新平衡。是否有任何包或任何东西可以做类似的事情?我看过一些投资组合包,但其中大多数都是针对投资组合优化的。

例如:假设一个策略是您根据 t-1 个月的表现购买股票并每月重新平衡。然后我需要编写一些代码,说明:对于每个 t,给我基于 lag[1] 的顶部分位数 - 底部分位数的输出或类似的东西,输出如下:

           1-month mom 3-month mom
2016-02-22  0.008708287  0.0078871623
2016-02-23 -0.022864649 -0.0151325292
2016-02-24  0.014780876  0.0053174777
2016-02-25  0.006844411  0.0088095040
2016-02-26  0.001549048 -0.0009639685
2016-02-29 -0.002272749 -0.0104075344
4

0 回答 0