这里有一个很新的问题,但我一段时间没能找到解决方案:
我有一个交易指标的XTS对象(表示)用于看起来像
的股票数据 A XOM MSFT
2000-11-30 -0.59 0.22 0.10
2000-12-29 0.55 -0.23 0.05
2001-01-30 -0.52 0.09 -0.10
与相应期间具有相同索引的表格返回( return ),看起来像
A XOM MSFT
2000-11-30 -0.15 0.10 0.03
2000-12-29 0.03 -0.05 0.02
2001-01-30 -0.04 0.02 -0.05
我已对指标表进行了排序,并使用以下代码返回列名:
indicate.label <- colnames(indicate)
indicate.rank <- t(apply(indicate, 1, function(x) indicate.label[order(-x)]))
indicate.rank <- xts(indicate.rank, order.by = index(returns))
其中包含按交易指标排名的符号名称表( indication.rank ):
1 2 3
2000-11-30 XOM MSFT A
2000-12-29 A MSFT XOM
2001-01-30 XOM A MSFT
我还希望有一个表格,根据指标等级给出期间回报:
2000-11-30 0.10 0.03 -0.15
2000-12-29 0.03 0.02 -0.05
2001-01-30 0.02 -0.04 -0.05
我无法弄清楚如何为所有行调用正确的符号,或者只是根据指示的顺序对表 return 进行排序。
感谢您提出任何建议。
Trevor J答案 0 :(得分:1)
我对此解决方案并不是特别满意,但它确实有效。
row.rank <- t(apply(indicate, 1, order, decreasing=TRUE))
indicate.rank <- return.rank <- indicate # pre-allocate
for(i in 1:NROW(indicate.rank)) {
indicate.rank[i,] <- colnames(indicate)[row.rank[i,]]
return.rank[i,] <- return[i,row.rank[i,]]
}
如果每个符号的返回值和指示符位于同一个对象中,那么处理此操作可能会更容易,但我不知道这将如何适合您工作流程的其余部分。