MATLAB金融工具箱:04:缺失数据的资本资产定价模型


Home

此示例说明了在缺失数据的情况下资本资产定价模型(CAPM)的实现。

资本资产定价模型

资本资产定价模型(CAPM)是一种古老的工具,但经常被用来描述资产和市场价格之间联动的特征。尽管在其实施和解释中会出现许多问题,但从业人员面临的一个问题是使用不完整的股价数据估算CAPM的系数。

在参考文献中许多假设(参见Sharpe [3],Lintner [2],Jarrow [1]和Sharpe等人[4])条件下,CAPM得出结论:资产收益具有线性与市场收益的关系。具体来说,给定组成市场的所有股票M的收益为,无风险资产的收益为C,CAPM指出市场中每种资产R(i)的收益具有预期形式:

 E[R(i)] = C + b(i) * (E[M] - C)

其中资产i = 1, ... , nb(i)是一个参数,用于指定给定资产与基础市场之间的联动程度。换句话说,每种资产的预期收益等于无风险资产的收益加上经过风险调整的预期市场收益减去无风险资产收益。参数的集合b(1), ... , b(n)称为资产beta值。

请注意,资产beta值具有以下形式

 b(i) = cov(R(i),M)/var(M)

这是资产与市场收益之间的协方差除以市场收益方差的比率。如果某资产的beta值等于1,则该资产被称为随市场移动;如果资产的beta值大于1,则该资产的波动性要大于市场;如果资产的beta值小于1,则该资产的波动性要小于市场。

CAPM的估算

用于估计的CAPM模型的标准形式是线性模型,其中每个资产都有附加参数以表征残差。对于每个具有m观察样本的n的资产收益率R(k, i),市场收益率M(k)和无风险资产收益率样本的资产C(k),估计模型具有以下形式:

 R(k,i) = a(i) + C(k) + b(i) * (M(k) - C(k)) + V(k,i)

其中样本k = 1, ... , m,资产i = 1, ... , n,其中a(i)是参数,它指定资产的非系统性收益,b(i)是beta系数,V(k,i)是每项资产关联随机变量V(i)的残差。

参数的集合a(1), ... , a(n)称为资产alpha值。CAPM的严格形式规定alpha值必须为零,并且与零的偏差是暂时失衡的结果。然而,实际上,资产可能具有非零的alpha值,在这种情况下,许多积极的投资管理都专门用于搜索具有可利用的非零alpha值的资产。

为了考虑非零的alpha值的可能性,估计模型通常寻求估计alpha值并执行测试以确定alpha值是否在统计上等于零。

V(i)假定残差具有矩

 E[V(i)] = 0

 E[V(i) * V(j)] = S(i,j)

其中资产i,j = 1, ... , n,其中参数S(1,1), ... , S(n,n)称为残差或非系统方差/协方差。

各项资产残差的平方根sqrt(S(i,i))i = 1, ... , n,称为该资产的剩余或非系统风险,因为它刻画了无法用变化的市场价格解释的资产价格残差。

缺失数据的估计

尽管可以为资产回报历史悠久的公司估算beta值,但要为最近的IPO估算beta值极为困难。但是,如果存在可以观察到的,与新公司的股价走势具有某种程度相关性的公司集合,例如与新公司处于同一行业的公司,则有可能使用Financial Toolbox™中的缺失数据回归例程来估算值新公司beta值。

某些技术股票Beta值的单独估算

为了说明如何使用缺失数据回归例程,我们将估算12只科技股的beta值,其中一只股票(GOOG)是新发股票。

首先,从MAT文件CAPMuniverse中加载十二只股票的日期,总收益和股票代码。

 load CAPMuniverse
 whos Assets Data Dates
   Name           Size             Bytes  Class     AttributesAssets         1x14              1568  cell                
   Data        1471x14            164752  double              
   Dates       1471x1              11768  double              

模型中的资产描述如下,其中后两个序列代表市场和无风险资产。

 Assets(1:7)
 ans = 1x7 cell
   Columns 1 through 6{'AAPL'}    {'AMZN'}    {'CSCO'}    {'DELL'}    {'EBAY'}    {'GOOG'}Column 7{'HPQ'}
 Assets(8:14)
 ans = 1x7 cell
   Columns 1 through 6{'IBM'}    {'INTC'}    {'MSFT'}    {'ORCL'}    {'YHOO'}    {'MARKET'}Column 7{'CASH'}

数据涵盖了2000年1月1日至2005年11月7日期间的每日总收益。这里的两只股票有缺失值,以NaN表示。两只股票中的一只在此期间进行了首次公开募股,因此数据远远少于其他两只股票。

