Entiendo que los rendimientos de las acciones no se distribuyen normalmente. Sin embargo, ¿hay algún método que nos permita reescalar los rendimientos de las acciones para que se parezcan más a las distribuciones normales?
Me las arreglé para encontrar un documento que habla de esto: L. C. G. Rogers: El sentido, el sinsentido y el S&P500 , Decisiones en Economía y Finanzas (2018) 41:447-461
https://link.springer.com/content/pdf/10.1007/s10203-018-0230-3.pdf
donde el autor reescaló los rendimientos del SP500 de la siguiente manera:
Como se puede ver, consiguió escalar los rendimientos en los períodos extremos (por ejemplo, el lunes negro de 1987) para que se parecieran más a las distribuciones normales.
Intenté replicar este método con Python utilizando los mismos parámetros que en el artículo con K = 4, Beta es 0,025. N no se especificó, pero elegí N para ser 100.
SP500['returns'] = np.log(SP500['Adj Close']/SP500['Adj Close'].shift(1))
SP500['returns_sq'] = np.square(SP500['returns'])
SP500.loc[:, 'vol'] = 0
SP500.loc[:,'Vol_rescaled_returns'] = 0
K = 4
Beta = 0.025
SP500.loc[101,'vol'] = np.sqrt(SP500.loc[1:101,'returns_sq'].mean())
for i in range(101,len(SP500)-1):
Y = max(-K*SP500.loc[i,'vol'],min(K*SP500.loc[i,'vol'],SP500.loc[i,'returns']))
SP500.loc[i+1,'vol'] = np.sqrt(Beta*(Y**2) + (1-Beta)*(SP500.loc[i,'vol']**2))
SP500.loc[i+1,'Vol_rescaled_returns'] = SP500.loc[i+1,'returns'] / SP500.loc[i+1,'vol']
Sin embargo, mi resultado es diferente al del documento, como se muestra a continuación, con rendimientos negativos significativos en el lunes negro en torno a -16, mientras que en el documento es de -6. ¿Hay algo malo en mi código anterior? Lo he comprobado varias veces pero parece bastante sencillo o hay algún problema con este método? ¡Muchas gracias!