主要内容

estimateAssetMoments

根据数据估计资产收益的均值和协方差

使用一个弗林特对象的AssetReturns的观点estimateAssetMoments不推荐。使用时间表而是金融时间序列。有关更多信息,请参见将金融时间序列对象转换为时间表

描述

例子

obj= estimateAssetMoments (objAssetReturns从数据估计资产收益的均值和协方差投资组合对象。详细的工作流程请参见投资组合对象工作流

例子

obj= estimateAssetMoments (___名称,值对于一个或多个附加选项的Portfolio对象,从数据中估计资产回报的平均值和协方差名称,值对参数。

例子

全部折叠

说明如何使用estimateAssetMoments函数,从变量中资产收益的均值和协方差中,生成四种资产的120个资产收益观察值的随机样本而且Cportsim函数。默认行为portsim创建具有与输入力矩相同的估计平均值和协方差的模拟数据而且C.创建的返回系列之外portsim变量中的函数X,在变量中创建一个价格序列Y

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; X = portsim(m', C, 120); Y = ret2tick(X);

给定变量中的资产回报率和价格X而且Y从上面,下面的例子演示了估计Portfolio对象的资产时刻的等效方法。中创建Portfolio对象p资产收益时刻直接设置在投资组合对象中创建第二个Portfolio对象从资产收益数据中得到资产收益的均值和协方差X使用estimateAssetMoments函数。

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; X = portsim(m', C, 120); p = Portfolio(“的意思是”米,“柯伐合金”C);q =投资组合;q = estimateAssetMoments(q, X);[passetmean, passetcovar] = getAssetMoments(p)
passetmean =4×10.0042 0.0083 0.0100 0.0150
passetcovar =4×40.0005 0.0003 0.0002 0 0.0003 0.0024 0.0017 0.0010 0.0002 0.0017 0.0048 0.0028 0 0.0010 0.0028 0.0102
[qassetmean, qassetcovar] = getAssetMoments(q)
qassetmean =4×10.0042 0.0083 0.0100 0.0150
qassetcovar =4×40.0005 0.0003 0.0002 -0.0000 0.0003 0.0024 0.0017 0.0010 0.0002 0.0017 0.0048 0.0028 -0.0000 0.0010 0.0028 0.0102

注意这两种方法是如何产生相同的力矩的。的默认行为estimateAssetMoments功能是处理资产收益。相反,如果你有资产价格,如变量Y,estimateAssetMoments函数接受参数名“DataFormat”对应的值设置为“价格”表示该方法的输入是资产价格的形式,而不是收益(为的默认参数值“DataFormat”“返回”).下面的例子比较了Portfolio对象中瞬间的直接赋值p资产价格数据的估计时刻Y在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];M = M /12;C = C/12; X = portsim(m', C, 120); Y = ret2tick(X); p = Portfolio(“的意思是”米,“柯伐合金”C);q =投资组合;q = estimateAssetMoments(q, Y,“dataformat”“价格”);[passetmean, passetcovar] = getAssetMoments(p)
passetmean =4×10.0042 0.0083 0.0100 0.0150
passetcovar =4×40.0005 0.0003 0.0002 0 0.0003 0.0024 0.0017 0.0010 0.0002 0.0017 0.0048 0.0028 0 0.0010 0.0028 0.0102
[qassetmean, qassetcovar] = getAssetMoments(q)
qassetmean =4×10.0042 0.0083 0.0100 0.0150
qassetcovar =4×40.0005 0.0003 0.0002 -0.0000 0.0003 0.0024 0.0017 0.0010 0.0002 0.0017 0.0048 0.0028 -0.0000 0.0010 0.0028 0.0102

说明如何使用estimateAssetMoments函数与AssetReturns数据在时间表对象,则使用CAPMuniverse.mat其中包含时间表对象(AssetTimeTable)返回数据。

负载CAPMuniverseAssetsTimeTable.Properties;头(AssetsTimeTable, 5)
ans =5×14时间表时间apple amazon cisco戴尔EBAY google hp IBM intel microsoft ORCL yahoo市场现金  ___________ _________ _________ _________ _________ _________ ____ _________ _________ _________ _________ _________ _________ _________ __________ 03 - 1月- 2000年南0.03244 0.075368 0.05698 0.088805 0.1742 0.008775 -0.002353 0.12829 -0.001627 0.054078 0.097784 -0.012143 0.00020522 04 -简- 2000南-0.075613 -0.033966 -0.046667 -0.084331 -0.08324 -0.05608 -0.08353 -0.093805 -0.033802 -0.0883 -0.067368 -0.03166 0.0002033905-一月-2000 0.014634 -0.14877 -0.003039 0.070984 0.066875 NaN -0.006356 0.052837 -0.073363 0.011443 0.00020376 06-一月-2000 -0.086538 -0.060072 - 0.016672 -0.038847 -0.012302 NaN -0.063688 -0.017241 -0.05824 -0.033477 -0.058824 -0.10307 0.011743 0.00020266 07-一月-2000 0.047368 0.061013 0.0587 -0.037708 -0.000964 NaN 0.028416 -0.004386 0.04127 0.076771 0.10609 0.02393 0.00020157

请注意,google数据丢失(),因为该公司在2004年8月之前没有上市。的estimateAssetMoments函数有一个名值对参数“MissingData”它用一个布尔值指示是否使用Financial Toolbox™软件缺少的数据功能。的默认值。“MissingData”是false,它删除所有的样本值。然而,如果“MissingData”设为true,estimateAssetMoments使用ECM算法估计资产矩。

r =投资组合;r = estimateAssetMoments(r,AssetsTimeTable,“dataformat”“返回”“missingdata”,真正的);

此外,estimateAssetMoments函数还在name-value参数时从时间表对象中提取资产名称或标识符“GetAssetList”设置为真正的(默认值为).如果“GetAssetList”值是真正的,时间表列标识符用于设置AssetListPortfolio对象的属性。为了显示这一点,Portfolio对象的形成r的重复“GetAssetList”标志设置为真正的

r = estimateAssetMoments(r,AssetsTimeTable,“GetAssetList”,真正的);disp (r.AssetList”)
{“apple”}{amazon的}{cisco的}{“戴尔”}{“易趣”}{“google”}{“hp”}{“IBM”}{intel的}{“微软”}{‘ORCL}{“yahoo”}{‘市场’}{“现金”}

创建一个投资组合对象用于三个资产。

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];AssetMean = AssetMean/12
AssetMean =3×10.0008 0.0004 0.0011
AssetCovar = AssetCovar/12
AssetCovar =3×3103× 0.2705 0.0192 0.3503 0.0192 0.0416 0.0160 0.3503 0.0160 0.6367
X = portsim(AssetMean', AssetCovar, 120);p =投资组合(“AssetMean”AssetMean,“AssetCovar”, AssetCovar);p = setDefaultConstraints(p);

使用setBounds有半连续的约束条件西00.02< =西< =0.5对所有1,……NumAssets。

p = setBounds(p, 0.02, 0.5,“BoundType”“条件”“NumAssets”3);

当与投资组合对象,setMinMaxNumAssets函数使您能够为只做多头的投资组合设置基数约束。对象的基数约束投资组合对象,其中满足非零半连续约束的已分配资产的总数介于MinNumAssets而且MaxNumAssets.通过设置MinNumAssetsMaxNumAssets=2时,三种资产中只有两种被投资到投资组合中。

p = setMinMaxNumAssets(p, 2,2);

使用estimateAssetMoments从数据中估计资产收益的均值和协方差投资组合对象。

p = estimateAssetMoments(p, X);[passetmean, passetcovar] = getAssetMoments(p)
passetmean =3×10.0008 0.0004 0.0011
passetcovar =3×3103× 0.2705 0.0192 0.3503 0.0192 0.0416 0.0160 0.3503 0.0160 0.6367

estimateAssetMoments函数使用MINLP求解器来解决这个问题。使用setSolverMINLP命令,配置SolverType和选项。

p.solverOptionsMINLP
ans =带有字段的结构:maxiteration: 1000 AbsoluteGapTolerance: 1.0000e-07 RelativeGapTolerance: 1.0000e-05 NonlinearScalingFactor: 1000 ObjectiveScalingFactor: 1000 Display: 'off' CutGeneration: 'basic' maxiterationsinactivcut: 30 activecutttolerance: 1.0000e-07 IntMasterSolverOptions: [1x1 optim.options.]Intlinprog] NumIterationsEarlyIntegerConvergence: 30

输入参数

全部折叠

对象指定的投资组合投资组合对象。有关创建投资组合对象的更多信息,请参见

数据类型:对象

矩阵,表格,或时间表,其中包含可以转换为资产回报的资产价格数据NumSamples——- - - - - -NumAssets矩阵。

AssetReturns数据可以是:

  • NumSamples——- - - - - -NumAssets矩阵。

  • NumSamples的价格或收益在给定周期内的集合NumAssets资产

  • 的时间表对象NumSamples观察和NumAssets时间序列

使用可选的DataFormat要转换的参数AssetReturns将资产价格数据输入到资产收益中。在使用资产价格数据时要小心,因为投资组合优化通常需要总回报,而不是简单的价格回报。

数据类型:|表格|时间表

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:p = estimateAssetMoments(p,Y,'dataformat','prices')

标志将输入数据转换为价格为返回值,指定为逗号分隔的对,由“DataFormat”和一个字符向量,其值为:

  • “返回”-资料AssetReturns包含资产总收益。

  • “价格”-资料AssetReturns包含资产总回报价格。

数据类型:字符

标志,指示是否使用ECM算法或排除样本值,指定为逗号分隔的对,由“MissingData”和一个逻辑值为的真正的

处理缺少数据的时间序列(用值),MissingData的情况下,使用ECM算法获得最大似然估计值或排除具有的样本值。因为默认值是,就有必要详细说明MissingData作为真正的使用ECM算法。

的可接受值MissingData是:

  • -不使用ECM算法处理值(排除值)。

  • 真正的-使用ECM算法进行处理值。

有关ECM算法的更多信息,请参见ecmnmle而且多元正态回归

数据类型:逻辑

标志,指示要为资产列表使用哪个资产名称,指定为逗号分隔的对,由“GetAssetList”和一个逻辑值为的真正的.的可接受值GetAssetList是:

  • —禁止提取或创建资产名称。

  • 真正的—从表或时间表对象中提取或创建资产名称。

如果一个表格时间表参数传入此函数时使用AssetReturns论证和GetAssetList国旗是真正的中,表或时间表对象中的列名用作资产名称obj。AssetList

如果传递一个矩阵,则GetAssetList国旗是真正的,默认资产名称是根据AbstractPortfolio财产defaultforAssetList,即“资产”

如果GetAssetList国旗是,不发生任何操作,这是默认行为。

数据类型:逻辑

输出参数

全部折叠

已更新的投资组合对象,作为投资组合对象。有关创建投资组合对象的更多信息,请参见

提示

你也可以使用点表示法从数据中估计资产收益的平均值和协方差。

obj = obj. estimateassetmoments (AssetReturns);

版本历史

在R2011a中介绍