Una domanda che mi sono spesso posto รจ se le chiusure dei titoli seguano una distribuzione normale. Ho fatto alcune prove per verificare se รจ corretto assumere un andamento normale. Nello studio ho usato l’indice di borsa FTSMIB, ma ripetendo le prove con diversi titoli sembra che il comportamento sia analogo anche per i diversi titoli.
Il codice รจ scritto per Jupyter, strumento di analisi abbastanza standard, facie da usare e molto diffuso. Primo importo le librerie.
#Import vari import yfinance as yf from datetime import datetime from datetime import timedelta import scipy.stats as sp import pylab import numpy as np from matplotlib import pyplot as plt
Poi carico i dati da yahoo, poi li normalizzo attraverso un’operazione, anch’essa comune, logaritmo sui dati, e differenza tra i valori logaritmici.
#carico i dati, uso il FTSEMIB
start = '2015-01-01'
#ticker = "A2A.MI"
ticker = "FTSEMIB.MI"
sp_list = [ticker]
end = '2020-12-31'
print(f'{ticker} Stock download')
spy = yf.download(sp_list, start,end)
log_spy = np.log(spy.Close)
log_return = (np.diff(log_spy ,axis=0))
spy = spy.iloc[1:,:]
spy.loc[:,('log_return')] = log_return
data = spy.log_return.values
E ora i grafici e l’analisi.
Distribuzione normale
Faccio un fittin dei dati con la curva normale.
xmin, xmax = plt.xlim([-0.2,0.2])
x = np.linspace(xmin, xmax, len(data))
print(f'lunghezza dati {len(data)}')
plt.hist(data, bins=100, density=True, alpha=0.5)
r = sp.norm.fit(data)
print(f'fit normale: {r}')
p1 = sp.norm.pdf( x, r[0], r[1])
plt.plot(x, p1, 'r' ,linewidth=2,label='norm Returns')
# Plot the PDF.
title = f"Fitting Distributione Normale {ticker} "
plt.title(title)
plt.legend()
plt.show()
sp.probplot(data, dist="norm", plot=pylab)
pylab.show()
Il risultato รจ quello mostrato in figura, il fitting รจ solamente discreto, si nota un picco nella parte centrale che supera la curva normale e il grafico delle probabilitร conferma che le code sono distanti dai valori della distribuzione normale.

Distribuzione t-Student
Il picco centrale suggerisce che una distribuzione t-student con un basso grado di libertร (< 30) possa avere un fitting migliore.

Una distribuzione di t-student sembra in effetti avere un fitting migliore, rimangono delle asimmetrie sulle code e allontanamento dalla norma, con conseguente skewness (asimmetria) e kurtosi.
Approfondimenti da fare: per quali ragioni la distribuzione รจ t-student?
Lascia un commento