主要内容

创建portfolio对象

要创建完全指定的MAD投资组合优化问题,实例化PortfolioMAD对象使用PortfolioMAD。有关使用时工作流的信息PortfolioMAD对象,看到PortfolioMAD对象的工作流

语法

使用PortfolioMAD对象的对象的实例PortfolioMAD类。你可以使用PortfolioMAD对象有几种方法。建立一个投资组合优化问题PortfolioMAD对象,最简单的语法是:

p = PortfolioMAD;
此语法创建PortfolioMAD对象,p,以便所有对象属性都为空。

PortfolioMAD对象还接受属性及其值的参数名称-值对参数集合。的PortfolioMAD对象以通用语法接受公共属性的输入:

p = PortfolioMAD('property1', value1, 'property2', value2,…);

如果一个PortfolioMAD对象已经存在,语法允许的第一个参数(且仅是第一个参数)PortfolioMAD为已存在的对象,其后续参数为要添加或修改的属性的名称-值对参数。例如,给定一个现有的PortfolioMAD对象p,一般语法为:

p = PortfolioMAD(p, 'property1', value1, 'property2', value2,…);

输入参数名称不区分大小写,但必须完全指定。此外,可以用可选参数名指定一些属性(参见属性名称的快捷方式).的PortfolioMAD对象试图从输入中检测问题维度,一旦设置,后续的输入可以进行各种标量或矩阵展开操作,从而简化整个流程,以明确问题。此外,一个PortfolioMAD对象是一个值对象,因此,给定投资组合p,下面的代码创建两个对象,p,它们是不同的:

q = PortfolioMAD(p,…)

PortfolioMAD充分性问题

给出了一个完整的MAD投资组合优化问题PortfolioMAD对象,如果满足以下三个条件:

  • 您必须指定一组称为场景的资产回报或价格集合,以便所有场景都是有限的资产回报或价格。这些情景都是来自资产回报潜在概率分布的样本。这个条件可以由setScenarios函数或与几个固定的场景模拟函数。

  • 可行组合的集合必须是一个非空紧集,其中紧集是闭的有界的。您可以使用广泛的属性集合来满足这个条件,这些属性集合定义不同类型的约束,以形成一组可行的投资组合。由于这些集合必须是有边界的,因此可以施加显式或隐式约束,并且可以使用一些工具,例如estimateBounds功能,提供方法来确保你的问题是正确的。

    虽然一般的MAD投资组合优化充分条件超出了这些条件,但是PortfolioMAD对象处理所有这些附加条件。

PortfolioMAD函数示例

如果你创建一个PortfolioMAD对象,p,如果没有输入参数,则可以使用disp

p = PortfolioMAD;disp (p)
portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] Turnover: [] BuyTurnover: [] SellTurnover: [] numscenario: [] Name: [] NumAssets: [] AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] UpperBound: [] UpperBudget: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [][] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: []

所给出的方法为建立投资组合优化问题提供了一种方法PortfolioMAD对象。控件中的自定义集函数提供了设置和修改属性集合的其他方法PortfolioMAD对象。

使用PortfolioMAD功能进行单步设置

你可以使用PortfolioMAD对象直接建立了一个“标准”投资组合优化问题。给定的情况下,资产回报的变量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 = PortfolioMAD(“场景”AssetScenarios,...下界的0,“LowerBudget”, 1“UpperBudget”, 1)
p = PortfolioMAD with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] Turnover: [] BuyTurnover: [] SellTurnover: [] numscenario: 20000 Name: [] NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] b不等式:[]AEquality: [] bEquality: [] LowerBound: [4×1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup:[] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: []
下界属性值经过标量展开AssetScenarios提供问题的维度。

您可以对函数使用点表示法plotFrontier

p.plotFrontier

使用PortfolioMAD函数和一系列步骤

给出了另一种方法来完成同样的任务,即建立一个“标准”MAD投资组合优化问题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 = PortfolioMAD; p = setScenarios(p, AssetScenarios); p = PortfolioMAD(p,下界的, 0);p = PortfolioMAD (p,“LowerBudget”, 1“UpperBudget”1);plotFrontier (p);

这种方法是可行的,因为调用PortfolioMAD对象的顺序是这样的。在本例中,调用initializeAssetScenarios提供问题的维度。如果要最后执行这一步,就必须显式地对下界属性如下:

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 = PortfolioMAD; p = PortfolioMAD(p,下界的, 0(大小(m)));p = PortfolioMAD (p,“LowerBudget”, 1“UpperBudget”1);p = setscenario (p, assetscenario);

请注意

如果没有指定的大小下界但是,输入一个标量参数PortfolioMAD对象假设您正在定义一个单一资产问题,并在调用使用四个资产设置资产场景时产生错误。

属性名称的快捷方式

PortfolioMAD对象的较短参数名替换与特定属性关联的较长参数名PortfolioMAD对象。例如,不输入“AInequality”,PortfolioMAD对象接受不区分大小写的名称“人工智能”设置AInequality属性在一个PortfolioMAD对象。属性中的每个较短的参数名对应一个属性PortfolioMAD对象。唯一的例外是可选参数名“预算”,表示两个LowerBudgetUpperBudget属性。当“预算”,那么LowerBudgetUpperBudget属性设置为相同的值,以形成相等的预算约束。

属性名称的快捷方式

快捷键参数名称

等效参数/属性名称

ae

AEquality

人工智能

AInequality

assetnames资产

AssetList

bEquality

bi

bInequality

预算

UpperBudgetLowerBudget

集团

GroupMatrix

下界

n全国矿工工会

NumAssets

rfr

RiskFreeRate

场景assetscenarios

场景

乌兰巴托

UpperBound

例如,这个调用PortfolioMAD使用属性的快捷方式:

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 = PortfolioMAD(“场景”AssetScenarios,“磅”0,“预算”1);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 = PortfolioMAD; p = setScenarios(p, AssetScenarios); p.LowerBudget = 1; p.UpperBudget = 1; p.LowerBound = zeros(size(m)); plotFrontier(p);

请注意

场景不能直接使用点表示法分配给PortfolioMAD对象。场景必须总是通过PortfolioMAD对象,setScenarios函数或任何场景模拟函数。

另请参阅

|

相关的例子

更多关于