- Domingo, 16 Octubre 2016
CREANDO NUESTRO PRIMER SISTEMA DE TRADING
Esta semana vamos a ver un ejemplo de cómo trabajar un sistema, concretamente trabajaremoes en un sistema que trata de aprovecharse de los gaps en el ETF SPY, y que sólo buscará ponerse corto si de da un patrón en el precio concreto.
El punto de partida con el que partirmos es el core del sistema junto con un un stop monetario y un TP también monetario, por supuesto, todo sin optimizar, como veis más simple no puede ser. Lo realmente importante y quizás más difícil es encontrar una idea potente y robusta, si tenemos esto, tenemos casi todo el sistema. El core o núcleo del sistema deberá ser ganador por sí mismo sin ningún tipo de filtro ni optimización. También deberá de considerar un histórico suficientemente largo, yo siempre parto desde el 2006.
En este punto lo que hacemos es optimizar los parámetros del core del sistema, más concretamente el tamaño del gap y el patrón que buscamos en la barra para “disparar”. En este caso el tamaño del gap que consideramos como óptimo coincide con el de partida, evidentemente esto es pura casualidad. Como se aprecia en la imagen el tamaño del gap que consideramos como óptimo es -0.3, lo que significa que debera producirse un gap bajista menor o igual al 3%.
En la siguiente imagen podemos ver el tamaño del rango que exigimos al patrón en la barra para que se podruzca la señal de cortos. En este caso el valor óptimo es 0.55.
Ahora añadimos un filtro de volatilidad. En concreto vamos a exigir que la volatilidad (ATR) de un periodo corto sea mayor que la volatilidad de un periodo largo.
Los filtros se deben colocar antes de añadir diferentes salidas y es por una cuestión lógica. Todos los Tp’s y stops que añadamos a partir de este momento trabajarán considerando los filtros. No debemos volvernos locos poniendo filtros, 2-3 filtros como máximo es suficiente. Insisto en que si el core del sistema es potente, los filtros son secundarios. Si partimos de una idea mediocre y a través de filtros conseguimos una curva “perfecta” ten por seguro que si no estás sobre optimizando estás muy cerca. Y recordad que sobreoptimizar es una maravillosa manera de ver lo que quieres ver y que luego en real no se reproducirá. En el sistema que nos ocupa como la curva inicial es bastante aceptable, es muy probable que, trabajando sólo en los stops y Tp’s podamos mejorar el sistema. Por no extenderme demasiado sólo probaré con este filtro, si no añade valor, lo descartaremos y trabajaremos en las salidas. La curva queda como sigue:
Nota: como al optimizar más de dos parámetros es menos visual, la manera de que esto no suceda es utilizando gráficos en 3D y/o con tablas dinámicas en Excel que es lo que yo utilizo. Más adelante escribiré un artículo de cómo mirar las zonas robustas en las optimizaciones.
Se aprecia que la curva se hace un poco más diagonal que es lo que buscamos y que el sistema opera menos, que en este caso no es muy relevante porue es un sistema que opera poco, pero en un sistema con alta cadenia operativa sí que seria algo a tener muy en cuenta. Hay que considerar que todavía no estamos considerando las comisiones y que cuando lo hagamos lógicamente tendrán efecto negativo en la estadística del sistema. También optimizamos sus valores.
Ahora añadimos un Tp también por ATR. Si el precio se mueve un nº de ATR’s por debajo de nuestro precio de entrada salimos en beneficio. Aunque estos son sólo dos ejemplos, decir que tanto los stops como los Tp’s por ATR funcionan bien muchas veces. El inconveniente es que en el caso de los stops no sabemos de antemano el tamaño del mismo, pero por el contrario, nos adaptamos a la volatilidad del mercado lo que hace más difícil que nos salten el stop y se vayan sin nosotros. También anulamos el TP monetario para optimizar los parámetros.
Para finalizar con el ejemplo, activamos de nuevo tanto el stop como el TP monetario y volvemos a optimizarlos. Ahora funcionarán como salidas de seguridad ya que lo normal será que los valores óptimos en ambos casos queden por encima en caso del stop y debajo para el TP. Recorcemos que este sistema opera cortos con un gap bajista en el SPY.
Resumiendo, los pasos aproximados a dar en la creación de un sistema son:
1. Buscar una idea en el mercado que puede servir como core del sistema añadiéndole dos salidas, una en beneficio y otra en pérdidas. Si es ganadora seguimos trabanjando, si no, la descartamos.
2. Añadimos filtros (entre 1 y 3 puede ser suficiente).
3. Anulamos el stop y TP iniciales y añadimos otras salidas que optimizaremos.
4. Activamos de nuevo el stop y TP inicial que volvemos a optimizar.
5. Añadimos comisiones.
La curva final quedaría considerando comsiones queda como sigue:
Este sería un ejemplo, resumido eso sí, de cómo trabajar un sistema de trading, evidentemente se puede complicar mucho más, pero puede servir como guía. Aunque resumidos, son los pasos que yo sigo.
Para contactar conmigo podéis hacerlo en Linkedin (buscando por mi nombre Bruno Morte Mota) o en el correo Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
Me despido hasta la semana próxima. Saludos y buen trading.
Leer más ...- Domingo, 09 Octubre 2016
"LOS REYES" DE LA ESTADÍSTICA EN UN SISTEMA DE TRADING
Antes de escribir el artículo de esta quiero es pedir disculpas por no haber escrito el artículo el lunes pasado debido a problemas personales. Ahora hablemos de trading.
Cuando elaboramos un sistema de trading debemos asegurarnos que el número de veces que se reproduce un patrón en el histórico (que deberá contener los años 2007-2008) es lo suficientemente grande para que se pueda considerar que tiene relevancia estadística, es lo que en estadística se llama tamaño de la muestra. Una manera de saber si nuestra muestra es suficiente es utilizando la siguiente fórmula:
El error de la muestra será igual al inverso de la raíz cuadrada del nº de trades, de tal manera que si tenemos un sistema que hace 100 operaciones el error será 0.1 (10%) lo que viene a decir es que podemos tener un error de +/- 10%. En mi opinión un sistema que opera desde 2006 y que tiene unas 200 operaciones (error de 0.5%) puede servir como muestra representativa. Evidentemente cuanto más grande sea la muestra menor será el error potencial en los datos. No obstante, hay alguna solución en caso de no tener una muestra lo suficientemente grande y utilizando el software MSA por ejemplo que te permite generar trades sintéticos a partir de la distribución de los originales, también en Excel se puede hacer aunque lleva un poco de trabajo.
Las plataformas de trading dan un sinfín de estadísticos de un sistema, pero para mí hay dos que son los más importantes y que dan una información muy válida de si un sistema es bueno, o no lo es tanto. El primero de ellos es la desviación estándar (que es el origen del segundo). La desviación estándar es la forma más popular de medir el grado de dispersión de los datos así como una magnífica manera de merdir el riesgo. El valor de una desviación estándar desde la media de los trades representa una agrupación de alrededor de 68% de los datos, dos desviaciones estándar incluyen 95,5% de todos los datos, y tres desviaciones estándar abarcará el 99,7%.
Conociendo la media y la desviación estándar de los trades de un sistema podemos calcular la probabilidad de obtener un determinado beneficio.
Por ejemplo, la probabilidad de conseguir un 20% de beneficio si la media del beneficio anual es del 8% y la desviación estándar el 16% será: (20%-8%) / 16% = 0.75 (75%).
Es cierto que la serie de trades de un sistema no sigue una distribución normal de manera estricta, pero si tenemos un número suficiente de operaciones sí que tenemos una aproximación a la normal. Sirva como ejemplo la distribución de frecuencias de un sistema que tengo operando en real para ver que efectivamente es aproximadamente normal su distribución.
Que los trades de un sistema se distribuyan de manera aproximada a la normal es importante ya que podemos calcular por ejemplo la probabilidad de que un trade caiga entre un determinado rango. Pongamos un ejemplo de esta afirmación si la desviación estándar de los trades de un sistema es 1612.41€ y el beneficio medio por operación (BMO) es de 552.81€ como se ve en la imagen de abajo…
y considerando que la distribución de los trades es aproximadamente normal…
… podemos calcular la probabilidad de que un trade caiga entre los valores a y b. Esto lo haremos con Excel.
En este caso la probabilidad sería del 7.35%. Se puede calcular también la probabilidad de que un trade sea menor que un determinado valor.
En este caso el resultado es del 32.03%.
El segundo de los estadísticos es el SQN (System Quality Number) creado por Van K. Tharp que es:
SQN = BMO / Desv estándar x (raíz de nº trades)
Según Tharp, valores por encima de 2 darán lugar a sistemas robustos y, superiores a 3, a sistemas excelentes y por encima de 4 estaríamos en teoría ante una auténtica máquina de hacer dinero, insisto en lo de teoría porque no olvidemos que no sabemos nunca lo que pasará a la derecha del gráfico. Pero si hemos realizado un buen testeo y nos hemos mantenido lejos muy lejos de la sobre optimización un SQN mayor que 3 es una buena noticia sin duda.
Objetivos entonces considerando la importancia del SQN:
1. Aumentar en lo posible en BMO
2. Disminuir lo máximo posible la desviación estándar
3. Aumentar el número de operaciones
4. Conseguir los tres puntos anteriores.
El SQN incluye los tres datos para mí más importantes de un sistema el BMO (que es la madre del cordero especialmente si estamos ante un sistema con alta cadencia operativa) la desviación estándar, que nos dice cómo de estables o inestables son los trades del sistema lo que se reflejará en la equity y el nº de trades que nos dice cómo de activo es nuestro sistema.
Por esta semana ya no me extiendo más. El objetivo que pretendo es dar píldoras que en poco tiempo se sean y que aporten valor al trading del lector, espero conseguirlo.
Si estáis interesados en contactar conmigo podéis hacerlo por Linkedin o por el correo Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.. Agradeceré mucho el feedback.
Hasta la semana que viene. Buen trading
Leer más ...
- Domingo, 25 Septiembre 2016
"Core" de un sistema.
Hoy hablaremos de como concluir que una idea de trading es realmente potente o no. El “core” o núcleo del sistema, seguramente sea la parte más importante en la elaboración de un sistema automático de trading. No podemos partir de una idea mediocre y esperar tener una “máquina de hacer dinero” y que además nos dure mucho tiempo funcionando. No es tan difícil partir de una idea mediocre y añadiendo los suficientes filtros conseguir una curva aparentemente “bonita”. La idea base del sistema deberá ser ganadora por sí misma, sin ningún filtro. Tener esto claro es importante, si recordáis el primer artículo dije que no hay sistema que dé más beneficio que el sentido común. Pues considero que la idea expuesta en este párrafo está llena de sentido común.
¿De dónde extraemos esta idea base o core?
De las horas de vuelo en el mercado y porqué no, también de otros traders y autores de referencia (aquí que cada uno se fie de quien considere oportuno). Aunque se tenga ya cierta experiencia en el mercado, siempre hay que ser humilde y nunca pensar que todo lo sabes, porque no es así, en cualquier caso siempre esté “el señor mercado” para recordarte esto de vez en cuando.
Cuando tengamos una idea que creamos que puede tener una ventaja en el mercado que nos reportará unos beneficios la llevaremos a código de programación (hay diversos lenguajes de programación, C#, JAVA, Easylenguage…). Abajo se añade un ejemplo de código del lenguaje con el que yo trabajo. Después se añadirán un stop y una salida por beneficios lo más sencillos posibles, evidentemente que tengan sentido.
En programación de sistemas nos encontramos dos conceptos importantes, el primero es el de variable, que por ejemplo será el valor del indicador MACD en un momento del histórico y que como su propio nombre indica cambiará con el movimiento del precio. El segundo concepto es el de parámetro que siguiendo con el ejemplo del MACD será el periodo del mismo. Serán los parámetros los que podamos optimizar, pero una vez que hayamos elegido uno, esté no cambia con el movimiento del precio. El objetivo de la optimización deberá ser buscar robutez y no el máximo beneficio, es decir, no escorger una combinación de parámetros que nos dé el máximo beneficio en la optimización pero que esté en una zona muy inestable. Claro si se dan ambas cosas pues genial.
Ya tenemos la idea de trading ahora añadimos dos salidas una por beneficio (TP) y otra por pérdidas (Stop loss) al core del sistema. Debemos añadir tanto a la variable con la trabajemos como a las salidas sus correspondientes parámetros. Por ejemplo, MACD (periodo), TP (npuntos), Stop(mpuntos). En este caso MACD será variable, TP y Stop son funciones (otro concepto en programación que ya hablaremos de él) y periodo, npuntos y mpuntos son parámetros. A estos últimos deberemos pasar la primera optimización buscando la mejor combinación y sobre todo que nos muestre una gráfica estable y robusta. Insisto en que este momento es crítico en el desarrollo de un sistema de trading.
Como se aprecia en la imagen en 3D, la gráfica presenta estabilidad en gran parte de la misma lo que nos hace pensar de que estamos en el buen camino. Hay una gran combinación de parámetros en los que el sistema se comporta de manera estable. Buena noticia. (Es sólo un ejemplo de cómo tiene que aparecer una gráfica de optimización). A contiuación se pruede ver una gráfica en la que la robustez brilla por su ausencia.
Si miramos la imagen se puede ver la inestabilidad. Esto no son buenas noticias porque el sistema no sería previsible y podría romperse con facilidad por tanto si estamos trabajando en el core del sistema y tenemos una gráfica como ésta yo la descartaría y a otra cosa.
Hay plataformas que te dan estas gráficas directamente pero también se pueden crear en Excel con facilidad, eso sí requiere un poco de tiempo, aunque cuando se le coge “el tranquillo” no tanto. En próximos artículos explicaré como crear estos gráficos 3D en Excel, para los que no tengan una plataforma que les de esta opción.
Me despido por esta semana con los puntos que debe tener una idea base de un sistema para que se pueda considerar robusta por sí misma.
1. Debe ser ganadora por sí misma. Nada de filtros en este punto.
2. Debe comportarse de manera similar en activos parecidos cambiando poco o nada en los parámetros.
3. Debe ganar en timefrimes parecidos.
Quiero dar las gracias a los lectores porque me hizo saber el responsable de la web en Kostarof que los artículos están teniendo una buena acogida. Si dejáis comentarios considero que será bueno para todos.
Un saludo.
Leer más ...