Bagaimana cara melakukan simulasi trading dengan leverage?
Dasar
Seluruh skrip strategi yang ditulis dalam Skrip Pine™ v4 dan yang lebih baru secara alami mendukung simulasi trading leverage, yaitu meminjam dari broker untuk membuka posisi lebih besar dengan jumlah modal yang lebih kecil.
Dengan trading leverage, trader dapat membuka order dengan ukuran yang lebih besar daripada yang diperbolehkan oleh saldo akun mereka, selama akun trader mempertahankan margin yang diperlukan untuk mempertahankan pinjaman tersebut.
CATATAN: Trading leverage memperbesar potensi keuntungan dan kerugian. Trader harus selalu berhati-hati dan menilai tingkat risiko mereka secara menyeluruh sebelum menggunakan leverage dalam trading live.
Strategi Skrip Pine™ menentukan jumlah leverage yang diterapkan pada simulasi trading buy dan sell melalui input "Margin untuk posisi buy" dan "Margin untuk posisi sell" di tab "Properti" pada pengaturan skrip. Input ini menentukan persentase minimum nilai posisi yang diperlukan dalam saldo akun untuk strategi melakukan simulasi pembukaan dan mempertahankan posisi.
Misalnya, nilai "Margin untuk posisi buy" sebesar 20% berarti bahwa simulasi memerlukan 20% dari setiap posisi buy untuk ditutupi oleh saldo strategi yang tersedia, dan 80% sisanya ditanggung oleh emulated broker. Karena setiap posisi buy hanya memerlukan seperlima nilainya untuk didanai oleh akun, strategi ini dapat mensimulasikan posisi buy hingga lima kali lipat dari saldo yang tersedia. Dengan kata lain, tingkat margin ini (1:5) meningkatkan leverage strategi menjadi 5:1.
Jika trading dengan tingkat margin ini mengalami kerugian cukup banyak sehingga membahayakan dana broker, emulated broker akan memicu peristiwa Margin Call dan melikuidasi sebagian atau seluruh posisi yang terbuka untuk mengamankan modal. Lihat bagian di bawah untuk informasi lebih lanjut.
CATATAN: Pemrogram dapat menentukan nilai margin bawaan dalam skrip strategi mereka melalui parameter `margin_long` dan `margin_short` dari fungsi `strategy()`.
Detail
Ketika seorang trader meminjam dari broker untuk meningkatkan daya beli, broker akan mengharuskan mereka memiliki jumlah modal minimum di akunnya untuk digunakan sebagai jaminan, atau dikenal sebagai margin. Dengan kata lain, margin adalah bagian posisi yang harus ditutupi oleh trader dengan ekuitasnya sendiri agar broker dapat menutupi sisanya.
Margin yang dialokasikan untuk suatu trade adalah produk dari nilai pasar posisi dan rasio margin (yaitu kebalikan dari rasio leverage yang diinginkan).
Misalkan kurs EURUSD saat ini adalah 1,05, dan kita ingin melakukan simulasi pembelian lot standar (100.000 unit) tanpa meminjam dana dari broker (yaitu menggunakan leverage 1:1). Dalam hal ini, kami menetapkan "Margin untuk posisi buy" menjadi 100%, menginstruksikan strategi untuk menempatkan order hanya dengan menggunakan dana yang tersedia. Oleh karena itu, akun tersebut harus memiliki setidaknya 105.000 USD (1,05 * 100.000) untuk memfasilitasi trade tersebut.
Sekarang, misalkan kita ingin melakukan simulasi trading yang sama dengan leverage 20:1. Dalam hal ini, rasio marginnya adalah 1:20 (5%). Menetapkan "Margin untuk posisi buy" menjadi 5% menetapkan bahwa saldo akun harus minimal 5% dari nilai posisi untuk mensimulasikan penerimaan 95% lainnya dari broker. Saldo akun minimum (margin) yang diperlukan untuk memfasilitasi trade ini adalah 5% dari 105.000 (5.250 USD).
Berbeda dengan contoh yang tidak mengandalkan dana broker, membuka posisi dengan leverage 20:1 di dunia nyata membawa risiko kerugian bagi pemegang akun dan broker. Jika posisi terbuka mengalami kerugian lebih dari yang dapat ditanggung oleh saldo akun, broker akan meminta lebih banyak dana dari trader atau secara paksa melikuidasi sebagian/seluruh posisi yang terbuka untuk menutupi kerugian. Penguji Strategi mewakili skenario likuidasi paksa sebagai peristiwa "Margin Call".
Emulator Broker kami menangani skenario ini dalam hasil strategi dengan melikuidasi empat kali jumlah yang diperlukan untuk menutupi kerugian dalam simulasi, mencegah kejadian Margin Call yang konstan pada bar chart berikutnya.
CATATAN: Trading sell biasanya memerlukan peminjaman lembar, unit, dll. dari broker dan kemudian menjualnya dengan harga lain. Nilai posisi mewakili biaya pembelian sejumlah lembar, unit, dll. yang setara untuk mengembalikannya. Dengan demikian, trading sell akan kehilangan uang ketika harga naik. Berbeda dengan posisi buy, potensi kerugian pada posisi sell tidak terbatas, karena tidak ada batasan pasti seberapa jauh harga suatu instrumen bisa naik. Oleh karena itu, bahkan dengan margin 100%, posisi short menghadapi risiko likuidasi paksa.
Strategi juga dapat mensimulasikan persyaratan margin yang tidak konvensional. Misalnya, seseorang dapat menggunakan nilai "Margin untuk posisi buy" sebesar 200%, yang berarti akun simulasi harus memiliki setidaknya dua kali nilai posisi untuk memfasilitasi trade dan mempertahankan posisi. Pengaturan ini secara efektif membatasi ukuran posisi maksimum hingga 50% dari ekuitas strategi.
Penting untuk dicatat bahwa pengaturan margin dari skrip strategi memungkinkannya memvalidasi ukuran posisi. Saat menonaktifkan persyaratan margin dengan menetapkannya ke 0%, skrip dapat mensimulasikan posisi dengan ukuran berapa pun, terlepas dari modal aktual yang tersedia dalam simulasi, sehingga dapat memberikan hasil yang tidak sesuai. Oleh karena itu, kami tidak menyarankan pengaturan nilai "Margin untuk posisi buy" atau "Margin untuk posisi sell" menjadi 0%.
Kehabisan dana
Peringatan utama dalam trading leverage adalah bahwa hal itu meningkatkan risiko kehabisan dana. Posisi yang ditutup secara paksa oleh broker secara substansial mengurangi kemampuan trader untuk pulih dari kerugian dan dapat mempercepat penipisan modal dari akun mereka. Penguji Strategi mewakili posisi yang ditutup secara paksa sebagai peristiwa "Margin Call".
Rumus yang mengatur kapan terjadinya peristiwa Margin Call adalah:
CurrentEquity <= MarginRequired
Nilai CurrentEquity adalah jumlah modal yang dimiliki strategi simulasi pada saat tertentu, termasuk keuntungan atau kerugian dari posisi terbuka. MarginRequired adalah modal yang dibutuhkan akun untuk mempertahankan posisi. Ketika CurrentEquity tidak cukup untuk membiayai posisi terbuka, peristiwa Margin Call akan terjadi.
Rumus CurrentEquity adalah PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit, dimana:
- PriceChange adalah selisih antara harga saat ini dan harga entri dari posisi yang terbuka.
- Direction adalah 1 jika posisinya buy atau -1 jika sell.
- PointValue adalah jumlah uang yang ditunjukkan oleh pergerakan harga dalam bilangan bulat. Untuk sebagian besar simbol, nilainya adalah 1, dengan pengecualian utama adalah kontrak berjangka, dimana perubahan dari 100 ke 101 dapat berarti bahwa nilainya berubah sebesar 50 USD, bukan 1 USD, dalam hal ini PointValue akan menjadi 50.
- AbsPositionSize adalah ukuran posisi saat ini. Nilai ini selalu positif, meskipun skrip strategi mewakili trading sell dengan angka negatif pada chart.
- InitialCapital + NetProfit adalah jumlah total ekuitas strategi sebelum membuka posisi saat ini.
Rumus untuk MarginRequired adalah LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100), dimana LastPrice adalah harga chart untuk penghitungan, dan (Margin Percent / 100) adalah koefisien yang kita kalikan untuk mendapatkan porsi yang dibutuhkan pemegang akun dari posisi yang terbuka.
Untuk mendemonstrasikan perhitungan ini, bayangkan kita mensimulasikan strategi dengan 1.000 USD sebagai "Modal awal" dan nilai "Margin untuk posisi buy" sebesar 20% (leverage 5:1) untuk membeli 40 saham NASDAQ:GOOG dengan harga 100 USD.
Jika harga saham turun menjadi 95 USD, CurrentEquity adalah PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit = (95 - 100) * 1 * 1 * 40 + 1000 + 0 = 800, dan MarginRequired adalah LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100) = 95 * 1 * 40 * 0.2 = 760. Strategi masih dapat mempertahankan posisi terbuka pada harga tersebut, sehingga tidak terjadi peristiwa Margin Call.
Lalu, misalkan harganya semakin turun hingga mencapai nilai 90 USD. Nilai CurrentEquity yang baru adalah (90 - 100) * 1 * 1 * 40 + 1000 + 0 = 600, dan MarginRequired sekarang menjadi 90 * 1 * 40 * 0.2 = 720. Karena CurrentEquity tidak lagi cukup untuk menutupi MarginRequired, strategi ini menciptakan peristiwa Margin Call dan secara paksa melikuidasi sebagian posisi.
Memvisualisasikan harga margin
Cara termudah untuk memvisualisasikan harga di mana peristiwa Margin Call dapat terjadi adalah dengan menggunakan variabel bawaan `strategy.margin_liquidation_price` dalam kode sumber strategi Skrip Pine™. Menambahkan baris kode ini ke strategi Skrip Pine™ v5 mana pun akan menampilkan harga likuidasi sebagai garis biru pada chart:
plot(strategy.margin_liquidation_price)
Jika perlu menghitung harga secara manual, persamaan dari bagian sebelumnya dapat diubah menjadi rumus berikut:
MarginLiquidationPriceRaw = ((InitialCapital + NetPofit) / (PointValue * AbsPositionSize) - Direction * EntryPrice) / (MarginPercent / 100 - Direction)
Nilai MarginLiquidationPriceRaw yang dihasilkan kemudian dibulatkan ke atas (untuk posisi sell) atau ke bawah (untuk posisi buy) ke harga terdekat yang habis dibagi dengan nilai tick minimum simbol.
Perhatikan bagaimana seluruh ekspresi dibagi dengan (MarginPercent / 100 - Direction). Jika arahnya Buy dan MarginLong% adalah 100, pembaginya adalah 0, dan MarginLiquidationPriceRaw yang dihasilkan tidak akan dapat dicapai karena pembagian dengan nol. Perilaku ini konsisten dengan anggapan bahwa broker tidak dapat secara paksa melikuidasi posisi Long dengan margin 100%.
Dengan strategi hipotetis yang dijelaskan pada bagian sebelumnya, perhitungan ini akan menghasilkan: ((1000 + 0) / (1 * 40) - 100) / (20 / 100 - 1) = 93,75, yang merupakan harga pertama yang di mana akan terjadi margin call. Karena 93,75 habis dibagi ukuran tick GOOG sebesar 0,01, pembulatan berdasarkan tick minimum tidak berpengaruh dalam skenario ini.
Perhatikan bahwa peristiwa Margin Call tidak dijamin akan terpicu pada harga yang dihitung selama simulasi.
Menghitung ukuran likuidasi
Jumlah posisi presisi yang dilikuidasi oleh peristiwa Margin Call bergantung pada harga di mana peristiwa tersebut terjadi. Seperti disebutkan di atas, emulator broker melikuidasi empat kali lipat jumlah yang diperlukan untuk menutupi kerugian, memberikan perlindungan untuk memastikan peristiwa ini tidak terjadi secara berurutan. Kami menggunakan algoritma berikut untuk menghitung jumlah likuidasi:
1. Menghitung Uang yang Dihabiskan, misalnya jumlah modal yang dihabiskan untuk membuka posisi.
Ukuran Posisi * Harga Masuk
2. Menghitung Nilai Pasar Sekuritas (MVS).
Ukuran Posisi * Harga Saat Ini
3. Menghitung Keuntungan Terbuka. Jika arah trade adalah sell dan Keuntungan Terbuka adalah angka positif, hasilnya harus tetap negatif, jadi kami mengalikan nilai absolut dari perhitungan kami dengan -1.
ABS(MVS - Uang yang Dihabiskan ) * -1
4. Menghitung Ekuitas, yaitu uang yang tersedia untuk simulasi.
Modal Awal + keuntungan Bersih + KeuntunganTerbuka
5. Konversi Persen Margin ke Rasio Margin.
Persen Margin / 100
6. Menghitung Margin, yaitu jumlah uang yang dibutuhkan untuk menutupi bagian dari posisi terbuka seorang trader.
MVS * Rasio Margin
7. Menghitung Dana yang Tersedia, yaitu jumlah uang yang hilang yang tidak dapat ditutup oleh trader dengan ekuitas mereka saat ini.
Ekuitas - Margin
8. Menghitung jumlah total uang yang hilang dari trader.
Dana yang Tersedia / Rasio Margin
9. Menghitung berapa lembar, unit, dll yang harus dilikuidasi untuk menutupi kerugian. Kami memotong nilai ke titik desimal yang sama dengan ukuran kontrak minimum untuk simbol saat ini.
TRUNCATE(Langkah #8 / Harga Saat Ini)
10. Menghitung berapa lembar, unit, dll yang akan dilikuidasi broker untuk menutupi kerugian. Emulated Broker menjual 4 kali dari jumlah yang diperlukan untuk memastikan margin call tidak terus-menerus terpicu jika kerugian berlanjut. Nilai ini akan positif untuk trading sell karena broker membeli unit untuk menutupi kerugian daripada menjualnya.
Langkah #9 * 4
Untuk memeriksa perhitungan ini secara mendetail, mari tambahkan Strategi Supertrend bawaan ke chart NASDAQ:TSLA pada kerangka waktu "1D" dan tetapkan "Ukuran order" menjadi 300% dari ekuitas dan "Margin untuk posisi buy" menjadi 25%.
Entri pertama kita terjadi pada pembukaan bar pada 16 Sep 2010. Kita membeli 682.438 unit (Ukuran posisi) seharga 4,43 USD (Harga masuk). Kemudian, pada 23 Sep 2010, ketika harga berada di 3,9 (Harga saat ini), emulator secara paksa melikuidasi 111.052 unit melalui peristiwa Margin Call.
1. Uang yang dihabiskan: 682438 * 4,43 = 3023200,34
2. MVS: 682438 * 3,9 = 2661508,2
3. Keuntungan Terbuka: -361692.14
4. Ekuitas: 1000000 + 0 - 361692.14 = 638307.86
5. Rasio Margin: 25 / 100 = 0,25
6. Margin: 2661508,2 * 0,25 = 665377,05
7. Dana yang Tersedia: 638307.86 - 665377.05 = -27069.19
8. Dana yang Hilang: -27069.19 / 0.25 = -108276.76
9. Lembar Saham untuk menutupi kerugian: TRUNCATE(-108276.76 / 3.9) = TRUNCATE(-27763.27) = -27763
10. Ukuran Margin Call: -27763 * 4 = - 111052