投资组合

为均值-方差投资组合优化和分析创建投资组合对象

描述

使用投资组合函数创建一个投资组合平均方差投资组合优化的目标。

项目组合优化的主要工作流程是创建a的一个实例投资组合对象完全指定一个组合优化问题,并在操作投资组合对象使用支持的功能,以获得金宝app和分析有效组合。有关此工作流程的详细信息,请参阅投资组合对象的工作流程

您可以使用投资组合以多种方式反对。在a中建立一个投资组合优化问题投资组合对象,最简单的语法是:

p =投资组合;
此语法创建一个投资组合宾语,p,使得所有对象属性是空的。

投资组合对象还接受属性及其值的名称-值对参数的集合。的投资组合对象接受用于与一般语法属性输入:

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

如果一个投资组合对象存在,语法允许的第一个(且仅第一个参数)投资组合对象是一个现有对象,具有用于添加或修改属性的后续名称-值对参数。例如,给定一个现有的投资组合对象p,一般语法是:

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

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

q =组合(p,...)

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

对于均值 - 方差最优化理论基础上的更多详细信息,请参阅投资组合优化理论

创建

描述

例子

p=投资组合创建一个空投资组合对象均值 - 方差投资组合优化和分析。然后,您可以添加元素到投资组合使用支持的“添加”和“设置”功能的金宝app对象。有关更多信息,请参见创建投资组合对象

例子

p=投资组合(名称,值)创建一个投资组合对象(p)和集属性使用名称-值对。例如,p =组合(“AssetList”资产(1:12))。可以指定多个名称-值对。

例子

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

输入参数

全部展开

先前构造投资组合对象,使用指定的投资组合

属性

全部展开

设置对象

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

数据类型:细胞|字符串

初始组合,指定为矢量。

数据类型:

对于命名的实例投资组合对象,指定为字符向量或字符串。

数据类型:烧焦|字符串

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

数据类型:

组合对象的限制

线性等式约束矩阵,指定为矩阵。

数据类型:

线性不等式约束矩阵,指定为一个矩阵。

数据类型:

线性等式约束矢量,指定为矢量。

数据类型:

线性不等式约束向量,指定为一个向量。

数据类型:

基团A的权重由B组的权重,指定为矩阵来界定。

数据类型:

B组的权重,指定为矩阵。

数据类型:

组隶属度矩阵,指定为一个矩阵。

数据类型:

下限约束,指定为矢量。

数据类型:

下限的预算约束,指定为标量。

数据类型:

下限组约束,指定为矢量。

数据类型:

之间分配的最小比率A组B族,指定为向量。

数据类型:

跟踪误差约束的上界,指定为标量。

数据类型:

跟踪组合为跟踪误差约束,指定为矢量。

数据类型:

上限约束,指定为向量。

数据类型:

上限的预算约束,指定为标量。

数据类型:

上限组约束,指定为矢量。

数据类型:

之间分配的最大比率A组B族,指定为向量。

数据类型:

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

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

最小数目的投资组合分配资产,指定为标数值。有关更多信息,请参见setMinMaxNumAssets

数据类型:

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

数据类型:

在营业额的限制,指定为标量。

数据类型:

采购的周转约束,指定为标量。

数据类型:

周转约束,指定为标量。

数据类型:

组合对象建模

资产收益的协方差,用方阵表示。如果AssetCovar是不是一个对称半正定矩阵,使用nearcorr为相关矩阵建立一个正半定矩阵。

数据类型:

资产收益的平均值,用向量表示。

数据类型:

比例购买成本,指定为一个向量。

数据类型:

无风险收益率,指定为标量。

数据类型:

比例销售成本,指定为一个向量。

数据类型:

对象的功能

setAssetList 设置资产标识符列表
setInitPort 建立初始或当前的投资组合
setDefaultConstraints 设置投资组合约束,其非负权值之和为1
getAssetMoments 获得组合物的均值和方差的资产回报
setAssetMoments 集时刻资产收益投资组合的对象(均值和方差)
estimateAssetMoments 估算数据资产收益的均值和方差
setCosts 建立比例交易成本
addEquality 添加线性等式约束的投资组合权重存在的制约因素
addGroupRatio 将组合权重的组比率约束添加到现有的组比率约束中
addGroups 对于投资组合权重添加组约束现有组的限制
addInequality 将投资组合权重的线性不等式约束添加到现有约束中
getBounds 从投资组合对象中获得投资组合权重的界
getBudget 获得投资对象预算约束边界
getCosts 从投资组合对象中获取买卖交易成本
getEquality 获得投资对象相等约束阵列
getGroupRatio 从portfolio对象中获取组比率约束数组
getGroups 从portfolio对象获取组约束数组
getInequality 获得不平等从投资对象约束阵列
getOneWayTurnover 获得投资对象单向周转约束
setGroups 为投资组合的权重设置组约束
setInequality 设置为线性投资组合权不等式约束
setBounds 为投资组合对象的投资组合权重设置界限
setBudget 建立预算约束
setCosts 建立比例交易成本
setEquality 设置为线性投资组合权重等式约束
setGroupRatio 对投资组合权重设置组比约束
setInitPort 建立初始或当前的投资组合
setOneWayTurnover 设置单向投资组合周转的限制
setTurnover 设置最大投资组合周转约束
setTrackingPort 建立跟踪误差约束的基准组合
setTrackingError 设置最大投资组合跟踪误差约束
setMinMaxNumAssets 对投资组合对象中的资产数量设置基数约束
checkFeasibility 根据投资组合目标检查投资组合的可行性
estimateBounds 估计投资组合集的全局下界和上界
estimateFrontier 在有效边界上估计指定数目的最优投资组合
estimateFrontierByReturn 估计有针对性的投资组合回报最优投资组合
estimateFrontierByRisk 评估具有目标投资组合风险的最优投资组合
estimateFrontierLimits 在有效边界的端点处估计最优投资组合
plotFrontier 绘制有效边界
estimateMaxSharpeRatio 评估有效投资组合以最大化投资组合对象的夏普比率
estimatePortMoments 估算投资组合对象的投资组合收益时刻
estimatePortReturn 估计投资组合回报的平均值
estimatePortRisk 根据与对应的物体相关的风险代理估算投资组合的风险
setSolver 选择主解算器并为组合优化指定相关的解算器选项
setSolverMINLP 选择混合整数非线性规划(MINLP)求解器进行投资组合优化

