Strategi Perdagangan Fraksi Tetap

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

Ringkasan

Idea utama strategi ini adalah untuk mengekalkan peratusan pelaburan aset dalam portfolio tetap. Apabila nilai aset meningkat, pelabur menjual beberapa untuk mengekalkan peratusan. Apabila jatuh, pelabur membeli lebih banyak untuk mengisi peratusan. Strategi ini sesuai untuk aset yang agak stabil.

Logika Strategi

Strategi pertama menetapkan parameter peratusan pelaburan peratusan_invested, iaitu peratusan aset dalam portfolio.

  1. Apabila kedudukan adalah 0, mengira kontrak untuk membeli berdasarkan peratusan_dilaburkan dan modal awal.

  2. Apabila memegang, bandingkan jumlah pelaburan peratusan pelaburan kepada ekuiti peratusan_invested. Jika terlalu rendah, beli lebih banyak kontrak. Jika terlalu tinggi, jual kontrak.

  3. Ulangi langkah 2 untuk mengekalkan peratusan pelaburan tetap.

Kelebihan

  • Membolehkan pemegang aset stabil jangka panjang tanpa perdagangan yang kerap.

  • Keuntungan rebalancing berkala daripada turun naik aset.

  • Pembahagian pelaburan di seluruh aset yang tidak berkaitan mengurangkan risiko portfolio.

  • Menghalang kerugian penuh dengan mengelakkan pelaburan penuh sebelum gelembung pecah.

Analisis Risiko

  • Risiko kerugian yang lebih tinggi untuk aset yang tidak menentu.

  • Perdagangan yang kerap bermakna bayaran lebih.

  • Pengimbangan semula mungkin tertunda, kehilangan titik masuk / keluar terbaik.

  • Tetapan peratusan yang tidak betul boleh menyebabkan overtrading.

Risiko boleh dikurangkan dengan:

  1. Memilih aset dengan teliti untuk mengelakkan turun naik yang tinggi.

  2. Mengoptimumkan logik rebalancing untuk mengurangkan kekerapan perdagangan.

  3. Menetapkan unit perubahan kedudukan minimum untuk mengelakkan overtrading.

  4. Mengoptimumkan seting peratusan untuk mengelakkan kepekatan berlebihan.

Arahan pengoptimuman

Strategi ini boleh ditingkatkan dengan:

  1. Menambah logik stop loss untuk mengurangkan kerugian pada ambang tertentu.

  2. Menambah pengesahan isyarat sebelum menyeimbangkan semula untuk mengelakkan titik bukan trend.

  3. Sesuaikan peratusan, stop loss per aset.

  4. Menambah modul pengoptimuman parameter untuk mencari parameter optimum.

  5. Menyokong penutupan kedudukan untuk melabur semula dalam aset lain untuk peruntukan dinamik.

Ringkasan

Strategi peratusan tetap menyediakan kepelbagaian dan kawalan risiko. Tetapi ia mempunyai risiko seperti keseimbangan semula yang tertinggal dan kerugian aset yang tidak menentu. Penambahbaikan lanjut untuk logik kehilangan berhenti dan pengesahan isyarat dapat meningkatkan kestabilan.


/*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 lanjut