出于这个问题的目的,我想构建一个数据框或类似的数据框,以便能够“堆叠排名”并对从函数生成的各种指标进行排序。
让我们从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
但是,假设我将单个示例作为更广泛的分析程序的一部分作为lapply
或for
循环运行 - 我想做的是从函数Historical VaR (95%)
的输出中提取每个数字,因为循环/应用函数在每个上运行元素并将这些提取的值放在表中,然后按照(从低到高)的行对该表进行排序table.DownsideRisk
.GlobalEnv()
Historical VaR (95%)
SPX.ccl -.0203
SX5E.ccl -.0249
CCMP.ccl -.0260
我知道这对于数据框/表格用户来说似乎相当基本,但非常感谢任何帮助。
干杯。