如果一个PortfolioCVaR
对象被销毁时,请记住将现有对象传递到PortfolioCVaR
对象,否则它将创建一个新对象。看到创建PortfolioCVaR对象获取详细信息。
如果您遇到矩阵不兼容或“不符合”错误,则工具中的数据表示遵循中描述的一组特定基本规则约定数据的表示。
如果'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'
解算器,其中用于切割平面达到迭代的最大数目的问题。
如果'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);
estimateBounds
检查你的投资组合设置和使用checkFeasibility
确保你的初始投资组合是可行的,如果不可行,你有足够的周转从你的初始投资组合到投资组合集合。
提示
要纠正这个问题,试着用更大的营业额值来解决你的问题,然后逐渐降低到你想要的值。
如果你获得有效的投资组合,似乎并不合理,这可能发生,如果你忘了设置特定的约束或设置不正确的约束。例如,如果你允许投资组合的权重落在两者之间0
和1
并且不设定预算约束,你可以得到100%的资金投入在每一个资产组合。虽然它可能是防不胜防,做的最好的事情就是查看已设定的显示限制PortfolioCVaR
目的。如果你的投资组合,100%投资于每个资产,您可以查看对象的显示,并很快看到没有预算约束设置。此外,您还可以使用estimateBounds
和checkFeasibility
确定你的投资组合集的边界是否有意义,并确定你获得的投资组合相对于你的投资组合集的独立公式是否可行。
checkFeasibility
|estimateScenarioMoments
|PortfolioCVaR