这个例子计算了由三种不同资产(INTC、XON和RD)组成的投资组合的有效边界,给定一个约束列表。INTC、XON、RD的预期收益分别为:
ExpReturn = [0.1 0.2 0.15];
协方差矩阵是
ExpCovariance = [0.005 -0.010 0.004;-0.010 0.040 -0.002;0.004 -0.002 0.023);
约束1
允许卖空任何资产的投资组合价值的10%,但限制对任何一种资产的投资组合价值的110%。
约束2
考虑两个不同的行业,技术和能源,下表显示了每种资产所属的行业。
资产 |
intel |
发送朴通 |
理查德·道金斯 |
部门 |
技术 |
能源 |
能源 |
将能源领域的投资限制在投资组合价值的80%,将科技领域的投资限制在70%。
要解决这个问题,使用投资组合
,传入一个资产约束列表。考虑沿着有效边界的8种不同的投资组合:
NumPorts = 8;
为了引入约束1中指定的资产边界约束,创建矩阵AssetBounds
,其中每一列表示一个资产。上面的行表示下界,下面的行表示上界。由于每个资产的边界是相同的,由于标量展开,只需要一对边界。
[-0.1, 1.1];
约束2必须分为两部分输入,第一部分定义组,第二部分定义每个组的约束。根据上面的信息,你可以建立一个矩阵1
年代和0
表示某个资产是否属于某个组。每一列代表一个资产,每一行代表一个组。这个例子有两个组:技术组和能源组。创建一个矩阵组
如下。
组= [0 1 1;1 0 0];
的GroupBounds
矩阵允许您为每个组指定上限和下限。这个矩阵中的每一行代表一个组。第一列表示对每个组的最小分配,第二列表示对每个组的最大分配。由于在能源部门的投资被限制在投资组合价值的80%,而在技术部门的投资被限制在70%,所以创造了GroupBounds
矩阵使用这个信息。
= [0 0.80;]0 0.70);
现在使用投资组合
获得向量和数组,代表风险,回报,和每八个投资组合的权重沿有效边界计算。添加预算约束以确保组合权重之和为1。
p =组合(“AssetMean”ExpReturn,“AssetCovar”, ExpCovariance);p = setBounds(p, AssetBounds(1), AssetBounds(2));p = setBudget(p, 1,1);p = setGroups(p, Groups, GroupBounds(:,1), GroupBounds(:,2));porttwts = estimateFrontier(p, NumPorts);[PortRisk, PortReturn] = estimatePortMoments(p, porttwts);PortRisk PortReturn PortWts
PortReturn = 0.1279 0.1361 0.1442 0.1524 0.1605 0.1687 0.1768 0.1850 PortWts = 0.7000 0.6031 0.4864 0.3696 0.2000 0.2000 0.2582 0.3244 0.3708 0.4172 0.4636 0.5738 0.7369 0.9000 0.0418 0.0725 0.1428 0.2132 0.2262 0.0631 -0.1000
输出表示为投资组合的风险和回报的列。组合权重被确定为矩阵中相应的列向量。
而投资组合
对象允许您输入与组和单个资产的最小值和最大值相关的固定约束集,在寻找最优风险投资组合时,您通常需要指定更大和更通用的约束集。投资组合
还可以通过接受任意一组约束来满足此需求。
本例要求指定不同组的最小和最大投资。
最大和最小组暴露
集团 |
最小曝光 |
最大风险敞口 |
---|---|---|
北美 |
0.30 |
0.75 |
欧洲 |
0.10 |
0.55 |
拉丁美洲 |
0.20 |
0.50 |
亚洲 |
0.50 |
0.50 |
亚洲的最低和最高风险敞口是相同的。这意味着你需要一个固定的曝光组。
还要假设投资组合由三个不同的基金组成。基金和团体之间的对应关系如下表所示。
组成员
集团 |
基金1 |
基金2 |
基金3 |
---|---|---|---|
北美 |
X |
X |
|
欧洲 |
X |
||
拉丁美洲 |
X |
||
亚洲 |
X |
X |
使用这两个表中的信息,构建所表示约束的数学表示。假设表示投资组合中每种资产的风险敞口的权重向量被称为Wts = [W1 W2 W3]
.
具体地说
1. |
W1 +W2 |
≥ |
0.30 |
2. |
W1 +W2 |
≤ |
0.75 |
3. |
W3. |
≥ |
0.10 |
4. |
W3. |
≤ |
0.55 |
5. |
W1 |
≥ |
0.20 |
6. |
W1 |
≤ |
0.50 |
7. |
W2 +W3. |
= |
0.50 |
因为您必须在表单中表示信息A * Wts < = b
将方程1,3,5乘以-1。将等式7转化为两个不等式:W2 +W3≥0.50和W2 +W3≤0.50。(这两个不等式的交集就是等式本身。)因此
1. |
- w1 -W2 |
≤ |
-0.30 |
2. |
W1 +W2 |
≤ |
0.75 |
3. |
- w3. |
≤ |
-0.10 |
4. |
W3. |
≤ |
0.55 |
5. |
- w1 |
≤ |
-0.20 |
6. |
W1 |
≤ |
0.50 |
7. |
- w2 -W3. |
≤ |
-0.50 |
8. |
W2 +W3. |
≤ |
0.50 |
将这些方程带入矩阵表示法得到
A = [-1 -1 0;1 1 0;0 0 1;0 0 1;1 0 0;1 0 0;0 1 1;b = [-0.30;0.75;-0.10; 0.55; -0.20; 0.50; -0.50; 0.50]
解决这个投资组合问题的一个方法是明确地使用setInequality
功能:
p =组合(“AssetMean”ExpReturn,“AssetCovar”, ExpCovariance);p = setBounds(p, AssetBounds(1), AssetBounds(2));p = setBudget(p, 1,1);p = set不等式(p, A, b);porttwts = estimateFrontier(p, NumPorts);[PortRisk, PortReturn] = estimatePortMoments(p, porttwts);PortRisk PortReturn PortWts
PortRisk = 0.0586 0.0586 0.0586 0.0586 0.0586 0.0586 0.0586 0.0586 PortReturn = 0.1375 0.1375 0.1375 0.1375 0.1375 0.1375 0.1375 0.1375 PortWts = 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500
setInequality
函数与使用setGroups
函数的下一个示例(指定一组约束).
上面的例子(线性约束方程)定义一个约束矩阵,该约束矩阵指定一组典型场景。它定义资产组,指定每个组中总分配的上限和下限,并将一个组的总分配设置为一个固定值。像这样的约束是常见的。投资组合
对象使您能够简化这些和其他公共投资组合需求的约束矩阵的创建。
解决投资组合问题的另一种方法是使用投资组合
对象来定义:
一个集团
矩阵,表示属于每个组的资产。
一个GroupMin
向量,表示每个组的最小界限。
一个GroupMax
向量,表示每个组的最大界限。
根据表格组成员,构建集团
矩阵,每一行表示一个组,每列表示一个资产。
组= [1 1 0;0 0 1;1 0 0;0 1 1];
表最大和最小组暴露有需要建立的信息吗GroupMin
和GroupMax
.
GroupMin = [0.30 0.10 0.20 0.50];GroupMax = [0.75 0.55 0.50 0.50];
现在使用投资组合
和setInequality
函数获取表示沿着有效边界计算的投资组合的风险、回报和权重的向量和数组。
p =组合(“AssetMean”ExpReturn,“AssetCovar”, ExpCovariance);p = setBounds(p, AssetBounds(1), AssetBounds(2));p = setBudget(p, 1,1);p = setGroups(p, Group, GroupMin, GroupMax);porttwts = estimateFrontier(p, NumPorts);[PortRisk, PortReturn] = estimatePortMoments(p, porttwts);PortRisk PortReturn PortWts
PortRisk = 0.0586 0.0586 0.0586 0.0586 0.0586 0.0586 0.0586 0.0586 PortReturn = 0.1375 0.1375 0.1375 0.1375 0.1375 0.1375 0.1375 0.1375 PortWts = 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500
在这种情况下,约束条件只允许一个最优投资组合。因为申请了8个投资组合,所以8个投资组合都是一样的。注意,这个组合问题的解决方案使用setGroups
函数与使用setInequality
函数(线性约束方程).
投资组合
|estimateFrontier
|estimatePortMoments
|setInequality
|setGroups