- Persegi
- Strategi Avellaneda-Stoikov Khaled Tamim
Strategi Avellaneda-Stoikov Khaled Tamim
Penulis:
ChaoZhang, Tanggal: 2024-04-30
Tag:
Gambaran umum
Strategi Avellaneda-Stoikov adalah strategi perdagangan kuantitatif yang didasarkan pada model Avellaneda-Stoikov. Strategi ini menentukan sinyal beli dan jual dengan menghitung harga pertengahan, harga penawaran, dan harga permintaan sambil mempertimbangkan biaya transaksi.
Prinsip Strategi
Inti dari strategi ini adalah model Avellaneda-Stoikov yang menghitung harga penawaran dan harga permintaan melalui langkah-langkah berikut:
- Hitung harga pertengahan, yang merupakan rata-rata harga saat ini dan harga sebelumnya.
- Hitung harga penawaran dengan mengurangi akar kuadrat yang berisi Gamma, Sigma, T, dan k dari harga pertengahan, dan kemudian mengurangi biaya transaksi.
- Hitung harga permintaan dengan menambahkan suku akar kuadrat yang berisi Gamma, Sigma, T, dan k ke harga tengah, dan kemudian menambahkan biaya transaksi.
- Menghasilkan sinyal beli ketika harga di bawah harga bid dikurangi ambang batas M; Menghasilkan sinyal jual ketika harga di atas harga jual ditambah ambang batas M.
Keuntungan Strategi
- Strategi ini didasarkan pada model Avellaneda-Stoikov, yang merupakan strategi pembuatan pasar klasik dengan dasar teoritis yang kuat.
- Strategi ini memperhitungkan dampak biaya transaksi, membuatnya lebih realistis untuk situasi perdagangan yang sebenarnya.
- Dengan menetapkan ambang M, sensitivitas strategi dapat disesuaikan secara fleksibel untuk beradaptasi dengan lingkungan pasar yang berbeda.
- Logika strategi jelas dan mudah dipahami dan diterapkan.
Risiko Strategi
- Kinerja strategi tergantung pada pilihan parameter seperti Gamma, Sigma, T, k, dan M. Pengaturan parameter yang tidak benar dapat menyebabkan kinerja strategi yang buruk.
- Strategi ini tidak mempertimbangkan dampak likuiditas pasar. Dalam kasus likuiditas yang tidak cukup, mungkin tidak mungkin berdagang dengan harga yang diharapkan.
- Strategi ini adalah strategi perdagangan frekuensi tinggi yang membutuhkan latensi perdagangan yang rendah dan efisiensi eksekusi yang tinggi, sehingga sulit untuk diimplementasikan.
Arah Optimasi Strategi
- Memperkenalkan algoritma pembelajaran mesin untuk menyesuaikan parameter strategi secara dinamis untuk beradaptasi dengan kondisi pasar yang berbeda.
- Menggabungkan indikator teknis lainnya atau informasi tentang mikrostruktur pasar untuk meningkatkan akurasi sinyal.
- Mengoptimalkan algoritma pelaksanaan perdagangan untuk mengurangi biaya transaksi dan meningkatkan pengembalian strategi.
- Pertimbangkan untuk memperkenalkan modul manajemen risiko untuk mengontrol pengambilan strategi dan eksposur risiko.
Ringkasan
Khaled Tamim's Avellaneda-Stoikov Strategy adalah strategi perdagangan kuantitatif yang didasarkan pada model pembuatan pasar klasik. Strategi ini menghasilkan sinyal perdagangan dengan menghitung harga penawaran dan permintaan sambil mempertimbangkan biaya transaksi. Keuntungan strategi ini terletak pada landasan teoritis yang kuat, logika yang jelas, dan pertimbangan biaya transaksi. Namun, kinerja strategi tergantung pada pemilihan parameter dan membutuhkan efisiensi eksekusi yang tinggi.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Khaled Tamim's Avellaneda-Stoikov Strategy", overlay=true)
// Avellaneda-Stoikov model logic
avellanedaStoikov(src, gamma, sigma, T, k, M) =>
midPrice = (src + src[1]) / 2
sqrtTerm = gamma * sigma * sigma * T
// Add 0.1% fee to bid and ask quotes
fee = 0 // 0.1% fee
bidQuote = midPrice - k * sqrtTerm - (midPrice * fee)
askQuote = midPrice + k * sqrtTerm + (midPrice * fee)
longCondition = src < bidQuote - M
shortCondition = src > askQuote + M
[bidQuote, askQuote]
// Define strategy parameters
gamma = input.float(2, title="Gamma")
sigma = input.float(8, title="Sigma")
T = input.float(0.0833, title="T")
k = input.float(5, title="k")
M = input.float(0.5, title="M")
// Calculate signals
[bidQuote, askQuote] = avellanedaStoikov(close, gamma, sigma, T, k, M)
longCondition = close < bidQuote - M
shortCondition = close > askQuote + M
// Plot signals
plotshape(series=longCondition ? low : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition ? high : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Plot bid and ask prices
plot(bidQuote, title="Bid Price", color=color.blue, linewidth=1)
plot(askQuote, title="Ask Price", color=color.red, linewidth=1)
// Plot inventory level as bars in a separate graph
plot(strategy.netprofit, title="Inventory", color=color.new(color.purple, 80), style=plot.style_columns)
// Strategy logic
if (longCondition)
strategy.entry("Buy", strategy.long)
if (shortCondition)
strategy.entry("Sell", strategy.short)
Lebih banyak