Strategi Perdagangan Nisbah Transitif Berdasarkan Penapis Kalman dan Pembalikan Purata

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

img

Ringkasan

Strategi ini menggunakan konsep penapis Kalman dan pembalikan purata untuk menangkap turun naik jangka pendek yang tidak normal dalam harga saham dan melaksanakan perdagangan arah saham. Strategi ini mula-mula menubuhkan model nisbah harga antara saham dan indeks pasaran, dan kemudian menggunakan teknik penapis Kalman untuk meramalkan dan menapis nisbah. Isyarat perdagangan dihasilkan apabila nisbah menyimpang dari tahap normal. Di samping itu, strategi ini juga menggabungkan penapis jumlah untuk mengelakkan perdagangan palsu.

Prinsip Strategi

Idea teras strategi ini adalah untuk mewujudkan model nisbah harga antara harga saham itu sendiri dan harga indeks pasaran. Nisbah ini mencerminkan tahap harga saham individu berbanding dengan pasaran keseluruhan. Apabila nisbahnya tinggi, ia dianggap bahawa stok individu terlalu dinilai dan isyarat jual dihasilkan. Apabila nisbahnya rendah, ia dianggap bahawa stok individu undervalued dan isyarat beli dihasilkan.

Untuk menapis isyarat nisbah dengan lancar, strategi mengguna algoritma penapis Kalman. Penapis Kalman menimbang nilai yang benar-benar diperhatikan nisbah dengan nilai yang diramalkan dan mengemas kini ramalan nisbah dalam masa nyata. Dan mengira nilai penapis Kalman yang lancar. Isyarat perdagangan dihasilkan apabila nilai yang ditapis melebihi 2 penyimpangan standard di atas atau di bawah tahap normal.

Selain itu, strategi ini juga mempertimbangkan faktor jumlah dagangan. Isyarat dagangan sebenar hanya dihasilkan apabila jumlah dagangan besar. Ini mengelakkan beberapa dagangan palsu.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah kelancaran dan ramalan nisbah harga yang berkesan menggunakan algoritma penapis Kalman. Berbanding dengan model pembalikan purata yang mudah, penapis Kalman dapat mencerminkan perubahan dinamik harga dengan lebih baik, terutamanya apabila harga turun naik dengan tajam. Ini membolehkan strategi untuk mengesan anomali harga dengan tepat pada masanya dan menghasilkan isyarat perdagangan yang tepat.

Kedua, gabungan jumlah dagangan juga meningkatkan penerapan praktikal strategi. penapisan jumlah dagangan yang munasabah membantu mengelakkan beberapa isyarat yang salah dan mengurangkan kos dagangan yang tidak perlu.

Secara keseluruhan, strategi ini berjaya menggabungkan penapisan Kalman, pembalikan purata, analisis jumlah dagangan dan teknik lain untuk membentuk strategi dagangan kuantitatif yang kukuh.

Analisis Risiko

Walaupun strategi itu secara teori dan teknikal, masih ada beberapa risiko berpotensi dalam penggunaan sebenar yang memerlukan perhatian.

Yang pertama adalah risiko model. Beberapa parameter utama dalam model penapis Kalman, seperti varians bunyi proses, varians bunyi pemerhatian, dan lain-lain, perlu dianggarkan berdasarkan data sejarah. Jika anggaran tidak tepat atau terdapat perubahan besar dalam keadaan pasaran, ia akan membawa kepada penyimpangan dalam ramalan model.

Kedua adalah risiko kos slippage. Perdagangan yang kerap akan menimbulkan kos slippage yang lebih tinggi, yang akan mengikis pulangan strategi. Pengoptimuman parameter dan penapisan jumlah transaksi dapat mengurangkan transaksi yang tidak perlu hingga tahap tertentu.

Akhirnya, terdapat beberapa risiko pasaran sistemik dalam mengikuti indeks pasaran sebagai penanda aras. Apabila keseluruhan pasaran turun naik dengan tajam, nisbah harga antara saham individu dan pasaran juga akan tidak normal. Strategi itu kemudian akan menghasilkan isyarat yang salah. Kita boleh mempertimbangkan memilih indeks yang lebih stabil sebagai penanda aras.

Arahan pengoptimuman

Terdapat ruang untuk pengoptimuman lagi strategi:

  1. Menggunakan model pembelajaran mendalam yang lebih kompleks untuk menyesuaikan dan meramalkan nisbah harga.

  2. Mengoptimumkan peraturan penapisan jumlah dagangan untuk mencapai tetapan ambang yang lebih dinamik dan pintar.

  3. Uji indeks pasaran yang berbeza sebagai penanda aras strategi dan pilih indeks dengan turun naik yang lebih kecil dan lebih stabil.

  4. Menggabungkan analisis asas saham untuk mengelakkan perdagangan beberapa saham dengan asas yang merosot dengan ketara.

  5. Menggunakan data intraday frekuensi tinggi untuk pengujian dan pengoptimuman strategi. Ini meningkatkan prestasi perdagangan sebenar strategi.

Kesimpulan

Strategi ini berjaya menangkap turun naik harga jangka pendek yang tidak normal dalam saham menggunakan model penapis Kalman. Sementara itu, pengenalan isyarat jumlah juga meningkatkan kepraktisan strategi. Walaupun masih ada beberapa risiko model dan risiko pasaran, ini adalah strategi perdagangan kuantitatif yang sangat menjanjikan. Terdapat ruang yang besar untuk peningkatan dan potensi aplikasi dalam model dan pengoptimuman isyarat 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 lanjut