Моделирование логарифмa доходности акций
Цены на акции смоделированы с помощью геометрического броуновского движения (в рамках классической модели Блэка-Шоулза). Предположим, что цены на акции, а также их логарифм доходности имеют нормальное распределение. Здесь данное предположение тестируется на базе цен на акции пяти компаний: Google, Microsoft, Facebook, Apple, и Intel.
Получим цены на акции этих компаний в 2015 году с помощью функции FinancialData. FinancialData.
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_99.png)
symbols = {"GOOGL", "MSFT", "FB", "AAPL", "INTC"};
prices = Table[
FinancialData[stock, {{2015, 1, 1}, {2015, 12, 31}}], {stock,
symbols}];
Вычислим логарифм доходности.
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_100.png)
logreturn = Minus[Differences[Log[prices[[All, All, 2]]], {0, 1}]];
Отфильтруем логарифм доходности с помощью авторегрессии условной гетероскедастичности первого порядка. Для этого воспользуемся функцией ARCHProcess.
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_101.png)
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. На графиках видно, что в каждом случае хвосты распределений отклоняются от нормы.
![](assets.ru/log-returns-of-stock-prices/O_74.png)
Выполним многовариантный тест на нормальность (BHEP) с помощью функции BaringhausHenzeTest. Результаты теста не подтверждают предположение о нормальности для данных распределений.
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_103.png)
htd = BaringhausHenzeTest[fdata, "HypothesisTestData"];
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_104.png)
htd["TestDataTable"]
![](assets.ru/log-returns-of-stock-prices/O_75.png)
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_105.png)
htd["ShortTestConclusion"]
![](assets.ru/log-returns-of-stock-prices/O_76.png)
Смоделируем отфильтрованные данные с помощью функций MultinormalDistribution и MultivariateTDistribution.
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_106.png)
multiN = EstimatedDistribution[fdata,
MultinormalDistribution[Array[x, 5], Array[s, {5, 5}]]]
![](assets.ru/log-returns-of-stock-prices/O_77.png)
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_107.png)
multiT = EstimatedDistribution[fdata,
MultivariateTDistribution[Array[x, 5], Array[s, {5, 5}], nu]]
![](assets.ru/log-returns-of-stock-prices/O_78.png)
Вычислим и сравним информационный критерий Акаике (AIC) для двух распределений. Данный критерий имеет меньшее значение для модели, полученной с помощью функции MultivariateTDistribution.
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_108.png)
aic[k_, dist_, data_] := 2 k - 2 LogLikelihood[dist, data]
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_109.png)
aic[5 + 15, multiN, fdata]
![](assets.ru/log-returns-of-stock-prices/O_79.png)
![Click for copyable input](assets.ru/log-returns-of-stock-prices/In_110.png)
aic[5 + 15 + 1, multiT, fdata]
![](assets.ru/log-returns-of-stock-prices/O_80.png)