Main Content

Portfolio

创建 Portfolio 对象以进行均值-方差投资组合优化和分析

说明

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

投资组合优化的主要工作流是创建一个 Portfolio 对象实例来完整指定一个投资组合优化问题,并使用支持的函数对 Portfolio 对象进行运算,以求取和分析有效投资组合。有关此工作流的详细信息,请参阅 Portfolio 对象工作流

您可通过几种方式使用 Portfolio 对象。要使用 Portfolio 对象创建投资组合优化问题,最简单的语法是:

p = Portfolio;
此语法可创建一个 Portfolio 对象 p,其中所有对象属性都为空。

Portfolio 对象也接受用一系列名称-值对组参量指定属性及其值。Portfolio 对象接受采用以下一般语法的输入作为属性:

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

如果已有 Portfolio 对象,则该语法允许且仅允许 Portfolio 对象的第一个参量为已有对象,后续名称-值对组参量则表示要添加或修改的属性。例如,假定已有 Portfolio 对象 p,一般语法为:

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

输入参量名称不区分大小写,但必须完整指定。此外,部分属性可采用简写参量名称指定(请参阅 简写属性名称)。Portfolio 对象会尝试从输入中检测问题的维度,一旦确定,则对后续输入进行各种标量或矩阵扩展运算,从而简化构建问题的整个过程。此外,Portfolio 对象是值对象,因此,假定有投资组合 p,则以下代码将创建一个不同于 p 的新对象 q

q = Portfolio(p, ...)

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

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

创建对象

描述

示例

p = Portfolio 创建一个空的 Portfolio 对象,用于均值-方差投资组合优化和分析。然后,您可以使用支持的 "add" 和 "set" 函数将元素添加到 Portfolio 对象。有关详细信息,请参阅创建 Portfolio 对象

示例

p = Portfolio(Name,Value) 创建一个 Portfolio 对象(p)并使用名称-值对组设置属性。例如,p = Portfolio('AssetList',Assets(1:12))。您可以指定多个名称-值对组。

示例

p = Portfolio(p,Name,Value) 使用之前创建的 Portfolio 对象 p 创建一个 Portfolio 对象 (p),并使用名称-值对组设置属性。您可以指定多个名称-值对组。

输入参量

全部展开

之前构造的 Portfolio 对象,使用 Portfolio 指定。

属性

全部展开

设置 Portfolio 对象

池内资产名称或符号,指定为字符向量元胞数组或字符串数组。

数据类型: cell | string

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

数据类型: double

Portfolio 对象实例的名称,指定为字符向量或字符串。

数据类型: char | string

池内资产数量,指定为整数标量。

数据类型: double

Portfolio 对象约束

线性等式约束矩阵,指定为矩阵。有关详细信息,请参阅Linear Equality Constraints

数据类型: double

线性不等式约束矩阵,指定为矩阵。有关详细信息,请参阅Linear Inequality Constraints

数据类型: double

线性等式约束向量,指定为向量。有关详细信息,请参阅Linear Equality Constraints

数据类型: double

线性不等式约束向量,指定为向量。有关详细信息,请参阅Linear Inequality Constraints

数据类型: double

受 B 组权重限制的 A 组权重,指定为矩阵。有关详细信息,请参阅Group Constraints

数据类型: double

B 组权重,指定为矩阵。有关详细信息,请参阅Group Constraints

数据类型: double

组成员关系矩阵,指定为矩阵。有关详细信息,请参阅Group Ratio Constraints

数据类型: double

下界约束,指定为向量。有关详细信息,请参阅'Simple' Bound Constraints'Conditional' Bound Constraints

数据类型: double

下界预算约束,指定为标量。有关详细信息,请参阅Budget Constraints

数据类型: double

下界组约束,指定为向量。有关详细信息,请参阅Group Constraints

数据类型: double

GroupAGroupB 之间的最低配置比例,指定为向量。有关详细信息,请参阅Group Ratio Constraints

数据类型: double

跟踪误差约束的上界,指定为标量。有关详细信息,请参阅Tracking Error Constraints

数据类型: double

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

数据类型: double

上界约束,指定为向量。有关详细信息,请参阅'Simple' Bound Constraints'Conditional' Bound Constraints

数据类型: double

