exponenta event banner

Модель оценки основных средств с отсутствующими данными

Этот пример иллюстрирует внедрение модели ценообразования основных средств (CAPM) при наличии отсутствующих данных.

Модель ценообразования основных средств

Модель ценообразования на капитальные активы (CAPM) является маститым, но часто злонамеренным инструментом для характеристики противоречий между ценами на активы и рыночными ценами. Хотя в его реализации и интерпретации возникает много проблем, одной из проблем, с которой сталкиваются практические работники, является оценка коэффициентов CAPM с неполными данными о цене акций.

Учитывая множество предположений, которые можно найти в ссылках (см. Sharpe [3], Lintner [2], Jarrow [1] и Sharpe, et. al. [4]), CAPM заключает, что доходность активов имеет линейную связь с доходностью рынка. В частности, учитывая возврат всех акций, которые составляют рынок, обозначенный как M и возврат безрискового актива, обозначенного как C, в CAPM указано, что возврат каждого актива R(i) на рынке имеет ожидаемую форму

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

для активов i = 1, ... , n, где b(i) - параметр, определяющий степень соответствия между данным активом и базовым рынком. Другими словами, ожидаемая доходность каждого актива равна доходности безрискового актива плюс скорректированная на риск ожидаемая рыночная доходность за вычетом безрисковой доходности актива. Коллекция параметров b(1), ... , b(n) называются бетами активов.

Обратите внимание, что бета-версия актива имеет вид

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

которое представляет собой отношение ковариации между доходностью активов и рыночной доходностью, деленное на дисперсию рыночной доходности. Если актив имеет бета-версию, равную 1, считается, что актив перемещается вместе с рынком; если у актива бета больше 1, то актив считается более волатильным, чем рынок; и если актив имеет бета-версию менее 1, считается, что актив менее волатилен, чем рынок.

Оценка CAPM

Стандартной формой модели CAPM для оценки является линейная модель с дополнительными параметрами для каждого актива для характеристики остаточных ошибок. Для каждого из n активы с m выборки наблюдаемых возвратов основных средств 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) является бета-версией актива, и V(k,i) остаточная ошибка для каждого актива со связанной случайной величиной V(i).

Коллекция параметров a(1), ... , a(n) называются буквами основных средств. Строгая форма CAPM указывает, что alphas должны быть равны нулю и что отклонения от нуля являются результатом временного дисбаланса. Однако на практике активы могут иметь ненулевые альфасы, где значительная часть активного управления инвестициями направляется на поиск активов с эксплуатируемыми ненулевыми альфасами.

Чтобы обеспечить возможность ненулевых альфас, модель оценки обычно стремится оценить альфас и выполнить тесты, чтобы определить, статистически ли альфас равен нулю.

Остаточные ошибки 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, считается остаточным или несистематическим риском актива, поскольку он характеризует остаточное изменение цен активов, которое не может быть объяснено изменениями рыночных цен.

Оценка с отсутствующими данными

Хотя betas можно оценить для компаний с достаточно длинной историей доходности активов, оценить betas для недавних IPO крайне сложно. Однако, если существует совокупность достаточно наблюдаемых компаний, которые, как можно ожидать, будут в некоторой степени коррелировать с изменениями цен акций новой компании, например, компаний в той же отрасли, что и новая компания, то можно получить вмененные оценки для новых бетов компании с помощью процедур регрессии отсутствующих данных в финансовом Toolbox™.

Отдельная оценка некоторых технологических запасов бетов

Чтобы проиллюстрировать, как использовать процедуры регрессии отсутствующих данных, мы оценим betas для двенадцати технологических акций, где один запас (GOOG) является IPO.

Во-первых, даты загрузки, общий возврат и символы бегущей строки для двенадцати запасов из MAT-файла CAPMuniverse.

load CAPMuniverse
whos Assets Data Dates
  Name           Size             Bytes  Class     Attributes

  Assets         1x14              1568  cell                
  Data        1471x14            164752  double              
  Dates       1471x1              11768  double              
Dates = datetime(Dates,'ConvertFrom','datenum');

Активы в модели имеют следующие символы, где последние две серии являются прокси для рынка и безрискового актива.

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'}

Данные охватывают период с 1 января 2000 года по 7 ноября 2005 года с ежедневной общей доходностью. Две акции в этой вселенной имеют отсутствующие значения, которые представлены NaNs. Одна из двух акций имела IPO в течение этого периода и, следовательно, имеет значительно меньше данных, чем другие акции.

Первым шагом является расчет отдельных регрессий для каждого запаса, где запасы с отсутствующими данными имеют оценки, отражающие их уменьшенную наблюдаемость.

