出于这个问题的目的,我想构建一个数据框或类似框架,以便能够“堆栈排名”并对从函数生成的各种指标进行排序。
我们来自Performance Analytics
包:
为了说明我的问题,我将使用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
但是,假设我将个别示例作为lapply
或for
循环运行,作为更广泛的分析程序的一部分 - 我想要做的是提取每个{{1}来自Historical VaR (95%)
函数的输出的数字作为循环/应用函数在每个元素上运行,并将这些提取的值放在table.DownsideRisk
的表中,然后对其进行排序表格沿着(从低到高)
.GlobalEnv()
我知道这对于数据框/表用户来说似乎是相当基础,但是非常感谢任何帮助。
干杯。
答案 0 :(得分:2)
我不确定你对GlobalEnv
的意图是什么,但这可能会有所帮助:
swapped = data.frame(t(xts))
ordered = swapped[with(swapped, order(Historical.VaR..95..)),]
result = subset(ordered, select=Historical.VaR..95..)