故障排除CVaR的投资组合优化结果

PortfolioCVaR对象被摧毁后修改

如果一个PortfolioCVaR对象被销毁时,请记住将现有对象传递到PortfolioCVaR对象,否则它将创建一个新对象。看到创建PortfolioCVaR对象获取详细信息。

矩阵不兼容和“不整合”错误

如果您遇到矩阵不兼容或“不符合”错误,则工具中的数据表示遵循中描述的一组特定基本规则约定数据的表示

CVaR的投资组合优化发出警告“最大迭代”

如果'cuttingplane'解算器显示以下警告:

警告:最大迭代达到。考虑修改求解器选项,或使用fmincon。>在@PortfolioCVaR \私人\在255在@PortfolioCVaR \私人\ cvar_optim_min_risk cvar_cuttingplane_solver在85在PortfolioCVaR.estimateFrontier在69
此警告表明,一些报道的有效投资组合可能不够准确。

这个警告通常与投资组合的有效边界的左下结束。切割面求解可能得到非常接近的解决方案,但可能有太多组合和在附近非常相似的风险及回报,并求解器达到所需的精度之前运行的迭代出来。

要解决此问题,您可以使用setSolver做任何更改的:

  • 增加最大迭代次数('MAXITER')。

  • 放宽停止公差('AbsTol'和/或“RelTol”)。

  • 使用不同的主求解算法('MasterSolverOptions')。

  • 或者,你也可以试试'fmincon'解算器。

当迭代的默认最大数量'cuttingplane'求解器达到时,求解器通常需要更多的迭代来达到默认停止公差所要求的精度。您可能想要结合增加迭代次数(例如,乘以5)和放松停止公差(例如,乘以10或100)。由于CVaR是一个随机优化问题,其解的精度相对于场景样本,因此可以接受更宽松的停止容差。请记住,当您增加迭代次数时,解决时间可能会显著增加。例如,将迭代次数加倍将使解决时间加倍。有时使用不同的主解算器(例如,切换到“内点”如果您使用默认值“单纯”)可以得到'cuttingplane'求解器在不改变最大迭代次数的情况下收敛。

或者,'fmincon'解算器可能比解算器快'cuttingplane'解算器,其中用于切割平面达到迭代的最大数目的问题。

CVaR的投资组合优化与错误“未能解决”消息

如果'cuttingplane'解算器生成以下错误:

错误使用cvar_cuttingplane_solver(线251)无法解决问题。考虑修改求解器选项,或使用fmincon。误差在cvar_optim_by_return(线100)[X,〜,〜,exitflag] = cvar_cuttingplane_solver(...错误在PortfolioCVaR / estimateFrontier(线80)pwgt = cvar_optim_by_return(OBJ中,r(2:端-1),obj.NumAssets,...
此错误意味着主解决程序无法解决其中一个主问题。这种误差可能是由于数值不稳定或其他具体问题的情况。

要解决此问题,您可以使用setSolver做任何更改的:

  • 修改主求解器选项('MasterSolverOptions'),例如,改变算法('算法')或终止公差('TolFun')。

  • 或者,你也可以试试'fmincon'解算器。

缺失数据估计失败

如果资产收益率数据有丢失或值时,simulateNormalScenariosByData与功能“missingdata”标志设置为真正可能会因为太多的迭代或单一的协方差而失败。为了纠正这个问题,考虑一下:

  • 如果你有资产收益率数据没有丢失或值,你可以毫无困难地计算协方差矩阵它可能是奇异的。如果你有失踪或在您的数据值,所支持的缺失数据功能需要您的协方差矩金宝app阵必须是正定的,就是奇异的。

  • simulateNormalScenariosByData为可能不适用于所有问题的缺失数据估计过程使用默认设置。

在这两种情况下,你可能要与任一ECM估计的功能,如分别估计资产回报的时刻ecmnmle或者你自己的功能。

cvar_optim_transform错误

如果您获得优化错误,如:

错误使用cvar_optim_transform(第276行)组合集显示为空或无限制。检查约束。[AI, bI, AE, bE, lB, uB, f0, f, x0] = cvar_optim_transform(obj);
要么
使用cvar_optim_transform(线281)无法获得用于指定的组合组有限下界错误。[AI, bI, AE, bE, lB, uB, f0, f, x0] = cvar_optim_transform(obj);
由于组合优化工具需要一个有界组合一套,如果你的投资组合设置为空,如果非空,无限可能会出现这些错误(和类似的错误)。具体而言,投资组合优化算法要求你的投资组合组至少有一个有限的下限。要解决这些问题,最好的办法是使用验证功能验证CVaR组合问题。具体地说,使用estimateBounds检查你的投资组合设置和使用checkFeasibility确保你的初始投资组合是可行的,如果不可行,你有足够的周转从你的初始投资组合到投资组合集合。

提示

要纠正这个问题,试着用更大的营业额值来解决你的问题,然后逐渐降低到你想要的值。

有效投资组合没有意义

如果你获得有效的投资组合,似乎并不合理,这可能发生,如果你忘了设置特定的约束或设置不正确的约束。例如,如果你允许投资组合的权重落在两者之间01并且不设定预算约束,你可以得到100%的资金投入在每一个资产组合。虽然它可能是防不胜防,做的最好的事情就是查看已设定的显示限制PortfolioCVaR目的。如果你的投资组合,100%投资于每个资产,您可以查看对象的显示,并很快看到没有预算约束设置。此外,您还可以使用estimateBoundscheckFeasibility确定你的投资组合集的边界是否有意义,并确定你获得的投资组合相对于你的投资组合集的独立公式是否可行。

另请参阅

||

相关的例子

更多关于

外部网站