Como ya saben algunos lectores de X-Trader.net, uno de mis entretenimientos favóritos es el análisis de software generador de estrategias. No en vano, la idea de tener un mono que tira 100.000 dardos en busca de la estrategia perfecta es realmente atractiva, aunque como todo no está exento de riesgos, pues normalmente nos toparemos con el overfitting y la generación de estrategias espurias.
Sin embargo, debo reconocer que el software que analizamos hoy, Build Alpha, me ha dejado realmente impresionado por cuanto no hace tanto énfasis en la generación de reglas aleatorias (aquí no tenemos al mono lanzando dardos) como en el análisis de la robustez de las estrategias obtenidas (que al fin y al cabo es lo que puede garantizar la supervivencia de las mismas).
¿Qué es Build Alpha?
Build Alpha es un generador de estrategias de trading desarrollado por David Bergstrom, un programador experto en trading automático que actualmente trabaja para una firma de trading de alta frecuencia. Así que el punto de partida es bueno: software diseñado por un trader para traders :P. Además creo que puedo decir que estamos presentando una primicia en X-Trader.net por cuanto solo lleva ¡6 meses en el mercado!
El programa viene ya con multitud de históricos diarios (llegando en algunos casos hasta los años sesenta). En particular incluye datos de futuros sobre índices (S&P 500, Nasdaq 100, Dow Jones, Russell 2000, Nikkei, Dax), tipos de interés (Notas EEUU a 2, 5, 10 y 30 años, Bund), productos agrícolas (maíz, soja, trigo, etc.), commodities (Crude Oil, Natural Gas, Gold, Silver, Copper), divisas y, como novedad reciente, Bitcoin y diferentes ETFs. Por supuesto también es posible importar nuestros propios históricos en el programa como podéis ver en el siguiente pantallazo, donde además también podéis configurar la divisa de la cuenta, el slippage, las comisiones o el número máximo de reglas por estrategia generada.
En Build Alpha tenemos más de 3.500 señales de trading programadas de antemano, incluyendo desde los clásicos indicadores de medias móviles u osciladores como el RSI hasta cosas más sofisticadas como el Kaufman Efficiency Ratio, el exponente de Hurst o incluso el VIX. Por supuesto, es posible agregar nuestras propias reglas e incluso en próximas versiones podremos escribirlas directamente usando un lenguaje similar a EasyLanguage.
Como podéis ver en el pantallazo anterior, también es posible incluir diferentes criterios de salida como salidas por tiempo o número de cierres a favor de la posición aparte del tradicional stop loss y take profit.
Para realizar la selección de estrategias, Build Alpha utiliza las funciones objetivo que se muestran en el desplegable como beneficio total, menor drawdown o ratios como Sharpe o Sortino.
Una vez seleccionadas las que nos interesen, pulsamos en Simulate y el programa procederá a combinarlas generando cientos de miles de estrategias nuevas (cabe destacar aquí que el proceso es extremadamente rápido). Una vez finalizado el proceso nos mostrará los resultados obtenidos en una tabla:
Ahora podemos analizar la equity de cada estrategia haciendo click con el botón derecho sobre cada una de ellas y seleccionando las diferentes opciones (Trades, Breakdown, Seasonality, Randomized OOS) para echar un primer vistazo a los resultados logrados. Visualmente la cosa tiene el siguiente aspecto, similar al de otros paquetes de este tipo:
Por otro lado, si hacemos click en el botón Individual Equity Curve podremos ver el aspecto de nuestra equity y de la evolución del drawdown, comparándolo con otras estrategias y contra un buy & hold:
Si pinchamos en el botón Monte Carlo Equity Bands veremos el gráfico de la equity con unas líneas rojas a la derecha que representan una proyección del comportamiento futuro de la estrategia simulado por Monte Carlo. Esta característica me ha parecido muy interesante ya que nos permite anticipar lo que podemos esperar de la estrategia en las próximas operaciones y no llevarnos sorpresas debidas a expectativas irreales.
Por supuesto, tanto para esta simulación como para otras disponibles en el programa es posible configurar a fondo todos los parámetros pinchando en el botón Tests Settings que aparece en la esquina inferior derecha obteniendo acceso a la siguiente ventana:
También podemos comparar la distribución de diferentes parámetros de la estrategia frente a los de una aleatoria sin más que pinchar en el botón Vs. Random, obteniendo el siguiente resultado:
Dentro de la comparativa anterior tenéis un interesante ratio llamado Edge Ratio o ERatio que nos permite medir cuánto una operación va a nuestro favor vs. cuánto nos va en contra durante una operación. Sobre el Edge Ratio, cuyo cálculo se basa en el MAE y el MFE, podéis leer en detalle en https://www.buildalpha.com/eratio/.
Análisis de Robustez de las Estrategias
Por supuesto, en un programa como este no podía falta un potente módulo de simulaciones de Monte Carlo para analizar los resultados de la estrategia obtenida. Este apartado cuenta con opciones poco habituales en este tipo de programas como variar la duración de las operaciones en la simulación.
El módulo de Monte Carlo también permite analizar el comportamiento del drawdown, generando un histograma del mismo a partir de las equities generadas en la simulación. La cruz roja que véis en el gráfico nos indica dónde se produjeron el 95% de los drawdowns. Este análisis es realmente interesante por cuanto nos va a permitir establecer el tamaño de nuestra cuenta a fin de poder mantener el riesgo controlado.
Otra posibilidad que no puede faltar en este tipo de programas es la de implementar meta sistemas sobre la equity de la estrategia. En el caso de Build Alpha podemos analizar por ejemplo si operar cuando la equity cae por debajo o rompe por encima de su media móvil de X períodos, o si activar el sistema solo cuando las dos o tres últimas operaciones han sido ganadoras o perdedoras nos permite mejorar los resultados.
Dentro del apartado de Robustness Testing, aparte de los metasistemas también nos encontramos con otras pruebas como los tests de slippage (recordad configurar previamente esta variable en el programa antes de generar las estrategias) y de liquidez (con este test podemos variar la calidad de la ejecución de las estrategias) pero sin duda el que más me ha gustado es el Delayed Test que nos permite simular entradas y salidas retardadas, con el fin de analizar la sensibilidad de la estrategia al timing de entrada y salida. Y es que como bien apunta el autor, debemos asegurarnos de que el criterio de salida se sume a la ventaja detectada pero que no sea nuestra única ventaja.
¿Aún no tenéis suficiente? Pues hay más: Build Alpha cuenta con un módulo propietario de stress testing denominado Variance Testing. Se trata de un simulador hacia delante que nos permite saber cómo funcionará una estrategia N operaciones hacia adelante basándose en la distribución de las operaciones previas del backtest (digamos que es una versión más avanzada de las rayitas rojas que aparecían en el gráfico de la equity individual que veíamos anteriormente). Con esto podemos establecer si el backtest realizado es poco realista o si realmente la distribución de resultados es más o menos estable. En el siguiente pantallazo tenéis una muestra de diferentes simulaciones a futuro para la estrategia indicada.
Otra característica que me ha llamado la atención es el denominado Noise Test mediante el que es posible añadir o restar ruido (en la cantidad que el usuario desee) a la serie original de datos sobre la que se ha generado la estrategia con el fin de ver la robustez de la misma frente a pequeñas variaciones del precio. Una vez configurado, el programa repite las operaciones de la estrategia sobre 1.000 series de precios generadas con ruido variable obteniendo un gráfico como el siguiente:
Creación de Portfolios
Una vez tenemos varias estrategias que nos funcionan, podemos construir portfolios con varias de ellas y realizar la mayor parte de los tests que hemos visto para el conjunto del portfolio:
Asimismo es posible analizar las correlaciones entre las estrategias del portfolio usando la Correlation Matrix:
Y para remate, aprovechando la Teoría Moderna de Carteras (ya sabéis, la de Markowitz ;)) podemos generar la curva de volatilidad vs. esperanza esperadas para calcular cuál es el portfolio de mínima varianza, asignando los pesos óptimos a cada una de las estrategias:
Y si ya tenemos la estrategia o portfolio de estrategias definitivos, ¿podemos exportarlo a otra plataforma para trabajar con ello? ¡Por supuesto! Build Alpha permite exportar nuestras estrategias, incluidos los portfolios, a TradeStation, MultiCharts, NinjaTrader, MetaTrader, y hasta Python for Quantopian (aunque solo para ETFs). ¿Quién da más?
Conclusión
Tras probar Build Alpha, creo que es un software excelente con unas funcionalidades brillantes para cualquiera que quiera generar potentes sistemas de trading a la par que robustos de forma automatizada. Para ello cuenta, como hemos visto, con multitud de tests incorporados que permiten validar adecuadamente las estrategias. Adicionalmente la creación y evaluación de portfolios de estrategias y la exportación a código para las principales plataformas de trading redondean un producto al que, si se le puede poner alguna pega, sería precisamente lo que considero que es su virtud: no poder crear reglas de trading aleatorias, al estilo de StrategyQuant u otros programas similares.
Ah se me olvidaba: si os interesa comprar el programa podéis contactar directamente con su autor desde el siguiente formulario de contacto: https://www.buildalpha.com/contact/. Si en el mensaje indicáis que vais de parte de Alberto de X-Trader.net os hará un importante descuento ;).
Saludos,
X-Trader
PD: Mi agradecimiento desde aquí a David Bergstrom por permitirme acceder a su ordenador durante unas horas y probar de primera mano el software para poder sacar los pantallazos que véis en este artículo 😉