Язык Wolfram Language

Расширенный перечень операций по статистике и теории вероятностей

Моделирование логарифмa доходности акций

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

Получим цены на акции этих компаний в 2015 году с помощью функции FinancialData. FinancialData.

In[1]:=
Click for copyable input
symbols = {"GOOGL", "MSFT", "FB", "AAPL", "INTC"}; prices = Table[ FinancialData[stock, {{2015, 1, 1}, {2015, 12, 31}}], {stock, symbols}];

Вычислим логарифм доходности.

In[2]:=
Click for copyable input
logreturn = Minus[Differences[Log[prices[[All, All, 2]]], {0, 1}]];

Отфильтруем логарифм доходности с помощью авторегрессии условной гетероскедастичности первого порядка. Для этого воспользуемся функцией ARCHProcess.

In[3]:=
Click for copyable input
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. На графиках видно, что в каждом случае хвосты распределений отклоняются от нормы.

код на языке Wolfram Language целиком
In[4]:=
Click for copyable input
MapThread[ QuantilePlot[#1, PlotLabel -> #2, PlotTheme -> "Detailed"] &, {Transpose[fdata], symbols}]
Out[4]=

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

In[5]:=
Click for copyable input
htd = BaringhausHenzeTest[fdata, "HypothesisTestData"];
In[6]:=
Click for copyable input
htd["TestDataTable"]
Out[6]=
In[7]:=
Click for copyable input
htd["ShortTestConclusion"]
Out[7]=

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

In[8]:=
Click for copyable input
multiN = EstimatedDistribution[fdata, MultinormalDistribution[Array[x, 5], Array[s, {5, 5}]]]
Out[8]=
In[9]:=
Click for copyable input
multiT = EstimatedDistribution[fdata, MultivariateTDistribution[Array[x, 5], Array[s, {5, 5}], nu]]
Out[9]=

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

In[10]:=
Click for copyable input
aic[k_, dist_, data_] := 2 k - 2 LogLikelihood[dist, data]
In[11]:=
Click for copyable input
aic[5 + 15, multiN, fdata]
Out[11]=
In[12]:=
Click for copyable input
aic[5 + 15 + 1, multiT, fdata]
Out[12]=

Родственные примеры

de en es fr ja ko pt-br zh