例子

全部折叠

你可以创建一个Portfolio对象,p,不带输入参数,使用disp

p =投资组合;disp (p);
组合与属性:BuyCost:[] SellCost:[] RiskFreeRate:[] AssetMean:[] AssetCovar:[] TrackingError:[] TrackingPort:[]营业额:[] BuyTurnover:[] SellTurnover:[]名称:[] NumAssets:[]资产列表:[] InitPort:[] AInequality:[] bInequality:[] AEquality:[] bEquality:[]下界:[] UPPERBOUND:[] LowerBudget:[] UpperBudget:[] GroupMatrix:[] LowerGroup:[]UpperGroup:[] A组:[]组B:[] LowerRatio:[] UpperRatio:[] MinNumAssets:[] MaxNumAssets:[] BoundType:[]

此方法提供了一种用。来设置项目组合优化问题的方法投资组合函数。然后,可以使用关联的set函数设置和修改属性集合投资组合对象。

您可以使用投资组合对象直接建立了一个“标准”的投资组合优化问题,给出了资产收益率的均值和协方差的变量C

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];p =组合('assetmean',米,“assetcovar”C...'lowerbudget',1“upperbudget”,1“下界”,0)
p =组合的属性:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: x1双[4]AssetCovar: [4 x4双]TrackingError: [] TrackingPort:[]营业额:[]BuyTurnover: [] SellTurnover:[]的名字:[]NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality:[]下界:x1双[4]UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets:[] MaxNumAssets: [] BoundType: []

请注意,下界属性值经受标量以来扩张AssetMeanAssetCovar提供问题的尺寸。

通过一系列步骤是实现建立一个“标准”的投资组合优化问题的相同任务的另一种方式,给定的资产回报的变量均值和方差C(这也说明了参数名不区分大小写)。

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];p =投资组合;p =组合(p,'assetmean',米,“assetcovar”C);p =组合(p,'lowerbudget',1“upperbudget”,1);p =组合(p,“下界”,0);plotFrontier (p);

这种方法有效,因为调用投资组合在这个特定的顺序。在这种情况下,调用初始化AssetMeanAssetCovar提供问题的维度。如果要执行最后这一步,则必须显式地确定下界属性如下:

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];p =投资组合;p =组合(p,下界的,0(大小(m)));p =组合(p,“LowerBudget”,1'UpperBudget',1);p =组合(p,“AssetMean”,米,'AssetCovar'C);plotFrontier (p);

如果您没有指定的大小下界而是输入一个标量参数投资组合对象假设您正在定义一个单一资产问题,并在调用时产生一个错误,以设置包含四个资产的资产时刻。

你可以创建一个Portfolio对象,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];p =组合(“的意思是”,米,“柯伐合金”C'预算',1'磅',0)
p =组合的属性:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: x1双[4]AssetCovar: [4 x4双]TrackingError: [] TrackingPort:[]营业额:[]BuyTurnover: [] SellTurnover:[]的名字:[]NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality:[]下界:x1双[4]UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] 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];p =投资组合;p。NumAssets = numel(m); p.AssetMean = m; p.AssetCovar = C; p.LowerBudget = 1; p.UpperBudget = 1; p.LowerBound = zeros(size(m)); disp(p)
组合与属性:BuyCost:[] SellCost:[] RiskFreeRate:[] AssetMean:[4X1双] AssetCovar:[4×4双] TrackingError:[] TrackingPort:[]营业额:[] BuyTurnover:[] SellTurnover:[]名称:[] NumAssets:4资源列表:[] InitPort:[] AInequality:[] bInequality:[] AEquality:[] bEquality:[]下界:[4X1双] UPPERBOUND:[] LowerBudget:1 UpperBudget:1 GroupMatrix:[] LowerGroup:[] UpperGroup:[] A组:[]组B:[] LowerRatio:[] UpperRatio:[] MinNumAssets:[] MaxNumAssets:[] BoundType:[]

创建高效的投资组合:

负载CAPMuniversep =组合(“资产列表”、资产(1:12));p = estimateAssetMoments(p, Data(:,1:12),“missingdata”,真正);p = setDefaultConstraints (p);plotFrontier (p);

pwgt = estimateFrontier(p, 5);pnames =细胞(1、5);I = 1:5 pnames {I} =的sprintf('端口%d',一世);结束吸墨纸=数据集([{pwgt}, pnames],“obsnames”,p.AssetList);DISP(吸墨纸);
端口1端口2端口3端口4 Port5 apple 0.017926 0.058247 0.097816 0.12955 0 amazon 0 0 0 0 0 cisco戴尔0.0041906 0 0 0 0 0 0 0 0 0 EBAY 0 0 0 0 0 google 0.16144 0.35678 0.55228 0.75116 1 hp IBM 0.46422 0.36045 0.25577 0.11928 0.052566 0.032302 0.011186 0 0 0 intel 0 0 0 0 0 microsoft 0.29966 0.19222 0.082949 0 0 ORCL 0 0 0 0 0 yahoo 0 0 0 0 0

更多关于

全部展开

参考

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

介绍了R2011a