[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 the CAPM for each asset separately.
	[Param, Covar] = ecmmvnrmle(TestData, TestDesign);

	% Estimate the ideal standard errors for covariance parameters.
	[StdParam, StdCovar] = ecmmvnrstd(TestData, TestDesign, Covar, 'fisher');
	
	% Estimate the sample standard errors for model parameters.
	StdParam = ecmmvnrstd(TestData, TestDesign, Covar, 'hessian');

	% Set up results for the 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);
end

displaySummary('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 содержит альфа-оценки для каждого запаса, которые близки к нулю, как и ожидалось. Кроме того, t-статистика (которая заключена в скобки) обычно отвергает гипотезу о том, что альфасы ненулевые на уровне значимости 99,5%.

Beta столбец содержит бета-оценки для каждого запаса, которые также содержат t-статистику в скобках. Для всех акций, кроме GOOG, гипотеза о том, что беты ненулевые, принимается на уровне значимости 99,5%. Однако, казалось бы, что GOOG не имеет достаточно данных для получения значимой оценки для бета-версии, поскольку его t-статистика подразумевает отказ от гипотезы ненулевой бета-версии.

Sigma столбец содержит остаточные стандартные отклонения, то есть оценки для несистемных рисков. Вместо t-статистики связанные стандартные ошибки для остаточных стандартных отклонений заключены в круглые скобки.

Сгруппированная оценка некоторых технологических запасов бетов

Чтобы оценить акции для всех двенадцати акций, создайте модель совместной регрессии, которая группирует все двенадцать акций в рамках одной конструкции (поскольку каждая акция имеет одинаковую матрицу конструкции, эта модель на самом деле является примером, казалось бы, не связанной регрессии). Функция оценки параметров модели: ecmmvnrmle и функция оценки стандартных ошибок ecmmvnrstd.

Поскольку GOOG имеет значительное количество отсутствующих значений, прямое использование отсутствующей функции данных ecmmvnrmle для схождения требуется 482 итерации. Расчет может занять много времени. Для краткости оценки параметра и ковариации после первых 480 итераций содержатся в MAT-файле (CAPMgroupparam) и используется в качестве начальных оценок для вычисления фондовых бетов.

load CAPMgroupparam
whos Param0 Covar0
  Name         Size            Bytes  Class     Attributes

  Covar0      12x12             1152  double              
  Param0      24x1               192  double              

Теперь оцените параметры сбора двенадцати акций.

NumParams = 2 * NumAssets;

% Set up the 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 the CAPM for all assets together with initial parameter estimates.
[Param, Covar] = ecmmvnrmle(TestData, TestDesign, [], [], [], Param0, Covar0);

% Estimate the ideal standard errors for covariance parameters.
[StdParam, StdCovar] = ecmmvnrstd(TestData, TestDesign, Covar, 'fisher');

% Estimate the sample standard errors for model parameters.
StdParam = ecmmvnrstd(TestData, TestDesign, Covar, 'hessian');

% Set up results for the 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 (которые являются двумя запасами с отсутствующими значениями) отличаются от оценок, полученных для каждого запаса отдельно. Поскольку AMZN имеет мало отсутствующих значений, различия в оценках невелики. Однако с GOOG различия более выражены.

T-статистика для бета-оценки GOOG в настоящее время значима на уровне 99,5% значимости. Отметим, однако, что t-статистика для бета-оценок основана на стандартных ошибках из выборки Гессена, которая, в отличие от информационной матрицы Фишера, объясняет повышенную неопределенность в оценке из-за пропущенных значений. Если t-статистика получена из более оптимистичной информационной матрицы Фишера, t-статистика для GOOG равна 8.25. Таким образом, несмотря на увеличение неопределенности из-за отсутствия данных, GOOG, тем не менее, имеет статистически значимую оценку для бета.

Наконец, обратите внимание, что бета-оценка для GOOG 0.62 - значение, которое может потребовать некоторого объяснения. В то время как рынок был волатильным в течение этого периода с боковыми изменениями цен, GOOG неуклонно рос в стоимости. Следовательно, она менее коррелирована, чем рынок, что, в свою очередь, подразумевает, что она менее волатильна, чем рынок с бета менее 1.

Ссылки

[1] Р. А. Джарроу. Теория финансов. Prentice-Hall, Inc., 1988.

[2] Дж. Линтнер. «Оценка рисковых активов и выбор рискованных инвестиций в акции». Обзор экономики и статистики. т. 14, 1965, стр. 13-37.

[3] В. Ф. Шарп. «Цены на капитальные активы: теория рыночного равновесия в условиях риска». Финансовый журнал. Том 19, 1964, стр. 425-442.

[4] В. Ф. Шарп, Г. Дж. Александер и Дж. В. Бейли, Investments. 6-е изд., Прентис-Холл, Инк., 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, string(StartDate),string(EndDate));
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));
end

end