Strategi perdagangan kuantitatif berdasarkan analisis regresi linier


Tanggal Pembuatan: 2024-01-26 15:48:35 Akhirnya memodifikasi: 2024-01-26 15:48:35
menyalin: 0 Jumlah klik: 680
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan analisis regresi linier

Ringkasan

Adaptive Linear Regression Channel Strategi adalah strategi perdagangan kuantitatif yang didasarkan pada analisis regresi linier. Strategi ini membentuk saluran naik turun dengan menghitung persamaan regresi linier harga sekuritas dalam jangka waktu tertentu, dan menggunakan saluran naik turun sebagai sinyal perdagangan untuk melakukan perdagangan interval atau pelacakan tren.

Prinsip Strategi

Inti dari strategi saluran regresi linier adaptif adalah menghitung persamaan regresi linier harga penutupan dari sejumlah garis K-root K, membentuk garis tengah yang mewakili digit harga tengah, garis atas yang mewakili batas atas harga dan garis bawah yang mewakili batas bawah harga. Proses perhitungan spesifiknya adalah sebagai berikut:

  1. Mengumpulkan input parameter length untuk variabel independen x dan variabel dependen y dari garis K dengan akar K. Di sini, x adalah bilangan bulat dari 1 ke panjang, dan y adalah nilai penutupan dari garis K yang sesuai.

  2. Perhitungan koefisien regresi:

    • b = (∑y)/n - m(∑x)/n
    • m = [(n∑xy) - (∑x)(∑y)]/[(n∑x2) - (∑x)2]
  3. Hitung nilai regresi linear untuk setiap garis K dengan y’, standar deviasi STDDEV

  4. Garis tengah adalah persamaan regresi y’ = mx + b, yang masing-masing melayang di atas dan di bawah garis tengah dengan interval satu kali lipat standar.

Dengan datangnya garis K baru, perhitungan di atas bergulir dan diperbarui, membentuk saluran adaptasi atas dan bawah. Berdasarkan saluran atas dan bawah, lakukan lebih banyak ruang kosong, berhenti di dekat garis tengah.

Analisis Keunggulan

Adaptive Linear Regression Channel Strategy memiliki beberapa keunggulan dibandingkan dengan strategi linear rata-rata tradisional:

  1. Lebih ilmiah, lebih masuk akal, dan memiliki arti statistik yang lebih tinggi daripada rata-rata

  2. Adaptasi yang lebih fleksibel, ruang lingkup saluran akan disesuaikan secara otomatis dengan perubahan harga

  3. Hasil pengamatan yang lebih baik, jelas lebih baik dari strategi garis rata pada beberapa varietas

  4. Hasil pengujian pada komputer, kinerja yang memuaskan di komputer

Analisis risiko

Strategi ini memiliki risiko utama sebagai berikut:

  1. Pertumbuhan harga yang terlalu besar menyebabkan kerugian yang sangat besar. Solusinya adalah dengan mengatur stop loss dan mengoptimalkan parameter.

  2. Kesalahan saluran menyebabkan kurangnya efektivitas pelacakan. Solusinya adalah menyesuaikan parameter, yang dikombinasikan dengan indikator teknis lainnya.

  3. Hasil pengamatan terlihat bagus, tetapi hasil disk tidak bagus. Solusinya adalah menyesuaikan parameter dan memverifikasi sepenuhnya.

Arah optimasi

Strategi ini dapat terus dioptimalkan dari beberapa dimensi:

  1. Uji lebih banyak kombinasi parameter untuk mencari parameter optimal

  2. Kombinasi dengan indikator teknis lainnya untuk menghindari sinyal yang salah saat tren terjadi.

  3. Meningkatkan strategi stop loss, mengendalikan risiko kerugian, dan melindungi dana

  4. Menambahkan modul manajemen posisi, menyesuaikan ukuran posisi sesuai dengan kondisi pasar

Meringkaskan

Adaptive Linear Regression Channel Strategy secara keseluruhan merupakan strategi kuantitatif yang cukup efektif. Dasar teoritisnya kuat, kinerja praktisnya baik, layak untuk diteliti dan dioptimalkan lebih lanjut, dan dapat menjadi komponen yang efektif dalam sistem perdagangan kuantitatif. Tetapi juga perlu untuk mengenali keterbatasan, pencegahan risiko, dan praktik yang berhati-hati.

Kode Sumber Strategi
/*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)