在R中调用函数的动态解决方案

在R中调用函数的动态解决方案,r,portfolio,r-portfolioanalytics,R,Portfolio,R Portfolioanalytics,我试图在R中实现一个“动态”解决方案。 首先,我对4种不同的策略进行了投资组合优化:MV、CVaR、熵池和naive 作为下一步,我想计算一些性能度量,比如HHI 我现在的问题是:如何简化代码?如前所述,我得到了4种不同的策略,针对这些策略,我检索了4个不同的数据帧以及相应的优化权重。当然,有一个解决方案可以简化这一点 # call function hhi_MV <- comp_HHI(weights_MV) hhi_CVAR <- comp_HHI(weights_CVAR) h

我试图在R中实现一个“动态”解决方案。 首先,我对4种不同的策略进行了投资组合优化:MV、CVaR、熵池和naive

作为下一步,我想计算一些性能度量,比如HHI

我现在的问题是:如何简化代码?如前所述,我得到了4种不同的策略,针对这些策略,我检索了4个不同的数据帧以及相应的优化权重。当然,有一个解决方案可以简化这一点

# call function
hhi_MV <- comp_HHI(weights_MV)
hhi_CVAR <- comp_HHI(weights_CVAR)
hhi_EP <- comp_HHI(weights_EP)
hhi_naive <- comp_HHI(weights_naive)
调用函数
hhi_MV不清楚您是如何生成权重对象的,但是将相关数据合并到一个列表中会容易得多。比如说

weights <- list(MV=weights_MV, CVAR=weights_CVAR, EP=weights_EP, naive=weights_naive)

最好避免使用存储有数据的变量名。如果希望在其中执行相同操作的相关值,则它们应位于列表中。R使使用列表变得非常容易。尝试动态创建变量名会更加混乱和容易出错,而且会使下游的一切工作变得更加困难。

或者使用
weights Thx@MrFlick创建列表,我得到了你!但是,除了清单上的解决方案之外,还有其他选择吗?因此,对于每种投资组合类型,我会收到4种不同的解决方案。简单地说,4个data.fames分开?我确实编辑了最初的帖子,请看结尾的另一个例子。最后一个问题:见上面!
#### Compute Cumulative Return (can take a while) #####
perf_MV <- comp_perf(r = returns, w = weights_MV, fund = 100, freq = "months")
perf_CVAR <- comp_perf(r = returns, w = weights_CVAR, fund = 100, freq = "months")
perf_EP <- comp_perf(r = returns, w = weights_EP, fund = 100, freq = "months")
perf_naive <- comp_perf(r = returns, w = weights_naive, fund = 100, freq = "months")
perf_* <- comp_perf(r = returns, w = weights_*, fund = 100, freq = "months")
# First compute returns from cumulative returns
return_MV <- monthlyReturn(xts(perf_MV$CumReturn[ ,-1], 
                               order.by = perf_MV$CumReturn[ ,1]))
return_CVAR <- monthlyReturn(xts(perf_CVAR$CumReturn[ ,-1], 
                               order.by = perf_CVAR$CumReturn[ ,1]))
return_EP <- monthlyReturn(xts(perf_EP$CumReturn[ ,-1], 
                               order.by = perf_EP$CumReturn[ ,1]))
return_naive <- monthlyReturn(xts(perf_naive$CumReturn[ ,-1], 
                                  order.by = perf_naive$CumReturn[ ,1]))
weights <- list(MV=weights_MV, CVAR=weights_CVAR, EP=weights_EP, naive=weights_naive)
hh <- lapply(weights, comp_HHI)
perf <- lapply(weights, function(x) comp_perf(r = returns, w = x, 
    fund = 100, freq = "months"))