Sesgo de anticipación: qué es y cómo evitarlo

El sesgo de anticipación ocurre al usar información no disponible o conocida en el período de análisis para un estudio o simulación, lo que genera resultados inexactos.

Un punto que a menudo se pasa por alto con respecto al sesgo de anticipación es que no se trata solo de cuándo una observación de datos está disponible; también se trata de cuándo puede acceder a los datos.

Uno de los desafíos con el sesgo de anticipación es que es difícil de detectar durante el backtesting. El backtest no puede señalar que los datos están sesgados. A menudo, nuestra única indicación de que los datos contienen sesgo es que los rendimientos son excelentes. La mejor solución para evitar el backtesting es comprender a fondo el sesgo de anticipación y luego configurar sistemas y procesos para protegerse contra él. Veamos algunos ejemplos de sesgo de anticipación y luego cómo prevenirlo.

Ejemplos de sesgo de anticipación

En los siguientes ejemplos, piense en cómo cada instancia introduce un sesgo de anticipación. Trate de identificar los siguientes tres momentos en el tiempo para cada dato:

  • ¿Cuándo se observaron los datos?
  • ¿A qué hora se publicaron los datos?
  • ¿A qué hora estaba disponible para nosotros?
  • Sesgo de anticipación de selección

    Considere que es un fanático de los productos de Apple y sabe que la compañía ha tenido un buen desempeño en la historia reciente. Decides crear un trading estrategia para trade Apple, probando su enfoque durante el período 2014-2019. El desempeño de esta estrategia se verá irrazonablemente bueno ya que el precio de las acciones de Apple aumentó un 190 % en comparación con el 63 % durante el mismo período de cinco años para el índice S&P 500.Momento Fecha Observación de datos Últimos cinco años que finalizan el 8/10/2019 Datos publicados 9/10/2019 Datos disponibles 9/10/2019

    Observaciones y revisiones de datos

    Examinemos un ejemplo más complicado que incorpora el sesgo de anticipación usando Datos económicos de la Reserva Federal. La Oficina de Estadísticas Laborales (BLS, por sus siglas en inglés) publicó datos de empleo estatales y locales el 13 de marzo de 2017. La BLS estimó inicialmente que St. Louis agregó 38,300 puestos de trabajo en 2016, pero los datos revisados ​​muestran que solo se agregaron 17,100 puestos de trabajo. A trader el uso de datos de desempleo en su estrategia necesitaría simular el uso de la estimación inicial hasta que una revisión esté disponible. no te sorprendas los datos de empleo se revisan.

    Veamos los momentos en el tiempo para la primera observación revisada. Los datos se publican a las 8:30 a.m., por lo que nuestra estrategia debería poder trade en los datos el mismo día que se publica. Si es difícil de ver en el gráfico, he proporcionado un tabla de los datos de desempleo.Momento Fecha Datos Observación 1/3/2012 Datos publicados 24/1/2017 Datos revisados ​​13/3/2017 Datos disponibles 13/3/2017

    Lanzamiento frente a disponibilidad

    Eche un vistazo a la declaración de ingresos de Apple a continuación. Imagina que creamos un trading estrategia que compra empresas cuando su margen de beneficio después de impuestos alcanza el 22%. En nuestro ejemplo, Apple alcanza este nivel de rentabilidad el 30/09/2018, entonces compramos, ¿no?

    $59 531 000 / $265 595 000 = 22,4 %

    Desafortunadamente, la observación de ganancias para el trimestre finalizado el 29/09/2018 no estará disponible hasta que los datos se publiquen después del cierre del mercado. Un lanzamiento fuera de horario significa que solo podríamos comenzar trading utilizando la información al día siguiente cuando abra el mercado. Momento Fecha Observación de datos 30/9/2018 Datos publicados 1/11/2018 Datos disponibles 2/11/2018

    Cómo protegerse contra el sesgo de anticipación

    Para evitar el sesgo de anticipación, debe evitarlo en sus datos y en el sistema de backtesting.

    Datos bitemporales

    La mejor manera de protegerse contra el sesgo de anticipación a nivel de datos es usar modelado bitemporalo más simplemente, para registrar datos junto con dos líneas de tiempo diferentes:

  • Datos tal como fueron registrados
  • Datos como los conocemos ahora
  • En otras palabras, necesitaríamos una columna por cada vez que haya una nueva revisión. El uso de los datos anteriores de la Reserva Federal hace que esto sea más concreto. Omita el código y mire los datos de la hoja de cálculo debajo si no está familiarizado con Python.

    import pandas as pd
    import urllib
    
    url = 'https://raw.githubusercontent.com/leosmigel/...
           analyzingalpha/master/2019-10-09-look-ahead-bias/unemployment.csv'
    with urllib.request.urlopen(url) as f:
      unemployment = pd.read_csv(f, parse_dates=True,
                                    index_col='observation_date')
    
    print(unemployment.head())
                      2017-01-24  2017-03-13
    observation_date
    2012-01-01               0.3         0.3
    2012-02-01               0.4         0.4
    2012-03-01               0.4         0.5
    2012-04-01              -0.3        -0.2
    2012-05-01              -0.1         0.0
    

    Él ALFREDO data nos proporciona datos bitemporales con tres columnas:

  • la fecha de observación
  • Los datos de la observación inicial
  • Los datos de observación revisados
  • Necesitaríamos agregar una columna para cada revisión. Una vez más, siempre necesitamos saber cómo estaban los datos en el momento de la grabación y cómo están hoy. Proporcionar los datos correctos a nuestro software de backtesting es el primer paso para evitar el sesgo de anticipación.

    Sesgo de anticipación en los sistemas de backtesting

    El sesgo de anticipación aún puede colarse en nuestras pruebas retrospectivas incluso con los datos correctos. Hay dos tipos de software de backtesting:

  • Sistemas de backtesting vectorizados “for-loop”
  • Sistemas de backtesting basados ​​en eventos
  • Sistemas de Backtesting Vectorizados

    Un backtester de bucle for vectorizado es el tipo de sistema de backtesting más sencillo. Los sistemas vectorizados recorren cada uno trading día y realice un cálculo, como un[promedio móvil/promedio móvil]en el conjunto de datos. El peligro con los backtesters vectorizados de bucle for es que son propensos al sesgo de anticipación debido a errores con la indexación. [movingaverage/moving-average)onthedatasetThedangerwithvectorizedfor-loopbacktestersisthattheyarepronetolook-aheadbiasduetomistakeswithindexing

    Por ejemplo, con los datos de la Reserva Federal anteriores, ¿cuál debería ser el valor de sus datos de desempleo para 2012-04-01 el 2017-01-24 si es australiano? trader? ¿Qué pasa con 2017-03-13? Es fácil cometer un error si no se tiene cuidado. Este es un problema de indexación lógica, y los sistemas de backtesting basados ​​en eventos evitan que esto suceda.

    Sistemas de backtesting basados ​​en eventos

    Los sistemas controlados por eventos son mucho más complejos y replican fielmente los sistemas en vivo. trading rendimiento. Sin ser demasiado técnicos, los sistemas basados ​​en eventos eliminan el sesgo de anticipación en el trading usando colas y pasando mensajes.

    Armado con datos libres de sesgos y un sistema de backtesting basado en eventos, está dando los primeros pasos para desarrollar un buen backtesting.

    Deja un comentario