主要内容

PortfolioMAD

创建PortfolioMAD对象,用于均值-绝对偏差组合优化和分析

描述

PortfolioMAD对象实现了平均-绝对偏差投资组合优化,其中MAD代表“平均-绝对偏差”。PortfolioMAD对象支持特定于MAD组合优化的函数。

组合优化的主要工作流程是创建一个实例PortfolioMAD对象,该对象完全指定投资组合优化问题并对其进行操作PortfolioMAD目标获取和分析有效的投资组合。有关使用时工作流的更多信息PortfolioMAD对象,看到PortfolioMAD对象工作流

您可以使用PortfolioMAD对象在几个方面。建立一个投资组合优化问题PortfolioMAD对象,最简单的语法是:

p = PortfolioMAD;
此语法创建一个PortfolioMAD对象,p,使所有对象属性为空。

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

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

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

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

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

q = PortfolioMAD(p,...

在创建PortfolioMAD对象,您可以使用关联的对象函数来设置投资组合约束,分析有效边界,并验证投资组合模型。

有关条件风险价值投资组合优化的理论基础的更详细信息,请参见投资组合优化理论

创建

描述

例子

p= PortfolioMAD创建一个空PortfolioMAD对象的平均绝对偏差投资组合优化和分析。对象中添加元素PortfolioMAD使用所支持的“add”和“set”函数。有关更多信息,请参见创建portfolio omad对象

例子

p= PortfolioMAD (名称,值创建一个PortfolioMAD对象(p)和集合属性使用名称-值对。例如,p = PortfolioMAD('资产列表',资产(1:12)).可以指定多个名称-值对。

例子

p= PortfolioMAD (p名称,值创建一个PortfolioMAD对象(p)使用先前创建的PortfolioMAD对象p并设置属性使用名称-值对。可以指定多个名称-值对。

输入参数

全部展开

以前建造的PortfolioMAD对象,使用PortfolioMAD

属性

全部展开

设置PortfolioMAD对象

宇宙中资产的名称或符号,指定为字符向量的单元格数组或字符串数组。

数据类型:细胞|字符串

初始投资组合,指定为向量。

数据类型:

实例的名称PortfolioMAD对象,指定为字符向量。

数据类型:字符|字符串

宇宙中的资产数量,指定为整数标量。

数据类型:

PortfolioMAD对象约束

线性等式约束矩阵,指定为矩阵。有关更多信息,请参见线性等式约束

数据类型:

线性不等式约束矩阵,指定为矩阵。有关更多信息,请参见线性不等式约束

数据类型:

线性等式约束向量,指定为向量。有关更多信息,请参见线性等式约束

数据类型:

线性不等式约束向量,指定为向量。有关更多信息,请参见线性不等式约束

数据类型:

A组的权重以B组的权重为界,以矩阵形式指定。有关更多信息,请参见组约束

数据类型:

B组权重,用矩阵表示。有关更多信息,请参见组约束

数据类型:

组成员矩阵,指定为矩阵。有关更多信息,请参见群体比率约束

数据类型:

下界约束,指定为向量。有关更多信息,请参见“简单”约束而且“条件”约束

数据类型:

下限预算约束,指定为标量。有关更多信息,请参见预算限制

数据类型:

下界组约束,指定为向量。有关更多信息,请参见组约束

数据类型:

之间的最小分配比例GroupA而且GroupB,指定为一个向量。有关更多信息,请参见群体比率约束

数据类型:

上限约束,指定为向量。有关更多信息,请参见“简单”约束而且“条件”约束

数据类型:

上限预算约束,指定为标量。有关更多信息,请参见预算限制

数据类型:

上界组约束,指定为向量。有关更多信息,请参见组约束

数据类型:

之间的最大分配比例GroupA而且GroupB,指定为一个向量。有关更多信息,请参见群体比率约束

数据类型:

每个资产权重的边界类型,指定为标量字符向量或字符串,或字符向量的单元格数组或字符串数组。有关更多信息,请参见setBounds

数据类型:字符|细胞|字符串

在投资组合中分配的最小资产数,指定为标量数值。有关更多信息,请参见setMinMaxNumAssets而且基数约束

数据类型:

在投资组合中分配的最大资产数,指定为标量数值。有关更多信息,请参见setMinMaxNumAssets而且基数约束

数据类型:

采购的周转限制,指定为标量。有关更多信息,请参见平均离职限制而且单向周转约束

数据类型:

销售的周转限制,指定为标量。有关更多信息,请参见平均离职限制而且单向周转约束

数据类型:

周转约束,指定为标量。有关更多信息,请参见平均离职限制而且单向周转约束

数据类型:

PortfolioMAD对象建模

按比例购买成本,以矢量表示。有关更多信息,请参见投资组合净收益

数据类型:

无风险利率,指定为标量。

数据类型:

风险值概率水平为1−(损失概率),指定为标量。

数据类型:

场景数,指定为整数标量。

数据类型:

按比例的销售成本,以矢量表示。有关更多信息,请参见投资组合净收益

数据类型:

对象的功能

setAssetList 为资产设置标识符列表
setInitPort 建立初始或当前的投资组合
setDefaultConstraints 用和为1的非负权重设置投资组合约束
estimateAssetMoments 从数据中估计资产收益的均值和协方差
setcost 为投资组合建立比例交易成本
addEquality 将投资组合权重的线性相等约束添加到现有约束中
addGroupRatio 将组合权重的组比率约束添加到现有的组比率约束
addGroups 向现有的组约束中添加组合权重的组约束
addInequality 将投资组合权重的线性不等式约束添加到现有约束中
getBounds 从投资组合对象中获取投资组合权重的边界
getBudget 从投资组合对象中获得预算约束边界
getCosts 从投资组合对象中获取买卖交易成本
getEquality 从投资组合对象中获取相等约束数组
getGroupRatio 从投资组合对象中获取组比率约束数组
getGroups 从投资组合对象中获取组约束数组
getInequality 从投资组合对象中获取不等式约束数组
getOneWayTurnover 从投资组合对象中获得单向周转约束
setGroups 为投资组合权重设置组约束
setInequality 建立投资组合权重的线性不等式约束
setBounds 为投资组合设定投资组合权重的界限
setMinMaxNumAssets 对投资组合中投资的资产数量设置基数约束
setBudget 为投资组合设定预算约束
setcost 为投资组合建立比例交易成本
setDefaultConstraints 用和为1的非负权重设置投资组合约束
setEquality 为投资组合权重设置线性等式约束
setGroupRatio 为投资组合权重设置分组比例约束
setInitPort 建立初始或当前的投资组合
setOneWayTurnover 设置单向投资组合周转约束
setTurnover 建立最大投资组合周转率约束
checkFeasibility 根据项目组合对象检查输入项目组合的可行性
estimateBounds 估计一组投资组合的全球下限和上限
estimateFrontier 在有效边界上估计指定数量的最优投资组合
estimateFrontierByReturn 用目标投资组合回报估算最佳投资组合
estimateFrontierByRisk 用目标投资组合风险估计最优投资组合
estimateFrontierLimits 估计有效边界端点的最优投资组合
plotFrontier 地块有效前沿
estimatePortReturn 估计投资组合收益的平均值
estimatePortRisk 根据与相应对象相关联的风险代理来估计投资组合风险
setSolver 选择主解算器并指定组合优化的相关解算器选项
setProbabilityLevel 设置VaR和CVaR计算的概率水平
setScenarios 通过直接矩阵设置资产收益场景
getScenarios 从投资组合对象中获取场景
simulateNormalScenariosByData 从数据中模拟多元正常资产回报场景
simulateNormalScenariosByMoments 从资产收益的均值和协方差模拟多元正态资产收益情景
estimateScenarioMoments 估计资产回报情景的均值和协方差
estimatePortStd 估计投资组合收益的标准差

例子

全部折叠

您可以创建一个PortfolioMAD对象,p,没有输入参数,并使用disp

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

这种方法提供了一种方法来设置一个组合优化问题PortfolioMAD函数。属性中的属性集合,然后可以使用相关的set函数来设置和修改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: [] NumScenarios: [] 20000 Name: [] NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] 4x1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: []

注意下界属性值自那时起进行标量展开AssetScenarios提供问题的维度。

使用一系列步骤是完成设置“标准”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);

图中包含一个轴对象。标题为E f f i i E nt空白f r on i E r的axis对象包含一个类型为line的对象。

这种方法是可行的,因为调用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; p = PortfolioMAD(p,下界的, 0(大小(m)));p = PortfolioMAD(p,“LowerBudget”, 1“UpperBudget”1);p = setscenes (p, assetscenes);plotFrontier (p);

图中包含一个轴对象。标题为E f f i i E nt空白f r on i E r的axis对象包含一个类型为line的对象。

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

您可以创建一个PortfolioMAD对象,pPortfolioMAD对象,使用属性名的快捷方式。

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)
p = PortfolioMAD with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: [] 20000 Name: [] NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] 4x1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: []

