验证CVaR投资组合问题
有时,您可能希望验证投资组合优化问题的输入或输出。尽管发生在问题设置阶段的大多数错误检查都捕获了投资组合优化问题的大多数困难,但验证CVaR投资组合集和投资组合的过程是耗时的,并且最好离线完成。因此,投资组合优化工具具有专门的功能来验证CVaR投资组合集和投资组合。获取有关使用时工作流的信息PortfolioCVaR
对象,看到对象工作流.
验证CVaR投资组合集
由于CVaR投资组合集必须是一个非空的、封闭的、有界的集才能有一个有效的投资组合优化问题,因此estimateBounds
函数让您检查您的投资组合集,以确定它是否为非空,如果非空,则确定它是否有界。假设您有以下CVaR投资组合集,它是一个空集,因为初始投资组合为0
离满足预算和周转约束的投资组合太远了:
p = PortfolioCVaR(“NumAssets”3,“预算”1);p = setTurnover(p, 0.3, 0);
如果CVaR投资组合集为空,estimateBounds
返回南
并设置isbounded
旗帜[]
:
[lb, ub, isbounded] = estimateBounds(p)
lb = NaN NaN NaN ub = NaN NaN isbounded = []
假设您创建了一个无界CVaR投资组合集,如下所示:
p = PortfolioCVaR(“AInequality”, [1 -1;11 . 1“bInequality”, 0);[lb, ub, isbounded] = estimateBounds(p)
lb = -Inf -Inf ub = 1.0e-008 * -0.3712 Inf isbounded = 0
estimateBounds
返回(可能是无限的)边界并设置isbounded
旗帜假
.结果显示哪些资产是无界的,以便您可以在必要时应用有界约束。
最后,假设您创建了一个既非空又有界的CVaR投资组合集。estimateBounds
不仅可以验证集合,还可以获得更严格的边界,如果您关心组合集中单个资产的实际投资组合选择范围,这将非常有用:
p = PortfolioCVaR;p = setBudget(p, 1,1);p = setBounds(p, [-0.1;0.2;0.3;0.2], [0.5;0.3;0.9;0.8]);[lb, ub, isbounded] = estimateBounds(p)
Lb = -0.1000 0.2000 0.3000 0.2000 ub = 0.3000 0.3000 0.7000 0.6000 isbounded = 1
在本例中,除第二个资产外,所有资产的上界都比输入上界所暗示的更紧。
验证CVaR投资组合
给定一个CVaR组合集PortfolioCVaR
对象时,您通常希望检查特定的投资组合相对于投资组合集是否可行。例如,初始投资组合和从其他程序获得的投资组合都可能发生这种情况。的checkFeasibility
函数决定一个组合的集合是否可行。假设您执行以下投资组合优化,并想要确定结果有效的投资组合相对于修改后的问题是否可行。
首先,设置一个问题在PortfolioCVaR
对象p
,估计有效的投资组合pwgt
,然后确认这些组合相对于初始问题是可行的:
M = [0.05;0.1;0.12;0.18);C = [0.0064 0.00408 0.00192 0;0.00408 0.0289 0.0204 0.0119;0.00192 0.0204 0.0576 0.0336;0 0.0119 0.0336 0.1225];M = M /12;C = C/12; AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioCVaR; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.95); pwgt = estimateFrontier(p); checkFeasibility(p, pwgt)
Ans = 1 1 1 1 1 1 1 1 1 1 1
接下来,建立一个不同的投资组合问题,从初始问题开始,加上一个额外的周转约束和一个同等权重的初始投资组合:
q = setTurnover(p, 0.3, 0.25);checkFeasibility (q, pwgt)
Ans = 0 0 0 1 1 0 0 0 0 0 0
PortfolioCVaR
对象问
.解决第二个问题使用checkFeasibility
说明了有效的投资组合PortfolioCVaR
对象问
相对于初始问题是可行的:
qwgt = estimateFrontier(q);qwgt checkFeasibility (p)
Ans = 1 1 1 1 1 1 1 1 1 1 1
另请参阅
PortfolioCVaR
|estimateBounds
|checkFeasibility
相关的例子
- 创建PortfolioCVaR对象
- 使用默认值处理CVaR组合约束
- 为PortfolioCVaR对象估计整个边界的有效投资组合
- 估计PortfolioCVaR对象的有效边界
- 使用PortfolioCVaR对象的资产收益和场景
- 利用CVaR组合优化进行套期保值
- 计算CVaR投资组合的最大回报风险比