上界预算约束,指定为标量。有关详细信息,请参阅Budget Constraints

数据类型: double

上界组约束,指定为向量。有关详细信息,请参阅Group Constraints

数据类型: double

GroupAGroupB 之间的最高配置比例,指定为向量。有关详细信息,请参阅Group Ratio Constraints

数据类型: double

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

数据类型: char | cell | string

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

数据类型: double

在投资组合中配置的最大资产数,指定为标量数值。有关详细信息,请参阅 setMinMaxNumAssetsCardinality Constraints

数据类型: double

出售的换手率约束,指定为标量。有关详细信息,请参阅Average Turnover ConstraintsOne-Way Turnover Constraints

数据类型: double

购买的换手率约束,指定为标量。有关详细信息,请参阅Average Turnover ConstraintsOne-Way Turnover Constraints

数据类型: double

换手率约束,指定为标量。有关详细信息,请参阅Average Turnover ConstraintsOne-Way Turnover Constraints

数据类型: double

Portfolio 对象建模

资产收益的协方差,指定为方阵。

  • 如果 AssetCovar 不是对称半正定矩阵,则使用 nearcorr 为相关矩阵创建半正定矩阵。

  • 在某些情况下,传统的协方差矩阵样本逼近方法表现不佳。一个直观的示例是当变量数目大于观测值数目:这导致了一个不可逆的协方差矩阵。此外,由于协方差估计是使用随机数据的观测值进行的,因此估计器包含一定量的噪声。这种噪声通常会导致病态协方差估计。使用病态矩阵会放大估计误差的影响。您可以使用 covarianceShrinkagecovarianceDenoising 来进行协方差估计和降噪。

数据类型: double

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

数据类型: double

比例购买成本,指定为向量。有关详细信息,请参阅净投资组合收益

数据类型: double

无风险率,指定为标量。

数据类型: double

比例出售成本,指定为向量。有关详细信息,请参阅净投资组合收益

数据类型: double

对象函数

setAssetListSet up list of identifiers for assets
setInitPortSet up initial or current portfolio
setDefaultConstraints使用总和为 1 的非负权重设置投资组合约束
getAssetMoments从 Portfolio 对象获取资产收益的均值和协方差
setAssetMoments 设置 Portfolio 对象资产收益的矩(均值和协方差)
estimateAssetMomentsEstimate mean and covariance of asset returns from data
setCostsSet up proportional transaction costs for portfolio
addEqualityAdd linear equality constraints for portfolio weights to existing constraints
addGroupRatioAdd group ratio constraints for portfolio weights to existing group ratio constraints
addGroupsAdd group constraints for portfolio weights to existing group constraints
addInequalityAdd linear inequality constraints for portfolio weights to existing constraints
getBoundsObtain bounds for portfolio weights from portfolio object
getBudgetObtain budget constraint bounds from portfolio object
getCostsObtain buy and sell transaction costs from portfolio object
getEqualityObtain equality constraint arrays from portfolio object
getGroupRatioObtain group ratio constraint arrays from portfolio object
getGroupsObtain group constraint arrays from portfolio object
getInequalityObtain inequality constraint arrays from portfolio object
getOneWayTurnoverObtain one-way turnover constraints from portfolio object
setGroupsSet up group constraints for portfolio weights
setInequalitySet up linear inequality constraints for portfolio weights
setBoundsSet up bounds for portfolio weights for portfolio
setBudgetSet up budget constraints for portfolio
setCostsSet up proportional transaction costs for portfolio
setEqualitySet up linear equality constraints for portfolio weights
setGroupRatioSet up group ratio constraints for portfolio weights
setInitPortSet up initial or current portfolio
setOneWayTurnoverSet up one-way portfolio turnover constraints
setTurnoverSet up maximum portfolio turnover constraint
setTrackingPortSet up benchmark portfolio for tracking error constraint
setTrackingErrorSet up maximum portfolio tracking error constraint
setMinMaxNumAssetsSet cardinality constraints on the number of assets invested in a portfolio
checkFeasibilityCheck feasibility of input portfolios against portfolio object
estimateBoundsEstimate global lower and upper bounds for set of portfolios
estimateFrontier估计有效边界上指定数量的最优投资组合
estimateFrontierByReturnEstimate optimal portfolios with targeted portfolio returns
estimateFrontierByRiskEstimate optimal portfolios with targeted portfolio risks
estimateFrontierLimitsEstimate optimal portfolios at endpoints of efficient frontier
plotFrontier绘制有效边界
estimateMaxSharpeRatio 估计有效投资组合以最大化 Portfolio 对象的夏普比率
estimatePortMoments 估计 Portfolio 对象的投资组合收益矩
estimatePortReturn估计投资组合收益均值
estimatePortRiskEstimate portfolio risk according to risk proxy associated with corresponding object
estimateCustomObjectivePortfolio Estimate optimal portfolio for user-defined objective function for Portfolio object
setSolverChoose main solver and specify associated solver options for portfolio optimization
setSolverMINLPChoose mixed integer nonlinear programming (MINLP) solver for portfolio optimization

