Acceder

Prediciendo grandes caídas del SP500

Este 2020 ha sido muy bueno para hacer dinero. Pero la caida de mar-abril me la he comido completamente. Si hubiera podido paliar esto, hubiera sido mucho mejor. Las crisis son una bendición para el que las sabe y puede aprovechar. Habia muchas empresas tiradas de precio y  esto solo ocurre cada 7 a 10 años. Ahora bien para aprovechar esta "crisistunidad" (Crisis + Oportunidad) como diría Hommer:

...hay que tener algo de Cash o acceso al crédito en el momento adecuado.  Esto lo podemos tener si hemos tomado coberturas para evitar grandes caídas de nuestra cartera en los momentos adecuados.
 
 Sigo haciendo modelos matemáticos (estadísticos) de variables que nos puedan ayudar a predecir caídas. Para crear un buen modelo se necesitan muchos datos, cuantos más mejor, y sobre todo evitar el over-fitting. El modelo tiene que ser: 
 
 -Robusto. Nuestro modelo debe aprender, no memorizar.

-Resultado generalizable de la variable a modelizar. Capacidad para resolver problemas entendiendo la lógica subyacente de la materia (en este caso el modelado de grandes caidas del SP500). Debemos evitar a toda costa el overfitting (incluso reduciendo el nivel de aciertos)  se ajusta bastante bien a los datos, no es muy complicado, es generalizable y los errores para nuevos datos de partida son similares a lo esperado. 
(Link):

Nos combiene un modelo tipo Appropiate-fitting
Nos combiene un modelo tipo Appropiate-fitting

Detalles tecnicos del Modelo:

Centrándonos en el modelo, queremos hallar correlaciones con las caídas del SP500, que son variables a modelizar y/o predecir. Tenemos las variables objetivo:

-DD (DrawDown)= nos da la caída en % desde el ultimo cierre, hasta el mínimo de las siguientes 365 días (1 año).
-Tortazo = nos da 1 si la caída (variable anterior) es mayor del 12% y 0 en los demás casos.

Por otro lado tenemos variables de partida: datos macro económicos, Value, Momentum, técnicos y de sentimiento de mercado. En los modelos las hay de varios tipos:

-Macroeconómicos: Precios de commodities, índices, crecimiento económico, deuda (familiar, estatal y corporativa), masa monetaria(M1,M2,M3)… obtenidos automáticamente de la FRED.

-Sentimiento de mercado: VIX (medida indirecta del miedo del mercado), obtenido automáticamente de la FRED. 

-Value: Múltiplos del SP500 como el PE y sus variaciones. Shiller PE, Aumento del PER... obtenidos automáticamente de Quandl. 
 
 -Momentum y Técnicos: ruptura 200 sesiones, medias móviles, aceleración, momentum 200 sesiones... datos obtenidos automáticamente de yFinance.  
 
 En este post os voy a poner gráficas y que nos den idea de donde estamos ahora. Analizando las variables de partida de 2 en 2 nos encontramos algunas graficas interesantes:


Combinacion transporte en camiones y Shiller PE: 1972-2020
Combinacion transporte en camiones y Shiller PE: 1972-2020

Tal como vemos en la gráfica, aunque en ella hay mucho ruido, se puede apreciar como las grandes caídas están arriba a la derecha. Donde pone "Today" es la situación actual, según la cual estamos en zona peligrosa.

Podemos hacer lo mismo con otras 2 variables:
-Commodities
-Corporate Index
Combinacion de Precio de commodities y Coprorate Index. 1977-2020
Combinacion de Precio de commodities y Coprorate Index. 1977-2020


En la gráfica hay mucho ruido, pero se puede apreciar como las grandes caídas tienden a estar arriba a la derecha. Donde he puesto "Today" es aproximadamente la situación actual, según la cual estamos en zona peligrosa. 
 
Y así se puede hacer con todas las variables. En proximos posts iré introduciendo más...


5
¿Te ha gustado mi artículo?
Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico
  1. en respuesta a Tibu74
    -
    #5
    13/04/21 14:49
    Ok
  2. en respuesta a Dabulper
    -
    #4
    12/04/21 19:09
    hola Dabulper,

    -La variable target "DD" (DrawDown) es float(5-35) , caidas maximas del Sp500 en los siguientes 365 dias.
    -La variable target "Tortazo" solo lo uso para las graficas ya que es mucho mas visible.
    -los datos son de dias de bolsa.
    -Uso Keras, Tensorflow

    Hablamos por privado si te parece
  3. en respuesta a Tibu74
    -
    #3
    11/04/21 13:50
    Entonces deduzco que tu red tiene dos salidas, una de tipo lineal para predecir el porcentaje (regresión lineal) y otra binaria para señalar "tortazos" mayores del 12% (decisión binaria). ¿Es así?
    Como dices que es una red neuronal de 3 capas (ocultas, intuyo) con activación RELU, debo suponer que es un MLP (Multi Layer Perceptron). ¿Qué optimizador incluirás? ¿Tienes decididos los números de neuronas de cada capa?

    ¿Los datos (la parte más importante) los presentarás como valores estáticos de cada tiempo dado (datos cada día, o cada hora...) o como series temporales de esos datos en ventanas de datos ( datos de 5 días anteriores, o de 5 horas anteriores...)?

    ¿Has planteado una ensemble de modelos o un modelo único?

    Perdona que sean tantas preguntas, pero para ubicarme en la idea de modelo que tienes en mente debo especificar muchos aspectos. Irán cayendo más preguntas.

    Si usas Keras (con tensorflow como backend) para entrenar el modelo, no tengo problema en ayudarte.
  4. en respuesta a Dabulper
    -
    #2
    10/04/21 21:28
    Hola Dabulper,
    Muchas gracias por tus comentarios,

    -La varible target va a ser los maximos  % de caidas del SP500 en 365 dias siguientes. Valiable que oscila entre 5 y 35(la he limitaado de esta forma para efectos practicos)
    -La variable Tortazo que es binaria(caidas de >12%)  solo la utilizo para graficos ya que es muy visual. Es facil ver donde estan las zonas de caidas altas o bajas.
    -red neuronal, con 3 capas activacion Relu, 
    -El rango de datos es del 1970-2020, pero tambien una version simplificada de 2000-2020
    -El error se calcula con los datos posteriores al entrenamiento. Old vs new

    Seguramene sea mucho mejor que yo, que simplemente soy un aprendiz. Quizas cuando la tenga te puedo pasarla y me comentas tus opiniones,

    Saludos,

  5. #1
    10/04/21 12:26
    Si no he entendido mal, pretendes entrenar un modelo neuronal (supongo que una red progresiva supervisada, feedforward network, o tal vez una LSTM) para generar una salida binaria que se ponga a 1 cuando haya condiciones de posible caída mayor que cierto porcentaje en el SP500, y dé salida 0 en caso contrario.
    ¿Qué tipo de arquitectura de red vas a utilizar? 
    ¿Qué rango histórico de datos planteas incluir en el entrenamiento?
    ¿Qué protocolo de validación y test vas a implementar?
    No me consideres un novato en este campo, pues llevo más de 30 años trabajando con RNA.