Jetzt beitreten
Indikatoren/probuilder · probacktest · proorder · proscreener

R2

R2 in ProBuilder gibt den R-Squared-Koeffizienten einer linearen Regression über N Bars zurück, ein Maß der Trendstärke von 0 bis 1. Syntax, Formel, durchgerechnete Beispiele.

Syntax

probuilder
R2[N](price)

Parameter

NameTypStandardBeschreibung
NGanzzahlkeineAnzahl der Bars im Regressionsfenster. Übliche Werte sind 14 bis 30. Kurze Fenster reagieren schneller, melden aber viele falsche Trends.
priceKursquelleSchlusskursDie Serie, an die die Regression angepasst wird. Normalerweise close, akzeptiert auch open, high, low, oder eine eigene Variable.

Formel

Code
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 ist das Bestimmtheitsmaß der Kleinste-Quadrate-Gerade, die an die letzten N Werte von price. Er entspricht der quadrierten Korrelation zwischen Kurs und Zeit über das Fenster und ist daher auf den Bereich zwischen 0 und 1 begrenzt.

So funktioniert es

Auf jedem Bar passt ProBuilder eine Gerade durch die letzten N Kurspunkte und misst, wie viel der Kursvariation diese Linie erklärt. Liegen die Punkte nahezu exakt auf der Linie, sind die Residuen winzig und R2 nähert sich 1. Schwankt der Kurs zufällig um seinen Mittelwert, erklärt die Linie wenig und R2 nähert sich 0.

R2 ist richtungsblind. Ein perfekter Aufwärtstrend und ein perfekter Abwärtstrend liefern beide Werte nahe 1, R2 sagt also, wie stark der Markt trendet, nicht in welche Richtung. Für die Richtung kombinieren Sie es mit LinearRegressionSlope oder vergleichen Sie aufeinanderfolgende LinearRegression Werte, wie im ersten Beispiel.

Eine verbreitete Daumenregel behandelt Werte über etwa 0.4 bis 0.6, je nach N, als statistisch bedeutsame Trends und niedrigere Werte als Rauschen. Weil R2 auf einem rollierenden Fenster berechnet wird, fällt es schnell, wenn ein klarer Trend in eine Konsolidierung übergeht, was es als Regime-Filter nützlich macht, der trendfolgende Logik ein- und ausschaltet.

Beispiele

Beispiel 1, Trendstärke mit Richtungserkennung (Indikator)

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

R2 liefert den Stärketest und die Änderung der Regressionslinie liefert die Richtung. Beide Ausgaben bleiben bei 0, wenn die Anpassung zu schwach ist, um ihr zu vertrauen, wodurch Seitwärtsphasen herausgefiltert werden.

Beispiel 2, Regimefilter für ein trendfolgendes System (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

Einstiege erfordern sowohl eine starke Anpassung als auch eine positive Steigung. Der Ausstieg löst allein anhand der Trendqualität aus und schließt die Position, sobald der Kurs sich nicht mehr linear verhält, unabhängig von der Richtung.

Beispiel 3, Screening auf die geordnetsten Aufwärtstrends (ProScreener)

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

Listet Instrumente auf, deren letzte 20 Schlusskurse mit einem R-Squared über 0.7 zu einer steigenden Gerade passen, sortiert nach der Anpassungsspalte.

Interpretation

R2-BereichAblesung
0.7 bis 1.0Starker linearer Trend. Der Kurs folgt seiner Regressionslinie eng.
0.4 bis 0.7Moderater Trend. Eine Richtungstendenz besteht, aber mit nennenswertem Rauschen.
0.0 bis 0.4Schwacher oder kein Trend. Mean-Reversion-Verhalten dominiert.

Genaue Schwellen hängen ab von N. Kürzere Fenster erzeugen zufällig höhere R2-Werte, sodass ein Wert von 0.7 über 10 Bars weit weniger aussagekräftig ist als 0.7 über 50 Bars. R2 liest sich am besten als Regime-Anzeiger: Ein Anstieg über eine Schwelle legt nahe, dass Trendlogik aktiv sein sollte, ein Fall darunter spricht für Range-Logik.

Häufige Fehler und Stolperfallen

  • Keine Richtungsangabe. R2 nahe 1 tritt sowohl in starken Aufwärtstrends als auch in starken Abwärtstrends auf. Allein auf Basis eines hohen R2 long zu gehen kauft in Crashs hinein. Kombinieren Sie es immer mit einem Steigungs- oder Kursvergleich.
  • Kurze Fenster blähen den Wert auf. Wenige Punkte lassen sich immer recht gut an eine Linie anpassen, also R2[5] zeigt regelmäßig hohe Werte in reinem Rauschen. Verwenden Sie längere Fenster oder erhöhen Sie den Schwellenwert, wenn N ist klein.
  • Verzögerung an Wendepunkten. R2 bleibt mehrere Bars nach dem Ende eines Trends erhöht, weil das Fenster noch den alten Trend enthält. Rechnen Sie damit, dass Regimesignale konstruktionsbedingt verspätet eintreffen.
  • Begrenzte Ausgabe, unbegrenzte Erwartungen. Der Wert verlässt den Bereich 0 bis 1 nie. Bedingungen wie R2[20](close) > 5 können niemals wahr sein und deaktivieren stillschweigend die Logik, die von ihnen abhängt.
  • LinearRegression, Wert der angepassten Regressionslinie selbst.
  • LinearRegressionSlope, Steigung der Regressionslinie, liefert die Richtung.
  • STD, Standardabweichung, das Streuungsmaß hinter SStot.
  • STE, Standardfehler der Regressionsschätzung.
  • TimeSeriesAverage, gleitender Durchschnitt, aufgebaut aus Regressionsendpunkten.
  • EndPointAverage, verwandte endpunktbasierte Glättung.
  • ADX, alternatives Maß der Trendstärke, basierend auf Directional Movement.
  • Average, einfacher gleitender Durchschnitt, oft als Basis-Trendfilter kombiniert.