主要内容

投资组合

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

描述

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

投资组合优化的主要工作流程是创建投资组合对象,该对象完全指定投资组合优化问题并在投资组合对象使用支持的函数获取和分金宝app析有效的投资组合。有关此工作流的详细信息,请参阅公文包对象工作流

你可以使用投资组合以多种方式设置投资组合优化问题投资组合对象,最简单的语法是:

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组权重,指定为矩阵。

数据类型:

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

数据类型:

下限约束,指定为向量。

数据类型:

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

数据类型:

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

数据类型:

各部门之间的最低分配比率GroupAB组,指定为向量。

数据类型:

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

数据类型:

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

数据类型:

上界约束,指定为向量。

数据类型:

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

数据类型:

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

数据类型:

最大比例之间的分配GroupAB组,指定为向量。

数据类型:

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

数据类型:烧焦|单间牢房|字符串

投资组合中分配的最小资产数,指定为标量数值。有关详细信息,请参阅setMinMaxNumAssets

数据类型:

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

数据类型:

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

数据类型:

对采购的营业额约束,指定为标量。

数据类型:

转换约束,指定为标量。

数据类型:

组合对象建模

资产回报的协方差,指定为平方矩阵。如果AssetCovar不是对称半正定矩阵,使用尼尔科尔为相关矩阵建立一个正半定矩阵。

数据类型:

资产回报的平均值,用向量表示。

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

对象的功能

setAssetList 建立资产的标识符列表
setInitPort 建立初始或当前的投资组合
setDefaultConstraints 建立具有非负权值和为1的投资组合约束
getAssetMoments 从投资组合对象获取资产回报的平均值和协方差
setAssetMoments 为投资组合对象设置资产回报的矩(平均值和协方差)
估计资产时刻 根据数据估计资产回报的平均值和协方差
设定成本 设置成比例的交易成本
addEquality 将投资组合权重的线性等式约束添加到现有约束
addGroupRatio 在现有的组比率约束中添加组合权重的组比率约束
addGroups 将组合权重的组约束添加到现有组约束
addInequality 在现有约束条件的基础上,加入权重的线性不等式约束
getBounds 从投资组合对象中获取投资组合权重的界限
getBudget 从投资组合对象获取预算约束边界
getCosts 从投资组合对象获取买卖交易成本
getEquality 从公文包对象获取相等约束数组
getGroupRatio 从公文包对象获取组比率约束数组
getGroups 从组合对象中获取组约束数组
盖特不等式 从公文包对象获取不等式约束数组
GetOneway营业额 从投资组合对象获取单向周转约束
集合群 为组合权重设置组约束
集不等式 为投资组合权重设置线性不等式约束
setBounds 为投资组合对象设置投资组合权重的界限
setBudget 设置预算约束
设定成本 设置成比例的交易成本
平等 为投资组合权重设置线性等式约束
setGroupRatio 为投资组合权重设置组比率约束
setInitPort 建立初始或当前的投资组合
Setoneway营业额 设置单向投资组合周转约束
周转率 设置最大投资组合周转率约束
设置跟踪端口 建立跟踪误差约束的基准组合
设置跟踪错误 设置最大投资组合跟踪误差约束
setMinMaxNumAssets 对投资组合对象中的资产数量设置基数约束
checkFeasibility 根据投资组合目标,检查投资组合的可行性
估计界 估计投资组合的全局上界和下界
estimateFrontier 在有效边界上估计指定数量的最优投资组合
estimateFrontierByReturn 用目标投资组合收益估计最优投资组合
估计前沿风险 评估具有目标投资风险的最优投资组合
估计前沿极限 在有效边界的端点估计最优投资组合
plotFrontier 绘制有效边界
估计最大值 评估有效的投资组合以最大化投资组合对象的夏普比率
estimatePortMoments 估算投资组合对象的投资组合收益时刻
估计收益 估计投资组合的平均收益
估计风险 根据与相应对象关联的风险代理估算投资组合风险
塞索尔弗 选择主求解器并指定组合优化的相关求解器选项
SetSolverinlp 选择混合整数非线性规划(MINLP)求解器进行投资组合优化

