AlgoWizard: Templates y optimización de estrategias en el Builder

Cómo convertir una estrategia de AlgoWizard en un template, marcar parámetros como Random Value o con rango de optimización, y cargarlo en el Builder para que el algoritmo genético refine solo lo que aún puede mejorar.

El template es el punto donde AlgoWizard y el Builder genético dejan de ser dos herramientas separadas y empiezan a trabajar juntas: se fija la lógica que ya funciona y se deja que el motor de búsqueda optimice exactamente lo que todavía puede mejorar.

Tabla de contenidos

Qué es un template en AlgoWizard

Un template es una estrategia de AlgoWizard configurada en un modo especial que actúa como esqueleto. En lugar de tener valores fijos para todos sus parámetros, algunos se marcan como aleatorios u optimizables. Cuando ese template se carga en el Builder, el motor de búsqueda no genera estrategias desde cero: parte de la estructura predefinida y busca automáticamente los mejores valores para los parámetros marcados como variables.

Búsqueda normal en BuilderBúsqueda con Template
Genera estrategias desde cero, sin estructura previa.Parte de un esqueleto definido por el usuario.
Explora todo el espacio de posibilidades.Explora solo las variaciones permitidas dentro de la plantilla.
Más creativa pero menos dirigida.Más eficiente y orientada a refinar una estrategia concreta.
Las estrategias resultantes son muy diversas entre sí.Las estrategias resultantes comparten el mismo esqueleto (alta correlación).

Activar el modo template

El modo template se activa dentro de AlgoWizard: se abre la estrategia, se entra en Settings, se accede a la pestaña Advanced y se activa el interruptor correspondiente. Un indicador visual aparece entonces en la parte superior del editor para recordar que se está trabajando en ese modo.

ATENCIÓN

Al activar el modo template, el botón Run Backtest queda deshabilitado. Ya no se pueden ejecutar backtests directamente desde AlgoWizard, porque la estrategia deja de tener valores fijos: algunos parámetros son variables que solo el Builder puede optimizar.

Marcar parámetros como aleatorios u optimizables

En modo template, al hacer clic sobre cualquier parámetro aparece una opción que en modo normal no existe: marcarlo como Random Value o definirle un rango de optimización.

Random Value hace que el Builder busque libremente, entre todas las opciones del desplegable de condiciones, el mejor indicador o condición posible para ese elemento. Para parámetros numéricos o temporales, en lugar de Random Value se puede definir un rango específico haciendo clic en los tres puntos junto al parámetro y configurando un valor mínimo, un valor máximo y un paso.

ElementoConfiguración de ejemplo
Hora inicioDesde las 06:00 hasta las 09:00 en pasos de 1 hora
Hora finDesde las 10:00 hasta las 17:00 en pasos de 1 hora

CLAVE PRÁCTICA

Definir un rango específico en lugar de Random Value limita el espacio de búsqueda a variaciones que tienen sentido. Esto reduce el riesgo de sobreoptimización y hace la búsqueda más rápida y dirigida que dejar el parámetro completamente abierto.

Optimizar parámetros que no tienen opción verde

Algunos parámetros de las órdenes, como el Take Profit o el Stop Loss en pips, no muestran directamente la opción de aleatorización. El truco para resolverlo son las variables intermedias.

PasoAcción
1Crear una variable Double para cada parámetro a optimizar (ej: 'pips_take_profit', 'pips_stop_loss').
2En Cálculos, asignar a cada variable un valor numérico fijo.
3Una vez creada como número, ya aparece la opción verde: definir el rango (ej: TP de 10 a 50 pips en pasos de 2).
4Sustituir el valor directo del TP y SL en la orden por las variables recién creadas.
5Como las variables se optimizan en Cálculos antes de llegar a la orden, esta ya recibe el valor óptimo encontrado.

Guardar y recargar el template

Con todos los parámetros configurados, se guarda desde File > Save Template As, eligiendo la carpeta de destino y anteponiendo, como convención recomendada, el prefijo 'template_' al nombre de la estrategia base.

ATENCIÓN

En versiones anteriores de StrategyQuant existía un bug que corrompía el guardado si se había ejecutado un backtest antes de guardar el template. Por precaución, recarga siempre el template justo después de guardarlo para confirmar que se ha guardado correctamente.

Usar el template en el Builder

