主要内容

投资组合

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

描述

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

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

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

p =投资组合;
此语法创建投资组合对象,P.,以便所有对象属性都为空。

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

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

如果一个投资组合对象存在时,语法允许投资组合对象是具有后续名称值对的现有对象,用于添加或修改属性的参数。例如,给予现有的投资组合对象P.,一般语法是:

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

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

q = portfolio(p,...

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

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

创建

描述

例子

P.=投资组合创建一个空的投资组合用于平均方差组合优化和分析的对象。然后,您可以添加元素到投资组合对象,使用支持的“add”和“se万博1manbetxt”函数。有关更多信息,请参见创建投资组合对象

例子

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

例子

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

输入参数

全部展开

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

属性

全部展开

设置对象

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

数据类型:细胞|字符串

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

数据类型:

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

数据类型:char|字符串

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

数据类型:

组合对象约束

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

数据类型:

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

数据类型:

线性平等约束向量,指定为向量。

数据类型:

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

数据类型:

将重量组分组由B组中的重量界定为矩阵。

数据类型:

B组权重,指定为矩阵。

数据类型:

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

数据类型:

下界约束,指定为向量。

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

上限约束,指定为向量。

数据类型:

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

数据类型:

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

数据类型:

之间的最大拨款比例GroupAGroupB,指定为向量。

数据类型:

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

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

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

数据类型:

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

数据类型:

销售额的周转约束,指定为标量。

数据类型:

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

数据类型:

转换约束,指定为标量。

数据类型:

投资组合对象建模

资产回报的协方差,指定为平方矩阵。如果AssetCovar是不是对称正半定矩阵,用nearcorr为相关矩阵创建正半纤维矩阵。

数据类型:

资产返回的平均值,指定为向量。

数据类型:

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

数据类型:

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

数据类型:

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

数据类型:

对象功能

setAssetList 设置资产的标识符列表
setInitPort 设置初始或当前产品组合
setDefaultConstraints 建立具有非负权值和为1的投资组合约束
getAssetMoments 从投资组合对象获得资产返回的平均值和协方差
setAssetMoments 为Portfolio对象设置资产回报的时刻(均值和协方差)
估计 根据数据估计资产收益的均值和协方差
setcost 设置成比例的交易成本
addequality. 为产物权重和现有约束添加线性平等约束
addgroupratio. 在现有的组比率约束中添加组合权重的组比率约束
addGroups 向现有的组约束中添加组合权重的组约束
兼容性 在现有约束条件的基础上,加入权重的线性不等式约束
getBounds 从投资组合对象获取投资组合权重的界限
GetBudget. 从投资组合对象中获得预算约束边界
getcosts. 从投资组合对象获取买卖交易成本
庇护 从投资组合对象中获取相等约束数组
getGroupRatio 从公文包对象获取组比率约束数组
getgroups. 从组合对象中获取组约束数组
盖特不等式 从投资组合对象中获取不等式约束数组
GetOneway营业额 从投资组合对象获取单向营业额限制
setGroups 为产品组合重量设置组约束
集不等式 为产品组合重量设置线性不等式约束
setBound. 为投资组合对象设置投资组合权重的界限
setBudget. 设置预算约束
setcost 设置成比例的交易成本
setEquality 建立投资组合权重的线性等式约束
setGroupRatio 建立组合权重的组比率约束
setInitPort 设置初始或当前产品组合
Setoneway营业额 建立单向的投资组合周转率约束
塞起 设置最大投资组合周转约束
settrackingport. 建立跟踪误差约束的基准组合
setTrackingError 设置最大投资组合跟踪误差约束
setMinMaxNumAssets 对投资组合对象中的资产数量设置基数约束
checkFeasibility 根据投资组合目标,检查投资组合的可行性
估计界 估算组合集的全球下限和上限
estimateFrontier 在有效边界上估计指定数量的最优投资组合
estismsfrontierbyreturn. 估计有针对性产品组合的最佳投资组合
估计前沿风险 评估具有目标投资风险的最优投资组合
估计前沿极限 在有效边界的端点估计最优投资组合
plotFrontier 情节有效边界
estimateMaxSharpeRatio 估算有效的投资组合,以最大化投资组合对象的锐利比率
estibalportmoments. 估计投资组合对象的投资组合返回
estimatePortReturn 估计投资组合返回的依据
估计风险 根据与相应对象相关联的风险代理估计投资组合风险
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: [] AEquality: [] bEquality: [] LowerBound: [] UpperBound: [] LowerBudget: [] UpperBudget:[] GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: []

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

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

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 = portfolio(“assetmean”米,“资产价值”, C,...“lowerbudget”, 1“最高预算”, 1下界的, 0)
P =组合与属性:BuyCost:[] SellCost:[] RiskFreeRate:[] AssetMean:[4X1双] AssetCovar:[4×4双] TrackingError:[] TrackingPort:[]营业额:[] BuyTurnover:[] SellTurnover:[]姓名:[] numasset:4 assetlist:[] initport:[]弥撒:[] Binequality:[] aequality:[]叔本状:[]下行:[4x1 double]上行:[] upperBudget:1 uploBudget:1] DowerGroup:[]上组:[] Groupa:[] GroupB:[] Dreamratio:[] UppleRatio:[] Minnumassets:[] MaxNumassets:[]界定:[]

