17 votos

¿Cómo generar datos sintéticos de FX para el backtesting?

Quiero generar datos sintéticos de forex con el fin de hacer backtesting de mis algoritmos de trading. Tengo algunas ideas aproximadas en mente sobre cómo hacer esto:

Comience con una curva que represente una tendencia y luego genere aleatoriamente puntos alrededor de la curva según una distribución gaussiana o de otro tipo. A continuación, tome los puntos generados y genere de alguna manera los datos de la barra (apertura, alta, baja, cierre) alrededor de esos puntos; alternativamente, añada un factor de tiempo, y luego determine aleatoriamente cuándo se produce un tick y recoja los datos en barras después.

Mi pregunta es: ¿se aleja esto de los métodos establecidos para la generación de datos sintéticos? Supongo que eso plantea la pregunta más básica: son ¿hay algún método establecido para la generación de datos sintéticos? No consigo encontrar ningún escrito sobre este tema, ya sea una entrada de blog o un trabajo de investigación.

Así que, además de solicitar recursos externos sobre la generación de datos sintéticos, me gustaría saber qué tipo de distribuciones modelan mejor las relaciones entre la apertura, el máximo, el mínimo y el cierre, o cómo generar los intervalos adecuados entre los ticks, el diferencial entre los precios de compra y venta, etc.

1 votos

Podría utilizar un proceso estocástico con un término de deriva y volatilidad. Tal vez un modelo de tipos de interés como Vasicek que tiene reversión media, ES-VJ++ que es Vasicek con saltos, Hull-White, Black-Derman-Toy, etc. etc. El problema, por supuesto, es que sus algoritmos de trading (deberían) identificar rápidamente las suposiciones guasianas (o no) del modelo y batir al "mercado". ¿Por qué no pruebas el sim trading con un broker que te de datos en vivo? No he visto escritos sobre datos sintéticos de trading.

0 votos

Vencer a un mercado falso es un problema, de ahí mi interés por la investigación existente. Tienes razón, debería y hago pruebas con datos en vivo de un broker también. El problema es que los datos en vivo lleva tiempo, y no puedo controlarlos. Además de las pruebas en vivo, Quiero tener un conjunto de pruebas de la unidad para ejecutar mi estrategia contra, para servir como una comprobación de cordura que incluso en los casos ideales mi estrategia hace beneficio. Lo ideal sería comprobar un gran número de casos con parámetros variables. No puedo garantizar que todos esos movimientos aparezcan en los datos en vivo, y los datos históricos no están limpios además de tener el mismo problema.

0 votos

Así que sí, tal vez quiero que los datos sean tan simplistas que cualquier estrategia razonable los supere, pero aun así quiero modelar un mercado real lo más cerca posible...

7voto

Chris Bunch Puntos 639

Para empezar, ni siquiera estoy seguro de por qué necesita hacer esta pregunta. Hay literalmente años de datos gratuitos de ticks disponibles para FX, sólo hay que ver quant.SE's datos wiki .

Dicho esto, una gaussiana es un ajuste muy pobre para los datos de alta frecuencia, especialmente los de FX. Su estrategia de simulación de datos depende de la idea en la que se basa la simulación. Si desea estimar realmente cualquier parámetro o métodos de prueba en estos datos, y va a aceptar o rechazar ideas basadas en los resultados de la simulación, le insto a que se detenga allí mismo y reconsidere.

Si, por el contrario, desea modelar la volatilidad del proceso y probar la capacidad de su sistema para hacer frente a los cambios en los parámetros del proceso de generación de datos, debe consultar el capítulo 5 y en particular la página 122 de Introducción a las finanzas de alta frecuencia . Escriben:

Las distribuciones de los rendimientos tienen cada vez más colas gordas a medida que aumenta la frecuencia de los datos (tamaños de intervalo más pequeños) y, por tanto, son claramente inestables...

