主要内容

投资组合

创建Portfolio对象,用于均值-方差投资组合优化和分析

描述

使用投资组合创建一个投资组合均值-方差投资组合优化对象。

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

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

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

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

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

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

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

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

q =组合(p,)

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

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

创建

描述

例子

p=投资组合创建一个空投资组合均值-方差投资组合优化分析对象。对象中添加元素投资组合使用支持的“add”和“set”函数创建对象。更多信息,请参见创建Portfolio对象

例子

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

例子

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

输入参数

全部展开

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

属性

全部展开

建立投资组合对象

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

数据类型:细胞|字符串

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

数据类型:

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

数据类型:字符|字符串

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

数据类型:

组合对象的限制

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

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

B组权重,指定为矩阵。更多信息,请参见组约束

数据类型:

组成员矩阵,指定为矩阵。更多信息,请参见组比例限制

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

之间的最小分配比例GroupAGroupB,指定为一个向量。更多信息,请参见组比例限制

数据类型:

跟踪误差约束的上界,指定为一个标量。更多信息,请参见跟踪误差的约束

数据类型:

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

数据类型:

上限约束,指定为一个向量。更多信息,请参见“简单”绑定约束“条件”绑定约束

数据类型:

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

数据类型:

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

数据类型:

之间的最大分配比例GroupAGroupB,指定为一个向量。更多信息,请参见组比例限制

数据类型:

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

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

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

数据类型:

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

数据类型:

销售的营业额限制,指定为一个标量。更多信息,请参见平均营业额约束单向流动的约束

数据类型:

对购买的周转约束,指定为一个标量。更多信息,请参见平均营业额约束单向流动的约束

数据类型:

周转约束,指定为标量。更多信息,请参见平均营业额约束单向流动的约束

数据类型:

组合对象建模

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

数据类型:

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

数据类型:

成比例的购买成本,指定为一个向量。更多信息,请参见净投资收益

数据类型:

无风险率,指定为标量。

数据类型:

成比例的销售成本,指定为向量。更多信息,请参见净投资收益

数据类型:

对象的功能

setAssetList 为资产设置标识符列表
setInitPort 建立初始或当前的投资组合
setDefaultConstraints 设置投资组合约束,非负权重之和为1
getAssetMoments 从Portfolio对象中获取资产收益的均值和协方差
setAssetMoments 为Portfolio对象设置资产收益的矩(均值和协方差)
estimateAssetMoments 根据数据估计资产收益的均值和协方差
setcost 为投资组合建立成比例的交易成本
addEquality 在现有约束的基础上,增加投资组合权重的线性等式约束
addGroupRatio 将组合权重的分组比例约束添加到现有的分组比例约束
addGroups 为现有的组约束增加组合权重的组约束
addInequality 将投资组合权重的线性不等式约束添加到现有约束中
getBounds 从组合对象中获取组合权重的边界
getBudget 从投资组合对象中获取预算约束边界
getCosts 从投资组合对象中获取买卖交易成本
getEquality 从投资组合对象中获取相等约束数组
getGroupRatio 从投资组合对象中获取组比率约束数组
getGroups 从组合对象中获取组约束数组
getInequality 从投资组合对象中获取不等式约束数组
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 根据与对应对象关联的风险代理估计投资组合风险
estimateCustomObjectivePortfolio 为用户定义的目标函数估计最优投资组合投资组合对象
setSolver 选择主求解器,并为组合优化指定相关的求解器选项
setSolverMINLP 选择混合整数非线性规划(MINLP)求解器进行投资组合优化

例子

全部折叠

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

p =投资组合;disp (p);
资产组合属性:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [] AssetCovar: [] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: [] AssetList: [] InitPort: [] AInequality: [] bInequality: [] aquality: [] bEquality: [] LowerBound: [] UpperBound: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] 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 = Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [4x1 double] AssetCovar: [4x4 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] 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);

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

这种方式工作,因为调用投资组合都是按照这个特定的顺序。在本例中,调用初始化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);

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

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

你可以创建一个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 = Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [4x1 double] AssetCovar: [4x4 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 4 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] 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 =元素个数(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 double] AssetCovar: [4x4 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 4 AssetList: [] InitPort: [] [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] UpperBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets:[] MaxNumAssets: [] BoundType: []

创建有效的投资组合:

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

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

pwgt = estimateFrontier(p, 5);pnames =细胞(1、5);I = 1:5 pnames{I} = sprintf(的端口% d ',我);结束吸墨纸=数据集([{pwgt}, pnames],“obsnames”, p.AssetList);disp(流水帐);
Port1 Port2 Port3 Port4 Port5 AAPL 0.017926 0.058247 0.097816 0.12955 0 AMZN 00 00 0 CSCO 00 00 DELL 0.0041906 00 00 EBAY 00 00 DELL 0.0041906 00 00 EBAY 00 00 GOOG 0.16144 0.35678 0.55228 0.75116 1 HPQ 0.052566 0.033202 0.011186 00 IBM 0.0.6422 0.36045 0.25577 0.11928 0 INTC 00 00 0 MSFT 0.29966 0.19222 0.082949 00 ORCL 00 00 00 YHOO 00 00 0

更多关于

全部展开

参考文献

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

版本历史

介绍了R2011a

Baidu
map