组约束是可选的线性约束,它将资产分组在一起并强制组权重的界限(参见组约束).尽管约束是作为一般约束实现的,但通常的惯例是形成一个组矩阵,用布尔指标(或布尔指标)来标识特定组中每个资产的成员真正的
或假
或与1
或0
)表示组矩阵中的每个元素。组约束具有属性GroupMatrix
对于组成员矩阵,LowerGroup
对于群的下界约束,为UpperGroup
对于群的上界约束。
投资组合
函数组约束的属性是通过投资组合
对象。假设你有一个由5种资产组成的投资组合,并希望确保前3种资产占投资组合的比例不超过30%,那么你可以设置组约束:
G = [1 1 1 0 0];p =组合(“GroupMatrix”, G,“UpperGroup”, 0.3);disp (p.NumAssets) disp (p.GroupMatrix) disp (p.UpperGroup)
5 1 1 1 00 0.3000
一组矩阵G
也可以是一个逻辑矩阵,以便下面的代码实现相同的结果。
G =[真真真假假];p =组合(“GroupMatrix”, G,“UpperGroup”, 0.3);disp (p.NumAssets) disp (p.GroupMatrix) disp (p.UpperGroup)
5 1 1 1 00 0.3000
setGroups
和addGroups
功能您还可以使用以下方法设置组约束的属性setGroups
.假设你有一个由5种资产组成的投资组合,并希望确保前三种资产在你的投资组合中所占的比例不超过30%。给定一个投资组合
对象p
,使用setGroups
设置群组约束。
G =[真真真假假];p =投资组合;p = setGroups(p, G, [], 0.3);disp (p.NumAssets) disp (p.GroupMatrix) disp (p.UpperGroup)
5 1 1 1 00 0.3000
在本例中,您将设置LowerGroup
属性为空([]
).
假设您想添加另一个组约束,使奇数资产至少占您投资组合的20%。建立增广群矩阵,并对无约束群界引入无限界或利用addGroups
函数建立组约束。对于本例,为第二个组约束创建另一个组矩阵:
p =投资组合;G =[真真真假假];%组矩阵为第一组约束p = setGroups(p, G, [], 0.3);G =[真假真假];%组矩阵为第二组约束p = addGroups(p, G, 0.2);p.NumAssets (p.GroupMatrix) p.LowerGroup (p.UpperGroup)
5 1 1 1 00 1 0 1 0 1 -Inf 0.2000 0.3000 Inf
addGroups
确定哪些边界是无边界的,以便只需要关注想要设置的约束。
的投资组合
对象和setGroups
和addGroups
对象上实现标量展开LowerGroup
或UpperGroup
属性中基于组矩阵维数的属性GroupMatrix
.假设你有一个由6种资产组成的30种资产组成的宇宙,其中资产1-5、资产6-12、资产13-18、资产19-22、资产23-27和资产28-30构成了6种资产的每一种,你希望每一种资产在你的投资组合中所占的比例从0%降至25%。让下面的组矩阵定义你的组,标量展开定义每个组的公共边界:
p =投资组合;G = blkdiag(真(1、5),真(7),真正的(1,6),真正的(1、4),真正的(1、5),真正的(1、3));p = setGroups(p, G, 0, 0.25);p.NumAssets (p.GroupMatrix) p.LowerGroup (p.UpperGroup)
30列1到16 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0列17到30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0.2500 0.2500 0.2500 0.2500 0.2500 - 0.2500
投资组合
|setDefaultConstraints
|setBounds
|setBudget
|setGroups
|setGroupRatio
|setEquality
|setInequality
|setTurnover
|setOneWayTurnover
|setTrackingPort
|setTrackingError