- Domingo, 18 Septiembre 2016
PASOS PARA DISEÑAR UN SISTEMA DE TRADING ROBUSTO
Después de saber qué tipo de datos son más óptimos para elaborar sistemas de trading, que en mi opinión son los futuros vamos a tratar primero de definir bien qué debemos tener presente a la hora de diseñar un sistema de trading. En segundo lugar, calcularemos el nominal de un futuro para tener claro cuánto dinero real estamos moviendo con un contrato de futuros en el mercado.
Pasos para diseñar un sistema de trading:
1. Saber que busco. Debemos saber exactamente la ineficiencia que buscamos. No es lo mismo modelar un sistema tendencial que tiene unas particularidades concretas que un antitendencial que no tiene nada que ver. Tampoco será lo mismo diseñar un sistema en barras diarias que en velas de 10 minutos, por ejemplo. Para operar futuros y sobre todo con cuentas pequeñas recomiendo encarecidamente operar siempre intradía porque las posiciones overnight (después del cierre del mercado) añaden mucho riesgo a nuestro sistema.
2. Aislar la idea que debe ser lo más sencilla posible. Esto será el corazón del sistema y por tanto es lo más importante. La idea base debe ser ganadora por sí misma sin ningún filtro. Si partimos de una idea mediocre estamos condenados a sobre optimizar para llegar a algo que no será útil a futuro.
3. No asumir riesgo sin estar seguro de haber hecho las pruebas suficientes. Nunca se revisa lo suficiente un sistema, eso sí, siempre debemos mirar dentro del periodo dentro de la muestra (ya iremos hablando más de estos conceptos) porque si miramos fuera de la muestra para modificar nuestros sistemas estamos sobre optimizando, es decir, si miramos en la parte del histórico que no hemos optimizado para ver posibles mejoras tenemos altas posibilidades de sobre optimizar. Evitar la sobre optimización será uno de nuestros caballos de batalla como traders cuantitativos.
4. Probar las partes más importantes primero. No todas las partes de sistema tendrán el mismo peso sobre el mismo. A partir del core hay que añadir los filtros poco a poco que siempre deberán estar en consonancia con la idea básica. Puede ocurrir que estemos empeñados en añadir un filtro cuando esto añade poco o nada de valor al sistema. Si algo no lo entiendo o no funciona no lo hago.
5. Revisión continuada del trabajo. Que un sistema esté terminado no implica que esté bien. Los sistemas se reoptimizan en su debido tiempo, cuando esto se hace, hay que comprobar objetivamente que la reoptimización mejora al conjunto del sistema y no a una parte. Esto se puede hacer objetivamente, tema que iremos abordando durante en esta sección más adelante.
6. Cuestionarse los resultados extraordinarios. Tan probable es que haya algo que esté mal cuando hay una gran pérdida como cuando aparece un gran resultado. Recuerde que los trades reales deberán estar siempre dentro de lo esperado. Ni mejor ni peor. Cuando aparecen resultados extraordinariamente buenos puede ser un síntoma de que el sistema no está trabajando con la combinación óptima de parámetros y por lo tanto, puede que nos esté avisando de que necesita una reoptimización. Utilizaremos las bandas de confianza a partir de la regresión linear en la serie de trades de nuestro sistema. Ya profundizaremos en este concepto.
7. No tomar atajos. Cuando utilizo el trabajo de terceros hay que comprobarlo a fondo. El conocimiento siempre se extrae del algún lugar, pero provenga de donde provenga nunca hay que dar por sentado que es correcto.
8. Comenzar desde el final. Definir claramente el objetivo del sistema y buscar sólo la información relativa a ese objetivo. Es frecuente que cuando estamos trabajando en un sistema nos surjan nuevas ideas. Mi consejo es que se tome nota de estas ideas, pero no trabajar en más de un proyecto a la vez porque nos dispersaríamos. Primero terminamos un sistema y después empezamos a trabajar en otra idea, por supuesto esto es un consejo, nada más.
9. El sentido común está por encima de cualquier sistema y/o estadística.
10. Probar el core en activos similares y timefrimes parecidos. Si funciona aceptablemente bien en todos será un buen síntoma de robustez en la idea.
11. Probar el core en activos similares y timefrimes parecidos. Si funciona aceptablemente bien en todos será un buen síntoma de robustez en la idea.
12. Control de riesgos. Casi la única manera de gestionar correctamente nuestro riesgo es mediante la gestión de capitall. Si forzamos nuestro riesgo para intentar doblar la cuenta en poco tiempo tiempo puede ocurrir todo los contrario, que la quebremos. Un sistema mediocre puede convertirse en bueno con una óptima gestión de capital y viceversa. El primer objetivo de todo sistema es conservar el capital como si con ello fuera nuestra vida (aunque nuestro dinero sí que va en ello).
13. Entradas y salidas realistas y reproducibles en el mercado real. El sistema puede fallar en la entrada, por supuesto lo menos posible, pero NUNCA deberá quedarse dentro sin nuestro consentimiento. Es imprescindible que el sistema salga sí o sí por este motivo es recomendable colocar más de una instrucción de salida.
14. Gastos realistas. Diferenciado la liquidez y el tipo de sistema. No todos los activos tienen la misma liquidez y tampoco abren en el mismo spread. Es preferible sobre estimar los gastos. Mejor sorpresas agradables en comisiones cuando operamos en real que al revés. Cuando operamos pagaremos dos comisiones una fija que es la comsión del broker y otra por el diferencial en el precio entre compradores y vendedores. Esta última parte es la que más suele penalizar los resultados den lso sistemas, especialmente si son muy activos y si no se entra de manera óptima en el mercado.
15. Comparación entre resultados esperados y reales una vez que ya se está operando en real. Dependiendo de lo activo que sea cada sistema será recomendable una revisión de los trades con más o menos frecuencia. En mi caso, cada nuevo mes reviso los trades producidos en cada sistema.
Para terminar pondré dos ejemplos para calcular cuanto dinero estamos moviento en el mercado con la compra de un futuro. Doy por hecho que muchos de los lectores ya pueden conocer esta información pero considero recomendable añadirlo para saber con precisión que supone en dinero comprar un contrato de futuro y como calcular el nominal de cada futuro.
A. Futuro del SP500:
- Valor del punto en el futuro del SP: 50$
- Cotización a fecha 17.09.2016: 2132 puntos.
- Nominal: 2132 x 50$ = 106.600$
Si el mercado se mueve a nuestro favor por ejemplo un 0.7% implica que ganaremos (106.600$ x 0.7% = 746.2$). Si se mueve en nuestra contra perderemos esos 746.2$.
B. Futro del oro:
- Valor del punto del futro del oro: 100$
- Cotización a fecha 17.09.2016: 1310.2 puntos.
- Nominal: 1310.2 x 100$ = 131.020$.
Si el mercado se mueve a nuestro favor por ejemplo un 0.7% implica que ganaremos (131.020$ x 0.7% = 917.14$). Si se mueve en nuestra contra perderemos esos 917.14$.
Como la semana anterior os emplazo al próximo artículo. Mi objetivo es no escribir cada artículo aisladamente si no seguir un guión de tal manera que si leen todos los articulos puede considerarse como un curso de trading cuantitativo. Por este motivo he comenzado por conceptos más teóricos que podrán aburrir un poco.
Un saludo y agradeceré mucho cualquier opinión y/o crítica.
"Nos vemos"
Bruno Morte
Leer más ...- Domingo, 11 Septiembre 2016
Trading automático. Empecemos desde el principio
En primer lugar, quiero agradecer a Kostarof y personalmente a Juan Carlos Costa el hecho de abrirme este altavoz para hablar de trading algorítmico.
En esta sección, que se publicará todos los lunes hablaré siempre desde mi experiencia y tratando demostrar mis exposiciones de manera lo más sencilla posible. Esto será bueno para los que quieran empezar a conocer el trading automático, no obstante, para los que tengan ya conocimiento de este tipo de trading puede resultar demasiado básico, especialmente en los primeros artículos. El objeto que pretendo es seguir una guía, empezando por lo más básico para que a medida que vaya publicando más artículos entremos en mayor complejidad. Y ahora al grano.
¿Qué buscamos para diseñar un sistema de trading automático?
Lo que buscamos en este método de trading es un patrón que se repita el número suficiente de veces en el tiempo (10 años por lo menos) que nos haga pensar que dicho patrón no es azar y por tanto, nos dé una ventaja estadística que nos permitirá extraer dinero del mercado de manera recurrente. Cuando hago la puntualización de 10 años es que es importante que este patrón “haya conocido” un mercado bajista y muy volátil un mercado en sostenida tendencia alcista y un mercado lateral. En mi opinión tiene más validez un patrón que se repita 200 veces desde el 2008 que otro que también lo haga 200 veces desde 2012 por ejemplo. De un sistema que no aguanta la volatilidad de 2008 no confiaría. Si miramos en la imagen extraída de Bloomberg, vemos la comparativa de las últimas grandes crisis en los precios, la más reciente el famoso brexit que si lo comparamos con el pico del VIX (indicador de volatilidad) en 2008 pues… está claro ¿no?. Obviamente, lo ideal es que se repita muchas veces desde hace muchos años, si conseguimos esto y trabajamos bien el sistema podemos tener una máquina de hacer dinero. No es fácil como os podéis imaginar, pero debe ser nuestro objetivo como traders cuantitativos.
¿Qué ventajas tiene el trading automático?
Aunque puede tener más y de hecho las tiene, para mí son dos las más importantes: la primera es que trabajas sólo en base a información estadística. Ojo con esta ciencia, porque hay un dicho que dice: “hay verdades, medias verdades, mentiras y estadística”. Quiero con esto decir que no debemos forzar a la estadística para que nos muestre lo que queremos ver, esto es sobre optimizar, que ya hablaremos en próximos artículos de este tema. Si un sistema no vale, o no acaba de mostrar los queremos, pues si lo estamos operando habrá que como mínimo apagarlo y revisarlo a fondo y si estamos en la fase de desarrollo y no termina de salir, pues lo dejamos y comenzamos a trabajar en otra idea, quizás más adelante podamos retomar el diseño del sistema y esta vez sí muestre resultados no forzados aceptables. Si somos capaces de no manipular la estadística trabajaremos siempre con datos objetivos.
La segunda ventaja es que si hemos trabajado bien el backtest tendremos una gran sensación de control sobre nuestro sistema. Esto no quiere decir que cuando una orden se ejecute, no aparezca la adrenalina que genera el mercado y por qué no decirlo, nos gusta a los traders. Y sobra decir, que una vez el sistema esté conectado en real, habrá que supervisar que los trades reales estén dentro de lo proyectado en la fase de desarrollo es sistema. Si esto es así, nuestro trabajo estará bien realizado. En esta etapa somos supervisores del sistema.
¿Dónde conseguimos los datos necesarios para crear nuestro sistema de trading?
No daré nombres, por el momento, pero hay brokers que tienen integradas plataforma y datos, y otras plataformas a las que las tienes tú que proveer de datos (pagando al proveedor correspondiente).
Una vez que tenemos la plataforma alimentada con los datos podemos elegir dos tipos fundamentalmente (hay más) de graficar dichos datos, una en la que se incluya la variable tiempo (barra, velas…) otras en las que no como las cajas renko.
¿Cuál elegir? Pues dependerá de cada trader. Trataré de explicar qué ventajas e inconvenientes les veo yo a un tipo de gráficos y a otros. La principal ventaja de las gráficas temporales es que te permiten cargar un histórico lo suficientemente largo como para probar las estrategias en diferentes tipos de mercados (alcistas, bajistas y laterales), lo que es importante a la hora de modelar un sistema automático de trading, como ya se ha comentado. Para conseguir un histórico de 10 años o más en ticks normalmente debeás pagar un precio alto por ello (aunque seguro que habrá maneras de evitar este pago, ya sabemos todos cómo funciona internet). Luego la fiabilidad de los datos en ticks es para mí un dilema porque no sabemos de qué manera nos están llegando los datos a nuestro ordenador. Imagínese que en el servidor de nuestro proveedor de datos se produce un cuello de botella y cuando este “estalla” se produce un pico de ticks que nos llegan a nuestra plataforma en nuestro ordenador. ¿Será capaz de tener en cuenta esto nuestro pc? y ¿la plataforma? Estos son un par de ejemplos de porqué que yo prefiero las gráficas temporales, porque, aunque puede haber errores de cálculo, por sentido común, éstos son más improbables. Si hablamos de trading cuantitativo, que será de lo que hablemos siempre en esta sección, los errores en la estadística que generemos deben ser en la medida de lo posible inexistentes ya que será con esta información con la que “nos juguemos” más tarde nuestro dinero. En este punto, añado una de mis máximas en el trading, no hay ningún sistema que genere más beneficios que el sentido común.
En esta imagen se grafica el EUR/USD en cajas renko. Cada una de dichas cajas se forma por un número de ticks que podemos determinar nosotros en la plataforma.
Una vez que tenemos la plataforma y los datos, ahora qué, pues debemos cargar un activo para trabajar con él. Y la pregunta aquí es, ¿sirven todos los activos de la misma manera para modelar sistemas de trading automáticos? Pues la respuesta es NO. En mi opinión, el activo más fiable para operar son los futuros sobre índices, materias primas, divisas… Ya sé que los futuros pueden asustar a algunos, pero como todo en la vida, si no sabemos manejar y/o no conocemos algo tendemos a asustarnos, pero bien utilizados no tienen por qué ser más riesgosos que otro activo.
Porque futuros y no acciones por ejemplo dirán algunos. Pues la respuesta es que en las acciones se reparten dividendos, se hacen splits, contrasplits… lo que nos hace repetirnos la pregunta de ¿son fiables estos datos para modelar un sistema de trading?, pues en mi opinión no. Normalmente el precio recoge toda esta información, pero si podemos elegir un activo que no tenga este problema, por qué no hacerlo. Recordemos que debemos minimizar la posibilidad de errores en los datos ya que estos, son la materia prima con la elaboramos nuestro sistema y con el que luego trabajaremos con nuestra otra materia prima fundamental, el dinero.
Es cierto que los futuros tienen unos vencimientos (normalmente trimestrales) y aquí sin mencionar ningún bróker por el momento, hay que tratar de conseguir los datos de futuros continuos ajustados. Si esto no es así lo que tendremos en el gráfico son gaps, más o menos grandes en cada vencimiento lo que no es aconsejable para crear un sistema automático de trading (recuerde fiabilidad máxima en los datos). En la imagen se puede ver la diferencia entre futuros continuos ajustados y no ajustados. La diferencia es más que notable.
Hay otros activos que tratan de simular a los futuros como los CFDs. Estos productos sintéticos creados por los brokers replican el comportamiento de los futuros. La gran diferencia que juega en contra de nosotros traders, es que la contrapartida siempre te la da el bróker y no otro trader. Es decir, que cuando tú ganas el bróker pierde y viceversa. A buen entendedor…
Siendo el primer artículo, no me extiendo más. No quiero hacerme pesado ya desde el primer día. En los siguientes post iré añadiendo videos, dentro de los artículos, que suelen ser más eficaces a la hora de explicar contenidos. Cada lunes iré añadiendo un nuevo post tratando de seguir un hilo conductor que nos haga pasar por todas las fases del desarrollo de un sistema de trading.
Espero “veros” por aquí más veces. Saludos.