Word nu lid
Indicatoren/probuilder · probacktest · proorder · proscreener

R2

R2 in ProBuilder geeft de R-Squared-coëfficiënt van een lineaire regressie over N bars, een maat voor trendsterkte van 0 tot 1. Syntaxis, formule, uitgewerkte voorbeelden.

Syntaxis

probuilder
R2[N](price)

Parameters

NaamTypeStandaardBeschrijving
Ngeheel getalgeenAantal bars in het regressievenster. Gebruikelijke waarden zijn 14 tot 30. Korte vensters reageren sneller maar signaleren veel valse trends.
priceprijsbroncloseDe reeks waarop de regressie wordt gefit. Meestal close, accepteert ook open, high, low, of een eigen variabele.

Formule

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 is de determinatiecoëfficiënt van de kleinste-kwadratenlijn die is gefit op de laatste N waarden van price. Het is gelijk aan de gekwadrateerde correlatie tussen prijs en tijd over het venster, en ligt dus tussen 0 en 1.

Hoe het werkt

Op elke bar past ProBuilder een rechte lijn door de laatste N prijspunten en meet hoeveel van de prijsvariatie die lijn verklaart. Liggen de punten bijna exact op de lijn, dan zijn de residuen minimaal en nadert R2 de waarde 1. Dwaalt de prijs willekeurig rond zijn gemiddelde, dan verklaart de lijn weinig en nadert R2 de waarde 0.

R2 is richtingsblind. Een perfecte uptrend en een perfecte downtrend geven beide waarden rond 1, dus R2 zegt hoe trendmatig de markt is, niet welke kant de trend op gaat. Combineer het voor de richting met LinearRegressionSlope of vergelijk opeenvolgende LinearRegression waarden, zoals in het eerste voorbeeld.

Een gangbare vuistregel beschouwt waarden boven ongeveer 0.4 tot 0.6, afhankelijk van N, als statistisch betekenisvolle trends en lagere waarden als ruis. Omdat R2 op een voortschrijdend venster wordt berekend, daalt hij snel wanneer een schone trend in een consolidatie belandt, en dat maakt hem nuttig als regimefilter dat trendvolgende logica aan- en uitzet.

Voorbeelden

Voorbeeld 1, Trendsterkte met richtingsdetectie (Indicator)

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 levert de sterktetest en de verandering in de regressielijn levert de richting. Beide uitvoeren blijven op 0 wanneer de fit te zwak is om te vertrouwen, waardoor zijwaartse periodes worden uitgefilterd.

Voorbeeld 2, Regimefilter voor een trendvolgend systeem (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

Instappen vereisen zowel een sterke fit als een positieve helling. De uitstap gaat af op trendkwaliteit alleen en sluit de positie zodra de koers zich niet langer lineair gedraagt, ongeacht de richting.

Voorbeeld 3, Screenen op de meest ordelijke opwaartse trends (ProScreener)

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

Toont instrumenten waarvan de laatste 20 closes passen op een stijgende rechte lijn met R-Squared boven 0.7, gesorteerd op de fit-kolom.

Interpretatie

R2-bereikStand
0.7 tot 1.0Sterke lineaire trend. De koers volgt zijn regressielijn nauw.
0.4 tot 0.7Gematigde trend. Er is een richtingsbias, maar met noemenswaardige ruis.
0.0 tot 0.4Zwakke of geen trend. Mean reversion-gedrag domineert.

Exacte drempels hangen af van N. Kortere vensters leveren door toeval hogere R2-waarden op, dus een waarde van 0.7 over 10 bars is veel minder significant dan 0.7 over 50 bars. R2 leest het best als regimemeter: omhoog door een drempel suggereert dat trendlogica actief moet zijn, omlaag erdoor suggereert rangelogica.

Veelvoorkomende fouten en valkuilen

  • Geen informatie over de richting. R2 dicht bij 1 komt voor in zowel sterke opwaartse als sterke neerwaartse trends. Alleen op een hoge R2 long gaan koopt je in crashes in. Combineer altijd met een vergelijking van de helling of de koers.
  • Korte vensters blazen de waarde op. Een paar punten passen altijd redelijk goed op een lijn, dus R2[5] levert regelmatig hoge waarden op in pure ruis. Gebruik langere vensters of verhoog de drempel wanneer N is klein.
  • Vertraging op omslagpunten. R2 blijft nog verscheidene bars na het einde van een trend verhoogd omdat het venster de oude trend nog bevat. Reken erop dat regimesignalen door hun opzet laat komen.
  • Begrensde uitvoer, onbegrensde verwachtingen. De waarde blijft altijd tussen 0 en 1. Condities zoals R2[20](close) > 5 kunnen nooit waar zijn en schakelen stilletjes de logica uit die ervan afhangt.
  • LinearRegression, waarde van de gefitte regressielijn zelf.
  • LinearRegressionSlope, helling van de regressielijn, levert de richting.
  • STD, standaarddeviatie, de spreidingsmaat achter SStot.
  • STE, standaardfout van de regressieschatting.
  • TimeSeriesAverage, voortschrijdend gemiddelde opgebouwd uit regressie-eindpunten.
  • EndPointAverage, gerelateerde afvlakking op basis van eindpunten.
  • ADX, alternatieve maat voor trendsterkte op basis van directional movement.
  • Average, eenvoudig voortschrijdend gemiddelde, vaak gecombineerd als basistrendfilter.