首页 > 解决方案 > 具有部分时间序列集的 tangencyPortfolio 函数

问题描述

我想在我的 R 代码中寻求您的帮助。

由于我想将 Markowitz 方法的投资组合性能与另一种方法进行比较,因此我想构建一个扩展窗口循环。

我正在使用包“fPortfolio”中的函数tangencyPortfolio,并使用我的timeSeries“数据”构建一个循环。这个数据非常大,有 265 列和 359 行。

所以我尝试如下构建循环(对于前 166 个数据点 - > 进行切线优化并获得权重,扩展投资组合并使用所有 359 个数据点再次执行此操作)

SpecTangency = portfolioSpec()
setSolver(SpecTangency) = "solveRquadprog"

weights_tangency = matrix(NA, 193, ncol(Data))
for(i in 1:193){
  tan = tangencyPortfolio(Data[1:(166 + i),], spec=portfolioSpec(), constraints = "LongOnly")
  weights_tangency[i, ] = getWeights(tan)
}

但是,我收到错误:

if (STATUS !=0) {: 参数长度为零时出错

看来,我无法像使用普通数据框一样剪切 timeSeries 数据。

谁能帮我修复代码?

谢谢!

标签: roptimizationportfolio

解决方案


推荐阅读