Bucles, Copy Config y gestión de memoria en Custom Projects

Cómo crear bucles condicionales con Go To Task, usar Copy Config para evitar errores, y gestionar la memoria RAM en flujos grandes de StrategyQuant.

Cómo automatizar la repetición de un flujo con Go To Task, evitar errores de configuración con Copy Config, y no quedarte sin RAM en proyectos grandes.

Dos problemas aparecen en cuanto un Custom Project deja de ser un flujo de tres tareas: la configuración se vuelve difícil de mantener coherente entre tareas, y la memoria del equipo empieza a resentirse cuando hay miles de estrategias circulando entre databanks. Este artículo cubre ambos, junto con la pieza que los conecta a los dos: los bucles condicionales.

Tabla de contenidos

Copy Config: la forma correcta de configurar una tarea nueva

Cuando añades una tarea nueva — un Retest o un Optimize, por ejemplo — su configuración llega vacía por defecto: símbolo, rango temporal, opciones de trading, money management, todo a cero. Tienes dos formas de rellenarla.

La primera es ajustar manualmente cada parámetro en las pestañas de Data, Trading Options, Building Blocks y Robustness Tests. Funciona, pero en cuanto tienes varias tareas que deben compartir exactamente la misma configuración de datos y de trading, es fácil que algo se te escape.

IMPORTANTE

Configurar manualmente varias tareas aumenta el riesgo de inconsistencias. Si el símbolo, el rango temporal o las opciones de trading difieren entre tareas sin que te des cuenta, los resultados dejan de ser comparables entre sí — y puede que no lo notes hasta que ya has invertido horas de cómputo.

La segunda forma, y la recomendada, es el botón Copy Config from Task: copia de un solo clic toda la configuración de otra tarea — símbolo y rango temporal de datos, opciones de trading, gestión monetaria. A partir de ahí, solo modificas lo específico de la nueva tarea. Por ejemplo, en un Retest puedes mantener toda la configuración del Builder y cambiar únicamente el método de robustez de Backtest Preciso a Monte Carlo.

CLAVE PRÁCTICA

Usa Copy Config como punto de partida por defecto en cada tarea nueva, y ajusta solo lo que cambia. Es el hábito individual que más tiempo ahorra y más errores evita en todo el sistema de Custom Projects.

Clonar pruebas de robustez

Dentro de una misma tarea Retest puedes añadir varias pruebas de robustez distintas. La forma rápida de hacerlo: configura la primera (por ejemplo, un Monte Carlo de un tipo concreto), usa el botón de clonar debajo para duplicarla, cambia el nombre al clon y ajusta solo los parámetros que difieren, y crea un nuevo databank para almacenar los resultados de esta prueba adicional. Así construyes una batería de pruebas que comparten la misma configuración base de datos y trading, garantizando que los resultados son comparables entre ellas.

Bucles con Go To Task

La tarea Go To Task funciona con lógica condicional simple: si la condición que defines es verdadera, el flujo salta de vuelta a la tarea que indiques; si es falsa, continúa hacia adelante con normalidad.

Condición disponibleDescripción
Nº de resultados en un databankCompara cuántas estrategias hay almacenadas en un databank concreto
Nº de ciclos evaluadosTotal de ciclos procesados desde el inicio del proyecto
Nº de ciclos del proyectoCiclos completados en la ejecución actual
Nº de ciclos actualesVueltas dadas por el bucle en curso
Tiempo de ejecuciónTiempo transcurrido desde que arrancó el proyecto

Un ejemplo real: el objetivo es no pasar a la fase de portfolio hasta tener al menos 500 estrategias en el databank de Optimización. La condición sería "número de resultados en el databank Optimización < 500"; si es TRUE, el flujo vuelve a la tarea 1 (el Builder); si es FALSE, continúa. El resultado es que el ciclo completo se repite tantas veces como haga falta hasta acumular las 500 estrategias, sin que tengas que relanzar nada a mano.

IMPORTANTE

Al crear un bucle, tienes que limpiar los databanks intermedios antes de volver al Builder. Si no lo haces, el Builder puede detectar que el databank de salida ya tiene contenido y no generar estrategias nuevas, o peor: acabas mezclando estrategias de distintas vueltas del bucle sin darte cuenta.

