主要内容

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

这个例子展示了如何迁移portoptConSet输出portcons是使用portopt

portopt接受输出作为输入portconspcalimspcglims,pcgcomp.本示例的重点是portconsportcons建立线性约束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对象setInequalityaddInequality功能。

集成的输出portconspcalimspcglims,pcgcomp使用Portfolio对象

这个示例展示了如何集成来自的输出pcalimspcalimspcglims,或pcgcomp使用Portfolio对象实现。

portconspcalimspcglims,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

的输出积分pcalimspcglims使用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

另请参阅

||||||||||||

相关的例子

更多关于