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

  1. Define umbrales: bajo < 38, alto > 61 (ejemplo).
  2. Si CHOP está bajo, aplica seguimiento de tendencia.
  3. 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

  1. Espera CHOP alto sostenido (compresión).
  2. Actúa cuando CHOP gire a la baja y el precio rompa el rango.
  3. 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

  1. Aumenta tamaño en entornos tendenciales (CHOP bajo).
  2. Reduce riesgo cuando CHOP sube y el mercado se aplana.
  3. 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»)

 

Si quieres dar un paso más en el trading, y quieres darnos sugerencias estamos abiertos a comentarios e ideas constructivas,

CONTACTA CON NOSOTROS Y CREEMOS COMUNIDAD

IR A NUESTRO CANAL DE YOUTUBE

 

IMPORTANTE:

En ningún momento queremos que lo reflejado en esta web, se considere como recomendaciones.

 

El objetivo es mostrar la veracidad de las estrategias desde un punto de vista técnico de análisis de los resultados arrojados por los algoritmos de trading, estudiando los años pasados que pueden coincidir o no con los futuros.