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

LinearRegression

LinearRegression in ProBuilder geeft de waarde van een kleinste-kwadratenregressielijn die is gefit op de laatste N bars van de prijs. Syntaxis, formule, uitgewerkte voorbeelden.

Syntaxis

probuilder
LinearRegression[N](price)

Parameters

NaamTypeStandaardBeschrijving
Ngeheel getalverplichtAantal bars in het regressievenster. Korte vensters zoals 10 volgen de prijs nauw, lange vensters zoals 50 of 100 beschrijven de bredere trend.
priceprijsbroncloseReeks waarop de lijn wordt gefit. Meestal close, maar open, high, low, typicalprice, of een eigen variabele worden geaccepteerd.

Formule

code
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

De coëfficiënten worden op elke bar helemaal opnieuw berekend, waardoor de output het bewegende eindpunt van een voortschrijdende regressielijn volgt.

Hoe het werkt

Kleinstekwadratenregressie vindt de rechte lijn die zo dicht mogelijk ligt bij de laatste N prijspunten. LinearRegression evalueert die lijn op de nieuwste bar en geeft dat ene getal terug, niet het hele segment. Bar na bar vormen die eindpunten een vloeiende curve die zich gedraagt als een moving average met merkbaar minder lag, omdat een gefitte lijn de richting van het venster extrapoleert in plaats van er symmetrisch een gemiddelde van te nemen.

De teruggegeven waarde wordt vaak gelezen als de evenwichtsprijs voor het venster: waar de prijs "zou moeten" zijn als de recente trend perfect lineair was. Het verschil tussen de werkelijke prijs en deze waarde meet hoe uitgerekt de markt is ten opzichte van zijn eigen trend, wat de basis is van de oscillator in Voorbeeld 1.

Bijbehorende functies maken het beeld compleet. LinearRegressionSlope geeft de coëfficiënt terug b, de richting en steilheid van dezelfde gefitte lijn, en R2 geeft aan hoe goed de lijn daadwerkelijk op de data past.

Voorbeelden

Voorbeeld 1, Lineaire-regressieoscillator (Indicator)

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

Plot het verschil tussen de slotkoers en de 10-bar regressiewaarde. Positieve waarden betekenen dat de prijs boven zijn kortetermijnevenwicht handelt, negatieve waarden eronder.

Voorbeeld 2, Regressielijn als 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

Gebruikt het regressie-eindpunt zoals een voortschrijdend gemiddelde normaal wordt gebruikt, met instappen bij de opwaartse kruising en uitstappen bij de neerwaartse kruising.

Voorbeeld 3, Uitgerekt boven het evenwicht (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")

Geeft instrumenten waarvan de slotkoers meer dan 2 procent boven de 20-bar regressiewaarde ligt, een eenvoudige scan op overextensie.

Interpretatie

Een prijs die rond de regressiewaarde oscilleert is normaal gedrag; de waarde zelf geeft de huidige locatie van de trend aan. Aanhoudende waarden boven de lijn duiden op koopdruk, aanhoudende waarden onder de lijn duiden op verkoopdruk, en de grootte van het verschil geeft de uitrekking aan. Op deviatie gebaseerde tools zoals Raff-regressiekanalen bouwen banden rond precies deze lijn.

De uitvoer zegt op zichzelf niets over de kwaliteit van de fit. Een regressie door schokkerige, zijwaartse data retourneert nog steeds elke bar een waarde. Het controleren van R2 ernaast scheidt betekenisvolle trends van ruis.

Veelvoorkomende fouten en valkuilen

  • Een waarde, geen getekende lijn. De functie geeft één getal per bar, het eindpunt van de huidige fit. Ze tekent het regressiesegment niet over de grafiek, en eerdere outputs zijn eindpunten van oudere vensters, geen punten op de lijn van vandaag.
  • Verkeerd type haakjes. LinearRegression(10, close) compileert niet. De periode hoort tussen rechte haken en de koersbron tussen ronde haken: LinearRegression[10](close).
  • Gevoelig voor uitschieters. Kleinste kwadraten bestraft gekwadrateerde fouten, dus één enkele spike binnen het venster trekt de hele lijn naar zich toe. Op dunne instrumenten vertekent één foute print de waarde gedurende N bars.
  • Korte vensters reageren te sterk. Bij kleine N volgt de lijn de koers vrijwel tick voor tick en komt de deviatie-oscillator nauwelijks van nul. Kies N groot genoeg dat het evenwichtsconcept zinvol is.
  • LinearRegressionSlope, hellingscoëfficiënt van dezelfde gefitte lijn.
  • R2, determinatiecoëfficiënt, meet hoe goed de lijn past.
  • TimeSeriesAverage, nauw verwante afvlakking op basis van regressie.
  • Average, enkelvoudig voortschrijdend gemiddelde ter vergelijking.
  • ExponentialAverage, smoothingalternatief met weinig vertraging.
  • STD, standaarddeviatie, gebruikt om banden rond een regressielijn te bouwen.
  • EndPointAverage, nog een gemiddelde op basis van het eindpunt.
  • WeightedAverage, lineair gewogen gemiddelde met minder vertraging.