Choppiness Index (CHOP): qué es y cómo usarlo en el trading
Resumen rápido
El Choppiness Index (CHOP) mide si el mercado está en rango o en tendencia. Además, comprime esa lectura en una escala fija. Por lo tanto, ayuda a decidir cuándo priorizar estrategias de reversión o de seguimiento.
En consecuencia, valores altos sugieren “mercado picado” y condiciones laterales. Por otro lado, valores bajos indican direccionalidad y posible impulso. Asimismo, combinar CHOP con soportes, resistencias y volumen mejora la fiabilidad.
¿Qué es el Choppiness Index?
CHOP es un oscilador de volatilidad direccional. Así, no predice hacia dónde irá el precio; en cambio, clasifica el estado actual: choppy versus tendencial. De hecho, su objetivo es gestionar el contexto, no el gatillo de entrada.
Por lo general, se representa en un panel aparte. Además, incluye umbrales que separan compresión de direccionalidad. Finalmente, su lectura facilita elegir la táctica adecuada para cada entorno.
¿Cómo se calcula el CHOP?
El cálculo usa el rango verdadero (ATR) acumulado y el rango máximo-mínimo del periodo. Después, normaliza con logaritmos para crear una escala acotada. Finalmente, transforma el resultado a porcentaje.
Fórmula básica (esquema)
n = ventana de cálculo ATR_sum = suma(ATR, n) Range = Máximo(n) - Mínimo(n) CHOP = 100 * [log10(ATR_sum / Range)] / log10(n)
En consecuencia, si el precio oscila sin avanzar, el ATR acumulado es grande frente al rango neto y el CHOP sube. Sin embargo, si el precio progresa direccionalmente, el rango neto crece y el CHOP cae.
Interpretación práctica
CHOP alto (mercado en rango)
Lecturas elevadas indican consolidación. Por lo tanto, conviene priorizar estrategias de reversión a la media. Además, los rompimientos suelen requerir confirmación adicional.
CHOP bajo (mercado en tendencia)
Valores bajos sugieren direccionalidad. En consecuencia, el seguimiento de tendencia gana probabilidad. Asimismo, las entradas en pullback pueden ofrecer mejor relación riesgo/beneficio.
Cruces de umbral
Los umbrales habituales son aproximados (p. ej., 38 y 61). Así, por debajo del nivel inferior se asume tendencia. En cambio, por encima del superior se asume rango. Aun así, ajusta estos niveles al activo.
Ventajas del Choppiness Index
Puntos fuertes
- Separa de forma objetiva rango y tendencia.
- Además, funciona en múltiples marcos temporales.
- Complementa filtros de volatilidad como BBW o ATR.
- Por otro lado, es sencillo de interpretar y automatizar.
Limitaciones del indicador
Retraso y falsos cambios
Como todo indicador suavizado, reacciona con cierto retraso. En consecuencia, los giros rápidos pueden llegar tarde. Asimismo, noticias o gaps extremos pueden distorsionar la señal.
Umbrales no universales
Cada activo tiene su carácter. Por lo tanto, los niveles fijos no siempre se adaptan. Además, conviene calibrar con percentiles históricos y validar fuera de muestra.
Estrategias con CHOP
1) Selección de táctica por régimen
- Define umbrales: bajo < 38, alto > 61 (ejemplo).
- Si CHOP está bajo, aplica seguimiento de tendencia.
- Si CHOP está alto, usa reversión a la media y rangos.
Así alineas la estrategia con el contexto. Además, reduces operaciones impropias del régimen vigente.
2) Breakout filtrado
- Espera CHOP alto sostenido (compresión).
- Actúa cuando CHOP gire a la baja y el precio rompa el rango.
- Confirma con volumen o cierre fuera del nivel clave.
En consecuencia, intentas capturar el inicio del movimiento. Sin embargo, coloca stops lógicos para limitar el riesgo.
3) Gestión de exposición
- Aumenta tamaño en entornos tendenciales (CHOP bajo).
- Reduce riesgo cuando CHOP sube y el mercado se aplana.
- Revisa objetivos según volatilidad y estructura.
Asimismo, integrar el CHOP al plan de tamaño ayuda a estabilizar la curva de capital.
Parámetros y ajustes recomendados
Ventana y suavizado
Un valor común es n = 14. No obstante, marcos rápidos pueden requerir 21 para suavizar. Por otro lado, activos muy tendenciales pueden funcionar mejor con n más corto.
Umbrales por percentiles
Calcula percentiles 20/80 del CHOP histórico. Así obtendrás niveles adaptados. Además, recomputa al cambiar de timeframe o activo.
Configuración rápida en plataformas
Valores de inicio sugeridos
- Ventana: 14 periodos.
- Umbral bajo: 38 (aprox.).
- Umbral alto: 61 (aprox.).
Posteriormente, valida tus niveles con backtests. Asimismo, verifica su estabilidad en muestras distintas.
Gestión del riesgo y buenas prácticas
Plan y disciplina
Define el riesgo por operación antes de entrar. Además, ajusta objetivos a la volatilidad vigente. Finalmente, registra métricas y evita cambios sin evidencia.
Conclusión
El Choppiness Index no indica dirección, pero clasifica el entorno con precisión. Por lo tanto, seleccionar la táctica según CHOP —y combinarla con estructura de precio, volumen y gestión del riesgo— mejora la consistencia operativa.
Código de TradingView ejecutable
//@version=6
indicator(«Choppiness Index (CHOP) — sin ta.sum», overlay=false)
// Inputs
len = input.int(14, «Periodo (n)», minval=2)
asHistogram = input.bool(true, «Mostrar como histograma»)
// True Range y suma rodante exacta vía acumuladas
tr = ta.tr(true)
sumTR = na(ta.cum(tr)[len]) ? na : (ta.cum(tr) – ta.cum(tr)[len])
// Rango n-bar
hh = ta.highest(high, len)
ll = ta.lowest(low, len)
rng = hh – ll
// CHOP (una sola línea para evitar errores de sintaxis con ‘? :’)
chop = (na(sumTR) or rng == 0) ? na : 100 * (math.log10(sumTR / rng) / math.log10(len))
// Guías
hline(50, «50», color=color.new(color.gray, 60))
hline(61.8, «61.8 (rango/chop)», color=color.new(color.red, 60))
hline(38.2, «38.2 (tendencia)», color=color.new(color.teal, 60))
// Plot principal
plot(chop, title=»CHOP»,
color=color.new(color.blue, 0),
style=asHistogram ? plot.style_histogram : plot.style_line,
linewidth=2)
// Alertas opcionales
alertcondition(ta.crossover(chop, 38.2), «CHOP cruza ↑ 38.2», «CHOP sube por encima de 38.2»)
alertcondition(ta.crossunder(chop, 38.2), «CHOP cruza ↓ 38.2», «CHOP cae por debajo de 38.2»)
alertcondition(ta.crossover(chop, 61.8), «CHOP cruza ↑ 61.8», «CHOP entra en zona de rango»)
alertcondition(ta.crossunder(chop, 61.8), «CHOP cruza ↓ 61.8», «CHOP sale de zona de rango»)
CONTACTA CON NOSOTROS Y CREEMOS COMUNIDAD
IMPORTANTE:
En ningún momento queremos que lo reflejado en esta web, se considere como recomendaciones.