主要内容

使用投资组合对象的资产回报和资产回报时刻

由于均值-方差组合优化问题需要对资产收益的均值和协方差进行估计,因此投资组合对象有几种方法来设置和获取属性AssetMean(对于平均值)和AssetCovar(协方差)。此外,无风险资产的收益也保存在房产中RiskFreeRate所有的资产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];m = m / 12;C = C / 12; p = Portfolio(“AssetMean”米,“AssetCovar”C);disp (p.NumAssets) disp (p.AssetMean) disp (p.AssetCovar)
4 0.0042 0.0083 0.0100 0.0150 0.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
注意,Portfolio对象决定了资产的数量NumAssets的时刻。的投资组合对象启用单独初始化的时刻,例如:
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; p = Portfolio; p = Portfolio(p,“AssetMean”, m);p =组合(p,“AssetCovar”C);[assetmean, assetcovar] = p.getAssetMoments
资产均值= 0.0042 0.0083 0.0100 0.0150资产var = 0.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
getAssetMoments函数的值AssetMeanAssetCovar同时具有属性。

赋值使用setAssetMoments函数

属性也可以设置资产时刻属性setAssetMoments函数。例如,给定变量中资产回报的均值和协方差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];m = m / 12;C = C / 12; p = Portfolio; p = setAssetMoments(p, m, C); [assetmean, assetcovar] = getAssetMoments(p)
资产均值= 0.0042 0.0083 0.0100 0.0150资产var = 0.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

参数的标量展开

这两个投资组合对象和setAssetMoments函数对资产回报矩的参数执行标量展开。当使用投资组合对象时,资源的数量必须已经在变量中指定NumAssets.如果NumAssets如果标量参数没有被设置,标量参数被解释为一个标量NumAssets设置为1setAssetMoments提供一个附加的可选参数来指定资产的数量,以便标量展开使用正确的资产数量。此外,如果资产收益协方差输入一个标量或向量,则形成一个对角矩阵,其中一个标量沿对角线展开,一个向量成为对角线。这个例子演示了四个具有共同平均值的联合独立资产的标量展开0.1和常见的方差0.03

p =投资组合;p = setAssetMoments(p, 0.1, 0.03, 4);[assetmean, assetcovar] = getAssetMoments(p)
资产均值= 0.1000 0.1000 0.1000 0.1000 0.1000
如果至少有一个参数的维度正确,则不需要包含额外的参数NumAssets论点。这个例子说明了一个常对角协方差矩阵和四种资产的平均资产回报:
p =投资组合;p = setAssetMoments(p, [0.05;0.06;0.04;0.03, 0.03);[assetmean, assetcovar] = getAssetMoments(p)
资产均值= 0.0500 0.0600 0.0400 0.0300资产var = 0.0300 00 0 0.0300 00 0.0300 00 0.0300
此外,标量展开适用于投资组合如果对象NumAssets是已知的,或者是从输入推导出来的。

从价格或回报估计资产时刻

另一种设置资产回报时刻的方法是使用estimateAssetMoments接受价格或收益并估计资产收益的均值和协方差的函数。价格或收益都以矩阵的形式存储,每行都是样本,每列都是资产。此外,价格或退货可以存储在表格时间表(见从时间序列数据估计资产时刻).为了说明使用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);

请注意

投资组合优化要求你使用总回报,而不仅仅是价格回报。因此,“回报”应该是总回报,“价格”应该是总回报价格。

给定资产回报和价格变量XY从上面,这一系列的例子演示了估算资产时刻的等效方法投资组合对象。一个投资组合对象创建于p资产回报时刻直接设定在投资组合物体,还有第二个投资组合对象创建于从中的资产收益数据中得到资产收益的均值和协方差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);[qassetmean, qassetcovar] = getAssetMoments(p)
qassetmean = 0.0042 0.0083 0.0100 0.0150 passetcovar = 0.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
注意这两种方法都有相同的时刻。的默认行为estimateAssetMoments就是与资产回报合作。相反,如果变量中有资产价格YestimateAssetMoments接受一个名称-值对参数名称“DataFormat”将相应的值设置为“价格”表示函数的输入是以资产价格而不是回报的形式出现的(函数的默认值)“DataFormat”参数是“返回”).这个例子比较了投资组合对象p随着资产价格数据的估计时刻的到来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); p = Portfolio(“的意思是”米,“柯伐合金”C);q =投资组合;q = estimate eassetmoments (q, Y,“dataformat”“价格”);[qassetmean, qassetcovar] = getAssetMoments(p)
qassetmean = 0.0042 0.0083 0.0100 0.0150 passetcovar = 0.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

