Wolfram Language

Probabilidade e estatística aprofundadas

Retornos logarítmicos de preços de ações

Os preços das ações modelados com o movimento geométrico browniano (no modelo clássico de Black-Scholes) são considerados normalmente distribuídos em seus retornos logarítmicos. Aqui, essa suposição é examinada com os preços das ações de cinco empresas: Google, Microsoft, Facebook, Apple e Intel.

Extraia os preços das ações em 2015 com FinancialData.

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

Calcule os retornos logarítmicos.

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

Filtre os retornos logarítmicos com ARCHProcess de ordem 1.

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];

Compare os dados filtrados de cada ação com a distribuição normal com QuantilePlot. Para as cinco empresas o comportamento assimptótico apresenta uma divergência respeito à normal.

mostre o input completo da Wolfram Language
In[4]:=
Click for copyable input
MapThread[ QuantilePlot[#1, PlotLabel -> #2, PlotTheme -> "Detailed"] &, {Transpose[fdata], symbols}]
Out[4]=

Realize um teste de normalidade multivariado com BaringhausHenzeTest (BHEP). A suposição de normalidade é claramente rejeitada.

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]=

Ajuste os dados filtrados com MultinormalDistribution e 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]=

Calcule o AIC para duas distribuições. O modelo de MultivariateTDistribution possui um valor menor.

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]=

Exemplos Relacionados

de en es fr ja ko ru zh