创建PortfolioCVaR对象
要创建一个完全指定的CVaR投资组合优化问题,实例化PortfolioCVaR
对象使用PortfolioCVaR
.有关使用时工作流的信息PortfolioCVaR
对象,看到对象工作流.
语法
使用PortfolioCVaR
对象的实例PortfolioCVaR
类。你可以用PortfolioCVaR
用几种方式反对。建立一个投资组合优化问题PortfolioCVaR
对象,最简单的语法是:
p = PortfolioCVaR;
PortfolioCVaR
对象,p
,这样所有对象属性都为空。
的PortfolioCVaR
对象还接受属性及其值的参数名值对参数的集合。的PortfolioCVaR
对象使用通用语法接受公共属性的输入:
p = PortfolioCVaR('property1', value1, 'property2', value2,…);
如果一个PortfolioCVaR
对象已经存在,则语法允许的第一个(且仅允许第一个参数)PortfolioCVaR
作为一个已存在的对象,具有后续参数名称-值对参数,用于添加或修改属性。例如,给定一个现有的PortfolioCVaR
对象p
,一般语法为:
p = PortfolioCVaR(p, 'property1', value1, 'property2', value2,…);
输入参数名不区分大小写,但必须完全指定。此外,还可以用其他参数名指定一些属性(参见属性名称的快捷方式).的PortfolioCVaR
对象尝试从输入检测问题维度,一旦设置,后续输入可以进行各种标量或矩阵展开操作,从而简化制定问题的整个过程。此外,PortfolioCVaR
对象是一个值对象,给定的投资组合p
,下面的代码创建了两个对象,p
而且问
,它们是截然不同的:
q = PortfolioCVaR(p,…)
PortfolioCVaR问题的充分性
CVaR投资组合优化问题完全用PortfolioCVaR
如果满足以下三个条件,则反对:
您必须指定称为场景的资产回报或价格集合,以便所有场景都是有限的资产回报或价格。这些场景是资产回报潜在概率分布的样本。这一条件可以由
setScenarios
函数或带有几个罐装场景模拟函数。可行组合的集合必须是一个非空的紧集,其中紧集是闭的和有界的。您可以使用定义不同类型约束的广泛属性集合来满足这个条件,以形成一组可行的投资组合。因为这样的集合必须是有界的,所以可以施加显式或隐式的约束
estimateBounds
功能,提供方法来确保您的问题得到适当的表述。您必须指定一个概率水平,以确定尾部损失的水平,高于该水平的条件风险值将被最小化。这一条件可以由
setProbabilityLevel
函数。尽管CVaR投资组合优化的一般充分条件超出了前三个条件,但是
PortfolioCVaR
对象处理所有这些附加条件。
PortfolioCVaR函数示例
如果你创建一个PortfolioCVaR
对象,p
,没有输入参数,您可以使用disp
:
p = PortfolioCVaR;disp (p)
portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] ProbabilityLevel: [] Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: [] Name: [] NumAssets: [] AssetList: [] InitPort: [] initequal: [] bequal: [] bequal: [] aquality: [] bEquality: [] LowerBound: [] UpperBound: [] LowerBudget: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] BoundType: []
所列出的方法提供了一种使用PortfolioCVaR
对象。控件中的自定义集合函数提供了设置和修改属性集合的其他方法PortfolioCVaR
对象。
使用PortfolioCVaR函数进行单步设置
您可以使用PortfolioCVaR
对象直接设置了一个“标准”作品集优化问题。给定变量中资产收益的情景AssetScenarios
,此问题完全指定为:
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(“场景”AssetScenarios,...下界的0,“LowerBudget”, 1“UpperBudget”, 1...“ProbabilityLevel”, 0.95)
p = PortfolioCVaR with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] ProbabilityLevel: 0.9500 Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: 20000 Name: [] NumAssets: 4 AssetList: [] InitPort: [] bequal: [] bequal: [] [] AEquality: [] bEquality: [] LowerBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] BoundType: []
下界
属性值自开始进行标量扩展AssetScenarios
提供问题的维度。
你可以在函数中使用点表示法plotFrontier
.
p.plotFrontier
使用具有一系列步骤的PortfolioCVaR函数
给出了建立一个“标准”CVaR投资组合优化问题的另一种方法AssetScenarios
变量:
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 = PortfolioCVaR(p,下界的, 0);p = PortfolioCVaR(p,“LowerBudget”, 1“UpperBudget”1);p = setProbabilityLevel(p, 0.95);plotFrontier (p)
这种方式可以工作,因为对的调用是按照这种特定的顺序进行的。在本例中,调用初始化AssetScenarios
提供问题的维度。如果最后执行此步骤,则必须显式地对下界
属性如下:
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 = PortfolioCVaR(p,下界的, 0(大小(m)));p = PortfolioCVaR(p,“LowerBudget”, 1“UpperBudget”1);p = setProbabilityLevel(p, 0.95);p = setscenes (p, assetscenes);
请注意
的大小下界
但是,相反,输入一个标量参数PortfolioCVaR
对象假设您正在定义一个单一资产问题,并在调用时产生一个错误,以设置具有四个资产的资产场景。
属性名称的快捷方式
的PortfolioCVaR
类的特定属性关联的较长参数名PortfolioCVaR
对象。例如,而不是进入“ProbabilityLevel”
,PortfolioCVaR
对象接受不区分大小写的名称“plevel”
设置ProbabilityLevel
物业PortfolioCVaR
对象。类中的单个属性对应每个较短的参数名PortfolioCVaR
对象。唯一的例外是备用参数名“预算”
,表示LowerBudget
而且UpperBudget
属性。当“预算”
是用的,那么LowerBudget
而且UpperBudget
属性被设置为相同的值,以形成相等的预算约束。
属性名称的快捷方式
快捷参数名 |
等效参数/属性名 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
例如,这个调用PortfolioCVaR
对象对属性使用以下快捷方式:
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(“场景”AssetScenarios,“磅”0,“预算”, 1“plevel”, 0.95);plotFrontier (p)
投资组合对象属性的直接设置
虽然不推荐,但你可以直接使用点表示法设置属性,但是不会对你的输入进行错误检查:
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.ProbabilityLevel = 0.95; p.LowerBudget = 1; p.UpperBudget = 1; p.LowerBound = zeros(size(m)); plotFrontier(p)
请注意
场景不能直接使用点表示法分配给PortfolioCVaR
对象。场景必须始终通过PortfolioCVaR
对象,setScenarios
函数,或任何场景模拟函数。