1

出于这个问题的目的,我想构建一个数据框或类似的数据框,以便能够“堆叠排名”并对从函数生成的各种指标进行排序。

让我们从Performance Analytics包中举一个例子:

  • 我有 2001 年以来 3 个指数的收盘收益:SPX、纳斯达克 (CCMP) 和 EuroStoxx (SX5E)。
  • 我想为每一个获得 95% 的 1 天 VaR,将它们放入表中,然后将它们从高到低(或从低到高等)排序。

为了说明我的问题,我将使用包table.DownsideRisk中的函数,Performance Analytics而不仅仅是调用VaR().

所以,我可以单独得到这些结果:

                              SPX.cc
Semi Deviation                 0.0095
Gain Deviation                 0.0096
Loss Deviation                 0.0102
Downside Deviation (MAR=210%)  0.0142
Downside Deviation (Rf=0%)     0.0094
Downside Deviation (0%)        0.0094
Maximum Drawdown               0.5678
Historical VaR (95%)          -0.0203
Historical ES (95%)           -0.0317
Modified VaR (95%)            -0.0193
Modified ES (95%)             -0.0273

或者我可以将它们全部放在一个xts对象中,然后运行table.DownsideRisk

                           SPX.cc CCMP.cc SX5E.cc
Semi Deviation                 0.0095  0.0114  0.0111
Gain Deviation                 0.0096  0.0117  0.0114
Loss Deviation                 0.0102  0.0116  0.0113
Downside Deviation (MAR=210%)  0.0142  0.0161  0.0161
Downside Deviation (Rf=0%)     0.0094  0.0113  0.0112
Downside Deviation (0%)        0.0094  0.0113  0.0112
Maximum Drawdown               0.5678  0.6103  0.6219
Historical VaR (95%)          -0.0203 -0.0260 -0.0249
Historical ES (95%)           -0.0317 -0.0370 -0.0372
Modified VaR (95%)            -0.0193 -0.0231 -0.0237
Modified ES (95%)             -0.0273 -0.0293 -0.0330

但是,假设我将单个示例作为更广泛的分析程序的一部分作为lapplyfor循环运行 - 我想做的是从函数Historical VaR (95%)的输出中提取每个数字,因为循环/应用函数在每个上运行元素并将这些提取的值放在表中,然后按照(从低到高)的行对该表进行排序table.DownsideRisk.GlobalEnv()

           Historical VaR (95%)
SPX.ccl    -.0203
SX5E.ccl   -.0249
CCMP.ccl   -.0260

我知道这对于数据框/表格用户来说似乎相当基本,但非常感谢任何帮助。

干杯。

4

1 回答 1

2

我不确定您对 的意图是什么GlobalEnv,但这可能会有所帮助:

swapped = data.frame(t(xts))
ordered = swapped[with(swapped, order(Historical.VaR..95..)),]
result = subset(ordered, select=Historical.VaR..95..)
于 2013-07-25T03:37:50.063 回答