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
R2[N](price)Parameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
N | geheel getal | geen | Aantal bars in het regressievenster. Gebruikelijke waarden zijn 14 tot 30. Korte vensters reageren sneller maar signaleren veel valse trends. |
price | prijsbron | close | De reeks waarop de regressie wordt gefit. Meestal close, accepteert ook open, high, low, of een eigen variabele. |
Formule
R2 = 1 - (SSres / SStot)
where SSres = sum of squared residuals from the regression line
SStot = sum of squared deviations of price from its meanR-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)
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, bearishR2 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)
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
ENDIFInstappen 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)
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-bereik | Stand |
|---|---|
| 0.7 tot 1.0 | Sterke lineaire trend. De koers volgt zijn regressielijn nauw. |
| 0.4 tot 0.7 | Gematigde trend. Er is een richtingsbias, maar met noemenswaardige ruis. |
| 0.0 tot 0.4 | Zwakke 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 wanneerNis 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) > 5kunnen nooit waar zijn en schakelen stilletjes de logica uit die ervan afhangt.
Gerelateerde instructies
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.