示例

全部折叠

您可以创建一个不带输入参量的 Portfolio 对象 p,并使用 disp 显示该对象。

p = Portfolio;
disp(p);
  Portfolio with properties:

          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: []

借助此方法,您可以使用 Portfolio 函数创建投资组合优化问题。然后,您可以使用相关的 set 函数来设置和修改 Portfolio 对象中的一系列属性。

您可以用变量 mC 指定资产收益的均值和协方差,直接使用 Portfolio 对象来创建“标准”投资组合优化问题。

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', m, 'assetcovar', C, ...
'lowerbudget', 1, 'upperbudget', 1, 'lowerbound', 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: [4x1 double]
       UpperBound: []
      LowerBudget: 1
      UpperBudget: 1
      GroupMatrix: []
       LowerGroup: []
       UpperGroup: []
           GroupA: []
           GroupB: []
       LowerRatio: []
       UpperRatio: []
     MinNumAssets: []
     MaxNumAssets: []
        BoundType: []

请注意,LowerBound 属性值进行标量扩展,因为 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 = Portfolio;
p = Portfolio(p, 'assetmean', m, 'assetcovar', C);
p = Portfolio(p, 'lowerbudget', 1, 'upperbudget', 1);
p = Portfolio(p, 'lowerbound', 0);
 
plotFrontier(p);

Figure contains an axes object. The axes object with title Efficient Frontier, xlabel Standard Deviation of Portfolio Returns, ylabel Mean of Portfolio Returns contains an object of type line.

这种方法之所以有效,是因为对 Portfolio 的调用是按此特定顺序进行的。在本例中,初始化 AssetMeanAssetCovar 的那次调用确定了问题的维度。如果您最后执行这次调用,则必须显式设置 LowerBound 属性的维度,如下所示:

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;
p = Portfolio(p, 'LowerBound', zeros(size(m)));
p = Portfolio(p, 'LowerBudget', 1, 'UpperBudget', 1);
p = Portfolio(p, 'AssetMean', m, 'AssetCovar', C);
 
plotFrontier(p);

Figure contains an axes object. The axes object with title Efficient Frontier, xlabel Standard Deviation of Portfolio Returns, ylabel Mean of Portfolio Returns contains an object of type line.

如果未指定 LowerBound 的大小,而是输入标量参量,则 Portfolio 对象假设您正在定义单资产问题,并在设置包含四个资产的资产矩的调用中产生错误。

