Strategi Perdagangan Rasio Transitif Berdasarkan Filter Kalman dan Reversi Rata-rata

Penulis:ChaoZhang, Tanggal: 2023-12-29 17:23:14
Tag:

img

Gambaran umum

Strategi ini menggunakan konsep filter Kalman dan mean reverson untuk menangkap fluktuasi jangka pendek yang abnormal dalam harga saham dan menerapkan perdagangan arah saham. Strategi ini pertama-tama menetapkan model rasio harga antara saham dan indeks pasar, dan kemudian menggunakan teknik filter Kalman untuk memprediksi dan menyaring rasio. Sinyal perdagangan dihasilkan ketika rasio menyimpang dari tingkat normal. Selain itu, strategi ini juga menggabungkan penyaring volume untuk menghindari perdagangan palsu.

Prinsip Strategi

Ide inti dari strategi ini adalah untuk membangun model rasio harga antara harga saham itu sendiri dan harga indeks pasar. Rasio ini mencerminkan tingkat harga saham individu relatif terhadap pasar secara keseluruhan. Ketika rasio tinggi, dianggap bahwa saham individu terlalu dinilai dan sinyal jual dihasilkan. Ketika rasio rendah, dianggap bahwa saham individu undervalued dan sinyal beli dihasilkan.

Untuk menyaring sinyal rasio dengan mulus, strategi mengadopsi algoritma filter Kalman. Filter Kalman menimbang nilai yang benar-benar diamati dari rasio dengan nilai yang diprediksi dan memperbarui prediksi rasio secara real time. Dan menghitung nilai filter Kalman yang mulus. Sinyal perdagangan dihasilkan ketika nilai yang disaring melebihi 2 standar deviasi di atas atau di bawah tingkat normal.

Selain itu, strategi juga mempertimbangkan faktor volume perdagangan. sinyal perdagangan nyata hanya dihasilkan ketika volume perdagangan besar. ini menghindari beberapa perdagangan palsu.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah kelancaran efektif dan prediksi rasio harga menggunakan algoritma filter Kalman. Dibandingkan dengan model reversi rata-rata sederhana, filter Kalman dapat lebih mencerminkan perubahan dinamis harga, terutama ketika harga turun naik tajam. Ini memungkinkan strategi untuk mendeteksi anomali harga secara tepat waktu dan menghasilkan sinyal perdagangan yang akurat.

Kedua, kombinasi volume perdagangan juga meningkatkan penerapan praktis dari strategi. penyaringan volume perdagangan yang wajar membantu menghindari beberapa sinyal yang salah dan mengurangi biaya perdagangan yang tidak perlu.

Secara keseluruhan, strategi ini berhasil menggabungkan penyaringan Kalman, reversi rata-rata, analisis volume perdagangan dan teknik lainnya untuk membentuk strategi perdagangan kuantitatif yang kuat.

Analisis Risiko

Meskipun strategi ini secara teoritis dan teknis masuk akal, masih ada beberapa risiko potensial dalam penggunaan yang sebenarnya yang perlu diperhatikan.

Pertama adalah risiko model. Beberapa parameter kunci dalam model filter Kalman, seperti varians kebisingan proses, varians kebisingan observasi, dll, perlu diperkirakan berdasarkan data historis. Jika estimasi tidak akurat atau ada perubahan besar dalam kondisi pasar, itu akan menyebabkan penyimpangan dalam prediksi model.

Kedua adalah risiko biaya slippage. perdagangan yang sering akan menimbulkan biaya slippage yang lebih tinggi, yang akan mengikis pengembalian strategi. optimasi parameter dan penyaringan volume transaksi dapat mengurangi transaksi yang tidak perlu sampai batas tertentu.

Akhirnya, ada beberapa risiko pasar sistemik dalam mengikuti indeks pasar sebagai patokan. Ketika seluruh pasar berfluktuasi tajam, rasio harga antara saham individu dan pasar juga akan abnormal. Strategi kemudian akan menghasilkan sinyal yang salah. Kita dapat mempertimbangkan memilih indeks yang lebih stabil sebagai patokan.

Arahan Optimasi

Ada ruang untuk optimalisasi strategi lebih lanjut:

  1. Menggunakan model pembelajaran mendalam yang lebih kompleks untuk menyesuaikan dan memprediksi rasio harga.

  2. Mengoptimalkan aturan penyaringan volume perdagangan untuk mencapai pengaturan ambang yang lebih dinamis dan cerdas.

  3. Uji indeks pasar yang berbeda sebagai patokan strategi dan pilih indeks dengan fluktuasi yang lebih kecil dan lebih stabil.

  4. Menggabungkan analisis fundamental saham untuk menghindari perdagangan beberapa saham dengan fundamental yang memburuk secara signifikan.

  5. Menggunakan data intraday frekuensi tinggi untuk backtesting dan optimasi strategi.

Kesimpulan

Strategi ini berhasil menangkap fluktuasi harga jangka pendek yang abnormal di saham menggunakan model filter Kalman. Sementara itu, pengenalan sinyal volume juga meningkatkan kepraktisan strategi. Meskipun masih ada beberapa risiko model dan risiko pasar, ini adalah strategi perdagangan kuantitatif yang sangat menjanjikan. Ada ruang yang besar untuk perbaikan dan potensi aplikasi dalam model dan optimasi sinyal di masa depan.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © xXM3GAXx

//@version=5
strategy("My strategy", overlay=true)

//SPY or QQQ
context = request.security("BTC_USDT:swap", timeframe.period, input(close))
//our stock
particular = input(close)

//ratio
src = ta.roc(particular, 1) / math.abs(ta.roc(context, 1))

//kalman calculation
Sharpness = input.float(1.0)
K = input.float(1.0)


greencolor =  color.lime
redcolor =  color.red

velocity = 0.0
kfilt = 0.0

Distance = src - nz(kfilt[1], src)
Error = nz(kfilt[1], src) + Distance * math.sqrt(Sharpness*K/ 100)
velocity := nz(velocity[1], 0) + Distance*K / 100
kfilt := Error + velocity

//2 std devs up and down
upper = kfilt[1] + 2 * ta.stdev(kfilt, input(20))
lower = kfilt[1] - 2 * ta.stdev(kfilt, input(20))

//plotting for visuals
plot(kfilt, color=velocity > 0 ? greencolor : redcolor, linewidth = 2)
plot(upper)
plot(lower)
//plot(ta.ema(ta.roc(particular, 1)/ta.roc(context, 1), 5), color = #00ffff, linewidth=2)

//volume data
vol = volume
volema = ta.ema(volume, 10)

//buy when ratio too low
longCondition = kfilt<=lower and vol>=volema
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

//sell when ratio too high
shortCondition = kfilt>=upper and vol>=volema
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)


Lebih banyak