Bli medlem i dag
Indikatorer/probuilder · probacktest · proorder · proscreener

LinearRegression

LinearRegression i ProBuilder returnerer verdien av en minste kvadraters regresjonslinje tilpasset de siste N prisbarene. Syntaks, formel, gjennomgåtte eksempler.

Syntaks

probuilder
LinearRegression[N](price)

Parametere

NavnTypeStandardBeskrivelse
NheltallpåkrevdAntall barer i regresjonsvinduet. Korte vinduer som 10 følger prisen tett, lange vinduer som 50 eller 100 beskriver den bredere trenden.
pricepriskildelukkSerien linjen tilpasses til. Vanligvis close, men open, high, low, typicalprice, eller en egendefinert variabel godtas.

Formel

kode
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 bar

Koeffisientene beregnes på nytt fra grunnen av på hver bar, så utdataene følger det bevegelige endepunktet til en rullerende regresjonslinje.

Slik fungerer det

Minste kvadraters regresjon finner den rette linjen som går så nær som mulig de siste N prispunkter. LinearRegression evaluerer den linjen på den nyeste baren og returnerer det ene tallet, ikke hele segmentet. Bar etter bar danner disse endepunktene en jevn kurve som oppfører seg som et glidende gjennomsnitt med merkbart mindre etterslep, fordi en tilpasset linje ekstrapolerer retningen i vinduet i stedet for å gjennomsnittsberegne det symmetrisk.

Den returnerte verdien leses ofte som likevektsprisen for vinduet: der prisen "burde" være hvis den nylige trenden var perfekt lineær. Differansen mellom den faktiske prisen og denne verdien måler hvor strukket markedet er i forhold til sin egen trend, som er grunnlaget for oscillatoren i Eksempel 1.

Følgefunksjoner fullfører bildet. LinearRegressionSlope returnerer koeffisienten b, retningen og brattheten til samme tilpassede linje, og R2 rapporterer hvor godt linjen faktisk passer til dataene.

Eksempler

Eksempel 1, Oscillator for lineær regresjon (Indikator)

probuilder
// 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 c

Tegner opp avstanden mellom sluttkursen og dens 10-bars regresjonsverdi. Positive verdier betyr at prisen handles over sin kortsiktige likevekt, negative verdier under den.

Eksempel 2, Regresjonslinje som trendfilter (ProOrder)

probuilder
// 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
ENDIF

Bruker regresjonens endepunkt slik et glidende gjennomsnitt normalt brukes, med innganger ved kryss oppover og utganger ved kryss nedover.

Eksempel 3, Strukket over likevekt (ProScreener)

probuilder
// 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")

Returnerer instrumenter der sluttkursen ligger mer enn 2 prosent over 20-bars regresjonsverdien, et enkelt søk etter overutstrekning.

Tolkning

At prisen svinger rundt regresjonsverdien er normal oppførsel; verdien selv angir trendens nåværende plassering. Vedvarende verdier over linjen signaliserer kjøpspress, vedvarende verdier under signaliserer salgspress, og størrelsen på avstanden angir hvor strukket markedet er. Avviksbaserte verktøy som Raff-regresjonskanaler bygger bånd rundt nøyaktig denne linjen.

Utdataene sier ingenting om tilpasningens kvalitet i seg selv. En regresjon gjennom hakkete, sidelengs data returnerer likevel en verdi hver bar. Å kontrollere R2 ved siden av den skiller meningsfulle trender fra støy.

Vanlige feil og fallgruver

  • En verdi, ikke en opptegnet linje. Funksjonen returnerer ett tall per bar, endepunktet til den gjeldende tilpasningen. Den tegner ikke regresjonssegmentet over diagrammet, og tidligere utdata er endepunkter for eldre vinduer, ikke punkter på dagens linje.
  • Feil parentestype. LinearRegression(10, close) kompilerer ikke. Perioden hører i hakeparenteser og priskilden i parenteser: LinearRegression[10](close).
  • Sensitiv for uteliggere. Minste kvadraters metode straffer kvadrerte feil, så en enkelt spike inne i vinduet trekker hele linjen mot seg. På tynne instrumenter forvrenger én dårlig kurs verdien i N barer.
  • Korte vinduer overreagerer. Med små N følger linjen prisen nesten tick for tick, og avviksoscillatoren forlater knapt null. Velg N stor nok til at likevektsbegrepet er meningsfullt.
  • LinearRegressionSlope, stigningskoeffisienten til samme tilpassede linje.
  • R2, determinasjonskoeffisient, måler hvor godt linjen passer.
  • TimeSeriesAverage, nært beslektet regresjonsbasert utjevning.
  • Average, enkelt glidende gjennomsnitt for sammenligning.
  • ExponentialAverage, utjevningsalternativ med lav forsinkelse.
  • STD, standardavvik, brukt til å bygge bånd rundt en regresjonslinje.
  • EndPointAverage, et annet gjennomsnitt basert på endepunkt.
  • WeightedAverage, lineært vektet gjennomsnitt med redusert forsinkelse.