Ejemplo público de research — demostración interna
Estrategia de estructura temporal de volatilidad
Un ejemplo transparente de asignación sobre SPY que combina un filtro de estructura temporal de VIX con lag, un objetivo de volatilidad realizada, límites de apalancamiento y costes explícitos de turnover.
Esto no es un caso de estudio de cliente. Es una estrategia deliberadamente simple, construida internamente, para mostrar cómo se puede documentar y revisar una estrategia cuantitativa de forma transparente — no es evidencia de un sistema de trading validado o rentable.
Ver el repositorio en GitHub (se abre en una pestaña nueva)Resumen de la estrategia
La estrategia asigna a SPY utilizando otros dos instrumentos públicos como inputs: el índice VIX y el índice VIX3M.
Mantiene SPY solo cuando el ratio de estructura temporal VIX3M/VIX con lag está por encima de 1,0 — un filtro de régimen simple para condiciones de volatilidad más tranquilas.
Cuando el filtro de régimen está activo, la exposición se dimensiona para un objetivo de volatilidad anualizada del 10%, utilizando una estimación de volatilidad realizada con una ventana móvil de 20 días de negociación, con un tope máximo de apalancamiento de 2x.
Se aplica un coste lineal simplificado de 1 punto básico por unidad de turnover en cada cambio de exposición.
Convención de timing
La convención causal es explícita y está cubierta por tests unitarios en el repositorio:
- Las dos features de la señal — el ratio VIX3M/VIX y la volatilidad realizada — llevan un lag de una observación de negociación.
- La exposición en la fila t se calcula, por tanto, con información disponible únicamente hasta t-1.
- Esa exposición se aplica al retorno close-to-close de SPY de la fila t.
- La implementación de referencia publicada no aplica ningún desplazamiento adicional de ejecución.
term_structure_lag[t] = (VIX3M / VIX)[t-1]
realized_vol_lag[t] = std(SPY returns, 20 days)[t-1] * sqrt(252)
exposure[t] = 1(term_structure_lag[t] > 1.0)
* min(0.10 / realized_vol_lag[t], 2.0)
strategy_return[t] = exposure[t] * SPY_return[t]
- turnover[t] * 1 bpMétricas del snapshot
Muestra: 2013-02-01 a 2026-07-17 — 3.384 observaciones de negociación alineadas.
Estrategia frente a comprar y mantener SPY
Diagnósticos adicionales
Las métricas son historia descriptiva del snapshot del repositorio, no una promesa de rendimiento futuro.
Gráficos



Qué demuestra este ejemplo
- Las convenciones de timing explícitas importan: indicar exactamente qué información utiliza cada fila de exposición, y cuándo, es lo que hace auditable un backtest.
- El volatility targeting puede reducir la volatilidad realizada y el drawdown histórico frente a un benchmark de comprar y mantener.
- Un menor riesgo no implica automáticamente superar al benchmark — este ejemplo tuvo peor CAGR y retorno total que comprar y mantener SPY durante la muestra.
- Un benchmark claro y comparable evita confundir la reducción de riesgo con alpha.
- El código reproducible, las métricas machine-readable y los datos derivados hacen que un resultado sea inspeccionable, en lugar de pedir confianza.
Reproducibilidad
- Construido y probado con Python 3.12.
- Dependencias de primer nivel fijadas (pinned), listadas en el archivo de requirements del repositorio.
- Un script de análisis independiente reproduce las métricas, el CSV derivado y los tres gráficos con un único comando.
- Las métricas machine-readable se versionan junto con el código, junto con la configuración exacta de la estrategia utilizada.
- El CSV derivado de retornos y exposición alineados se versiona y queda vinculado al archivo de métricas mediante un hash SHA-256, de modo que el snapshot no puede desviarse silenciosamente de las cifras mostradas aquí.
- Tests unitarios con datos sintéticos cubren el timing de las features, los límites de exposición y la contabilidad de costes.
- Un workflow de GitHub Actions ejecuta la suite de tests en cada cambio.
Ver el código fuente en GitHub (se abre en una pestaña nueva)
Limitaciones
- Yahoo Finance es una fuente de datos pública conveniente, no un archivo institucional point-in-time — las observaciones históricas pueden revisarse.
- VIX y VIX3M son indicadores de régimen; la estrategia no opera directamente productos sobre VIX.
- El backtest no modela spreads bid/ask, market impact, impuestos, financiación, restricciones de borrow ni ejecución intradía.
- El modelo de costes es un coste lineal simplificado por unidad de turnover.
- Los parámetros se eligieron con fines demostrativos y no se presentan como universalmente óptimos.
- Este es un ejemplo histórico, no asesoramiento de inversión ni una previsión.
Strateva