Clear Databank: la pieza que hace posible el bucle

Justo antes del salto de Go To Task, coloca una tarea Clear Databank que vacíe todos los databanks intermedios — pero nunca el databank que estás usando como condición del bucle. Si ese databank también se vaciara, la condición nunca se cumpliría y el bucle no terminaría jamás.

Databank¿Limpiar en cada ciclo?Motivo
Resultado del BuilderPara que el Builder pueda generar estrategias nuevas en el siguiente ciclo
Databanks intermedios (retesteo, Monte Carlo, etc.)Para que cada retest procese solo las estrategias del ciclo nuevo
Databank acumulador (el que evalúa Go To Task)NoEs el que se está llenando; si lo vacías, la condición no se cumplirá nunca

Gestión de datos y memoria en flujos grandes

Un flujo que procesa miles de estrategias con varias pruebas de robustez encadenadas puede consumir decenas de gigabytes de RAM si no lo gestionas con cuidado. Algunas prácticas que marcan la diferencia:

  • Crea un databank separado para cada etapa del embudo, con nomenclatura consistente — por ejemplo, DV_01_Builder, DV_02_OOS, DV_03_MC_Trades, DV_04_MC_Retest, DV_05_Final.
  • Elimina los databanks intermedios (con la tarea Delete Databank, no solo Clear) en cuanto las estrategias hayan avanzado a la siguiente etapa y ya no los necesites.
  • El databank final nunca se elimina: es la salida del flujo.
  • Añade una tarea de exportación justo antes del final para guardar los resultados aunque el flujo se interrumpa a mitad de proceso.

Para trabajar con grandes volúmenes de datos históricos en servidores o discos externos sin duplicar archivos, StrategyQuant admite enlaces simbólicos a nivel de sistema operativo. En Windows, desde una consola con permisos de administrador:

`mklink /D "C:\StrategyQuantX\data" "D:\TusDataHistoricos\sqx_data"`

StrategyQuant seguirá buscando los datos en su ruta habitual, pero en realidad los archivos estarán en tu disco D: o en un servidor NAS — sin duplicación de datos y con mejor rendimiento si usas SSDs dedicados.

ComponenteRecomendación para Custom Projects
RAMMínimo 16 GB; 32-64 GB recomendado para flujos con Monte Carlo Retest masivo
CPUPrioriza el número de núcleos físicos sobre la frecuencia; 8 o más idealmente
AlmacenamientoSSD para la carpeta de datos de StrategyQuant; HDD para copias de seguridad y data histórica bruta
Sistema operativoWindows 10/11 o Windows Server 2019/2022; Linux para servidores headless
VPSPara ejecuciones largas de 48-72 horas, usa un VPS dedicado y conéctate solo para revisar resultados

Preguntas frecuentes (FAQs)

¿Qué pasa si olvido limpiar un databank antes de un bucle?

El comportamiento más habitual es que el Builder se encuentre con un databank de salida que ya tiene contenido y no genere estrategias nuevas, o que las nuevas estrategias se mezclen con las de la vuelta anterior sin que puedas distinguirlas. En la práctica, invalida el bucle.

¿Puedo limitar el número de vueltas de un bucle para que no se quede corriendo indefinidamente?

Sí — puedes combinar la condición principal con un límite de ciclos evaluados o de tiempo de ejecución, de forma que el flujo se detenga aunque no se haya alcanzado el objetivo, y así revisar y ajustar los filtros en vez de dejarlo corriendo sin fin.

¿Por qué usar Copy Config en vez de simplemente recordar los valores?

Porque cuantos más campos hay que igualar entre tareas — símbolo, rango de fechas, spread, opciones de trading, money management — más fácil es que se te escape uno. Copy Config elimina ese riesgo de raíz, copiando todo de una vez.

¿Es necesario un VPS para correr Custom Projects grandes?

No es obligatorio, pero para ejecuciones de 48-72 horas resulta mucho más práctico: el flujo sigue corriendo aunque apagues tu equipo, y solo te conectas para revisar resultados o recibir la notificación final.

Sigue leyendo el contenido de esta serie

WikiSQX - Custom Projects > Bucles, Copy Config y gestión de memoria

Buscar en la wikiSQX:

Seguir a Quantified Models:

Base de conocimiento:

Índice de esta entrada: