2013-07-25 48 views
1

为了这个问题的目的,我想构建一个数据框或类似的能够“堆栈排序”和排序从函数生成的各种指标。存储函数返回表R(quant finance)

让我们从Performance Analytics包的示例:

  • 我从2001年3个指数收盘闭回报:SPX,纳斯达克(CCMP)和EuroStoxx(SX5E)。
  • 我想获得95%1天的风险价值为每个这些,将它们放在一张桌子,然后从高到低(或从低到高等)排序。

为了说明我的问题,我会用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%)数字功能作为循环/应用功能的每个元素上运行,并把这些提取的值在表中.GlobalEnv()然后排序沿的(低到高)的线

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

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

干杯。

+1

我downvoted这个问题,因为看完后我依然不知道您的具体目标是什么,它与性能分析软件包的关系。赏金并不能解决这个问题。 – Roland

+0

罗兰,这不是PA包装;它只是使用PA作为例证,我认为它通常适用于社区。我所要做的就是'返回'一组返回值,并且 - 在返回每组结果时 - 从该组结果中提取特定值,然后将提取的结果放入data.frame/table中我可以在循环完成运行后查看/排序提取的结果。我希望澄清。 –

+0

我也不知道你在努力完成什么,或者这里需要什么。也许澄清这个问题会给你更多的答案 –

回答

2

我不知道你的意图是与GlobalEnv什么,但是这可能会有所帮助:

swapped = data.frame(t(xts)) 
ordered = swapped[with(swapped, order(Historical.VaR..95..)),] 
result = subset(ordered, select=Historical.VaR..95..) 
+0

我认为这适用于证券在xts中* all *的情况下......我的问题更多的是如果您通过安全性返回输出* ...即,在这种情况下是SPX,随后是CCMP,随后是SX5E ...,并且随着每组结果的生成,VaR被提取并放入一个表中,为每个新解析的安全性添加一个新行。 –

+0

你可以使用上面的和'rbind()'结合在一起的数据框。 – Aert

+0

嗯,这仍然太静态;需要在'main'程序取出每个VaR值后动态生成表格。我喜欢你采取的方法 - 它在交互式基础上确实有用 - 但我认为有些东西可以在编程上更好地工作,并且计算效率更高。 –