Bli medlem idag
Indikatorer/probuilder · probacktest · proorder · proscreener

R2

R2 i ProBuilder returnerar R-Squared-koefficienten för en linjär regression över N barer, ett mått på trendstyrka från 0 till 1. Syntax, formel, genomgångna exempel.

Syntax

probuilder
R2[N](price)

Parametrar

NamnTypStandardBeskrivning
NheltalingenAntal barer i regressionsfönstret. Vanliga värden är 14 till 30. Korta fönster reagerar snabbare men flaggar många falska trender.
pricepriskällacloseSerien som regressionen anpassas till. Vanligtvis close, accepterar även open, high, low, eller en egen variabel.

Formel

kod
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 är förklaringsgraden för minstakvadratlinjen som anpassats till de senaste N värden för price. Den är lika med den kvadrerade korrelationen mellan pris och tid över fönstret, så den är begränsad mellan 0 och 1.

Så fungerar det

På varje bar anpassar ProBuilder en rät linje genom de senaste N prispunkter och mäter hur mycket av prisvariationen den linjen förklarar. Om punkterna ligger nästan exakt på linjen är residualerna mycket små och R2 närmar sig 1. Om priset vandrar slumpmässigt kring sitt medelvärde förklarar linjen lite och R2 närmar sig 0.

R2 är riktningsblind. En perfekt uppåttrend och en perfekt nedåttrend ger båda värden nära 1, så R2 säger hur trendig marknaden är, inte i vilken riktning den trendar. För riktning, kombinera den med LinearRegressionSlope eller jämför på varandra följande LinearRegression värden, som i det första exemplet.

En vanlig tumregel behandlar värden över ungefär 0.4 till 0.6, beroende på N, som statistiskt meningsfulla trender och lägre värden som brus. Eftersom R2 beräknas på ett rullande fönster faller det snabbt när en ren trend går in i en konsolidering, vilket gör det användbart som regimfilter som slår av och på trendföljande logik.

Exempel

Exempel 1, Trendstyrka med riktningsdetektering (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 står för styrketestet och förändringen i regressionslinjen står för riktningen. Båda utdata ligger kvar på 0 när anpassningen är för svag att lita på, vilket filtrerar bort sidledes perioder.

Exempel 2, Regimfilter för ett trendföljande 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

Entries kräver både en stark anpassning och en positiv lutning. Exiten utlöses enbart på trendkvalitet och stänger positionen när priset slutar bete sig linjärt, oavsett riktning.

Exempel 3, Screening för de mest ordnade upptrenderna (ProScreener)

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

Listar instrument vars senaste 20 stängningar passar en stigande rät linje med R-Squared över 0.7, sorterade efter anpassningskolumnen.

Tolkning

R2-intervallAvläsning
0.7 till 1.0Stark linjär trend. Priset följer sin regressionslinje nära.
0.4 till 0.7Måttlig trend. Riktningsbias finns men med betydande brus.
0.0 till 0.4Svag eller ingen trend. Mean reversion-beteende dominerar.

Exakta trösklar beror på N. Kortare fönster ger av en slump högre R2-värden, så ett värde på 0.7 över 10 barer är långt mindre signifikant än 0.7 över 50 barer. R2 läses bäst som en regimmätare, ett brott upp genom en tröskel antyder att trendlogik bör vara aktiv, ett brott ned genom den antyder rangelogik.

Vanliga fel och fallgropar

  • Ingen riktningsinformation. R2 nära 1 uppstår i både starka upptrender och starka nedtrender. Att gå long enbart på högt R2 innebär att man köper in sig i krascher. Kombinera alltid med en jämförelse av lutning eller pris.
  • Korta fönster blåser upp värdet. Några få punkter passar alltid en linje rimligt väl, så R2[5] ger regelbundet höga värden i rent brus. Använd längre fönster eller höj tröskeln när N är liten.
  • Eftersläpning vid vändpunkter. R2 ligger kvar högt under flera barer efter att en trend har tagit slut, eftersom fönstret fortfarande innehåller den gamla trenden. Räkna med att regimsignaler kommer sent per konstruktion.
  • Begränsad utdata, obegränsade förväntningar. Värdet lämnar aldrig intervallet 0 till 1. Villkor såsom R2[20](close) > 5 kan aldrig vara sanna och inaktiverar tyst logiken som beror på dem.
  • LinearRegression, värdet på själva den anpassade regressionslinjen.
  • LinearRegressionSlope, regressionslinjens lutning, ger riktningen.
  • STD, standardavvikelse, spridningsmåttet bakom SStot.
  • STE, standardfelet för regressionsskattningen.
  • TimeSeriesAverage, glidande medelvärde byggt på regressionens slutpunkter.
  • EndPointAverage, relaterad utjämning baserad på slutpunkter.
  • ADX, alternativt mått på trendstyrka baserat på directional movement.
  • Average, enkelt glidande medelvärde, ofta parat som ett grundläggande trendfilter.