主要内容

创建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属性被设置为相同的值,以形成相等的预算约束。

属性名称的快捷方式

快捷参数名

等效参数/属性名

ae

AEquality

人工智能

AInequality

assetnames资产

AssetList

bEquality

bi

bInequality

预算

UpperBudget而且LowerBudget

集团

GroupMatrix

下界

n全国矿工工会

NumAssets

水平problevel,或plevel

ProbabilityLevel

rfr

RiskFreeRate

场景assetscenarios

场景

乌兰巴托

UpperBound

例如,这个调用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函数,或任何场景模拟函数。

另请参阅

|

相关的例子

更多关于

外部网站