第一步是为每只股票计算单独的回归,其中有缺失数据的股票具有反映其低观察性的估计。

 [NumSamples, NumSeries] = size(Data);
 NumAssets = NumSeries - 2;StartDate = Dates(1);
 EndDate = Dates(end);Alpha = NaN(1, length(NumAssets));
 Beta = NaN(1, length(NumAssets));
 Sigma = NaN(1, length(NumAssets));
 StdAlpha = NaN(1, length(NumAssets));
 StdBeta = NaN(1, length(NumAssets));
 StdSigma = NaN(1, length(NumAssets));
 for i = 1:NumAssets
     % Set up separate asset data and design matrices
     TestData = zeros(NumSamples,1);
     TestDesign = zeros(NumSamples,2);TestData(:) = Data(:,i) - Data(:,14);
     TestDesign(:,1) = 1.0;
     TestDesign(:,2) = Data(:,13) - Data(:,14);% Estimate CAPM for each asset separately
     [Param, Covar] = ecmmvnrmle(TestData, TestDesign);% Estimate ideal standard errors for covariance parameters
     [StdParam, StdCovar] = ecmmvnrstd(TestData, TestDesign, Covar, 'fisher');
     
     % Estimate sample standard errors for model parameters
     StdParam = ecmmvnrstd(TestData, TestDesign, Covar, 'hessian');% Set up results for output
     Alpha(i) = Param(1);
     Beta(i) = Param(2);
     Sigma(i) = sqrt(Covar);StdAlpha(i) = StdParam(1);
     StdBeta(i) = StdParam(2);
     StdSigma(i) = sqrt(StdCovar);
 enddisplaySummary('Separate', StartDate, EndDate, NumAssets, Assets, Alpha, StdAlpha, Beta, StdBeta, Sigma, StdSigma)
 Separate regression with daily total return data from 03-Jan-2000 to 07-Nov-2005 ...
        Alpha                Beta                 Sigma               
   ---- -------------------- -------------------- --------------------
   AAPL    0.0012 (  1.3882)    1.2294 ( 17.1839)    0.0322 (  0.0062)
   AMZN    0.0006 (  0.5326)    1.3661 ( 13.6579)    0.0449 (  0.0086)
   CSCO   -0.0002 (  0.2878)    1.5653 ( 23.6085)    0.0298 (  0.0057)
   DELL   -0.0000 (  0.0368)    1.2594 ( 22.2164)    0.0255 (  0.0049)
   EBAY    0.0014 (  1.4326)    1.3441 ( 16.0732)    0.0376 (  0.0072)
   GOOG    0.0046 (  3.2107)    0.3742 (  1.7328)    0.0252 (  0.0071)
    HPQ    0.0001 (  0.1747)    1.3745 ( 24.2390)    0.0255 (  0.0049)
    IBM   -0.0000 (  0.0312)    1.0807 ( 28.7576)    0.0169 (  0.0032)
   INTC    0.0001 (  0.1608)    1.6002 ( 27.3684)    0.0263 (  0.0050)
   MSFT   -0.0002 (  0.4871)    1.1765 ( 27.4554)    0.0193 (  0.0037)
   ORCL    0.0000 (  0.0389)    1.5010 ( 21.1855)    0.0319 (  0.0061)
   YHOO    0.0001 (  0.1282)    1.6543 ( 19.3838)    0.0384 (  0.0074)

Alpha列包含每只股票的alpha值估计值,预期值接近零。此外,t统计量(括号里的值)通常会拒绝在99.5%的显着性水平下,alpha值非零的假设。

Beta列包含每只股票的beta值估计值,括号中还包含t统计量。对于除GOOG以外的所有股票,均以99.5%的显着性水平接受beta值非零的假设。但是,GOOG似乎没有足够的数据来获取有意义的beta估计值,因为它的t统计量表示拒绝非零beta值的假设。

Sigma列包含残余标准偏差,即非系统风险的估计值。代替t统计量的是括号中与残留标准偏差关联的标准误差。

一些技术股票Beta值的分组估计

要估算所有12只股票的beta值,请建立一个联合回归模型,将所有12只股票放在一组中(由于每只股票具有相同的设计矩阵,因此该模型实际上是看似无关的回归)。估计模型参数的函数是ecmmvnrmle,估计标准误差的函数是ecmmvnrstd

由于GOOG具有大量的缺失值,因此直接使用缺失数据函数ecmmvnrmle需要482次迭代才能收敛。计算可能需要很长时间。为简洁起见,前480次迭代后的参数和协方差估计值包含在MAT文件(CAPMgroupparam)中,并将用作计算股票beta的初始估计值。

 load CAPMgroupparam
 whos Param0 Covar0
   Name         Size            Bytes  Class     AttributesCovar0      12x12             1152  double              
   Param0      24x1               192  double              

