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

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

Модель оценки финансовых активов

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

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

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

для активов i = 1, ... , n, где b(i) параметр, который задает степень comovement между данным активом и базовым рынком. В словах ожидаемый доход каждого актива равен возврату на безрисковом активе плюс настроенный риском ожидаемый рынок, возвращаются сетевой из безрискового актива, возвращается. Набор параметров 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 указывает, что альфы должны быть нулем и что отклонения от нуля являются результатом временных нарушений равновесия. На практике, однако, активы могут иметь ненулевые альфы, где большая часть активного управления инвестициями посвящена поиску активов с годными для использования ненулевыми альфами.

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

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

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

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

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

Чтобы проиллюстрировать, как использовать стандартные программы регрессии недостающих данных, мы оценим беты для двенадцати технологических акций, где одним запасом (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              

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

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

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

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

Ссылки

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

[2] Дж. Линтнер, "Оценка Активов Риска и Выбор Risky Investments в Запасах", Анализ Экономики и Статистики, Издания 14, 1965, стр 13-37.

[3] В. Ф. Шарп, "Цены Капитального актива: Теория Равновесия Рынка при Условиях Риска", Журнал Финансов, Издания 19, 1964, стр 425-442.

[4] В. Ф. Шарп, Г. Дж. Александр, и Дж. В. Бэйли, Инвестиции, 6-й редактор, 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));
end

end