均值-方差组合优化求解器的选择与控制
均值-方差组合优化的默认解算器是lcprog
,实现了线性互补规划(LCP)算法。虽然lcprog
适用于大多数问题,你可以调整参数来控制算法。或者,均值-方差投资组合优化工具允许您使用的任何变量quadprog
从优化工具箱™软件。比如优化工具箱,它使用interior-point-convex
算法作为默认算法quadprog
,组合优化工具也使用interior-point-convex
算法为默认值。有关详情quadprog
和二次规划算法和选项,见二次规划算法.
使用“lcprog”
而且“quadprog”
修改任一项lcprog
或者具体来说quadprog
作为求解器,使用setSolver
函数设置隐藏属性solverType
而且solverOptions
指定和控制求解器。方法设置这些选项,因为解算器属性是隐藏的投资组合
对象。默认的解算器是lcprog
所以你不需要使用setSolver
指定这个求解器。使用quadprog
,可设置默认值interior-point-convex
算法的quadprog
使用以下代码:
p =投资组合;p = setSolver(p,“quadprog”);显示器(p.solverType)显示器(p.solverOptions)
quadprog options:当前算法(' internal -point-convex')使用的选项:(其他可用算法:'active-set', 'trust- zone -reflective')设置属性:Algorithm: ' internal -point-convex' Display: 'off' OptimalityTolerance: 1.0000 -12默认属性:ConstraintTolerance: 1.0000 -08线性解算法:'auto' MaxIterations: 200 StepTolerance: 1.0000 -12
lcprog
下面的代码:p = setSolver(p,“lcprog”);显示(p.solverType);显示器(p.solverOptions)
lcprog MaxIter: [] TieBreak: [] TolPiv: 5.0000 -08
setSolver
设置与任一求解器关联的默认选项。如果您想指定与给定求解器关联的其他选项,setSolver
在函数调用中接受带有名称-值参数的这些选项。例如,如果你打算使用quadprog
并且想要使用“trust-region-reflective”
算法,称之为setSolver
下面的代码:p =投资组合;p = setSolver(p,“quadprog”,“算法”,“trust-region-reflective”);显示器(p.solverOptions)
quadprog options:当前算法('trust-region-reflective')使用的选项:(其他可用算法:'active-set', ' internal -point-convex')设置属性:算法:'trust-region-reflective'默认属性:显示:'final' FunctionTolerance: '默认依赖于问题' HessianMultiplyFcn: [] MaxIterations: '默认依赖于问题' OptimalityTolerance: '默认依赖于问题' StepTolerance: 2.2204e-14 SubproblemAlgorithm: 'cg' TypicalX: 'ones(numberOfVariables,1)'
此外,如果要指定的任何选项quadprog
这是你通常设置的optimoptions
从优化工具箱,setSolver
接受一个optimoptions
对象作为第二个参数。例如,可以从的默认选项开始quadprog
设定的setSolver
然后把算法改成“trust-region-reflective”
没有显示输出:
p =投资组合;选项= optimoptions(“quadprog”,“算法”,“trust-region-reflective”,“显示”,“关闭”);p = setSolver(p,“quadprog”、选择);显示器(p.solverOptions.Algorithm)显示器(p.solverOptions.Display)
trust-region-reflective掉
使用混合整数非线性规划(MINLP)求解器
混合整数非线性规划(MINLP)求解器,配置使用setSolverMINLP
,使您可以指定用于组合优化的关联求解器选项投资组合
对象。当任意一个或任意组合时,使用MINLP求解器“条件”
BoundType
,MinNumAssets
,或MaxNumAssets
约束是活动的。在这种情况下,您通过添加来制定投资组合问题NumAssets
二进制变量,其中0
表示未投资,和1
是投资。有关使用的更多信息“条件”
BoundType
,请参阅setBounds
.有关指定的更多信息MinNumAssets
而且MaxNumAssets
,请参阅setMinMaxNumAssets
.
当使用估计
函数具有投资组合
对象“条件”
BoundType
,MinNumAssets
,或MaxNumAssets
约束是主动的,自动使用混合整数非线性规划(MINLP)求解器。
组合对象的求解指南
下表提供了使用指南setSolver
而且setSolverMINLP
.
投资组合问题 | 组合功能 | 优化问题的类型 | 主要解决 | 帮助解决者 |
---|---|---|---|---|
没有跟踪错误约束的投资组合 | estimateFrontierByRisk |
针对特定风险水平优化投资组合引入了非线性约束。因此,该问题具有线性目标和线性和非线性约束。 | “fmincon” 使用setSolver |
为 为 |
没有跟踪错误约束的投资组合 | estimateFrontierByReturn |
带有线性约束的二次目标 | “quadprog” 或“lcprog” 使用setSolver |
为 为 |
没有跟踪错误约束的投资组合 | estimateFrontierLimits |
带有线性约束的二次或线性目标 |
为 为 |
不适用 |
没有跟踪错误约束的投资组合 | estimateMaxSharpeRatio |
带有线性约束的二次目标 | “quadprog” 使用setSolver |
因为 |
带有跟踪误差约束的投资组合 | estimateFrontierByRisk |
线性目标与线性和非线性约束 | “fmincon” 使用setSolver |
不适用 |
带有跟踪误差约束的投资组合 | estimateFrontierByReturn |
线性目标与线性和非线性约束 | “fmincon” 使用setSolver |
不适用 |
带有跟踪误差约束的投资组合 | estimateFrontierLimits |
具有线性和非线性约束的二次(最小风险问题)或线性(最大收益问题)目标 | “fmincon” 使用setSolver |
不适用 |
带有跟踪误差约束的投资组合 | estimateMaxSharpeRatio |
带有线性和非线性约束的二次目标 | “fmincon” 使用setSolver |
不适用 |
活跃的投资组合“条件” BoundType ,MinNumAssets ,MaxNumAssets |
estimateFrontierByRisk |
这个问题是通过引入来表述的NumAssets 二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP . |
混合整数非线性规划求解器(MINLP)setSolverMINLP |
“quadprog” 或“fmincon” 时使用。估计 函数将问题简化为NLP。这两个求解器可以通过setSolver . |
活跃的投资组合“条件” BoundType ,MinNumAssets ,MaxNumAssets |
estimateFrontierByReturn |
这个问题是通过引入来表述的NumAssets 二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP . |
混合整数非线性规划求解器(MINLP)setSolverMINLP |
“quadprog” 或“fmincon” 时使用。估计 函数将问题简化为NLP。这两个求解器可以通过setSolver . |
活跃的投资组合“条件” BoundType ,MinNumAssets ,MaxNumAssets |
estimateFrontierLimits |
这个问题是通过引入来表述的NumAssets 二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP . |
混合整数非线性规划求解器(MINLP)setSolverMINLP |
“quadprog” 或“fmincon” 时使用。估计 函数将问题简化为NLP。这两个求解器可以通过setSolver . |
活跃的投资组合“条件” BoundType ,MinNumAssets ,MaxNumAssets |
estimateMaxSharpeRatio |
这个问题是通过引入来表述的NumAssets 二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP . |
混合整数非线性规划求解器(MINLP)setSolverMINLP |
“quadprog” 或“fmincon” 时使用。估计 函数将问题简化为NLP。这两个求解器可以通过setSolver . |
使用投资组合对象的自定义目标问题求解指南
下表提供了使用指南setSolver
而且setSolverMINLP
当使用estimateCustomObjectivePortfolio
.
投资组合问题 | 组合功能 | 优化问题的类型 | 主要解决 | 帮助解决者 |
---|---|---|---|---|
投资组合与自定义线性目标没有跟踪误差约束 | estimateCustomObjectivePortfolio |
带有线性约束的线性目标 | “linprog” 使用setSolver |
不适用 |
投资组合与自定义二次目标没有跟踪误差约束 | estimateCustomObjectivePortfolio |
带有线性约束的二次目标 | “quadprog” 使用setSolver |
不适用 |
投资组合与自定义非线性目标没有跟踪误差约束 | estimateCustomObjectivePortfolio |
带线性约束的非线性目标 |
“fmincon” 使用setSolver |
不适用 |
带有跟踪误差约束的自定义线性目标的投资组合 | estimateCustomObjectivePortfolio |
线性目标与线性和非线性约束 | “fmincon” 使用setSolver |
不适用 |
带有跟踪误差约束的自定义二次目标的投资组合 | estimateCustomObjectivePortfolio |
带有线性和非线性约束的二次目标 | “fmincon” 使用setSolver |
不适用 |
带有跟踪误差约束的自定义非线性目标组合 | estimateCustomObjectivePortfolio |
带有线性和非线性约束的非线性目标 | “fmincon” 使用setSolver |
不适用 |
活跃的投资组合“条件” BoundType ,MinNumAssets ,或MaxNumAssets 无跟踪误差约束 |
estimateCustomObjectivePortfolio |
这个问题是通过引入来表述的NumAssets 二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP . |
混合整数非线性规划求解器(MINLP)setSolverMINLP |
“intlinprog” 当问题简化为混合整数线性问题时使用。此求解器可以使用setSolverMINLP 和它的名称-值参数IntMasterSolverOptions . |
另请参阅
投资组合
|estimatePortReturn
|estimatePortMoments
|plotFrontier
相关的例子
- 为一个投资组合对象绘制有效边界
- 创建Portfolio对象
- 使用默认值处理组合约束
- 为投资组合对象的整个有效边界估计有效投资组合
- 建立可交易投资组合的后处理结果
- 资产配置案例研究
- 使用财务工具箱™的投资组合优化示例
- 基于半连续和基数约束的投资组合优化
- Black-Litterman组合优化使用金融工具箱™
- 利用因子模型优化投资组合
- 利用社会绩效衡量的投资组合优化
- 使用自定义目标使投资组合多样化