Una vez guardado, el template se carga desde el Builder en Formación > Template > Cargar. A partir de ahí se configuran los parámetros habituales del Builder: tipo de búsqueda (genética), condiciones de filtrado, data y rango temporal, y se ajusta la función objetivo en el Ranking antes de pulsar Start.

CLAVE PRÁCTICA

El template prevalece sobre la configuración del Builder en lo que respecta a la estructura de la estrategia. Aunque el Builder tenga configurado un TP y SL global, si el template los tiene marcados como variables, el Builder los optimizará dentro del rango definido en el template.

Parámetro de 'What to Build'Recomendación
Número de condiciones de entradaSi quieres exactamente una condición, fija el rango en 1-1; dejar 1-3 puede añadir hasta 3 filtros.
Tipo de búsquedaGenética, para aprovechar la optimización evolutiva.
DataEl mismo rango temporal usado en la estrategia base del template.

Interpretar los resultados

Una vez generadas las estrategias, conviene abrirlas en AlgoWizard y compararlas con el template original.

Elemento a verificarLo que debería verse
Indicador de nivel de precioEl seleccionado por el Builder: puede ser el original o uno distinto si se marcó como Random Value.
Rango horario del indicadorDentro del rango definido en el template.
Valores de TP y SLDentro de los rangos especificados.
Número de condiciones de entradaCoincide con lo configurado en 'What to Build'.

Si varias estrategias resultantes coinciden en el mismo rango horario o el mismo indicador de filtrado, es una señal de que el Builder ha encontrado un patrón estadísticamente sólido en esos valores, no una casualidad aislada.

Usos recomendados del template

UsoDescripción
Perfilado final de estrategiaAfinar los últimos parámetros de una estrategia que ya funciona pero podría mejorar.
Mejora de entradasBuscar la mejor condición de entrada manteniendo la lógica de salida intacta.
Mejora de salidasBuscar el mejor TP/SL o trailing stop manteniendo la lógica de entrada intacta.
Búsqueda de filtrosIdentificar qué indicador filtra mejor las operaciones poco fiables.

Riesgos y precauciones

ATENCIÓN

En versiones anteriores de StrategyQuant existía un bug que corrompía el guardado si se había ejecutado un backtest antes de guardar el template. Por precaución, recarga siempre el template justo después de guardarlo para confirmar que se ha guardado correctamente.

RiesgoCómo mitigarlo
Alta correlación entre estrategiasTodas comparten el mismo esqueleto; seleccionar varias como si fueran independientes es un error.
Sobreoptimización de parámetrosUsar rangos acotados y con sentido lógico, no rangos de 0 a infinito.
Sesgo de selecciónNo elegir la estrategia con mejor backtest sin validar en Out-of-Sample.
Exceso de parámetros optimizadosOptimizar pocos a la vez; cuantos más simultáneamente, mayor riesgo de falsos positivos.

Preguntas frecuentes (FAQs)

¿Por qué se deshabilita el Run Backtest al activar el modo template?

Porque la estrategia deja de tener valores fijos en los parámetros marcados como variables. Sin un valor concreto no hay nada que backtestear directamente desde AlgoWizard: esa búsqueda de valores es tarea del Builder.

¿Cuándo usar Random Value en lugar de un rango de optimización?

Random Value tiene sentido quiere dejarse abierta la elección entre indicadores o condiciones distintas. Un rango de optimización es preferible para parámetros numéricos o temporales, porque acota la búsqueda a valores con sentido y reduce el riesgo de sobreoptimización.

¿Cómo se optimiza el Take Profit si no aparece la opción verde al hacer clic?

Creando una variable Double intermedia, asignándole el valor numérico en Cálculos y sustituyendo el valor directo de la orden por esa variable. Al ser ya un número gestionado como variable, sí aparece la opción de aleatorización.

¿Las estrategias generadas a partir de un template son diversificables entre sí?

No de forma directa: al compartir el mismo esqueleto, tienden a estar altamente correlacionadas. Seleccionar varias como si fueran estrategias independientes es uno de los errores más frecuentes al trabajar con templates.

Sigue leyendo el contenido de esta serie

WikiSQX - AlgoWizard > Templates y optimización de estrategias en el Builder

Buscar en la wikiSQX:

Seguir a Quantified Models:

Base de conocimiento:

Índice de esta entrada: