Моделирование логарифмa доходности акций
Цены на акции смоделированы с помощью геометрического броуновского движения (в рамках классической модели Блэка-Шоулза). Предположим, что цены на акции, а также их логарифм доходности имеют нормальное распределение. Здесь данное предположение тестируется на базе цен на акции пяти компаний: Google, Microsoft, Facebook, Apple, и Intel.
Получим цены на акции этих компаний в 2015 году с помощью функции FinancialData. FinancialData.

symbols = {"GOOGL", "MSFT", "FB", "AAPL", "INTC"};
prices = Table[
FinancialData[stock, {{2015, 1, 1}, {2015, 12, 31}}], {stock,
symbols}];
Вычислим логарифм доходности.

logreturn = Minus[Differences[Log[prices[[All, All, 2]]], {0, 1}]];
Отфильтруем логарифм доходности с помощью авторегрессии условной гетероскедастичности первого порядка. Для этого воспользуемся функцией ARCHProcess.

fdata = Table[
{\[Kappa]1, \[Alpha]1} = {\[Kappa], \[Alpha]} /.
FindProcessParameters[lr, ARCHProcess[\[Kappa], {\[Alpha]}]];
MovingMap[Last[#]/Sqrt[\[Kappa]1 + \[Alpha]1 First[#]^2] &, lr, 2]
, {lr, logreturn}];
fdata = Transpose[fdata];
Сравним отфильтрованные данные для акций каждой из пяти компаний с нормальным распределенем с помощью функции QuantilePlot. На графиках видно, что в каждом случае хвосты распределений отклоняются от нормы.

Выполним многовариантный тест на нормальность (BHEP) с помощью функции BaringhausHenzeTest. Результаты теста не подтверждают предположение о нормальности для данных распределений.

htd = BaringhausHenzeTest[fdata, "HypothesisTestData"];

htd["TestDataTable"]


htd["ShortTestConclusion"]

Смоделируем отфильтрованные данные с помощью функций MultinormalDistribution и MultivariateTDistribution.

multiN = EstimatedDistribution[fdata,
MultinormalDistribution[Array[x, 5], Array[s, {5, 5}]]]


multiT = EstimatedDistribution[fdata,
MultivariateTDistribution[Array[x, 5], Array[s, {5, 5}], nu]]

Вычислим и сравним информационный критерий Акаике (AIC) для двух распределений. Данный критерий имеет меньшее значение для модели, полученной с помощью функции MultivariateTDistribution.

aic[k_, dist_, data_] := 2 k - 2 LogLikelihood[dist, data]

aic[5 + 15, multiN, fdata]


aic[5 + 15 + 1, multiT, fdata]