虽然不推荐,但是您可以直接设置属性,但是不会对您的输入进行错误检查。

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)); disp(p);
带属性的PortfolioMAD: BuyCost: [] SellCost: [] RiskFreeRate: [] Turnover: [] BuyTurnover: [] SellTurnover: [] numconditions: 20000 Name: [] NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] 4x1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: []

场景不能直接分配给PortfolioMAD对象。场景必须始终通过PortfolioMAD函数,setScenarios函数,或任何场景模拟函数。

创建有效的投资组合:

负载CAPMuniversep = portfolio omad (“AssetList”、资产(1:12));p = simulateNormalScenariosByData(p, Data(:,1:12), 20000,“missingdata”,真正的);p = setDefaultConstraints(p);plotFrontier (p);

图中包含一个轴对象。标题为E f f i i E nt空白f r on i E r的axis对象包含一个类型为line的对象。

pwgt = estimateFrontier(p, 5);Pnames = cell(1,5);I = 1:5 pnames{I} = sprintf(的端口% d ',我);结束Blotter = dataset([{pwgt},pnames],“obsnames”, p.AssetList);disp(流水帐);
端口1端口2端口3端口4 Port5 apple 0.029787 0.076199 0.11265 0.13397 0 amazon 0 0 0 0 0 cisco戴尔0.0089177 0 0 0 0 0 0 0 0 0 EBAY 0 0 0 0 0 google 0.16094 0.3516 0.54479 0.74898 1 hp IBM 0.46074 0.37919 0.29379 0.11705 0.056856 - 0.023073 0 0 0 0 intel 0 0 0 0 0 microsoft 0.28277 0.16994 0.048762 0 0 ORCL 0 0 0 0 0 yahoo 0 0 0 0 0

更多关于

全部展开

参考文献

[1]有关PortfolioMAD对象引用的完整列表,请参见投资组合优化

版本历史

在R2013b中引入

Baidu
map