Únete hoy
Indicadores/probuilder · probacktest · proorder · proscreener

R2

R2 en ProBuilder devuelve el coeficiente R-cuadrado de una regresión lineal sobre N bars, una medida de la fuerza de la tendencia de 0 a 1. Sintaxis, fórmula, ejemplos resueltos.

Sintaxis

probuilder
R2[N](price)

Parámetros

NombreTipoPor defectoDescripción
NenteroningunoNúmero de bars en la ventana de regresión. Los valores habituales son de 14 a 30. Las ventanas cortas reaccionan más rápido pero señalan muchas tendencias falsas.
pricefuente de preciocloseLa serie a la que se ajusta la regresión. Normalmente close, también acepta open, high, low, o una variable personalizada.

Fórmula

código
R2 = 1 - (SSres / SStot)

where SSres = sum of squared residuals from the regression line
      SStot = sum of squared deviations of price from its mean

R-Squared es el coeficiente de determinación de la recta de mínimos cuadrados ajustada a las últimas N valores de price. Es igual a la correlación al cuadrado entre precio y tiempo en la ventana, por lo que está acotado entre 0 y 1.

Cómo funciona

En cada bar, ProBuilder ajusta una línea recta a las últimas N puntos de precio y mide qué parte de la variación del precio explica esa recta. Si los puntos quedan casi exactamente sobre la recta, los residuos son mínimos y R2 se acerca a 1. Si el precio vaga aleatoriamente en torno a su media, la recta explica poco y R2 se acerca a 0.

R2 es ciego a la dirección. Una tendencia alcista perfecta y una tendencia bajista perfecta devuelven ambas valores cercanos a 1, por lo que R2 indica cuán tendencial es el mercado, no en qué dirección lo hace. Para la dirección, combínalo con LinearRegressionSlope o comparar consecutivos LinearRegression valores, como en el primer ejemplo.

Una regla general habitual considera las lecturas por encima de aproximadamente 0.4 a 0.6, según N, como tendencias estadísticamente significativas y las lecturas inferiores como ruido. Como el R2 se calcula sobre una ventana móvil, cae rápidamente cuando una tendencia limpia entra en consolidación, lo que lo hace útil como filtro de régimen que activa y desactiva la lógica seguidora de tendencia.

Ejemplos

Ejemplo 1, Fuerza de la tendencia con detección de dirección (Indicador)

probuilder
i1 = R2[20](close)
LR1 = linearregression[20](close)
LR2 = linearregression[20](close[1])

// A significant fit plus a falling regression line means a bearish trend
if(i1 > 0.4 AND LR1 < LR2) THEN
  bullish = 0
  bearish = -1
ELSIF(i1 > 0.4 AND LR1 > LR2) THEN
  bullish = 1
  bearish = 0
ELSE
  bullish = 0
  bearish = 0
ENDIF

RETURN bullish, bearish

El R2 aporta la prueba de fuerza y el cambio en la línea de regresión aporta la dirección. Ambas salidas se mantienen en 0 cuando el ajuste es demasiado débil para fiarse de él, filtrando los periodos laterales.

Ejemplo 2, Filtro de régimen para un sistema seguidor de tendencia (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

fit   = R2[20](close)
slope = LinearRegressionSlope[20](close)

// Trade only when the market is measurably trending upward
IF NOT LongOnMarket AND fit > 0.6 AND slope > 0 THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

// Exit when the trend quality degrades
IF LongOnMarket AND fit < 0.3 THEN
  SELL AT MARKET
ENDIF

Las entradas requieren tanto un ajuste fuerte como una pendiente positiva. La salida se activa solo por la calidad de la tendencia, cerrando la posición en cuanto el precio deja de comportarse de forma lineal, independientemente de la dirección.

Ejemplo 3, Buscar las tendencias alcistas más ordenadas (ProScreener)

probuilder
fit   = R2[20](close)
slope = LinearRegressionSlope[20](close)
SCREENER[fit > 0.7 AND slope > 0](fit AS "R-Squared")

Lista los instrumentos cuyos últimos 20 cierres se ajustan a una línea recta ascendente con un R-cuadrado superior a 0.7, ordenados por la columna del ajuste.

Interpretación

Rango de R2Lectura
0.7 a 1.0Tendencia lineal fuerte. El precio sigue de cerca su línea de regresión.
0.4 a 0.7Tendencia moderada. Existe sesgo direccional pero con un ruido significativo.
0.0 a 0.4Tendencia débil o inexistente. Predomina el comportamiento de mean reversion.

Los umbrales exactos dependen de N. Las ventanas más cortas producen valores de R2 más altos por azar, así que una lectura de 0.7 sobre 10 bars es mucho menos significativa que 0.7 sobre 50 bars. El R2 se lee mejor como medidor de régimen: si cruza un umbral al alza sugiere que la lógica de tendencia debería estar activa; si lo cruza a la baja, sugiere lógica de rango.

Errores y trampas habituales

  • Sin información de dirección. Un R2 cercano a 1 se da tanto en tendencias alcistas fuertes como en tendencias bajistas fuertes. Operar long basándose solo en un R2 alto compra en pleno desplome. Combínalo siempre con una comparación de pendiente o de precio.
  • Las ventanas cortas inflan la lectura. Unos pocos puntos se ajustan razonablemente bien a una línea, por lo que R2[5] muestra con regularidad valores altos en puro ruido. Usa ventanas más largas o eleva el umbral cuando N es pequeño.
  • Retardo en los puntos de giro. El R2 se mantiene elevado durante varias bars después de que termine una tendencia porque la ventana todavía contiene la tendencia antigua. Espera que las señales de régimen lleguen tarde por diseño.
  • Salida acotada, expectativas sin acotar. El valor nunca sale del rango de 0 a 1. Condiciones como R2[20](close) > 5 nunca pueden ser ciertas y desactivan en silencio la lógica que depende de ellas.
  • LinearRegression, valor de la propia línea de regresión ajustada.
  • LinearRegressionSlope, pendiente de la línea de regresión, aporta la dirección.
  • STD, desviación típica, la medida de dispersión que hay detrás de SStot.
  • STE, error típico de la estimación de la regresión.
  • TimeSeriesAverage, media móvil construida a partir de los extremos de la regresión.
  • EndPointAverage, suavizado relacionado basado en los extremos.
  • ADX, medidor alternativo de la fuerza de la tendencia basado en el movimiento direccional.
  • Average, media móvil simple, a menudo combinada como filtro de tendencia de referencia.