LinearRegression
LinearRegression in ProBuilder restituisce il valore di una retta di regressione ai minimi quadrati interpolata sulle ultime N bar di prezzo. Sintassi, formula, esempi svolti.
Sintassi
LinearRegression[N](price)Parametri
| Nome | Tipo | Predefinito | Descrizione |
|---|---|---|---|
N | intero | obbligatorio | Numero di bar nella finestra di regressione. Finestre corte come 10 aderiscono al prezzo, finestre lunghe come 50 o 100 descrivono il trend più ampio. |
price | fonte di prezzo | chiusura | Serie su cui la linea viene adattata. Di solito close, ma open, high, low, typicalprice, o una variabile personalizzata sono accettati. |
Formula
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 barI coefficienti vengono ricalcolati da zero su ogni bar, quindi l'output traccia l'estremo finale mobile di una retta di regressione rolling.
Come funziona
La regressione ai minimi quadrati trova la linea retta che passa il più vicino possibile alle ultime N punti di prezzo. LinearRegression valuta quella retta sul bar più recente e restituisce il singolo numero, non l'intero segmento. Bar dopo bar, questi punti finali formano una curva regolare che si comporta come una media mobile con un ritardo sensibilmente minore, perché una retta interpolata estrapola la direzione della finestra invece di mediarla simmetricamente.
Il valore restituito viene spesso letto come il prezzo di equilibrio della finestra: dove il prezzo "dovrebbe" essere se il trend recente fosse perfettamente lineare. La differenza tra il prezzo effettivo e questo valore misura quanto il mercato sia esteso rispetto al proprio trend, che è la base dell'oscillatore nell'Esempio 1.
Le funzioni complementari completano il quadro. LinearRegressionSlope restituisce il coefficiente b, la direzione e la pendenza della stessa retta interpolata, e R2 indica quanto bene la linea si adatta effettivamente ai dati.
Esempi
Esempio 1, Oscillatore di regressione lineare (Indicatore)
// 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 cTraccia la differenza tra la chiusura e il suo valore di regressione a 10 bar. Letture positive indicano che il prezzo quota sopra il suo equilibrio di breve termine, letture negative sotto di esso.
Esempio 2, Retta di regressione come filtro di trend (ProOrder)
// 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
ENDIFUsa l'estremo finale della regressione come si usa normalmente una media mobile, con ingressi all'incrocio verso l'alto e uscite all'incrocio verso il basso.
Esempio 3, Esteso sopra l'equilibrio (ProScreener)
// 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")Restituisce gli strumenti la cui chiusura è più del 2 percento sopra il valore di regressione a 20 bar, una semplice scansione di sovraestensione.
Interpretazione
L'oscillazione del prezzo attorno al valore di regressione è un comportamento normale; il valore stesso indica la posizione attuale del trend. Letture persistenti sopra la linea segnalano pressione in acquisto, letture persistenti sotto segnalano pressione in vendita, e l'ampiezza della differenza indica l'estensione. Gli strumenti basati sulla deviazione, come i canali di regressione di Raff, costruiscono bande esattamente attorno a questa linea.
L'output da solo non dice nulla sulla qualità dell'adattamento. Una regressione su dati irregolari e laterali restituisce comunque un valore a ogni bar. Controllare R2 insieme a esso distingue i trend significativi dal rumore.
Errori e insidie comuni
- Un valore, non una linea disegnata. La funzione restituisce un numero per bar, l'estremo finale dell'interpolazione corrente. Non disegna il segmento di regressione sul grafico, e gli output passati sono estremi finali di finestre precedenti, non punti sulla linea di oggi.
- Tipo di parentesi errato.
LinearRegression(10, close)non compila. Il periodo va tra parentesi quadre e la fonte di prezzo tra parentesi tonde:LinearRegression[10](close). - Sensibile ai valori anomali. I minimi quadrati penalizzano gli errori al quadrato, quindi un singolo picco all'interno della finestra tira tutta la linea verso di sé. Su strumenti poco liquidi, una sola stampa errata distorce il valore per
Nbarre. - Le finestre corte reagiscono in modo eccessivo. Con piccoli
Nla linea segue il prezzo quasi tick per tick e l'oscillatore di deviazione si allontana appena da zero. ScegliNabbastanza grande perché il concetto di equilibrio abbia senso.
Istruzioni correlate
LinearRegressionSlope, coefficiente di pendenza della stessa retta interpolata.R2, coefficiente di determinazione, misura quanto bene la linea si adatta.TimeSeriesAverage, livellamento basato sulla regressione strettamente correlato.Average, media mobile semplice per confronto.ExponentialAverage, alternativa di livellamento a basso ritardo.STD, deviazione standard, usata per costruire bande attorno a una retta di regressione.EndPointAverage, un'altra media basata sul punto finale.WeightedAverage, media ponderata linearmente con ritardo ridotto.