Strategi investasi kuantitatif berdasarkan tanggal pembelian bulanan

Penulis:ChaoZhang, Tanggal: 2023-11-24 14:10:23
Tag:

img

Gambaran umum

Ide inti dari strategi ini adalah untuk menemukan tanggal pembelian terbaik setiap bulan dengan membeli aset digital pada tanggal itu dan menjualnya pada akhir bulan, untuk mencapai pengembalian investasi yang optimal.

Prinsip Strategi

Strategi ini berjalan berdasarkan tanggal pembelian bulanan dan tanggal penjualan yang ditentukan pengguna. Ini pergi panjang pada tanggal pembelian dengan membeli aset, dan menutup posisi pada tanggal penjualan jika ditetapkan. Jika tidak, itu menutup posisi pada tanggal akhir strategi. Ini dapat menguji perbedaan keuntungan dari tanggal pembelian bulanan yang berbeda.

Logika untuk sinyal beli adalah: jika itu adalah tanggal pembelian yang ditentukan pengguna dan dalam kisaran tanggal efektif strategi, pergi panjang.

Logika untuk sinyal posisi dekat adalah: jika tanggal penjualan ditetapkan dan itu adalah tanggal penjualan sekarang, posisi dekat; jika tidak ada tanggal penjualan tetapi setelah tanggal akhir strategi, juga posisi dekat.

Keuntungan dari Strategi

  1. Dapat menemukan tanggal fluktuasi harga terbesar setiap bulan untuk mendapatkan hasil yang berlebihan melalui perdagangan intraday frekuensi tinggi
  2. Dapat mengidentifikasi titik pembelian optimal dengan membandingkan pola keuntungan dari tanggal pembelian yang berbeda
  3. Dapat menentukan apakah tanggal pembelian optimal berubah berdasarkan peristiwa utama bulan
  4. Dapat menyeimbangkan perdagangan jangka pendek dan jangka panjang dengan menetapkan tanggal penjualan yang berbeda

Risiko dan Solusi

  1. Risiko penurunan harga setelah membeli

    • Atur stop loss untuk membatasi kerugian maksimum
    • Pilih aset dengan likuiditas tinggi untuk menghindari perubahan harga yang ekstrim
  2. Perubahan tanggal pembelian optimal

    • Memantau riwayat perubahan data dan menyesuaikan titik beli optimal tepat waktu
    • Mengurangi ukuran posisi selama periode berisiko tinggi
  3. Kerugian yang disebabkan oleh pengaturan parameter yang salah

    • Uji parameter yang berbeda secara bertahap dan bandingkan perbedaan keuntungan
    • Pilih rentang waktu yang representatif untuk pengujian

Arahan Optimasi

  1. Pertimbangkan lebih banyak faktor dalam menentukan titik masuk

    • Pertimbangkan dampak dari peristiwa berita utama bulan pada harga
    • Menganalisis tren harga aset digital terkait
    • Tambahkan model pembelajaran mesin untuk menentukan waktu optimal
  2. Mengoptimalkan mekanisme manajemen posisi

    • Tentukan dinamika mengambil keuntungan untuk menutup posisi
    • Sesuaikan ukuran posisi berdasarkan volatilitas
    • Pertimbangkan posisi kepemilikan di berbagai periode
  3. Ekspansi ke pasar perdagangan lainnya

    • Terapkan pada lebih banyak pasangan perdagangan mata uang digital
    • Terapkan untuk saham, forex dll.
    • Menetapkan strategi arbitrase lintas pasar

Ringkasan

Strategi ini menemukan tanggal perubahan harga intraday terbesar setiap bulan dengan menguji perbedaan keuntungan dari tanggal pembelian yang berbeda. Ini dapat membawa keuntungan yang berlebihan bagi investor yang mencari keuntungan dari perdagangan intraday frekuensi tinggi. Perbaikan lebih lanjut dalam menentukan waktu masuk, manajemen posisi dan memperluas ruang lingkup aplikasi akan meningkatkan stabilitas dan profitabilitas strategi.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © dennis.decoene

//@version=4
strategy(title="Buy and Hold, which day of month is best to buy?", overlay=true)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group="Starting From")
     
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group="Starting From")
     
startYear = input(title="Start Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Starting From")

endDate = input(title="End Date", type=input.integer,
     defval=2, minval=1, maxval=31, group="Until")
endMonth = input(title="End Month", type=input.integer,
     defval=10, minval=1, maxval=12, group="Until")
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Until")

entryday = input(title="Entry Day", type=input.integer,
     defval=26, minval=1, maxval=31, tooltip="When to enter (buy the asset) each month")
exitday = input(title="Exit Day", type=input.integer,
     defval=6, minval=1, maxval=31, tooltip="When to exit (sell the asset) each month")
     
useExitDay= input(title="Close position on exit day?", type=input.bool, defval=false, tooltip="Use the Exit Day to close each months position it true or close at the end of the period (if false)")
     
isEntryDay= (dayofmonth(time)==entryday)
isExitDay= (dayofmonth(time)==exitday-1)


inDateRange = true

if (isEntryDay and inDateRange)
    strategy.entry(id="Buy", long=true)
    
if (isExitDay and useExitDay)
    strategy.close_all()


// Exit open market position when date range ends
if (not inDateRange and not useExitDay)
    strategy.close_all()
     

Lebih banyak