CommunityProgramación y desarrollogithub.com

milesdeutscher/garch-method

Pronóstico de volatilidad y dimensionamiento de posiciones mediante GARCH(1,1) con walk-forward. Úsalo cuando el usuario pregunte sobre pronósticos de volatilidad, dimensionamiento, 'cuánto debería poner', targeting de volatilidad, control de riesgo, regímenes de tormenta/calma, o quiera probar si el dimensionamiento basado en volatilidad mejora una estrategia existente. Funciona con cualquier ticker (yfinance) o cualquier CSV con columnas de fecha + cierre. Responde 'cuánto' — nunca 'hacia dónde'.

¿Qué es garch-method?

Este skill proporciona un método completo de pronóstico de volatilidad y dimensionamiento de posiciones basado en el modelo GARCH(1,1) con walk-forward, evitando cualquier sesgo de mirar hacia adelante. Está diseñado para responder la pregunta 'cuánto' — nunca 'hacia dónde' —, siendo ideal para traders e inversores que necesitan ajustar el tamaño de sus posiciones según la volatilidad esperada. Funciona con cualquier ticker a través de yfinance o con archivos CSV que contengan columnas de fecha y precio de cierre. Ofrece tres herramientas principales: `garch_forecast.py` para pronosticar la volatilidad, `vol_target.py` para calcular el multiplicador de tamaño de posición basado en un nivel de volatilidad objetivo, y `compare.py` para comparar de forma honesta el rendimiento de una estrategia con y sin dimensionamiento por volatilidad. El skill se integra fácilmente con otros skills que predicen la dirección del mercado (como clasificadores de régimen alcista/bajista), ya que su output (multiplicador de tamaño) se puede multiplicar directamente con la señal de dirección. Es compatible con Claude Code, Cursor, Codex, y cualquier agente que pueda ejecutar scripts de Python con `uv run`. Los resultados incluyen un contrato JSON claro que reporta el pronóstico de volatilidad, el percentil, el régimen (calma/normal/tormenta) y el multiplicador de posición, permitiendo un uso directo en sistemas de trading automatizados o como capa de control de riesgo.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/milesdeutscher/garchmethod/tree/main/skills/garch

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Método GARCH — pronóstico de volatilidad + dimensionamiento de posiciones

Este skill responde la pregunta que el minorista nunca hace y todo fondo hace a diario: ¿cuánto?

NO predice la dirección. GARCH pronostica la magnitud de los movimientos — cuán violenta será probablemente la jornada de mañana, no hacia dónde irá. Di esto al usuario cada vez que presentes resultados.

Las tres herramientas

Todos los scripts viven en scripts/ y se ejecutan con uv run (las dependencias se resuelven automáticamente mediante metadatos en línea — no es necesario pip-install).

1. garch_forecast.py — el pronóstico

GARCH(1,1) con walk-forward, sin mirar hacia adelante (los parámetros se reestiman cada 21 días en una ventana expansiva; la recursión avanza entre reajustes usando solo datos pasados).

uv run scripts/garch_forecast.py --csv prices.csv --json
uv run scripts/garch_forecast.py --ticker BTC-USD --json

Salida: pronóstico de volatilidad a un día (diaria + anualizada), percentil de volatilidad vs el año anterior, régimen (calma / normal / tormenta).

2. vol_target.py — el tamaño

La idea completa: tamaño = volatilidad_objetivo / volatilidad_pronosticada, limitada a [0.25x, 2.0x].

uv run scripts/vol_target.py --csv prices.csv --target-vol 15 --json

Salida: multiplicador de tamaño de posición. "Ejecuta 0.6x tu línea base" — esa es la respuesta.

3. compare.py — la prueba honesta

Ejecuta las mismas señales dos veces — tamaño fijo vs con targeting de volatilidad — y muestra ambas curvas de capital más estadísticas lado a lado. Incluye una demostración con crossover EMA 9/21; acepta cualquier estrategia mediante --signals mine.csv (columnas: fecha, señal en {-1,0,1}).

uv run scripts/compare.py --csv prices.csv --target-vol 58 --chart equity.png --json
uv run scripts/compare.py --csv prices.csv --signals mine.csv

Salida: CAGR, volatilidad anualizada, Sharpe, drawdown máximo, peor mes, capital final — ambas versiones — más el gráfico de curva de capital con regímenes de tormenta sombreados.

Contrato JSON

Todos los scripts soportan --json. Forma básica de salida:

{
  "as_of": "2026-05-23",
  "forecast_vol_annualized_pct": 41.2,
  "vol_percentile_1y": 78.0,
  "regime": "storm",
  "position_size_multiplier": 0.6,
  "note": "GARCH forecasts magnitude (volatility), not direction."
}

Tres patrones de composición

A. Capa de dimensionamiento — acóplalo a cualquier estrategia existente. Tu estrategia decide si; este skill decide cuánto. Toma la señal de la estrategia, multiplícala por position_size_multiplier, listo.

B. Acelerador de riesgo — interruptor de apagado independiente. Si regime == "storm", reduce toda la exposición al multiplicador independientemente de lo que digan tus señales. Funciona con cualquier agente que gestione posiciones.

C. Arnés de comparación — antes de confiar en cualquier estrategia, ejecútala a través de compare.py y verifica si el targeting de volatilidad mejora su Sharpe / drawdown. Si el dimensionamiento no ayuda, el borde de la estrategia puede ser demasiado débil para sobrevivir en condiciones reales.

Se compone limpiamente con skills de régimen direccional (por ejemplo, clasificadores de toro/oso estilo Markov): su output responde hacia dónde, este responde cuánto. Multiplica los dos.

Valores predeterminados y convenciones

  • Cripto: --periods-per-year 365 (predeterminado). Acciones: --periods-per-year 252.
  • Volatilidad objetivo: 15% es un valor predeterminado conservador razonable. Para una comparación ajustada por riesgo contra una estrategia sin apalancamiento, establece el objetivo aproximadamente igual a la volatilidad realizada de la propia estrategia.
  • Datos: ticker de yfinance (necesita internet) o cualquier CSV con columnas de fecha + cierre — se inserta en cualquier pipeline que el usuario ya ejecute.
  • Historial mínimo: ~510 observaciones diarias antes del primer pronóstico.

Reglas de honestidad (no negociables)

  1. Nunca presentes la salida de GARCH como una llamada direccional.
  2. Nunca ocultes el drawdown o los números del peor mes al informar una comparación.
  3. Si el targeting de volatilidad NO mejora la estrategia del usuario, dilo claramente — ese resultado es igualmente valioso.

Skills relacionados