Eine quantitative Handelsstrategie, die auf linearer Regressionsanalyse basiert

Schriftsteller:ChaoZhang, Datum: 2024-01-26 15:48:35
Tags:

一种基于线性回归分析的量化交易策略

Übersicht

Die adaptive lineare Regressionskanalstrategie ist eine quantitative Handelsstrategie, die auf linearer Regressionsanalyse basiert. Die Strategie erfolgt durch Berechnung der linearen Regressionsgleichung des Wertpapierpreises innerhalb eines bestimmten Zeitraums.

Die Strategie

Im Zentrum der adaptive linearen Rückkehrschrittstrategie steht die Berechnung der Schlusspreis-Linear-Rückkehrgleichung für eine bestimmte Anzahl von K-Wurzel-K-Linien, die eine Mittellinie bilden, die die mittleren Preise repräsentiert, eine Auffahrt, die die Preisspitze repräsentiert, und eine Abfahrt, die die Preisspitzen repräsentiert. Die spezifische Berechnung ist wie folgt:

  1. Sammeln Sie die unabhängige Variable x und die abhängige Variable y einer K-Strecke, deren Inputparameterlength angegeben ist. Hier ist x die ganze Zahl von 1 bis zur Länge und y der Schlusspreis der entsprechenden K-Strecke.

  2. Berechnung des Regressionskoeffizienten:

    • b = (y) /n - m ((x) /n
  3. Berechnen Sie den für jede K-Leitung entsprechenden linearen Regressionswert y, Standarddifferenz STDDEV

  4. Die Mittellinie ist die Regressionsgleichung y = mx + b, die jeweils auf der Mittellinie in einem Standarddifferenz-Faktorbereich schwebt.

Mit der Ankunft der neuen K-Linie werden die oberen Berechnungen rollend aktualisiert und bilden einen oben-unteren Anpassungskanal.

Stärkenanalyse

Die Adaptive Linear Return Path Strategie hat folgende Vorteile gegenüber der traditionellen Mittellinie:

  1. Wissenschaftlich vernünftiger und statistisch relevanter als die Mittellinie

  2. Sie sind flexibler und passen sich automatisch an, wenn sich die Preise ändern.

  3. Wiederholung wirkt besser, bei einigen Sorten deutlich besser als die Mittelstreckenstrategie

  4. Die Echtzeit-Verifizierung funktioniert gut, die Echtzeit-Performance ist zufriedenstellend

Risikoanalyse

Die Strategie besteht hauptsächlich aus folgenden Risiken:

  1. Bei zu starken Preisbewegungen entstehen große Verluste. Die Lösung besteht darin, die Parameter zu optimieren und die Stop-Loss-Situation zu ändern.

  2. Ein falscher Kanal führt zu schlechten Tracking-Effekten. Die Lösung besteht darin, die Parameter in Kombination mit anderen technischen Indikatoren anzupassen.

  3. Die Wiederholungsergebnisse scheinen gut zu sein, aber in der Praxis sind sie schlecht. Die Lösung besteht darin, die Parameter anzupassen und vollständig zu überprüfen.

Optimierung

Die Strategie kann in folgenden Dimensionen weiter optimiert werden:

  1. Test mehr Parameterkombinationen, um die besten zu finden

  2. In Kombination mit anderen technischen Indikatoren verhindern Sie Signalstörungen bei starken Trends.

  3. Erhöhung der Strategie zur Verlustbekämpfung, Risikomanagement und Kapitalschutz

  4. Zusätzliche Positionsmanagement-Module, die Positionsgröße entsprechend der Marktlage anpassen

Zusammenfassung

Die Adaptive-Linear-Return-Channel-Strategie ist insgesamt eine gute Quantitationsstrategie. Sie ist theoretisch solide, in der Praxis gut und lohnt sich für weitere Forschung und Optimierung. Sie kann ein wirksamer Bestandteil eines quantitativen Handelssystems sein.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)

//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
    sum_y := sum_y + close[i]
    sum_xy := i * close[i] + sum_xy
    sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)

//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
    y = i * m  + b
    difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)

//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b

if DayTrader == false
    if crossover(source, upper)
        strategy.entry("RGLONG", strategy.long, oca_name="RegChannel",  comment="RegLong")
    else
        strategy.cancel(id="RGLONG")

    if crossunder(source, lower)
        strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel",  comment="RegShort")
    else
        strategy.cancel(id="RGSHORT")

    if crossover(source, middle) and strategy.position_size < 0
        strategy.close_all()
    if crossunder(source,middle) and strategy.position_size > 0
        strategy.close_all()

if DayTrader == true
    if crossover(source, lower) 
        strategy.entry("RGLONG", strategy.long, oca_name="RegChannel",  comment="RegLong")
    else
        strategy.cancel(id="RGLONG")

    if crossunder(source, upper)
        strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel",  comment="RegShort")
    else
        strategy.cancel(id="RGSHORT")


plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)

Weitere Informationen