使用 Portfolio 创建 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('mean', m, 'covar', C, 'budget', 1, 'lb', 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: [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 0.0119 0.0336 0.1225 ];

p = Portfolio;
p.NumAssets = numel(m);
p.AssetMean = m;
p.AssetCovar = C;
p.LowerBudget = 1;
p.UpperBudget = 1;
p.LowerBound = zeros(size(m));
disp(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: [4x1 double]
       UpperBound: []
      LowerBudget: 1
      UpperBudget: 1
      GroupMatrix: []
       LowerGroup: []
       UpperGroup: []
           GroupA: []
           GroupB: []
       LowerRatio: []
       UpperRatio: []
     MinNumAssets: []
     MaxNumAssets: []
        BoundType: []

创建有效投资组合:

load CAPMuniverse

p = Portfolio('AssetList',Assets(1:12));
p = estimateAssetMoments(p, Data(:,1:12),'missingdata',true);
p = setDefaultConstraints(p);
plotFrontier(p);

Figure contains an axes object. The axes object with title Efficient Frontier, xlabel Standard Deviation of Portfolio Returns, ylabel Mean of Portfolio Returns contains an object of type line.

pwgt = estimateFrontier(p, 5);

pnames = cell(1,5);
for i = 1:5
	pnames{i} = sprintf('Port%d',i);
end

Blotter = dataset([{pwgt},pnames],'obsnames',p.AssetList);

disp(Blotter);
            Port1        Port2       Port3       Port4      Port5
    AAPL     0.017926    0.058247    0.097816    0.12955    0    
    AMZN            0           0           0          0    0    
    CSCO            0           0           0          0    0    
    DELL    0.0041906           0           0          0    0    
    EBAY            0           0           0          0    0    
    GOOG      0.16144     0.35678     0.55228    0.75116    1    
    HPQ      0.052566    0.032302    0.011186          0    0    
    IBM       0.46422     0.36045     0.25577    0.11928    0    
    INTC            0           0           0          0    0    
    MSFT      0.29966     0.19222    0.082949          0    0    
    ORCL            0           0           0          0    0    
    YHOO            0           0           0          0    0    

此示例说明如何求解具有选定资产数量或条件(半连续)边界约束的均值方差投资组合优化问题。若要求解此问题,您可以使用 Portfolio 对象以及不同的混合整数非线性规划 (MINLP) 求解器。

均值-方差投资组合

加载 CAPMuniverse.mat 中的收益数据。然后,使用默认约束创建一个权重总和为 1 的纯多头投资组合均值方差 Portfolio 对象。对于此示例,您可以将权重 X 的可行域定义为

X={x|i=1nxi=1,xi0}.

% Load data
load CAPMuniverse.mat

% Create a mean-variance Portfolio object with default constraints
p = Portfolio(AssetList=Assets(1:12));
p = estimateAssetMoments(p,Data(:,1:12));
p = setDefaultConstraints(p);

通过设置条件(半连续)边界来包含此场景的二元变量。条件边界是指 xi=0xii 这样的边界。在此示例中,所有资产的边界为 i=0.1

% Set conditional bounds
condLB = 0.1;
condUB = 0.5;
p = setBounds(p,condLB,condUB,BoundType="conditional");

使用 estimateFrontier 估计有效边界上的一组投资组合。有效边界是一条曲线,该曲线显示帕累托最优投资组合实现的收益和风险之间的平衡。对于给定的收益水平,有效边界上的投资组合是指在保持期望收益的同时将风险降至最低的投资组合。与之相对,对于给定的风险水平,有效边界上的投资组合是指在保持预期风险水平的同时最大化收益的投资组合。

% Compute efficient frontier
pwgt = estimateFrontier(p)
pwgt = 12×10

         0         0    0.1000    0.1253    0.1745    0.2236    0.2715    0.3327    0.4111    0.5000
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
    0.1350         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
    0.1000    0.1450    0.1406    0.1910    0.2344    0.2778    0.3200    0.3726    0.4415    0.5000
    0.1000    0.1609    0.1642    0.2121    0.2415    0.2709    0.3085    0.2947    0.1474         0
    0.2354    0.1875    0.1290         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
    0.4296    0.4066    0.3662    0.3717    0.2496    0.1277         0         0         0         0
      ⋮

% Compute risk and returns of the portfolios on the efficient frontier
[rsk,ret] = estimatePortMoments(p,pwgt)
rsk = 10×1

    0.0076
    0.0080
    0.0085
    0.0094
    0.0105
    0.0117
    0.0132
    0.0147
    0.0168
    0.0193

ret = 10×1

    0.0008
    0.0012
    0.0017
    0.0021
    0.0026
    0.0030
    0.0034
    0.0039
    0.0043
    0.0048

使用 plotFrontier 根据边界估计值绘制权重。生成的曲线呈分段凹形,凹区间之间有垂直跳跃(不连续性)。

% Plot efficient frontier
plotFrontier(p,pwgt)

Figure contains an axes object. The axes object with title Efficient Frontier, xlabel Standard Deviation of Portfolio Returns, ylabel Mean of Portfolio Returns contains an object of type line.

更改 MINLP 求解器

在上一部分,您使用了 estimateFrontier 的默认求解器。但其实您可以使用 setSolverMINLP 支持的下面三种算法中的任意一种来求解混合整数投资组合问题:OuterApproximationExtendedCPTrustRegionCP。此外,OuterApproximation 算法在求解 Portfolo 问题时还接受一个额外的名称-值参量 (ExtendedFormulation),可以重新表述问题的二次函数形式,从而能够在扩展空间中进行处理,这通常会减少计算时间。包括 OuterApproximation 算法的扩展公式变体在内的所有算法,都会在数值精度范围内返回相同的值。可用的求解器包括:

  • OuterApproximation - 默认算法,该算法非常稳健,通常比 ExtenedCP 速度更快

  • OuterApproximation,其中 ExtendedFormulation 设置为 true - 一种稳健的算法,通常比其他算法更快,但仅支持求解 Portfolio 对象问题

  • ExtendedCP - 该求解器稳健性最佳,但通常速度最慢

  • TrustRegionCP - 该算法速度最快,但稳健性较差,可能提供次优解

有关混合整数投资组合问题求解器的详细信息,请参阅Choose MINLP Solvers for Portfolio Problems

若要更改 MINLP 求解器,请使用 setSolverMINLP

% Select the extended formulation version of 'OuterApproximation'
p_EOA = setSolverMINLP(p,'OuterApproximation',...
    ExtendedFormulation=true);
pwgt_EOA = estimateFrontier(p_EOA);
[rskEOA,retEOA] = estimatePortMoments(p_EOA,pwgt_EOA);

% Select 'TrustRegionCP' as solver
p_TR = setSolverMINLP(p,'TrustRegionCP');
pwgt_TR = estimateFrontier(p_TR);
[rskTR,retTR] = estimatePortMoments(p_TR,pwgt_TR);

% Select 'ExtendedCP' as solver using 'midway' cuts as 'CutGeneration'
p_ECP = setSolverMINLP(p,'ExtendedCP','CutGeneration','midway');
pwgt_ECP = estimateFrontier(p_ECP);
[rskECP,retECP] = estimatePortMoments(p_ECP,pwgt_ECP);

比较使用不同的求解器得到的有效边界上的投资组合收益和风险。它们在数值精度内是相同的,其中绝对误差为 10-4

retTable = table(ret,retEOA,retTR,retECP,...
    'VariableNames',{'OA','EOA','TR','ECP'})
retTable=10×4 table
        OA           EOA            TR           ECP    
    __________    __________    __________    __________

    0.00078336    0.00078336    0.00078334    0.00078348
     0.0012267     0.0012267     0.0012267     0.0012268
       0.00167       0.00167       0.00167     0.0016701
     0.0021133     0.0021133     0.0021133     0.0021134
     0.0025566     0.0025566     0.0025566     0.0025567
     0.0029999     0.0029999     0.0029999         0.003
     0.0034432     0.0034432     0.0034432     0.0034433
     0.0038865     0.0038865     0.0038865     0.0038866
     0.0043298     0.0043298     0.0043298     0.0043299
     0.0047731     0.0047731     0.0047731     0.0047731

rskTable = table(rsk,rskEOA,rskTR,rskECP,...
    'VariableNames',{'OA','EOA','TR','ECP'})
rskTable=10×4 table
       OA           EOA          TR           ECP   
    _________    _________    _________    _________

    0.0075778    0.0075778    0.0075778    0.0075778
    0.0080234    0.0080234    0.0080235    0.0080236
    0.0085488    0.0085488    0.0085488     0.008549
    0.0094024    0.0094024     0.009405    0.0094025
     0.010456     0.010456     0.010456     0.010456
     0.011727     0.011727     0.011776     0.011728
     0.013155     0.013155     0.013155     0.013155
     0.014729     0.014729     0.014729     0.014729
     0.016764     0.016764     0.016764     0.016764
     0.019273     0.019273     0.019273     0.019273

% Compare risks from the different OuterApproximation formulations
norm(rskTable.OA-rskTable.EOA,Inf) <= 1e-4
ans = logical
   1

详细信息

全部展开

参考

[1] For a complete list of references for the Portfolio object, see Portfolio Optimization.

版本历史记录

在 R2011a 中推出

另请参阅

| | | | | |