Las leyes de escala describen los rendimientos medios absolutos y los rendimientos medios al cuadrado como funciones de sus intervalos de tiempo...

Hay pruebas de heteroscedasticidad estacional en forma de distintos grupos diarios y semanales de volatilidad...

Algunos trabajos afirman que los rendimientos de FX se acercan a los estables paretianos, por ejemplo (McFarland et al., 1982; Westerfield, 1997); otros a las distribuciones de Student que no son estables (Rogalski y Vinso, 1978; Boothe y Glassman, 1987); algunos rechazan cualquier distribución única... En la actualidad, la mayoría de los investigadores están de acuerdo en que una mejor descripción del proceso de generación de datos es en forma de modelo condicional heterocedástico en lugar de ser de una distribución incondicional.

Por último, si desea construir datos OHLC, su mejor opción es modelar el proceso de generación de datos como el anterior junto con un proceso de frecuencia de ticks (también discutido en la referencia anterior) y construir barras OHLC a partir de datos de ticks simulados.

1 votos

Desde luego, no pretendo ofender a nadie por querer datos sintéticos además de los históricos. Sólo quiero ser capaz de aislar las tendencias con parámetros de volatilidad específicos, y por lo tanto darme una gama más amplia de datos para trabajar. Por supuesto, los datos sintéticos tendrían un peso menor en mi decisión general sobre una estrategia; pero si hago algún pequeño cambio que tiene efectos secundarios inadvertidos en algunos casos que no aparecen en mis datos históricos, sería mejor saberlo. Estoy seguro de que si los datos reales fueran tan fáciles como una gaussiana, este foro no existiría.

0 votos

Y por supuesto, ¡muchas gracias por su referencia específica! Lo comprobaré y quizá añada otro comentario con lo que encuentre.

0 votos

Entonces, supongo que eso plantea la pregunta: ¿qué proceso "condicional" controla la heteroscedasticidad? ¿Existe algún modelo conocido que parezca funcionar de forma similar a un subconjunto concreto de datos del mundo real?

1voto

Ant Puntos 121

El método de generación de datos sintéticos descrito aquí puede serle útil. También creo que el meboot El paquete R puede utilizarse para la generación de series temporales sintéticas.

0 votos

Esto es interesante, pero no parece que el autor de la entrada del blog proporcione un método para cambiar los parámetros del mercado. Simplemente toma datos reales de ticks y los modifica ligeramente... Y para los que lean aquí hay un enlace al artículo sobre meboot. Tendré que mirar más detenidamente para ver de qué se trata. jstatsoft.org/v29/i05/paper

0 votos

Estoy de acuerdo en que hay algunas limitaciones y he publicado mi versión adaptada aquí

0voto

alumb Puntos 2586

Podría empezar con algunos datos representativos (es decir, datos históricos para el período de interés) y luego utilizar el arranque para estimar la verdadera distribución de esos datos. A partir de ahí, puedes utilizar esa distribución para generar datos representativos.

0 votos

¿Y qué pasa si no puedo encontrar fácilmente la tendencia concreta que quiero modelar en los datos históricos?

0 votos

Si no puedes encontrar ningún ejemplo, ¿cómo sabes que tu tendencia es un escenario realista?

0 votos

No se trata de eso. Que un escenario no haya ocurrido antes no significa que no pueda ocurrir en el futuro. ¿No querrías que tu estrategia funcionara también en esos casos?

0voto

CyberFonic Puntos 2218

Me he planteado la misma pregunta. Creo que la literatura de aumento de datos es relevante. Y sin duda se pueden adaptar algunas ideas de la estimación de frecuencias de Good-Turing y sus descendientes. Otra idea es transformar un tipo de cambio para que coincida más o menos con otro, y utilizar un aluvión de algoritmos de clasificación estándar para ver si pueden determinar la falsedad a partir de datos reales. Creo que todo depende de qué invariantes de los datos crees que conoces bien y qué comportamiento residual es común en diferentes series temporales.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X