由于均值-方差组合优化问题需要对资产收益的均值和协方差进行估计,因此投资组合
对象有几种方法来设置和获取属性AssetMean
(对于平均值)和AssetCovar
(协方差)。此外,无风险资产的收益也保存在房产中RiskFreeRate
所有的资产AssetMean
和AssetCovar
风险资产。有关使用时工作流的信息投资组合
对象,看到组合对象的工作流.
假设你有一个资产回报在变量中的均值和协方差米
和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
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
函数的值AssetMean
和AssetCovar
同时具有属性。
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
设置为1
.setAssetMoments
提供一个附加的可选参数来指定资产的数量,以便标量展开使用正确的资产数量。此外,如果资产收益协方差输入一个标量或向量,则形成一个对角矩阵,其中一个标量沿对角线展开,一个向量成为对角线。这个例子演示了四个具有共同平均值的联合独立资产的标量展开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个资产回报观察值的随机样本米
和C
与portsim
.的默认行为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
从上面,这一系列的例子演示了估算资产时刻的等效方法投资组合
对象。一个投资组合
对象创建于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
就是与资产回报合作。相反,如果变量中有资产价格Y
,estimateAssetMoments
接受一个名称-值对参数名称“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
隐式地处理数据矩阵或表或时间表对象中的数据,使用相同的规则确定数据是返回值还是价格。
为了说明表格和时间表的用法,请使用array2table
和array2timetable
创建一个表格
和一个时间表
包含用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
中描述的设置资产标识符列表.
estimateAssetMoments
|getAssetMoments
|投资组合
|setAssetMoments
|setcost