投资组合

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

描述

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

项目组合优化的主要工作流程是创建a的一个实例投资组合对象,该对象完全指定组合优化问题并对投资组合使用支持的函数获取和分析有万博1manbetx效的投资组合。有关此工作流的详细信息,请参见组合对象的工作流

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

p =投资组合;
此语法创建了投资组合对象,p,使所有对象属性都为空。

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

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

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

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

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

q =组合(p,)

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

有关均值方差优化的理论基础的更详细信息,请参见投资组合优化理论

创建

描述

例子

p=投资组合创建一个空投资组合目标为平均方差投资组合优化和分析。然后可以将元素添加到投资组合对象使用支持的“添加”和“设置”函万博1manbetx数。有关更多信息,请参见创建投资组合对象

例子

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

例子

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

输入参数

全部展开

以前建造的投资组合使用指定的对象,投资组合

属性

全部展开

设置对象

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

数据类型:细胞|字符串

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

数据类型:

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

数据类型:字符|字符串

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

数据类型:

组合对象的限制

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

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

A组的权值以B组的权值为界,指定为矩阵。

数据类型:

组权值,用矩阵表示。

数据类型:

组成员矩阵,指定为矩阵。

数据类型:

下界约束,指定为一个向量。

数据类型:

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

数据类型:

下界组约束,指定为向量。

数据类型:

之间分配的最小比率GroupAGroupB,指定为向量。

数据类型:

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

数据类型:

跟踪组合用于跟踪误差约束,指定为向量。

数据类型:

上限约束,指定为向量。

数据类型:

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

数据类型:

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

数据类型:

之间分配的最大比率GroupAGroupB,指定为向量。

数据类型:

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

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

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

数据类型:

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

数据类型:

营业额对销售额的约束,指定为标量。

数据类型:

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

数据类型:

周转约束,指定为标量。

数据类型:

组合对象建模

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

数据类型:

资产收益的平均值,指定为向量。

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

对象的功能

setAssetList 设置资产标识符列表
setInitPort 建立初始或当前投资组合
setDefaultConstraints 设置投资组合约束,使非负权值的和为1
getAssetMoments 从投资组合对象中获得资产收益的均值和协方差
setAssetMoments 为投资组合对象设置资产收益的矩(均值和协方差)
estimateAssetMoments 从数据中估计资产收益的平均值和协方差
setcost 建立成比例的交易成本
addEquality 将投资组合权重的线性等式约束添加到现有约束中
addGroupRatio 将组合权重的组比率约束添加到现有的组比率约束中
addGroups 将组合权重的组约束添加到现有的组约束中
addInequality 将投资组合权重的线性不等式约束添加到现有约束中
getBounds 从投资组合对象中获得投资组合权重的界限
getBudget 从项目组合对象中获得预算约束边界
getCosts 从投资组合对象中获取买卖交易成本
getEquality 从portfolio对象中获取相等约束数组
getGroupRatio 从portfolio对象中获取组比率约束数组
getGroups 从portfolio对象获取组约束数组
getInequality 从portfolio对象中获取不等式约束数组
getOneWayTurnover 从项目组合对象中获得单向周转约束
setGroups 为投资组合的权重设置组约束
setInequality 建立投资组合权重的线性不等式约束
setBounds 为投资组合对象的投资组合权重设置界限
setBudget 制定预算限制
setcost 建立成比例的交易成本
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: [] AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality:[]下界:[]UpperBound: [] LowerBudget: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] 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: 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: []

创建有效的投资组合:

负载CAPMuniversep =组合(“AssetList”、资产(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