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:
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:
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:
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
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.