Strategi Perdagangan Fraksi Tetap

Penulis:ChaoZhang, Tanggal: 2023-09-22 16:51:25
Tag:

Gambaran umum

Ide inti dari strategi ini adalah untuk menjaga persentase investasi dari aset dalam portofolio tetap. Ketika nilai aset meningkat, investor menjual beberapa untuk mempertahankan persentase. Ketika turun, investor membeli lebih banyak untuk mengisi persentase. Strategi ini cocok untuk aset yang relatif stabil.

Logika Strategi

Strategi pertama menetapkan parameter persentase investasi persen_invested, yaitu persentase aset dalam portofolio.

  1. Ketika posisi adalah 0, hitung kontrak untuk membeli berdasarkan persentase_diinvestasikan dan modal awal.

  2. Saat memegang, bandingkan persentase jumlah yang diinvestasikan dengan persentase ekuitas yang diinvestasikan. Jika terlalu rendah, beli lebih banyak kontrak. Jika terlalu tinggi, jual kontrak.

  3. Ulangi langkah 2 untuk menjaga persentase investasi tetap.

Keuntungan

  • Memungkinkan kepemilikan jangka panjang aset stabil tanpa perdagangan yang sering.

  • Keuntungan dari fluktuasi aset.

  • Diversifikasi investasi di seluruh aset yang tidak berkorelasi mengurangi risiko portofolio.

  • Mencegah kerugian penuh dengan menghindari investasi penuh sebelum gelembung meledak.

Analisis Risiko

  • Risiko kerugian yang lebih tinggi untuk aset volatile.

  • Perdagangan yang sering berarti biaya yang lebih.

  • Re-balancing mungkin terlambat, kehilangan titik masuk/keluar terbaik.

  • Pengaturan persentase yang salah dapat menyebabkan overtrading.

Risiko dapat dikurangi dengan:

  1. Memilih aset dengan hati-hati untuk menghindari volatilitas tinggi.

  2. Mengoptimalkan logika rebalancing untuk mengurangi frekuensi perdagangan.

  3. Menetapkan unit perubahan posisi minimum untuk mencegah overtrading.

  4. Mengoptimalkan pengaturan persentase untuk mencegah konsentrasi yang berlebihan.

Arahan Optimasi

Strategi dapat ditingkatkan dengan:

  1. Menambahkan logika stop loss untuk memotong kerugian di ambang batas tertentu.

  2. Menambahkan validasi sinyal sebelum rebalancing untuk menghindari titik non-trend.

  3. Persentase kustomisasi, stop loss rasio per aset.

  4. Menambahkan modul optimasi parameter untuk menemukan parameter optimal.

  5. Mendukung penutupan posisi untuk berinvestasi kembali ke aset lain untuk alokasi dinamis.

Ringkasan

Strategi persentase tetap menyediakan diversifikasi dan pengendalian risiko. tetapi memiliki risiko seperti re-balancing yang tertinggal dan kerugian aset yang tidak stabil. perbaikan lebih lanjut untuk logika stop loss dan validasi sinyal dapat meningkatkan stabilitas.


/*backtest
start: 2022-09-21 00:00:00
end: 2022-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// strategy("Fixed Fractioning", overlay=true, initial_capital=100000.0)

percent_invested=input(50.0,title="Percent Invested",maxval=100.0,minval=0.0)
fraction_invested=percent_invested/100

from_day=input(1,title="From Day",maxval=31,minval=1)
from_month=input(1,title="From Month",maxval=12,minval=1)
from_year=input(2017,title="From Year",maxval=2018,minval=1900)

to_day=input(1,title="To Day",maxval=31,minval=1)
to_month=input(1,title="To Month",maxval=12,minval=1)
to_year=input(2018,title="To Year",maxval=2018,minval=1900)

// === FUNCTION EXAMPLE === from: https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/
start     = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish    = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"
strategy.initial_capital = 50000
if strategy.position_size==0 and window()
    contracts_to_buy=(fraction_invested*strategy.initial_capital)/close
    strategy.entry("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)

invested=(strategy.position_size*close)/strategy.equity
if invested<fraction_invested and window()
    contracts_to_buy=((fraction_invested-invested)*strategy.equity)/close
    strategy.order("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)

else 
    if invested>fraction_invested and window()
        contracts_to_sell=((invested-fraction_invested)*strategy.equity)/close
        strategy.order("sell",long=false,qty=contracts_to_sell,limit=close,when=contracts_to_sell>1)




Lebih banyak