Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

estimatePortReturn

估计投资组合收益均值

说明

示例

pret = estimatePortReturn(obj,pwgt) 估计 PortfolioPortfolioCVaRPortfolioMAD 对象的投资组合收益均值(作为投资组合收益的代理)。有关使用这些不同对象时各自工作流的详细信息,请参阅 Portfolio 对象工作流PortfolioCVaR 对象工作流PortfolioMAD 对象工作流

示例

全部折叠

给定投资组合 p,使用 estimatePortReturn 函数来估计投资组合收益均值。

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 = setAssetMoments(p, m, C);
p = setDefaultConstraints(p);
pwgt = estimateFrontierLimits(p);
pret = estimatePortReturn(p, pwgt);
disp(pret)
    0.0590
    0.1800

为三项资产创建一个 Portfolio 对象。

AssetMean = [ 0.0101110; 0.0043532; 0.0137058 ];
AssetCovar = [ 0.00324625 0.00022983 0.00420395;
               0.00022983 0.00049937 0.00019247;
               0.00420395 0.00019247 0.00764097 ];  
p = Portfolio('AssetMean', AssetMean, 'AssetCovar', AssetCovar);
p = setDefaultConstraints(p);           

使用 setBoundsi=1,...NumAssets. 的所有资产设置半连续约束,使 xi=00.02<=xi<=0.5

p = setBounds(p, 0.02, 0.5,'BoundType', 'Conditional', 'NumAssets', 3);                    

当使用 Portfolio 对象时,setMinMaxNumAssets 函数支持您为纯多头投资组合设置基数约束。这为 Portfolio 对象设置了基数约束,其中满足非零半连续约束的已分配资产总数介于 MinNumAssetsMaxNumAssets 之间。通过设置 MinNumAssets=MaxNumAssets=2,仅对投资组合的三项资产中的两项进行了投资。

p = setMinMaxNumAssets(p, 2, 2);  

使用 estimatePortReturn 来估计 Portfolio 对象的投资组合收益均值。

pwgt = estimateFrontierLimits(p);
pret = estimatePortReturn(p, pwgt)
pret = 2×1

    0.0072
    0.0119

estimatePortReturn 函数使用 MINLP 求解器来求解此问题。使用 setSolverMINLP 函数来配置 SolverType 和选项。

p.solverOptionsMINLP
ans = struct with fields:
                           MaxIterations: 1000
                    AbsoluteGapTolerance: 1.0000e-07
                    RelativeGapTolerance: 1.0000e-05
                  NonlinearScalingFactor: 1000
                  ObjectiveScalingFactor: 1000
                                 Display: 'off'
                           CutGeneration: 'basic'
                MaxIterationsInactiveCut: 30
                      ActiveCutTolerance: 1.0000e-07
                    IntMainSolverOptions: [1x1 optim.options.Intlinprog]
    NumIterationsEarlyIntegerConvergence: 30
                     ExtendedFormulation: 0
                            NumInnerCuts: 10
                     NumInitialOuterCuts: 10

给定投资组合 p,使用 estimatePortReturn 函数来估计投资组合收益均值。

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 ];
m = m/12;
C = C/12;

rng(11);

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioCVaR;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.95);

pwgt = estimateFrontierLimits(p);
pret = estimatePortReturn(p, pwgt);
disp(pret)
    0.0050
    0.0154

函数 rng(seed) 重置了随机数生成器以得到文档中的结果。在模拟场景时重置随机数生成器这一步并不是必需的。

给定投资组合 p,使用 estimatePortReturn 函数来估计投资组合收益均值。

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 ];
m = m/12;
C = C/12;

rng(11);

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioMAD;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);

pwgt = estimateFrontierLimits(p);
pret = estimatePortReturn(p, pwgt);
disp(pret)
    0.0048
    0.0154

函数 rng(seed) 重置了随机数生成器以得到文档中的结果。在模拟场景时重置随机数生成器这一步并不是必需的。

输入参数

全部折叠

投资组合对象,使用 PortfolioPortfolioCVaRPortfolioMAD 对象指定。有关创建 Portfolio 对象的详细信息,请参阅

数据类型: object

投资组合的集合,指定为 NumAssets×NumPorts 矩阵,其中 NumAssets 是资产池中的资产数量,NumPorts 是投资组合集合中的投资组合数量。

数据类型: double

输出参量

全部折叠

pwgt 中的每个投资组合的投资组合收益均值估计,以 NumPorts 向量形式返回。

对于 PortfolioPortfolioCVaRPortfolioMAD 输入对象 (obj),返回 pret

注意

投资组合收益是投资组合总收益还是净收益取决于是否设置了成本。有关设置成本的信息,请参阅 setCosts

提示

您还可以使用圆点表示法来估计投资组合收益均值(作为投资组合的收益代理)。

pret = obj.estimatePortReturn(pwgt);

版本历史记录

在 R2011a 中推出