Этот пример иллюстрирует реализацию модели ценообразования капитальных активов (CAPM) при наличии отсутствующих данных.
Модель ценообразования капитальных активов (CAPM) является почтенным, но часто злонамеренным инструментом для характеристики связей между активами и рыночными ценами. Хотя при его реализации и интерпретации возникает много проблем, одна из проблем, с которой сталкиваются практикующие специалисты, заключается в оценке коэффициентов CAPM с неполными данными о ценах акций.
Учитывая множество допущений, которые можно найти в ссылках (см. Шарп [3], Линтнер [2], Джарроу [1] и Шарп, и т. д. 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 для оценки является линейной моделью с дополнительными параметрами для каждого актива, чтобы охарактеризовать остаточные ошибки. Для каждого из 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)
называются alphas актива. Строгая форма 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
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 года с ежедневными общими возвратами. Две акции в этой вселенной имеют отсутствующие значения, которые представлены NaN
s. Один из двух запасов имел 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)
The Alpha
столбец содержит альфа-оценки для каждого запаса, который близок к нулю, как ожидалось. В сложение t-статистика (которая заключена в круглые скобки) обычно отвергает гипотезу о том, что альфа ненулевые на уровне значимости 99,5%.
The Beta
столбец содержит бета-оценки для каждого запаса, который также имеет t-статистику, заключенную в круглые скобки. Для всех акций, кроме GOOG, гипотеза о том, что беты ненулевые, принята на уровне значимости 99,5%. Казалось бы, однако, что GOOG не имеет достаточных данных, чтобы получить значимую оценку для беты, поскольку его t-статистика подразумевала бы отказ от гипотезы ненулевой беты.
The 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-статистика для бета-оценок основана на стандартных ошибках из выборки Hessian, которая, в отличие от информационной матрицы Фишера, учитывает повышенную неопределенность в оценке из-за отсутствующих значений. Если 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] W. F. Sharpe, G. J. Alexander, and J. V. Bailey, Investments. 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, 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