请注意下界物业价值以来经过标量扩展AssetMeanAssetCovar提供问题的维度。

使用一系列步骤是完成设置“标准”产品组合优化问题的相同任务的替代方法,给出了变量中资产返回的均值和协方差mC(这也说明了参数名称不区分大小写)。

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 = portfolio(p,“assetmean”米,“资产价值”, C);p = portfolio(p,“lowerbudget”, 1“最高预算”,1);p = portfolio(p,下界的,0);PlotFrontier(P);

图包含轴。带有标题\ Bfefficientier的轴包含类型线的对象。

这种方式有效,因为呼叫投资组合是以这个特定的顺序。在这种情况下,呼叫初始化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 = portfolio(p,下界的,零(大小(m))));p = portfolio(p,'LowerBudget', 1“UpperBudget”,1);p = portfolio(p,'assetmean'米,“AssetCovar”(C);(p);

图包含轴。带有标题\ Bfefficientier的轴包含类型线的对象。

如果没有指定的大小下界但是,相反,输入标量参数,投资组合对象假定您正在定义单个资产问题,并在呼叫中生成错误,以设置具有四个资产的资产时光。

您可以创建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 = portfolio(“中庸”米,“科瓦尔”, C,'预算', 1'磅', 0)
P =组合与属性:BuyCost:[] SellCost:[] RiskFreeRate:[] AssetMean:[4X1双] AssetCovar:[4×4双] TrackingError:[] TrackingPort:[]营业额:[] BuyTurnover:[] SellTurnover:[]姓名:[] numasset:4 assetlist:[] initport:[]弥撒:[] Binequality:[] aequality:[]叔本状:[]下行:[4x1 double]上行:[] upperBudget:1 uploBudget:1] DowerGroup:[]上组:[] Groupa:[] GroupB:[] Dreamratio:[] UppleRatio:[] Minnumassets:[] MaxNumassets:[]界定:[]

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

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、 资产平均数=m;p、 资产价值=C;p、 LowerBudget=1;p、 最高预算=1;p、 LowerBound=零(大小(m));显示(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: []

创建有效的投资组合:

加载CAPMuniversep = portfolio(“AssetList”、资产(1:12));p = estimateAssetMoments(p, Data(:,1:12),'缺失数据',真正的);p = setDefaultConstraints (p);PlotFrontier(P);

图包含轴。带有标题\ Bfefficientier的轴包含类型线的对象。

PWGT = estmateFrontier(P,5);pnames = cell(1,5);为了i = 1:5 pnames {i} = sprintf('端口%d',一世);结尾Blotter=数据集([{pwgt},pnames],“obsnames”, p.AssetList);disp(流水帐);
端口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中引入