Estoy buscando algunas técnicas robustas para eliminar los valores atípicos y los errores (cualquiera sea la causa) de los datos financieros de series temporales (es decir, tickdata).
Los datos de series de tiempo financieras tick-by-tick son muy desordenados. Contiene grandes brechas (de tiempo) cuando el intercambio está cerrado, y hace grandes saltos cuando el intercambio se abre nuevamente. Cuando el intercambio está abierto, todo tipo de factores introducen transacciones a niveles de precios que son incorrectos (no ocurrieron) y / o no son representativos del mercado (un aumento debido a un precio de oferta o demanda ingresado incorrectamente, por ejemplo). Este documento de tickdata.com (PDF) hace un buen trabajo al delinear el problema, pero ofrece pocas soluciones concretas.
La mayoría de los documentos que puedo encontrar en línea que mencionan este problema lo ignoran (se supone que los tickdata están filtrados) o incluyen el filtrado como parte de algún modelo comercial enorme que oculta cualquier paso útil de filtrado.
¿Alguien sabe de un trabajo más profundo en esta área?
Actualización: esta pregunta parece similar en la superficie pero:
- Las series de tiempo financieras son (al menos a nivel de tick) no periódicas.
- El efecto de apertura es un gran problema porque no puede simplemente usar los datos del último día como inicialización aunque realmente lo desee (porque de lo contrario no tiene nada). Los eventos externos pueden causar que la apertura del nuevo día difiera dramáticamente tanto en nivel absoluto como en volatilidad del día anterior.
- Frecuencia extremadamente irregular de datos entrantes. Cerca de la apertura y cierre del día, la cantidad de puntos de datos / segundo puede ser 10 veces mayor que el promedio durante el día. La otra pregunta trata con datos muestreados regularmente.
- Los "valores atípicos" en los datos financieros exhiben algunos patrones específicos que podrían detectarse con técnicas específicas no aplicables en otros dominios y, en parte, estoy buscando esas técnicas específicas.
- En casos más extremos (p. Ej., El bloqueo del flash), los valores atípicos pueden representar más del 75% de los datos en intervalos más largos (> 10 minutos). Además, la frecuencia (alta) de datos entrantes contiene información sobre el aspecto atípico de la situación.
fuente
Respuestas:
El problema definitivamente es difícil .
Reglas mecánicas como el +/- desviaciones estándar N1 veces, o + / N2 veces MAD, o +/- N3 IQR o ... se fallan porque siempre hay algunas series que son diferentes como por ejemplo:
He estado allí, hecho eso ... en un trabajo anterior. Podría intentar poner entre paréntesis cada serie utilizando las relaciones de arbitraje ( por ejemplo, suponiendo que USD / EUR y EUR / JPY se presuman bien, puede calcular bandas alrededor de lo que debería ser USD / JPY; del mismo modo para derivados de un subyacente, etc. pp.
Los proveedores de datos comerciales amplían algo de esfuerzo en esto, y aquellos de uso que son clientes de ellos lo saben ... todavía no excluye los errores.
fuente
Agregaré algunas referencias en papel cuando vuelva a la computadora, pero aquí hay algunas sugerencias simples:
Definitivamente comience trabajando con devoluciones. Esto es crítico para lidiar con el espaciado irregular donde, naturalmente, puede obtener grandes diferencias de precios (especialmente alrededor de los fines de semana). Luego, puede aplicar un filtro simple para eliminar los retornos fuera de la norma (por ejemplo, frente a un gran número de desviaciones estándar). Los retornos se ajustarán al nuevo nivel absoluto, por lo que grandes cambios reales resultarán en la pérdida de solo un tic. Sugiero usar un filtro de dos pasos con retornos tomados de 1 paso yn pasos para tratar con grupos de valores atípicos.
Editar 1: Respecto al uso de precios en lugar de retornos: los precios de los activos tienden a no ser estacionarios, por lo que la OMI puede plantear algunos desafíos adicionales. Para tener en cuenta las irregularidades y los efectos de la ley de potencia, recomendaría algún tipo de ajuste si desea incluirlos en su filtro. Puede escalar los cambios de precio por intervalo de tiempo o por volatilidad. Puede consultar la literatura sobre "volatilidad realizada" para una discusión sobre esto. También discutido en Dacorogna et. Alabama.
Para tener en cuenta los cambios en la volatilidad, puede intentar basar su cálculo de volatilidad desde la misma hora del día durante la semana pasada (utilizando la estacionalidad).
fuente
He cambiado (con cierta demora) mi respuesta para reflejar su preocupación por la falta de "adaptabilidad" de la locura / mediana incondicional.
Puede encontrar más información (y un enlace a un paquete R) en este documento :
fuente