现在,估计用于十二只股票集合的参数。

 NumParams = 2 * NumAssets;% Set up grouped asset data and design matrices
 TestData = zeros(NumSamples, NumAssets);
 TestDesign = cell(NumSamples, 1);
 Design = zeros(NumAssets, NumParams);for k = 1:NumSamples
     for i = 1:NumAssets
         TestData(k,i) = Data(k,i) - Data(k,14);
         Design(i,2*i - 1) = 1.0;
         Design(i,2*i) = Data(k,13) - Data(k,14);
     end
     TestDesign{k} = Design;
 end% Estimate CAPM for all assets together with initial parameter estimates
 [Param, Covar] = ecmmvnrmle(TestData, TestDesign, [], [], [], Param0, Covar0);% Estimate ideal standard errors for covariance parameters
 [StdParam, StdCovar] = ecmmvnrstd(TestData, TestDesign, Covar, 'fisher');% Estimate sample standard errors for model parameters
 StdParam = ecmmvnrstd(TestData, TestDesign, Covar, 'hessian');% Set up results for output
 Alpha = Param(1:2:end-1);
 Beta = Param(2:2:end);
 Sigma = sqrt(diag(Covar));StdAlpha = StdParam(1:2:end-1);
 StdBeta = StdParam(2:2:end);
 StdSigma = sqrt(diag(StdCovar));displaySummary('Grouped', StartDate, EndDate, NumAssets, Assets, Alpha, StdAlpha, Beta, StdBeta, Sigma, StdSigma)
 Grouped regression with daily total return data from 03-Jan-2000 to 07-Nov-2005 ...
        Alpha                Beta                 Sigma               
   ---- -------------------- -------------------- --------------------
   AAPL    0.0012 (  1.3882)    1.2294 ( 17.1839)    0.0322 (  0.0062)
   AMZN    0.0007 (  0.6086)    1.3673 ( 13.6427)    0.0450 (  0.0086)
   CSCO   -0.0002 (  0.2878)    1.5653 ( 23.6085)    0.0298 (  0.0057)
   DELL   -0.0000 (  0.0368)    1.2594 ( 22.2164)    0.0255 (  0.0049)
   EBAY    0.0014 (  1.4326)    1.3441 ( 16.0732)    0.0376 (  0.0072)
   GOOG    0.0041 (  2.8907)    0.6173 (  3.1100)    0.0337 (  0.0065)
    HPQ    0.0001 (  0.1747)    1.3745 ( 24.2390)    0.0255 (  0.0049)
    IBM   -0.0000 (  0.0312)    1.0807 ( 28.7576)    0.0169 (  0.0032)
   INTC    0.0001 (  0.1608)    1.6002 ( 27.3684)    0.0263 (  0.0050)
   MSFT   -0.0002 (  0.4871)    1.1765 ( 27.4554)    0.0193 (  0.0037)
   ORCL    0.0000 (  0.0389)    1.5010 ( 21.1855)    0.0319 (  0.0061)
   YHOO    0.0001 (  0.1282)    1.6543 ( 19.3838)    0.0384 (  0.0074)

尽管完整数据股票的结果相同,但是请注意,AMZN和GOOG(这两只有缺失值的股票)的beta估计值与分别为每个股票得出的估计值不同。由于AMZN的缺失值很少,因此估计差异很小。但是,对于GOOG,差异更加明显。

现在,GOOG的beta估计值的t统计量的显着性水平为99.5%。但是请注意,beta估计值的t统计量是基于样本Hessian的标准误差,与Fisher信息矩阵相反,该误差源于缺失值导致估计值不确定性的增加。如果从更乐观的Fisher信息矩阵中获得t统计量,则GOOG的t统计量为8.25。因此,尽管存在缺失数据导致的不确定性增加,GOOG仍具有beta值的统计显着性估计。

最后,请注意,GOOG的beta估算值为0.62-该值可能需要一些解释。尽管在此期间市场波动,价格出现了横向波动,但GOOG的价值却在不断升值。因此,它的相关性低于市场,这反过来意味着它的波动性低于beta值小于1的市场。

参考文献

[1] R. A. Jarrow, Finance Theory, Prentice-Hall, Inc., 1988.

[2] J. Lintner, "The Valuation of Risk Assets and the Selection of Risky Investments in Stocks," Review of Economics and Statistics, Vol. 14, 1965, pp. 13-37.

[3] W. F. Sharpe, "Capital Asset Prices: A Theory of Market Equilibrium under Conditions of Risk," Journal of Finance, Vol. 19, 1964, pp. 425-442.

[4] W. F. Sharpe, G. J. Alexander, and J. V. Bailey, Investments, 6th ed., Prentice-Hall, Inc., 1999.

工具函数

 function displaySummary(regressionType, StartDate, EndDate, NumAssets, Assets, Alpha, StdAlpha, Beta, StdBeta, Sigma, StdSigma)
 fprintf(1,'%s regression with daily total return data from %s to %s ...\n', ...
     regressionType, datestr(StartDate,1),datestr(EndDate,1));
 fprintf(1,'  %4s %-20s %-20s %-20s\n',' ','Alpha','Beta','Sigma');
 fprintf(1,'  ---- -------------------- -------------------- --------------------\n');for i = 1:NumAssets
     fprintf('  %4s %9.4f (%8.4f) %9.4f (%8.4f) %9.4f (%8.4f)\n', ...
         Assets{i},Alpha(i),abs(Alpha(i)/StdAlpha(i)), ...
         Beta(i),abs(Beta(i)/StdBeta(i)),Sigma(i),StdSigma(i));
 endend

注:本文根据MATLAB官网内容修改而成。


======================================================================
我的测试结果及程序
下面是我测试的代码: