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

LinearRegression

LinearRegression en ProBuilder devuelve el valor de una línea de regresión por mínimos cuadrados ajustada a los últimos N bars del precio. Sintaxis, fórmula, ejemplos resueltos.

Sintaxis

probuilder
LinearRegression[N](price)

Parámetros

NombreTipoPor defectoDescripción
NenteroobligatorioNúmero de bars en la ventana de regresión. Las ventanas cortas como 10 se pegan al precio, las ventanas largas como 50 o 100 describen la tendencia general.
pricefuente de preciocloseSerie a la que se ajusta la línea. Normalmente close, pero open, high, low, typicalprice, o una variable personalizada son aceptados.

Fórmula

código
Fit y = a + b*x by least squares over the last N bars,
minimising sum( (price[i] - (a + b*i))^2 )

LinearRegression = value of the fitted line at the current bar

Los coeficientes se recalculan desde cero en cada bar, por lo que la salida traza el punto final móvil de una línea de regresión deslizante.

Cómo funciona

La regresión de mínimos cuadrados encuentra la línea recta que pasa lo más cerca posible de las últimas N puntos de precio. LinearRegression evalúa esa línea en el bar más reciente y devuelve ese único número, no todo el segmento. Bar tras bar, esos puntos finales forman una curva suave que se comporta como una media móvil con bastante menos retardo, porque una línea ajustada extrapola la dirección de la ventana en lugar de promediarla de forma simétrica.

El valor devuelto se interpreta a menudo como el precio de equilibrio de la ventana: donde el precio "debería" estar si la tendencia reciente fuera perfectamente lineal. La diferencia entre el precio real y este valor mide cuánto se ha estirado el mercado respecto a su propia tendencia, que es la base del oscilador del Ejemplo 1.

Las funciones complementarias completan el cuadro. LinearRegressionSlope devuelve el coeficiente b, la dirección y la pendiente de la misma línea ajustada, y R2 indica hasta qué punto la línea se ajusta realmente a los datos.

Ejemplos

Ejemplo 1, Oscilador de regresión lineal (Indicador)

probuilder
// Regression value of the close over the last 10 bars
a = LinearRegression[10](close)

// Current close
b = close

// Oscillator: distance between price and its regression line
c = b - a

RETURN c

Representa la diferencia entre el cierre y su valor de regresión de 10 bars. Las lecturas positivas significan que el precio cotiza por encima de su equilibrio de corto plazo, las negativas por debajo.

Ejemplo 2, Línea de regresión como filtro de tendencia (ProOrder)

probuilder
// Trade long only while price holds above its 50-bar regression value
eq = LinearRegression[50](close)

IF NOT LongOnMarket AND close CROSSES OVER eq THEN
  BUY 1 CONTRACT AT MARKET
ELSIF LongOnMarket AND close CROSSES UNDER eq THEN
  SELL AT MARKET
ENDIF

Utiliza el punto final de la regresión como se usa normalmente una media móvil, con entradas en el cruce al alza y salidas en el cruce a la baja.

Ejemplo 3, Estirado por encima del equilibrio (ProScreener)

probuilder
// Instruments trading well above their 20-bar regression value
eq      = LinearRegression[20](close)
stretch = 100 * (close - eq) / eq
SCREENER[stretch > 2](stretch AS "Pct above regression")

Devuelve los instrumentos cuyo cierre está más de un 2 por ciento por encima del valor de regresión de 20 bars, un escaneo sencillo de sobreextensión.

Interpretación

Que el precio oscile alrededor del valor de regresión es un comportamiento normal; el valor en sí indica la ubicación actual de la tendencia. Las lecturas persistentes por encima de la línea señalan presión compradora, las lecturas persistentes por debajo señalan presión vendedora, y el tamaño de la diferencia indica el estiramiento. Las herramientas basadas en la desviación, como los canales de regresión de Raff, construyen bandas alrededor de exactamente esta línea.

La salida no dice nada por sí sola sobre la calidad del ajuste. Una regresión sobre datos laterales y erráticos sigue devolviendo un valor en cada bar. Comprobar R2 junto a él separa las tendencias relevantes del ruido.

Errores y trampas habituales

  • Un valor, no una línea dibujada. La función devuelve un número por bar, el punto final del ajuste actual. No dibuja el segmento de regresión a lo largo del gráfico, y las salidas pasadas son puntos finales de ventanas anteriores, no puntos de la línea de hoy.
  • Tipo de corchete incorrecto. LinearRegression(10, close) no compila. El periodo va entre corchetes y la fuente de precio entre paréntesis: LinearRegression[10](close).
  • Sensible a los valores atípicos. Los mínimos cuadrados penalizan los errores al cuadrado, por lo que un único pico dentro de la ventana arrastra toda la línea hacia él. En instrumentos poco líquidos, un solo precio erróneo distorsiona el valor durante N barras.
  • Las ventanas cortas reaccionan en exceso. Con valores pequeños N la línea sigue al precio casi tick a tick y el oscilador de desviación apenas se separa de cero. Elige N lo bastante grande para que el concepto de equilibrio tenga sentido.
  • LinearRegressionSlope, coeficiente de pendiente de la misma línea ajustada.
  • R2, coeficiente de determinación, mide lo bien que se ajusta la línea.
  • TimeSeriesAverage, suavizado basado en regresión estrechamente relacionado.
  • Average, media móvil simple para comparar.
  • ExponentialAverage, alternativa de suavizado con bajo retardo.
  • STD, desviación típica, utilizada para construir bandas alrededor de una línea de regresión.
  • EndPointAverage, otra media basada en el punto final.
  • WeightedAverage, media ponderada linealmente con menor retardo.