LinearRegression
LinearRegression in ProBuilder gibt den Wert einer Regressionslinie der kleinsten Quadrate zurück, die an die letzten N Bars des Kurses angepasst wird. Syntax, Formel, ausgearbeitete Beispiele.
Syntax
LinearRegression[N](price)Parameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
N | Ganzzahl | erforderlich | Anzahl der Bars im Regressionsfenster. Kurze Fenster wie 10 folgen dem Kurs eng, lange Fenster wie 50 oder 100 beschreiben den übergeordneten Trend. |
price | Kursquelle | Schlusskurs | Serie, an die die Linie angepasst wird. Normalerweise close, aber open, high, low, typicalprice, oder eine eigene Variable werden akzeptiert. |
Formel
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 barDie Koeffizienten werden auf jedem Bar vollständig neu berechnet, sodass die Ausgabe den wandernden Endpunkt einer rollierenden Regressionslinie nachzeichnet.
So funktioniert es
Die Regression der kleinsten Quadrate findet die Gerade, die so nah wie möglich an den letzten N Kurspunkte. LinearRegression wertet diese Linie am neuesten Bar aus und gibt die einzelne Zahl zurück, nicht das ganze Segment. Bar für Bar bilden diese Endpunkte eine glatte Kurve, die sich wie ein gleitender Durchschnitt mit merklich weniger Verzögerung verhält, weil eine angepasste Linie die Richtung des Fensters extrapoliert, statt sie symmetrisch zu mitteln.
Der zurückgegebene Wert wird oft als Gleichgewichtspreis für das Fenster gelesen: dort, wo der Kurs sein "sollte", wenn der jüngste Trend vollkommen linear wäre. Die Differenz zwischen dem tatsächlichen Kurs und diesem Wert misst, wie stark der Markt gegenüber seinem eigenen Trend überdehnt ist, was die Grundlage des Oszillators in Beispiel 1 bildet.
Ergänzende Funktionen vervollständigen das Bild. LinearRegressionSlope gibt den Koeffizienten zurück b, die Richtung und Steilheit derselben Regressionsgeraden, und R2 gibt an, wie gut die Linie die Daten tatsächlich abbildet.
Beispiele
Beispiel 1, Oszillator der linearen Regression (Indikator)
// 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 cZeichnet den Abstand zwischen dem Schlusskurs und seinem 10-Bar-Regressionswert. Positive Werte bedeuten, dass der Kurs über seinem kurzfristigen Gleichgewicht notiert, negative Werte darunter.
Beispiel 2, Regressionslinie als Trendfilter (ProOrder)
// 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
ENDIFVerwendet den Regressionsendpunkt so, wie normalerweise ein gleitender Durchschnitt verwendet wird, mit Einstiegen beim Aufwärtskreuzen und Ausstiegen beim Abwärtskreuzen.
Beispiel 3, Überdehnt über dem Gleichgewicht (ProScreener)
// 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")Gibt Instrumente zurück, deren Schlusskurs mehr als 2 Prozent über dem 20-Bar-Regressionswert liegt, ein einfacher Scan auf Überdehnung.
Interpretation
Ein Kurs, der um den Regressionswert schwankt, ist normales Verhalten; der Wert selbst zeigt die aktuelle Lage des Trends an. Dauerhafte Werte über der Linie signalisieren Kaufdruck, dauerhafte Werte darunter signalisieren Verkaufsdruck, und die Größe des Abstands zeigt die Überdehnung an. Abweichungsbasierte Werkzeuge wie Raff-Regressionskanäle bauen Bänder genau um diese Linie.
Die Ausgabe sagt für sich allein nichts über die Güte der Anpassung. Eine Regression durch unruhige Seitwärtsdaten gibt dennoch bei jedem Bar einen Wert zurück. Eine Prüfung R2 daneben trennt bedeutsame Trends von Rauschen.
Häufige Fehler und Stolperfallen
- Ein Wert, keine gezeichnete Linie. Die Funktion gibt eine Zahl pro Bar zurück, den Endpunkt der aktuellen Anpassung. Sie zeichnet das Regressionssegment nicht über den Chart, und frühere Ausgaben sind Endpunkte älterer Fenster, nicht Punkte auf der heutigen Linie.
- Falscher Klammertyp.
LinearRegression(10, close)lässt sich nicht kompilieren. Die Periode gehört in eckige Klammern und die Kursquelle in runde Klammern:LinearRegression[10](close). - Empfindlich gegenüber Ausreißern. Die Methode der kleinsten Quadrate bestraft quadrierte Fehler, daher zieht eine einzelne Spitze im Fenster die ganze Linie zu sich. Bei dünn gehandelten Instrumenten verzerrt ein einziger Fehlkurs den Wert für
NBars. - Kurze Fenster reagieren über. Bei kleinen
Nfolgt die Linie dem Kurs nahezu Tick für Tick, und der Abweichungsoszillator verlässt die Null kaum. Wählen SieNgroß genug, dass das Gleichgewichtskonzept sinnvoll ist.
Verwandte Befehle
LinearRegressionSlope, Steigungskoeffizient derselben angepassten Linie.R2, Bestimmtheitsmaß, misst, wie gut die Linie passt.TimeSeriesAverage, eng verwandte, auf Regression basierende Glättung.Average, einfacher gleitender Durchschnitt zum Vergleich.ExponentialAverage, Glättungsalternative mit geringer Verzögerung.STD, Standardabweichung, verwendet zum Aufbau von Bändern um eine Regressionslinie.EndPointAverage, ein weiterer auf dem Endpunkt basierender Durchschnitt.WeightedAverage, linear gewichteter Durchschnitt mit reduzierter Verzögerung.