用缺失的数据估算资产时刻

通常在使用多个资产时,您会丢失由在你的回报或价格数据的值。虽然多元正态回归详细介绍了缺失数据的回归estimateAssetMoments函数具有一个名称-值对参数名称“MissingData”使用布尔值指示是否使用Financial Toolbox™软件的缺失数据功能。的默认值“MissingData”移除所有的样本值。然而,如果“MissingData”被设置为真正的estimateAssetMoments使用ECM算法来估计资产时刻。下面的例子说明了如何处理价格数据中的缺失值:

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); Y(1:20,1) = NaN; Y(1:12,4) = NaN; p = Portfolio(“的意思是”米,“柯伐合金”C);q =投资组合;q = estimate eassetmoments (q, Y,“dataformat”“价格”);r =投资组合;r = estimateAssetMoments(r, Y,“dataformat”“价格”“missingdata”,真正的);[passetmean, passetcovar] = getAssetMoments(p) [qassetmean, qassetcovar] = getAssetMoments(q) [rassetmean, rassetcovar] = getAssetMoments(r)
passetmean passetcovar = = 0.0042 0.0083 - 0.0100 0.0150 0.0005 0.0003 0.0002 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 = = 0.0045 0.0082 - 0.0101 0.0091 0.0006 0.0003 0.0001 -0.0000 0.0003 0.0023 0.0017 0.0011 0.0001 0.0017 0.0048 0.0029 -0.0000 0.0011 0.0029 0.0112 rassetmean = 0.00450.0083 0.0100 0.0113 rassetcovar = 0.0008 0.0005 0.0001 -0.0001 0.0005 0.0032 0.0022 0.0015 0.001 0.0022 0.0063 0.0040 -0.0001 0.0015 0.00144
投资组合对象p包含原始时刻,对象包含估计的时刻值被丢弃,对象r包含原始时刻,以适应缺失的值。每次运行这个示例时,都会得到不同的估计r,这些也会不同于在p

从时间序列数据估计资产时刻

estimateAssetMoments函数还接受存储在表格时间表estimateAssetMoments隐式地处理数据矩阵或表或时间表对象中的数据,使用相同的规则确定数据是返回值还是价格。

为了说明表格和时间表的用法,请使用array2tablearray2timetable创建一个表格和一个时间表包含用portsim(见从价格或回报估计资产时刻).控件创建两个组合对象AssetReturns基于一个表和一个时间表对象。

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; assetRetnScenarios = portsim(m', C, 120); dates = datetime(datenum(2001,1:120,31),“ConvertFrom”“datenum”);assetsName = {“债券”“LargeCap”“中小板”“新兴”};assetRetnTimeTable = array2timetable (assetRetnScenarios,“RowTimes”、日期、“VariableNames”, assetsName);assetRetnTable = array2table (assetRetnScenarios,“VariableNames”, assetsName);%创建两个Portfolio对象:% p与预定义的平均值和covar: q与资产回报情景估计平均值和covar。p =组合(“的意思是”米,“柯伐合金”C);q =投资组合;估算资产时刻与时间表q = estimateAssetMoments(q, assetRetnTimeTable);[qassetmean, qassetcovar] = getAssetMoments(p)用表估计资产时刻q = estimateAssetMoments(q, assetRetnTable);[qassetmean, qassetcovar] = getAssetMoments(p)
passetmean passetcovar = = 0.0042 0.0083 - 0.0100 0.0150 0.0005 0.0003 0.0002 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 = = 0.0042 0.0083 - 0.0100 0.0150 0.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 passetmean = 0.00420.0083 0.0100 0.0150 passetcovar = 0.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 = 0.0042 0.0083 0.0100 0.0150 qassetcovar = 0.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还可以从表格时间表当参数名“GetAssetList”设置为真正的(默认值为).如果“GetAssetList”值是真正的,标识符用于设置AssetList对象的属性。为了说明这一点投资组合对象重复前面的例子“GetAssetList”标志设置为真正的从表或时间表对象中提取列标签:
q = estimateAssetMoments (q, assetRetnTable“GetAssetList”,真正的);disp (q.AssetList)
“债券”“大型股”“小型股”“新兴股”
注意如果你设置了“GetAssetList”标志设置为真正的你的输入数据是一个矩阵,estimateAssetMoments使用的默认标记方案setAssetList中描述的设置资产标识符列表

另请参阅

||||

相关的例子

更多关于

外部网站