portopt
迁移到Portfolio对象portopt
没有输出参数这个例子展示了如何迁移portopt
没有对Portfolio对象的输出参数。
的基本portopt
功能表示为:
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; portopt(ExpReturn, ExpCovariance, NumPorts);
迁移一个portopt
没有输出参数到Portfolio对象的语法:
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; p = Portfolio; p = setAssetMoments(p, ExpReturn, ExpCovariance); p = setDefaultConstraints(p); plotFrontier(p, NumPorts);
没有输出参数,portopt
绘制有效边界。Portfolio对象具有类似的行为,尽管Portfolio对象写入当前图形窗口,而不是在每次生成图形时创建一个新窗口。
portopt
与输出参数这个例子展示了如何迁移portopt
输出参数到Portfolio对象。
的基本功能有了输出参数portopt
返回投资组合时刻和权重。一旦设置了Portfolio对象,力矩和权重将在单独的步骤中获得。
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; [PortRisk, PortReturn, PortWts] = portopt(ExpReturn, ExpCovariance, NumPorts); display(PortWts);
PortWts = 0.2103 0.2746 0.1157 0.1594 0.2400 0.1744 0.2657 0.1296 0.2193 0.2110 0.1386 0.2567 0.1436 0.2791 0.1821 0.1027 0.2477 0.1575 0.3390 0.1532 0.0668 0.2387 0.1714 0.3988 0.1242 0.0309 0.2298 0.1854 0.4587 0.0953 0.2168 0.1993 0.5209 0.0629 0 0.1791 0.2133 0.5985 1.0000 0.0091 0.0557 0.2183 0.7260 0 0 0 0 0
迁移一个portopt
带有输出参数的语法:
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; p = Portfolio; p = setAssetMoments(p, ExpReturn, ExpCovariance); p = setDefaultConstraints(p); PortWts = estimateFrontier(p, NumPorts); [PortRisk, PortReturn] = estimatePortMoments(p, PortWts); display(PortWts);
PortWts = 0.2103 0.1744 0.1386 0.1027 0.0668 0.0309 0 0 0 0 0 0.2746 0.2657 0.2567 0.2477 0.2387 0.2298 0.2168 0.1791 0.0557 0.1157 0.1296 0.1436 0.1575 0.1714 0.1854 0.1993 0.2133 0.2183 0 0.1594 0.2193 0.2791 0.3390 0.3988 0.4587 0.5209 0.5985 0.7260 1.0000 0.2400 0.2110 0.1821 0.1532 0.1242 0.0953 0.0629 0.0091 0 0
Portfolio对象返回PortWts
投资组合是列向下的,而不是行向下的。投资组合的风险和回报仍以列的形式显示。
portopt
有效投资组合回报范围内的目标回报这个例子展示了如何迁移portopt
目标回报率在portfolio对象的有效投资组合回报率范围内。
portopt
可以获得具有特定目标回报水平的投资组合,但要求目标回报落在有效回报的范围内。Portfolio对象通过在有效边界的末端选择投资组合来处理这个问题。
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; TargetReturn = [ 0.05; 0.06; 0.07; 0.08; 0.09 ]; [PortRisk, PortReturn, PortWts] = portopt(ExpReturn, ExpCovariance, [], TargetReturn); disp(“有效的目标”);disp ([PortReturn TargetReturn]);
有效目标0.0500 0.0500 0.0600 0.0600 0.0700 0.0700 0.0800 0.0800 0.0900 0.0900
迁移一个portopt
在portfolio对象的有效portfolio返回范围内的目标返回语法:
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; TargetReturn = [ 0.05; 0.06; 0.07; 0.08; 0.09 ]; p = Portfolio; p = setAssetMoments(p, ExpReturn, ExpCovariance); p = setDefaultConstraints(p); PortWts = estimateFrontierByReturn(p, TargetReturn); [PortRisk, PortReturn] = estimatePortMoments(p, PortWts); disp(“有效的目标”);disp ([PortReturn TargetReturn]);
有效目标0.0500 0.0500 0.0600 0.0600 0.0700 0.0700 0.0800 0.0800 0.0900 0.0900
portopt
有效投资组合回报范围之外的目标回报这个例子展示了如何迁移portopt
目标回报率超出了portfolio对象的有效投资组合回报率范围。
当目标回报超出有效投资组合回报的范围时,portopt
生成一个错误。Portfolio对象通过在有效边界的末端选择投资组合来有效地处理这个问题。
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; TargetReturn = [ 0.05; 0.06; 0.07; 0.08; 0.09; 0.10 ]; [PortRisk, PortReturn, PortWts] = portopt(ExpReturn, ExpCovariance, [], TargetReturn); disp(“有效的目标”);disp ([PortReturn TargetReturn]);
> In portopt at 85 Error using portopt (line 297)一个或多个请求的返回大于最大可实现的返回值0.093400。
迁移一个portopt
对于portfolio对象的有效portfolio返回范围之外的目标返回的语法:
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; TargetReturn = [ 0.05; 0.06; 0.07; 0.08; 0.09; 0.10 ]; p = Portfolio; p = setAssetMoments(p, ExpReturn, ExpCovariance); p = setDefaultConstraints(p); PortWts = estimateFrontierByReturn(p, TargetReturn); [PortRisk, PortReturn] = estimatePortMoments(p, PortWts); disp(“有效的目标”);disp ([PortReturn TargetReturn]);
警告:一个或多个目标返回值超出了可行范围[0.0427391,0.0934]。将返回与这些值范围的端点相关联的投资组合。>在Portfolio/estimateFrontierByReturn(第106行)有效目标0.0500 0.0500 0.0600 0.0700 0.0700 0.0800 0.0800 0.0900 0.0934 0.1000
portopt
使用portcons
输出ConSet
这个例子展示了如何迁移portopt
当ConSet
输出portcons
是使用portopt
.
portopt
接受输出作为输入portcons
,pcalims
,pcglims
,pcgcomp
.本示例的重点是portcons
.portcons
建立线性约束portopt
在表单中*端口< = b
.在一个矩阵[A, b]
然后分开一个
和b
数组与= ConSet (: 1: end-1);
和b = ConSet(:,结束);
.此外,为了说明带有附加组约束的默认问题,请考虑三个组。资产2、3和4可以构成高达80%的投资组合,资产1和2可以构成高达70%的投资组合,资产3、4和5可以构成高达90%的投资组合。
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; Groups = [ 0 1 1 1 0; 1 1 0 0 0; 0 0 1 1 1 ]; GroupBounds = [ 0, 0.8; 0, 0.7; 0, 0.9 ]; LowerGroup = GroupBounds(:,1); UpperGroup = GroupBounds(:,2); ConSet = portcons(“默认”5,“grouplims”,组,LowerGroup, UpperGroup);[PortRisk, PortReturn, porttwts] = portopt(ExpReturn, ExpCovariance, NumPorts, [], ConSet);disp ([PortRisk PortReturn]);
在当前版本和未来版本中,portopt将不再接受ConSet或varargin参数。他说,这只会解决只做多、完全投资的投资组合的投资组合问题。要解决更普遍的问题,请使用Portfolio对象。有关详细信息,请参阅发布说明,包括进行转换的示例。
迁移portopt
的组合对象ConSet
输出portcons
是使用portopt
:
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; Groups = [ 0 1 1 1 0; 1 1 0 0 0; 0 0 1 1 1 ]; GroupBounds = [ 0, 0.8; 0, 0.7; 0, 0.9 ]; LowerGroup = GroupBounds(:,1); UpperGroup = GroupBounds(:,2); ConSet = portcons(“默认”5,“grouplims”,组,LowerGroup, UpperGroup);= ConSet (: 1: end-1);b = ConSet(:,结束);p =投资组合;p = setAssetMoments(p, ExpReturn, ExpCovariance);p = set不等式(p, A, b);%在这里实现组约束porttwts = estimateFrontier(p, NumPorts);[PortRisk, PortReturn] = estimatePortMoments(p, porttwts);disp ([PortRisk PortReturn]);
0.1288 0.0427 0.1292 0.0465 0.1306 0.0503 0.1328 0.0540 0.1358 0.0578 0.1395 0.0615 0.1440 0.0653 0.1504 0.0690 0.1590 0.0728 0.1806 0.0766
属性将约束直接输入Portfolio对象setInequality
或addInequality
功能。
portcons
,pcalims
,pcglims
,pcgcomp
使用Portfolio对象这个示例展示了如何集成来自的输出pcalims
,pcalims
,pcglims
,或pcgcomp
使用Portfolio对象实现。
portcons
,pcalims
,pcglims
,pcgcomp
设置线性约束portopt
在表单中*端口< = b
.尽管有些函数允许两个输出,但假设输出是一个矩阵ConSet
.进入单独的一个
和b
数组:
= ConSet (: 1: end-1);
b = ConSet(:,结束);
此外,为了说明带有额外组约束的默认问题,考虑三个组:
资产2、3和4可以构成投资组合的80%。
资产1和2可以构成高达70%的投资组合。
资产3,4,5可以构成高达90%的投资组合。
组= [0 1 1 1 0;1 1 0 0 0;0 0 1 1 1];GroupBounds = [0,0.8;]0, 0.7;0, 0.9);
集成ConSet
的输出portcons
使用Portfolio对象实现:
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; Groups = [ 0 1 1 1 0; 1 1 0 0 0; 0 0 1 1 1 ]; GroupBounds = [ 0, 0.8; 0, 0.7; 0, 0.9 ]; LowerGroup = GroupBounds(:,1); UpperGroup = GroupBounds(:,2); ConSet = portcons(“默认”5,“grouplims”,组,LowerGroup, UpperGroup);= ConSet (: 1: end-1);b = ConSet(:,结束);p =投资组合;p = setAssetMoments(p, ExpReturn, ExpCovariance);p = setDefaultConstraints (p);%在这里实现默认约束p = set不等式(p, A, b);%在这里实现组约束porttwts = estimateFrontier(p, NumPorts);[PortRisk, PortReturn] = estimatePortMoments(p, porttwts);disp ([PortRisk PortReturn]);
0.1288 0.0427 0.1292 0.0465 0.1306 0.0503 0.1328 0.0540 0.1358 0.0578 0.1395 0.0615 0.1440 0.0653 0.1504 0.0690 0.1590 0.0728 0.1806 0.0766
的输出积分pcalims
和pcglims
使用Portfolio对象实现:
= [0.0054;0.0531;0.0779;0.0934;0.0130);ExpCovariance = [0.0569, 0.0092, 0.0039, 0.0070, 0.0022;0.0092, 0.0380, 0.0035, 0.0197, 0.0028;0.0039、0.0035、0.0997、0.0100、0.0070;0.0070, 0.0197, 0.0100, 0.0461, 0.0050;0.0022, 0.0028, 0.0070, 0.0050, 0.0573]; NumPorts = 10; Groups = [ 0 1 1 1 0; 1 1 0 0 0; 0 0 1 1 1 ]; GroupBounds = [ 0, 0.8; 0, 0.7; 0, 0.9 ]; LowerGroup = GroupBounds(:,1); UpperGroup = GroupBounds(:,2); AssetMin = [ 0; 0; 0; 0; 0 ]; AssetMax = [ 0.8; 0.8; 0.8; 0.8; 0.8 ]; [Aa, ba] = pcalims(AssetMin, AssetMax); [Ag, bg] = pcglims(Groups, LowerGroup, UpperGroup); p = Portfolio; p = setAssetMoments(p, ExpReturn, ExpCovariance); p = setDefaultConstraints(p);%首先实现默认约束p = addinequal (p, Aa, ba);%在这里实现绑定约束p = addinequal (p, Ag, bg);%在这里实现组约束porttwts = estimateFrontier(p, NumPorts);[PortRisk, PortReturn] = estimatePortMoments(p, porttwts);disp ([PortRisk PortReturn]);
0.1288 0.0427 0.1292 0.0465 0.1306 0.0503 0.1328 0.0540 0.1358 0.0578 0.1395 0.0615 0.1440 0.0653 0.1504 0.0690 0.1590 0.0728 0.1806 0.0766
addInequality
|estimateFrontier
|estimateFrontierByReturn
|estimatePortMoments
|pcalims
|pcgcomp
|pcglims
|portcons
|投资组合
|portopt
|setAssetMoments
|setDefaultConstraints
|setInequality