setBounds
为投资组合设定权重界限
语法
描述
为a的投资组合权重设置界限obj
= setBounds (obj
,下界
)投资组合
,PortfolioCVaR
,或PortfolioMAD
对象。有关使用这些不同对象时各自工作流的详细信息,请参见组合对象的工作流,PortfolioCVaR对象的工作流,PortfolioMAD对象的工作流.
为组合对象设置组合权重的界限,并提供附加选项obj
= setBounds (obj
,下界
,UpperBound
)UpperBound
.
考虑到约束限制下界
而且UpperBound
而且“简单”
BoundType
投资组合中的每一个权重港口
必须满足以下条件:
LowerBound <= Port <= UpperBound
考虑到约束限制下界
而且UpperBound
,“条件”
BoundType
投资组合中的每一个权重港口
必须满足以下条件:
Port = 0或lower - bound <= Port <= UpperBound
例子
为投资组合对象设置绑定约束
假设你有一只平衡基金,其中股票占你投资组合的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
将绑定约束设置为Define“条件”
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
(半连续)约束设置西=0
或0.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);
有条件的条件条件
将绑定约束设置为定义混合BoundTypes
对于一个Portfolio对象
假设你有三种资产组合的资产收益的均值和协方差:
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 <=x
1 < = 0.2;x
2 = 0或0.1 <=x
2 < = 0.5;x
3 = 0或0.1 <=x
3 < = 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);
简单的条件条件
集MinNumAssets
约束条件为一个投资组合
对象
为拥有资产收益均值和协方差值的三种资产组合设置最小基数约束。
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
为一个PortfolioCVaR对象设置绑定约束
假设你有一只平衡基金,其中股票占你投资组合的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
将绑定约束设置为Define“条件”
BoundType
PortfolioCVaR对象的约束
假设你有一只平衡基金,其中股票占你投资组合的50%到75%,债券占你投资组合的25%到50%。若要为具有半连续约束的平衡基金设置约束约束,请使用setBounds
与“条件”
BoundType
限制设置西=0.25
或0.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
为一个PortfolioMAD对象设置绑定约束
假设你有一只平衡基金,其中股票占你投资组合的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
将绑定约束设置为Define“条件”
BoundType
PortfolioMAD对象的约束
假设你有一只平衡基金,其中股票占你投资组合的50%到75%,债券占你投资组合的25%到50%。若要为具有半连续约束的平衡基金设置约束约束,请使用setBounds
与“条件”
BoundType
限制设置西=0.25
或0.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
输入参数
obj
- - - - - -对象组合
对象
对象,指定使用投资组合
,PortfolioCVaR
,或PortfolioMAD
对象。有关创建投资组合对象的更多信息,请参见
数据类型:对象
下界
- - - - - -每个资产的下界权重
标量|向量
的下界权值,指定为标量或向量投资组合
,PortfolioCVaR
,或PortfolioMAD
输入对象(obj
).
请注意
如果任何一
下界
或UpperBound
输入是否为空[]
的对应属性投资组合
,PortfolioCVaR
,或PortfolioMAD
对象被清除并设置为[]
.如果
下界
或UpperBound
都指定为标量和NumAssets
存在或可以计算,然后它们进行标量展开。的默认值。NumAssets
是1
.如果两个
下界
而且UpperBound
存在且它们没有正确排序,则setBounds
函数在必要时切换边界。如果
“条件”
BoundType
是指定的,下界
不能为负值。
数据类型:双
UpperBound
- - - - - -每个资产的上限权重
标量|向量
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:obj = setBounds (p, 0.02,“BoundType”、“条件”);
BoundType
- - - - - -每个资产权重的边界类型
“简单”
(默认)|带值的字符向量“简单”
或“条件”
|字符串值“简单”
或“条件”
|带有值的字符向量的单元格数组“简单”
或“条件”
|带有值的字符串数组“简单”
或“条件”
每个资产权重的边界类型,指定为逗号分隔的对,由“BoundType”
和值为的标量字符向量或字符串“简单”
或“条件”
或者由值为的字符向量组成的单元格数组“简单”
或“条件”
.
“简单”
是下界
< = AssetWeight < =UpperBound
.“条件”
是下界
< = AssetWeight < =UpperBound
or AssetWeight = 0。警告
如果指定绑定范围包含0(使用
“简单”
或“条件”
BoundType
),当你使用setMinMaxNumAssets
指定MinNumAssets
约束,然后使用其中一个估计
函数中,优化器定义分配资产的最小需求是不明确的。在这种情况下,优化器认为权值为零的资产是有效的已分配资产,并继续进行优化,但会警告分配的权值小于MinNumAssets
必需的。有关更多信息,请参见设置'条件' BoundType、MinNumAssets和MaxNumAssets约束的故障处理.
数据类型:字符
|细胞
|字符串
NumAssets
- - - - - -投资组合中的资产数量
1
(默认)|标量数值
投资组合中的资产数量,用逗号分隔的对指定,由“NumAssets”
和一个标量数值。
请注意
NumAssets
的尺寸不能用于更改投资组合
,PortfolioCVaR
,或PortfolioMAD
对象。
如果任何一
下界
或UpperBound
输入是否为空[]
的对应属性投资组合
,PortfolioCVaR
,或PortfolioMAD
对象被清除并设置为[]
.如果
下界
或UpperBound
都指定为标量和NumAssets
存在或可归责,则它们进行标量展开。的默认值。NumAssets
是1
.如果两个
下界
而且UpperBound
存在且它们没有正确排序,则setBounds
函数在必要时切换边界。
数据类型:双
输出参数
obj
-更新的投资组合对象
对象
已更新的投资组合对象,作为投资组合
,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
另请参阅
getBounds
|setMinMaxNumAssets
|setSolverMINLP
|estimateAssetMoments
|estimateFrontier
|estimateFrontierByReturn
|estimateFrontierByRisk
|estimateFrontierLimits
|estimateMaxSharpeRatio
|estimatePortSharpeRatio
|estimatePortMoments
|estimatePortReturn
|estimatePortRisk
主题
- 使用Portfolio对象处理“简单的”绑定约束
- 使用PortfolioCVaR对象处理“简单的”绑定约束
- 使用PortfolioMAD对象处理“简单的”绑定约束
- 使用组合对象使用'条件' BoundType, MinNumAssets和MaxNumAssets约束
- 使用PortfolioCVaR对象使用'条件' BoundType, MinNumAssets和MaxNumAssets约束
- 使用PortfolioMAD对象使用'条件' BoundType, MinNumAssets和MaxNumAssets约束
- 设置'条件' BoundType、MinNumAssets和MaxNumAssets约束的故障处理
- 使用财务工具箱™的投资组合优化示例
- 具有半连续和基数约束的投资组合优化
- 使用组合对象进行优化的组合集
- 使用PortfolioCVaR对象进行优化的投资组合集
- 使用PortfolioMAD对象进行优化的投资组合集
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。