Rejoignez-nous
Indicateurs/probuilder · probacktest · proorder · proscreener

LinearRegression

LinearRegression dans ProBuilder renvoie la valeur d'une droite de régression des moindres carrés ajustée aux N derniers bars de prix. Syntaxe, formule, exemples détaillés.

Syntaxe

probuilder
LinearRegression[N](price)

Paramètres

NomTypePar défautDescription
NentierrequisNombre de bars dans la fenêtre de régression. Les fenêtres courtes comme 10 collent au prix, les fenêtres longues comme 50 ou 100 décrivent la tendance générale.
pricesource de prixcloseSérie sur laquelle la ligne est ajustée. Généralement close, mais open, high, low, typicalprice, ou une variable personnalisée sont acceptés.

Formule

code
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

Les coefficients sont recalculés de zéro à chaque bar, de sorte que la sortie trace le point final mobile d'une droite de régression glissante.

Comment ça marche

La régression des moindres carrés trouve la droite qui passe au plus près des N points de prix. LinearRegression évalue cette droite sur le bar le plus récent et renvoie ce seul nombre, pas le segment entier. Bar après bar, ces points d'extrémité forment une courbe lisse qui se comporte comme une moyenne mobile avec un retard nettement moindre, parce qu'une droite ajustée extrapole la direction de la fenêtre au lieu de la moyenner symétriquement.

La valeur renvoyée est souvent lue comme le prix d'équilibre de la fenêtre : là où le prix "devrait" se situer si la tendance récente était parfaitement linéaire. La différence entre le prix réel et cette valeur mesure à quel point le marché est étiré par rapport à sa propre tendance, ce qui est la base de l'oscillateur de l'Exemple 1.

Des fonctions complémentaires complètent le tableau. LinearRegressionSlope renvoie le coefficient b, la direction et la pente de la même droite ajustée, et R2 indique à quel point la droite s'ajuste réellement aux données.

Exemples

Exemple 1, Oscillateur de régression linéaire (Indicateur)

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

Trace l'écart entre la clôture et sa valeur de régression sur 10 bars. Les lectures positives signifient que le prix se négocie au-dessus de son équilibre de court terme, les lectures négatives en dessous.

Exemple 2, Droite de régression comme filtre de tendance (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

Utilise le point final de régression comme on utilise normalement une moyenne mobile, avec des entrées au croisement haussier et des sorties au croisement baissier.

Exemple 3, Étirement au-dessus de l'équilibre (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")

Renvoie les instruments dont la clôture dépasse de plus de 2 pour cent la valeur de régression sur 20 bars, un scan simple de surextension.

Interprétation

Un prix qui oscille autour de la valeur de régression est un comportement normal ; la valeur elle-même indique la position actuelle de la tendance. Des lectures persistantes au-dessus de la droite signalent une pression acheteuse, des lectures persistantes en dessous signalent une pression vendeuse, et la taille de l'écart indique l'étirement. Les outils fondés sur l'écart, comme les canaux de régression de Raff, construisent des bandes autour de cette droite exactement.

La sortie ne dit rien à elle seule sur la qualité de l'ajustement. Une régression sur des données heurtées et sans direction renvoie tout de même une valeur à chaque bar. Vérifier R2 en parallèle sépare les tendances significatives du bruit.

Erreurs et pièges courants

  • Une valeur, pas une droite tracée. La fonction renvoie un nombre par bar, le point final de l'ajustement courant. Elle ne trace pas le segment de régression sur le graphique, et les sorties passées sont des points finaux de fenêtres plus anciennes, pas des points de la droite d'aujourd'hui.
  • Mauvais type de crochets. LinearRegression(10, close) ne compile pas. La période va entre crochets et la source de prix entre parenthèses : LinearRegression[10](close).
  • Sensible aux valeurs aberrantes. La méthode des moindres carrés pénalise les erreurs au carré : un seul pic dans la fenêtre attire toute la droite vers lui. Sur les instruments peu liquides, une seule cotation aberrante déforme la valeur pendant N barres.
  • Les fenêtres courtes réagissent de façon excessive. Avec de petites N la ligne suit le prix presque tick par tick et l'oscillateur de déviation quitte à peine zéro. Choisissez N suffisamment grand pour que la notion d'équilibre ait un sens.
  • LinearRegressionSlope, coefficient de pente de la même droite ajustée.
  • R2, coefficient de détermination, mesure la qualité de l'ajustement de la ligne.
  • TimeSeriesAverage, lissage basé sur la régression étroitement apparenté.
  • Average, moyenne mobile simple pour comparaison.
  • ExponentialAverage, alternative de lissage à faible retard.
  • STD, écart type, utilisé pour construire des bandes autour d'une droite de régression.
  • EndPointAverage, une autre moyenne basée sur le point final.
  • WeightedAverage, moyenne pondérée linéairement avec un retard réduit.