主要内容

setBounds

为投资组合对象设置投资组合权重的界限

描述

例子

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

例子

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

例子

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

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

LowerBound <= Port <= UpperBound

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

Port = 0或LowerBound <= Port <= UpperBound

例子

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

例子

全部折叠

假设你有一只平衡的基金,其中股票占投资组合的50%至75%,债券占投资组合的25%至50%。使用setBounds为平衡基金设定约束条件。注意,这设置了默认值“简单”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 =组合与属性:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [3x1 double] AssetCovar: [3x3 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 3 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [3x1 double] UpperBound: [3x1 double] LowerBudget: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] 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 =组合与属性:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [3x1 double] AssetCovar: [3x3 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 3 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [3x1 double] UpperBound: [3x1 double] LowerBudget: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] 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
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,lb,ub,“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,lb,ub,“BoundType”, (“条件”“条件”]);disp (p.NumAssets);
2
disp (p.LowerBound);
0.5000 - 0.2500
disp (p.UpperBound);
0.7500 - 0.5000

输入参数

全部折叠

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

数据类型:对象

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

请注意

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

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

  • 如果两个下界而且UpperBound存在,但顺序不正确setBounds函数在必要时切换边界。

  • 如果“条件”BoundType,则下界不能为负值。

数据类型:

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

请注意

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

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

  • 如果两个下界而且UpperBound存在,但顺序不正确setBounds函数在必要时切换边界。

  • 如果“条件”BoundType,则UpperBound不能为负值。

数据类型:

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:obj = setBounds(p,0.02,'BoundType','条件');

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

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

  • “条件”下界<= AssetWeight <=UpperBound或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中引入