Strategi perdagangan kuantitatif berdasarkan penapisan Kalman dan regresi min


Tarikh penciptaan: 2023-12-29 17:23:14 Akhirnya diubah suai: 2023-12-29 17:23:14
Salin: 0 Bilangan klik: 846
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif berdasarkan penapisan Kalman dan regresi min

Gambaran keseluruhan

Strategi ini menggunakan idea riak Kalman dan kemerosotan nilai rata-rata untuk menangkap turun naik jangka pendek yang tidak normal dalam harga saham, untuk mencapai perdagangan yang diarahkan terhadap saham. Strategi ini terlebih dahulu membina model nisbah harga saham terhadap indeks pasaran, kemudian menggunakan teknik riak Kalman untuk membuat ramalan dan riak nisbah.

Prinsip Strategi

Idea teras strategi ini adalah membina model nisbah harga saham itu sendiri dengan harga indeks pasaran. Nisbah ini boleh mencerminkan tahap harga saham berbanding dengan keseluruhan pasaran. Apabila nisbahnya tinggi, menganggap saham itu terlalu ternilai, menghasilkan isyarat jual; Apabila nisbahnya rendah, menganggap saham itu terbebani, menghasilkan isyarat beli.

Untuk meratakan isyarat nisbah, strategi menggunakan algoritma Gelombang Kalman. Gelombang Kalman akan menimbang nilai pengamatan sebenar nisbah dengan nilai ramalan, memperbaharui ramalan nisbah secara langsung. Dan mengira nilai Gelombang Kalman yang halus.

Selain itu, strategi juga mempertimbangkan faktor jumlah transaksi. Isyarat perdagangan yang sebenar hanya dihasilkan apabila jumlah transaksi lebih besar, yang dapat mengelakkan beberapa perdagangan yang salah.

Analisis kelebihan strategi

Kelebihan utama strategi ini adalah penggunaan algoritma riak Kalman untuk menyelaraskan dan meramalkan nisbah harga dengan berkesan. Berbanding dengan model regresi rata-rata sederhana, riak Kalman dapat mencerminkan perubahan dinamik harga dengan lebih baik, terutama ketika harga mengalami turun naik yang kuat. Ini membolehkan strategi ini untuk mengesan keabnormalan harga tepat pada masanya dan menghasilkan isyarat perdagangan yang tepat.

Kedua, penggabungan jumlah transaksi juga meningkatkan kebolehgunaan strategi. Penapisan jumlah transaksi yang munasabah dapat membantu mengelakkan beberapa isyarat yang salah dan mengurangkan kos transaksi yang tidak perlu.

Secara keseluruhannya, strategi ini berjaya menggabungkan pelbagai teknik seperti Gelombang Kalman, Regression Mean, dan analisis jumlah dagangan untuk menghasilkan strategi dagangan kuantitatif yang lebih kuat.

Analisis risiko strategi

Walaupun strategi ini adalah baik secara teori dan teknikal, terdapat beberapa risiko yang perlu diperhatikan dalam penggunaan sebenar.

Pertama adalah risiko model. Beberapa parameter penting dalam model gelombang Kármán, seperti perbezaan kebisingan proses, perbezaan kebisingan pemerhatian, dan lain-lain, perlu dianggarkan berdasarkan data sejarah. Jika anggaran tidak tepat atau perubahan besar dalam keadaan pasaran, ini akan menyebabkan kecenderungan dalam ramalan model.

Kedua adalah risiko kos slip. Perdagangan yang kerap akan menghasilkan lebih banyak kos slip, yang akan merosakkan keuntungan strategi. Pengoptimuman parameter dan penapisan jumlah dagangan dapat mengurangkan perdagangan yang tidak perlu hingga tahap tertentu.

Akhirnya, terdapat risiko sistematik pasaran tertentu yang mengikuti indeks pasaran sebagai asas. Apabila pasaran secara keseluruhan mengalami turun naik yang teruk, nisbah harga saham individu terhadap pasaran juga akan berlaku secara tidak normal. Apabila ini berlaku, strategi akan memberi isyarat yang salah.

Arah pengoptimuman strategi

Strategi ini mempunyai ruang untuk pengoptimuman yang lebih lanjut:

  1. Menggunakan model pembelajaran mendalam yang lebih kompleks untuk menyesuaikan dan meramalkan nisbah harga. Ini dapat meningkatkan ketepatan dan ketangkasan model.

  2. Optimumkan peraturan penapisan jumlah urus niaga, untuk menetapkan tetes jumlah urus niaga yang lebih dinamik dan pintar. Ini dapat mengurangkan kemungkinan perdagangan yang salah.

  3. Uji indeks pasaran yang berbeza sebagai penanda aras strategi, pilih indeks yang lebih kecil dan lebih stabil. Ini dapat mengurangkan kesan risiko sistematik pasaran.

  4. Digabungkan dengan analisis asas saham, mengelakkan perdagangan saham yang mendasari kemerosotan yang jelas. Ini dapat menyaring yang lebih baik dari segi kualiti.

  5. Menggunakan data intraday frekuensi tinggi untuk mengesan dan mengoptimumkan strategi, yang dapat meningkatkan prestasi strategi secara langsung.

ringkaskan

Strategi ini berjaya menggunakan model Gelombang Kalman untuk menangkap turun naik jangka pendek yang tidak normal dalam harga saham. Pada masa yang sama, pengenalan isyarat jumlah dagangan juga meningkatkan kepraktisan strategi. Walaupun masih ada risiko model dan risiko pasaran, ini adalah strategi perdagangan kuantitatif yang sangat berprospek.

Kod sumber strategi
/*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)