主要内容

setBounds

为投资组合设定权重界限

描述

例子

obj= setBounds (obj下界为a的投资组合权重设置界限投资组合PortfolioCVaR,或PortfolioMAD对象。有关使用这些不同对象时各自工作流的详细信息,请参见组合对象的工作流PortfolioCVaR对象的工作流,PortfolioMAD对象的工作流

例子

obj= setBounds (___名称,值除前面语法中的输入参数外,还使用一个或多个名称-值对参数指定选项,包括BoundType作为“简单”“条件”

例子

obj= setBounds (obj下界UpperBound为组合对象设置组合权重的界限,并提供附加选项UpperBound

考虑到约束限制下界而且UpperBound而且“简单”BoundType投资组合中的每一个权重港口必须满足以下条件:

LowerBound <= Port <= UpperBound

考虑到约束限制下界而且UpperBound,“条件”BoundType投资组合中的每一个权重港口必须满足以下条件:

Port = 0或lower - bound <= Port <= UpperBound

例子

obj= setBounds (___名称,值除前面语法中的输入参数外,还使用一个或多个名称-值对参数指定选项,包括BoundType作为“简单”“条件”

例子

全部折叠

假设你有一只平衡基金,其中股票占你投资组合的50%到75%,债券占你投资组合的25%到50%。使用setBounds为平衡基金设定约束条件。注意,这设置了default“简单”BoundType,强制0.5<=x1<=0.75, 0.25<=x2<=0.5。

Lb = [0.5;0.25);Ub = [0.75;0.5);p =投资组合;p = setBounds(p, lb, ub);disp (p.NumAssets);
2
disp (p.LowerBound);
0.5000 - 0.2500
disp (p.UpperBound);
0.7500 - 0.5000

假设你有三种资产组合的资产收益的均值和协方差:

AssetMean = [0.0101110;0.0043532;0.0137058);AssetCovar = [0.00324625 0.00022983 0.00420395;0.00022983 0.00049937 0.00019247;0.00420395 0.00019247 0.00764097];

以下使用setBounds“条件”BoundType(半连续)约束设置西00.02< =西< =0.5对所有1,...NumAssets

p =组合(“AssetMean”AssetMean,“AssetCovar”, AssetCovar);p = setBounds(p, 0.02, 0.5,“BoundType”“条件”“NumAssets”3)
p = Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [3x1 double] AssetCovar: [3x3 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 3 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] GroupB: [] LowerRatio: [] UpperRatio:[] MinNumAssets: [] MaxNumAssets: [] BoundType: [3x1 categorical]
disp (p.LowerBound);
0.0200 0.0200 0.0200
disp (p.UpperBound);
0.5000 0.5000 0.5000
disp (p.BoundType);
有条件的条件条件

假设你有三种资产组合的资产收益的均值和协方差:

AssetMean = [0.0101110;0.0043532;0.0137058);AssetCovar = [0.00324625 0.00022983 0.00420395;0.00022983 0.00049937 0.00019247;0.00420395 0.00019247 0.00764097];

以下使用setBounds“简单”而且“条件”BoundType约束条件为所有1,...NumAssets

p =组合(“AssetMean”AssetMean,“AssetCovar”, AssetCovar);p = setBounds(p, 0.1, 0.5,“BoundType”, (“简单”“条件”“条件”])
p = Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [3x1 double] AssetCovar: [3x3 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 3 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] GroupB: [] LowerRatio: [] UpperRatio:[] MinNumAssets: [] MaxNumAssets: [] BoundType: [3x1 categorical]
disp (p.LowerBound);
0.1000 0.1000 0.1000
disp (p.UpperBound);
0.5000 0.5000 0.5000
disp (p.BoundType);
简单的条件条件

您可以使用供应下界和上界作为向量,这为每个资产定义了不同的值。以下有-0.8 <=x1 < = 0.2;x2 = 0或0.1 <=x2 < = 0.5;x3 = 0或0.1 <=x3 < = 0.5。请注意,如“简单”BoundType在美国,这些资产可以作为空头或多头持有。然而,当使用“条件”BoundType,资产只能是多头头寸。

p = setBounds (p (-0.8, 0.1, 0.1), (-0.2, 0.5, 0.5),“BoundType”, (“简单”“条件”“条件”]);disp (p.LowerBound);
-0.8000 0.1000 0.1000
disp (p.UpperBound);
-0.2000 0.5000 0.5000
disp (p.BoundType);
简单的条件条件

为拥有资产收益均值和协方差值的三种资产组合设置最小基数约束。

AssetMean = [0.0101110;0.0043532;0.0137058);AssetCovar = [0.00324625 0.00022983 0.00420395;0.00022983 0.00049937 0.00019247;0.00420395 0.00019247 0.00764097];p =组合(“AssetMean”AssetMean,“AssetCovar”, AssetCovar);p = setDefaultConstraints (p);

当与投资组合对象,setMinMaxNumAssets函数使您能够设置投资资产数量的限制。这些限制也称为基数约束。当管理一个投资组合时,通常你想投资至少一定数量的资产。此外,您还应该清楚地定义每个投资资产的权重要求。你可以使用setBounds与一个“条件”BoundType.如果不指定“条件”BoundType,优化器无法理解哪些资产是投资资产,无法制定MinNumAssets约束。

下面的示例指定至少应该投资两项资产,并且投资额应该大于16%。

p = setMinMaxNumAssets(p, 2, []);p = setBounds(p, 0.16,“BoundType”“条件”);

使用estimateFrontierByReturn估计有目标投资回报的最佳投资组合。

pwgt = estimateFrontierByReturn(p,[0.008, 0.01])
pwgt =3×20.2861 0.3967 0.5001 0.2437 0.2138 0.3595

假设你有一只平衡基金,其中股票占你投资组合的50%到75%,债券占你投资组合的25%到50%。为平衡基金设定约束条件。

Lb = [0.5;0.25);Ub = [0.75;0.5);p = PortfolioCVaR;p = setBounds(p, lb, ub);disp (p.NumAssets);
2
disp (p.LowerBound);
0.5000 - 0.2500
disp (p.UpperBound);
0.7500 - 0.5000

假设你有一只平衡基金,其中股票占你投资组合的50%到75%,债券占你投资组合的25%到50%。若要为具有半连续约束的平衡基金设置约束约束,请使用setBounds“条件”BoundType限制设置西0.250.5< =西< =0.5或0.75对所有1,...NumAssets

Lb = [0.5;0.25);Ub = [0.75;0.5);p = PortfolioCVaR;p = setBounds (p,磅,乌兰巴托,“BoundType”, (“条件”“条件”]);disp (p.NumAssets);
2
disp (p.LowerBound);
0.5000 - 0.2500
disp (p.UpperBound);
0.7500 - 0.5000

假设你有一只平衡基金,其中股票占你投资组合的50%到75%,债券占你投资组合的25%到50%。为平衡基金设定约束条件。

Lb = [0.5;0.25);Ub = [0.75;0.5);p = PortfolioMAD;p = setBounds(p, lb, ub);disp (p.NumAssets);
2
disp (p.LowerBound);
0.5000 - 0.2500
disp (p.UpperBound);
0.7500 - 0.5000

假设你有一只平衡基金,其中股票占你投资组合的50%到75%,债券占你投资组合的25%到50%。若要为具有半连续约束的平衡基金设置约束约束,请使用setBounds“条件”BoundType限制设置西0.250.5< =西< =0.5或0.75对所有1,...NumAssets

Lb = [0.5;0.25);Ub = [0.75;0.5);p = PortfolioMAD;p = setBounds (p,磅,乌兰巴托,“BoundType”, (“条件”“条件”]);disp (p.NumAssets);
2
disp (p.LowerBound);
0.5000 - 0.2500
disp (p.UpperBound);
0.7500 - 0.5000

输入参数

全部折叠

对象,指定使用投资组合PortfolioCVaR,或PortfolioMAD对象。有关创建投资组合对象的更多信息,请参见

数据类型:对象

的下界权值,指定为标量或向量投资组合PortfolioCVaR,或PortfolioMAD输入对象(obj).

请注意

  • 如果任何一下界UpperBound输入是否为空[]的对应属性投资组合PortfolioCVaR,或PortfolioMAD对象被清除并设置为[]

  • 如果下界UpperBound都指定为标量和NumAssets存在或可以计算,然后它们进行标量展开。的默认值。NumAssets1

  • 如果两个下界而且UpperBound存在且它们没有正确排序,则setBounds函数在必要时切换边界。

  • 如果“条件”BoundType是指定的,下界不能为负值。

数据类型:

(可选)每个资产的上限权重,指定为a的标量或向量投资组合PortfolioCVaR,或PortfolioMAD输入对象(obj).

请注意

  • 如果任何一下界UpperBound输入是否为空[]的对应属性投资组合PortfolioCVaR,或PortfolioMAD对象被清除并设置为[]

  • 如果下界UpperBound都指定为标量和NumAssets存在或可以计算,然后它们进行标量展开。的默认值。NumAssets1

  • 如果两个下界而且UpperBound存在且它们没有正确排序,则setBounds函数在必要时切换边界。

  • 如果“条件”BoundType是指定的,UpperBound不能为负值。

数据类型:

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:obj = setBounds (p, 0.02,“BoundType”、“条件”);

每个资产权重的边界类型,指定为逗号分隔的对,由“BoundType”和值为的标量字符向量或字符串“简单”“条件”或者由值为的字符向量组成的单元格数组“简单”“条件”

  • “简单”下界< = AssetWeight < =UpperBound

  • “条件”下界< = AssetWeight < =UpperBoundor AssetWeight = 0。

    警告

    如果指定绑定范围包含0(使用“简单”“条件”BoundType),当你使用setMinMaxNumAssets指定MinNumAssets约束,然后使用其中一个估计函数中,优化器定义分配资产的最小需求是不明确的。在这种情况下,优化器认为权值为零的资产是有效的已分配资产,并继续进行优化,但会警告分配的权值小于MinNumAssets必需的。有关更多信息,请参见设置'条件' BoundType、MinNumAssets和MaxNumAssets约束的故障处理

数据类型:字符|细胞|字符串

投资组合中的资产数量,用逗号分隔的对指定,由“NumAssets”和一个标量数值。

请注意

NumAssets的尺寸不能用于更改投资组合PortfolioCVaR,或PortfolioMAD对象。

  • 如果任何一下界UpperBound输入是否为空[]的对应属性投资组合PortfolioCVaR,或PortfolioMAD对象被清除并设置为[]

  • 如果下界UpperBound都指定为标量和NumAssets存在或可归责,则它们进行标量展开。的默认值。NumAssets1

  • 如果两个下界而且UpperBound存在且它们没有正确排序,则setBounds函数在必要时切换边界。

数据类型:

输出参数

全部折叠

已更新的投资组合对象,作为投资组合PortfolioCVaR,或PortfolioMAD对象。

提示

您还可以使用点表示法来设置投资组合权重的边界。

obj = obj。setBounds(LowerBound, UpperBound, Name,Value);

如果任何下界UpperBound,或BoundType输入是否为空[ ],组合对象中的相应属性将被清除并设置为[ ].如果BoundType是清除[ ],绑定类型默认为“简单”

p = setBounds(p, LowerBound, [], 'BoundType',[]);

要将一个投资组合对象重置为一个连续问题,运行以下命令:

p = setMinMaxNumAssets(p, [],[]);p = setBounds(p, p. lowerbound, p. upperbound, 'BoundType', 'Simple');

版本历史

介绍了R2011a

Baidu
map