例子

全部崩溃

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

p =投资组合;disp (p);
具有属性的投资组合:买入成本:[]卖出成本:[]无风险利率:[]资产平均值:[]资产价值:[]跟踪错误:[]跟踪端口:[]营业额:[]买入营业额:[]卖出营业额:[]名称:[]资产列表:[]初始端口:[]AInequality:[]bInequality:[]bEquality:[]下限:[]上限:[]下限预算:[]GroupMatrix:[]下限组:[]上限组:[]A组:[]B组:[]下限组:[]上限比率:[]最小资产组:[]最大资产组:[]边界类型:[]

这种方法提供了一种建立投资组合优化问题的方法投资组合作用然后,可以使用关联的集合函数来设置和修改投资组合对象

你可以使用投资组合对象直接建立一个“标准”投资组合优化问题,给定变量中资产收益的均值和协方差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 =组合(“资产平均值”M“资产价值”C...“低预算”, 1“最高预算”, 1“lowerbound”, 0)
p =资产组合:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [4x1 double] AssetCovar: [4x4 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [4x1 double] 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,“资产平均值”M“资产价值”,C);p=投资组合(p,“低预算”, 1“最高预算”,1);p=投资组合(p,“lowerbound”, 0);plotFrontier (p);

图中包含一个轴对象。标题为E的轴对象包含一个类型为line的对象。

这种方法是可行的,因为调用投资组合它们是按这个顺序排列的。在本例中,调用initializeAssetMeanAssetCovar提供问题的维度。如果要最后执行这一步,就必须显式地对下界属性如下:

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“最高预算”,1);p=投资组合(p,“AssetMean”M“资产价值”(C);(p);

图中包含一个轴对象。标题为E的轴对象包含一个类型为line的对象。

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

您可以创建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 =组合(“中庸”M“科瓦尔”C“预算”, 1“磅”, 0)
p =资产组合:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [4x1 double] AssetCovar: [4x4 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [4x1 double] 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.0119 0.0336 0.1225];p=投资组合;p、 NumAssets=numel(m);p、 资产平均数=m;p、 资产价值=C;p、 LowerBudget=1;p、 最高预算=1;p、 LowerBound=零(大小(m));显示(p)
具有属性的投资组合:BuyCost:[]SellCost:[]无风险费率:[]资产平均值:[4x1 double]资产价值:[4x4 double]跟踪错误:[]跟踪端口:[]营业额:[]BuyTournal:[]SellTournal:[]名称:[]NumAssets:4资产列表:[]初始端口:[]AInequality:[]bInequality:[]AEQUITY:[]下限:[4x1 double]上限:[]LowerBudget:1 UpperBudget:1 GroupMatrix:[]LowerGroup:[]UpperGroup:[]A组:[]B组:[]LowerRatio:[]UpperRatio:[]MinNumAssets:[]MaxNumAssets:[]BoundType:[]

创建高效的投资组合:

负载大写字母p =组合(“资产清单”、资产(1:12));p = estimateAssetMoments(p, Data(:,1:12),“missingdata”,对);p=设置默认约束(p);(p);

图中包含一个轴对象。标题为E的轴对象包含一个类型为line的对象。

pwgt = estimateFrontier(p, 5);pnames =细胞(1、5);i=1:5 pnames{i}=sprintf('端口%d',i);结束Blotter=数据集([{pwgt},pnames],“obsnames”,p.AssetList);吸墨纸;
端口1端口2端口3端口4端口5 AAPL 0.017926 0.058247 0.097816 0.12955 0 AMZN 0 0 0 0 0 0 0 0 CSCO 0 0 0戴尔0.0041906 0 0 0 0易趣0 0 0 0 0 0 0 GOOG 0.16144 0.35678 0.55228 0.75116 1 HPQ 0.052566 0.032302 0.0111860 0 IBM 0.46422 0.36045 0.25577 0.11928 0 0 0 0 0 0 0 0 0 0 0国际信托0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.299620 0.19222 0.082990

更多关于

全部展开

工具书类

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

在R2011a中引入