Bagaimana untuk mensimulasikan dagangan dengan leveraj?

Asas

Semua skrip strategi yang ditulis dalam Pine Script™ v4 dan ke atas secara asasnya menyokong simulasi dagangan leveraj, iaitu meminjam dari broker untuk membuka posisi-posisi lebih besar dengan modal yang lebih kecil. 

Dengan dagangan leveraj, adalah dibolehkan untuk pedagang meletakkan pesanan dengan saiz lebih besar daripada baki akaun mereka, dengan syarat akaun pedagang mengekalkan margin yang diperlukan untuk menyokong pinjaman. 

NOTA: Dagangan leveraj menggandakan potensi keuntungan dan kerugian. Pedagang hendaklah sentiasa berhati-hati dan mengakses risiko mereka dengan menyeluruh sebelum menggunakan leveraj dalam dagangan langsung. 

Strategi Pine Script™ menentukan jumlah leveraj yang diletakkan pada dagangan simulasi panjang dan singkat (long/short trade) melalui input "Margin untuk posisi panjang" dan "Margin untuk posisi singkat" dalam tab "Sifat" pada tetapan skrip. Input-input ini mendefinasikan peratusan minimum untuk satu nilai posisi yang diperlukan dalam baki akaun untuk strategi mensimulasikan posisi buka dan mengekalkan posisi.

Sebagai contoh, satu nilai 20% "Margin untuk posisi panjang" bermaksud simulasi memerlukan 20% dari mana-mana posisi panjang untuk dirangkumi oleh baki tersedia strategi, dengan baki 80% dirangkumi oleh broker dipilih. Disebabkan mana-mana posisi panjang hanya memerlukan satu per lima daripada nilainya untuk dibiayai oleh akaun, strategi boleh mensimulasikan posisi panjang sehingga lima kali baki tersedia. Dalam terma lain, had marjin ini (1:5) meningkatkan leveraj strategi kepada 5:1.

Jika satu dagangan dengan had margin ini kehilangan cukup wang untuk meletakkan dana broker dalam risiko, broker akan mencetuskan peristiwa Panggilan Margin (Margin Call) dan mencairkan beberapa atau semua posisi buka untuk membebaskan modal. Lihat bahagian di bawah untuk lebih maklumat. 

NOTA: Pengaturcara boleh mendefinasikan nilai margin lalai dalam skrip strategi mereka melalui parameter `margin_long` dan `margin_short` untuk fungsi `strategy()`. 

Butiran

Apabila seorang pedagang meminjam daripada broker untuk menaikkan kuasa belian, broker itu akan memerlukan dari mereka satu jumlah modal minimum dalam akaun mereka untuk digunakan sebagai cagaran, yang juga dikenali sebagai margin. Dalam kata lain, margin adalah sebahagian daripada posisi pedagang perlu rangkumi dengan ekuiti mereka sendiri untuk membolehkan broker merangkumi yang selebihnya.

Margin yang diperuntukkan untuk satu dagangan adalah produk untuk nilai pasaran posisi dan nisbah margin (iaitu timbal balik kadar leveraj yang diingini).

Katakan kadar semasa EURUSD ialah 1.05, dan kita mahu mensimulasikan pembelian lot standard (100,000 unit) tanpa meminjam dana dari broker (iaitu menggunakan leveraj 1:1). Dalam kes ini, kami menetapkan "Margin untuk posisi panjang" kepada 100%, mengarahkan strategi untuk meletakkan pesanan menggunakan hanya dana yang ada. Disebabkan itu, akaun hendaklah mempunyai paling kurang 105,000 USD (1.05 * 100,000) tersedia untuk memulakan dagangan. 

Sekarang, katakan kita mahu mensimulasikan dagangan yang sama dengan leveraj 20:1. Dalam kes ini, nisbah margin adalah 1:20 (5%). Menetapkan "Margin untuk posisi panjang" kepada 5% menunjukkan bahawa baki akaun hendaklah mempunyai paling kurang 5% daripada nilai posisi untuk mensimulasikan menerima baki 95% dari broker. Baki akaun minimum (margin) diperlukan untuk memulakan dagangan ini adalah 5% dari 105,000 (5,250 USD). 

Tidak seperti contoh yang tidak bergantung kepada dana broker, membuka satu posisi dengan leveraj 20:1  dalam tetapan dunia nyata membawa risiko kerugian kepada pemegang akaun dan broker. Jika posisi buka kehilangan lebih daripada baki akaun yang boleh tampung, broker akan sama ada meminta lebih dana dari pedagangn atau mencairkan secara paksa beberapa/semua posisi buka untuk menampung kerugian. Penguji Strategi mewakili senario pencairan paksa seperti peristiwa "Panggilan Margin".

Emulator Broker kami mengendalikan senario-senario ini dalam hasil strategi dengan mencairkan empat kali ganda nilai yang diperlukan untuk menampung kerugian dalam simulasi, menghalang peristiwa Panggilan Margin yang berterusan pada bar carta berikutnya.

NOTA: Pedagang singkat biasanya memerlukan pinjaman saham, unit dll dari broker dan menjualnya semula pada harga yang lain. Nilai posisi mewakili kos pembelian bilangan saham. unit dll yang bersamaan untuk dipulangkan kepada mereka. Disebabkan itu, dagangan singkat kehilangan wang apabila harga menaik. Berlainan dengan posisi panjang, potensi kerugian dalam posisi singkat adalah tidak terhad kerana tiada had yang pasti sejauh mana harga instrumen boleh menaik. Oleh yang demikian, walaupun dengan margin 100%, satu posisi singkat boleh mengalami risiko pencairan paksa (forced liquidation). 

Strategi juga boleh mensimulasikan keperluan margin tidak konvensional. Sebagai contoh, anda boleh menggunakan satu nilai 200% "Margin untuk posisi panjang", yang bermaksud akaun disimulasi hendaklah mempunyai paling kurang dua ganda nilai posisi untuk menjalankan dagangan dan mengekalkan posisi. Tetapan ini secara efektifnya menghadkan saiz posisi maksimum kepada 50% daripada ekuiti strategi.

Adalah penting untuk dimaklumi bahawa tetapan margin untuk satu skrip strategi membenarkan ia untuk mengesahkan saiz posisi. Apabila menyahaktifkan keperluan margin dengan menetapkan mereka kepada 0%, skrip boleh mensimulasikan posisi untuk apa-apa saiz, tanpa mengira modal sebenar yang ada dalam simulasi, yang mana boleh menghasilkan keputusan yang tidak benar. Disebabkan itu, kami tidak menyarankan menetapkan nilai "Margin untuk posisi panjang" atau "Margin untuk posisi singkat" kepada 0%.

Kekurangan dana

Kaveat utama untuk dagangan leveraj adalah ia meningkatkan risiko kekurangan dana. Posisi ditutup secara paksa oleh broker mengurangkan dengan ketara keupayaan pedagang untuk menampung kerugian dan boleh mempercepatkan penyusutan akaun mereka. Penguji Strategi mewakili posisi ditutup secara paksa sebagai peristiwa "Panggilan Margin". 

Formula yang diguna pakai semasa peristiwa Panggilan Margin terjadi adalah:

CurrentEquity <= MarginRequired

Nilai CurrentEquity adalah jumlah modal strategi simulasi ada pada masa tertentu, termasuk keuntungan dan kerugian dari posisi buka. MarginRequired adalah modal yang diperlukan akaun untuk mengekalkan kedudukan. Sebaik sahaja CurrentEquity tidak mencukupi untuk membiayai posisi buka, satu peristiwa Panggilan Margin akan terjadi.

Formula untuk CurrentEquity ialah PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit, di mana:

  • PriceChange ialah perbezaan di antara harga semasa dan harga masuk untuk posisi buka.
  • Direction ialah 1 jika posisi adalah panjang dan -1 jika ia posisi singkat.
  • PointValue ialah jumlah wang yang ditunjukkan oleh nombor bulat. Untuk kebanyakan simbol, nilai ialah 1, dengan pengecualian kepada niaga hadapan, di mana satu perubahan dari 100 ke 101 boleh bermaksud nilai berubah oleh 50 USD dan bukannya 1 USD, dalam kes di mana PointValue adalah 50. 
  • AbsPositionSize ialah saiz posisi semasa. Nilai ini adalah sentiasa positif, walaupun skrip strategi mewakili dagangan singkat dengan nombor negatif di atas carta. 
  • InitialCapital + NetProfit ialah nilai ekuiti keseluruhan sebelum membuka posisi semasa. 

Formula untuk MarginRequired is LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100), di mana LastPrice ialah harga carta untuk pengiraan dan (Margin Percent / 100) ialah pekali yang didarabkan untuk mendapatkan bahagian diperlukan untuk kedudukan buka bagi pemegang akaun.

Untuk menunjukkan pengiraan ini, bayangkan bahawa kita mensimulasikan satu strategi dengan 1,000 USD  sebagai "Modal awal" dan satu nilai "Margin untuk posisi panjang" sebanyak 20% (leveraj 5:1) untuk membeli 40 saham NASDAQ:GOOG pada harga 100 USD.

Jika harga saham jatuh kepada 95 USD, CurrentEquity is PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit = (95 - 100) * 1 * 1 * 40 + 1000 + 0 = 800, dan MarginRequired is LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100) = 95 * 1 * 40 * 0.2 = 760. Strategi masih boleh menyokong posisi buka pada harga ini, jadi tiada peristiwa Panggilan Margin akan terjadi.

Kemudian, katakan harga menurun lagi kepada nilai 90 USD. Nilai baharu CurrentEquity ialah (90 - 100) * 1 * 1 * 40 + 1000 + 0 = 600, dan MarginRequired sekarang adalah 90 * 1 * 40 * 0.2 = 720. Disebabkan CurrentEquity tidak lagi mencukupi untuk menampung MarginRequired, strategi kemudiannya mencipta satu peristiwa Panggilan Margin dan mencairkan secara paksa sebahagian daripada posisi.

Memvisualkan harga margin

Cara paling mudah untuk memvisualkan harga di mana peristiwa Panggilan Margin boleh terjadi adalah menggunakan pemboleh ubah terbina dalam `strategy.margin_liquidation_price` dalam kod sumber Pine Script™. Menambahkan garisan kod ini kepada mana-mana strategi Pine Script™ v5 akan memaparkan harga kecairan sebagai satu garisan biru pada carta:

plot(strategy.margin_liquidation_price)plot(strategy.margin_liquidation_price)
Generic

Jika ada keperluan untuk mengira harga secara manual, persamaan boleh ditukarkan dari bahagian sebelumnya kepada formula berikut:

MarginLiquidationPriceRaw = ((InitialCapital + NetPofit) / (PointValue * AbsPositionSize) - Direction * EntryPrice) / (MarginPercent / 100 - Direction)

Nilai MarginLiquidationPriceRaw yang terhasil kemudiannya dibundarkan ke atas (untuk posisi singkat) atau ke bawah (untuk posisi panjang) kepada harga terdekat yang boleh dibahagikan kepada nilai tick minimum simbol. 

Perhatikan bagaimana keseluruhan ekspresi dibahagikan dengan (MarginPercent / 100 - Direction). Jika arah adalah Panjang dan MarginLong% ialah 100, pembahagi akan menjadi 0, dan MarginLiquidationPriceRaw yang terhasil tidak akan tercapai kerana pembahagian dengan sifar. Sifat ini adalah konsisten dengan tanggapan bahawa satu broker tidak boleh mencairkan secara paksa satu posisi Panjang dengan margin 100%.

Dengan strategi hipotesis yang diterangkan dalam bahagian sebelum ini, pengiraan ini akan mendapat hasil: ((1000 + 0) / (1 * 40) - 100) / (20 / 100 - 1) = 93.75, iaitu harga pertama yang akan mencetuskan panggilan margin call. Disebabkan 93.75 boleh dibahagikan dengan saiz tick GOOG iaitu 0.01, pembundaran adalah berdasarkan kepada tick minimum tidak memberikan kesan dalam senario ini.

Ambil maklum bahawa peristiwa Panggilan Margin tidak dijamin untuk tercetus pada harga pengiraan ini semasa simulasi.

Mengira saiz kecairan

Jumlah tepat posisi yang dicairkan oleh peristiwa Panggilan Margin bergantung kepada harga di mana ia terjadi. Seperti disebut di atas, emulator broker mencairkan empat kali ganda jumlah yang diperlukan untuk menampung kerugian, memberikan satu kusyen untuk memastikan peristiwa ini tidak tercetus secara berturut-turut. Kami menggunakan algoritma berikut untuk mengira jumlah kecairan:

1. Kira Wang Digunakan iaitu modal yang digunakan untuk membuka posisi.

Position Size * Entry Price

2. Kira Market Value of Security (MVS).

Position Size * Current Price

3. Kira Keuntungan Buka (Open Profit). Jika arah dagangan adalah singkat dan Open Profit ialah satu nombor positif, keputusan seharusnya menjadi negatif, jadi kami mendarabkan nilai mutlak pengiraan kami dengan -1.

ABS(MVS - Money Spent) * -1

4. Kira Ekuiti, iaitu modal tersedia dalam simulasi.

Initial Capital + Net Profit + Open Profit

5. Tukar Peratusan Margin kepada satu Nisbah Margin.

Margin Percent / 100

6. Kira Margin, iaitu jumlah diperlukan dalam akaun untuk menampung bahagian pedagang dalam posisi buka.

MVS * Margin Ratio

7. Kira Dana Tersedia, iaitu jumlah kehilangan wang yang tidak dapat ditampung oleh pedagang dengan ekuiti semasa mereka.

Equity - Margin

8. Kira jumlah keseluruhan wang pedagang yang telah hilang.

Available Funds / Margin Ratio.

9. Kira sebanyak mana saham, unit dll yang diperlukan strategi untuk dicairkan untuk menampung kerugian. Kami memotong nilai kepada titik perpuluhan yang sama seperti saiz kontrak minimum untuk simbol semasa.

TRUNCATE(Step #8 / Current Price)

10. Kira sebanyak mana saham, unit dll yang akan dicairkan oleh broker untuk menampung kerugian. Emulator broker kami menjual empat kali ganda jumlah yang sepatutnya untuk memastikan peristiwa Panggilan Margin tidak sentiasa tercetus apabila kerugian berterusan. Nilai ini akan menjadi positif untuk dagangan singkat kerana broker membeli unit untuk menampung kerugian dan bukannya menjual mereka.

Step #9 * 4

Untuk meneliti pengiraan ini dengan lebih terperinci, mari tambahkan Supertrend Strategy terbina dalam kepada carta NASDAQ:TSLA pada rangka masa "1H" dan tetapkan "Saiz pesanan" kepada 300% ekuiti dan "Margin untuk posisi panjang" to 25%:

Masukan pertama terjadi pada harga bukaan bar pada 16 Sep 2010. Strategi membeli 682,438 saham (Saiz posisi) pada 4.43 USD (Harga masuk). Kemudian, pada 23 Sep 2010, apabila harga menurun kepada 3.9 (Harga terkini), emulator mencairkan secara paksa 111,052 saham dengan peristiwa Panggilan Margin.

1. Wang digunakan: 682438 * 4.43 = 3023200.34

2. MVS: 682438 * 3.9 = 2661508.2

3. Untung Buka: −361692.14

4. Ekuiti: 1000000 + 0 − 361692.14 = 638307.86

5. Nisbah Margin: 25 / 100 = 0.25

6. Margin: 2661508.2 * 0.25 = 665377.05

7. Dana Tersedia: 638307.86 - 665377.05 = -27069.19

8. Wang Rugi: -27069.19 / 0.25 = -108276.76

9. Saham untuk menampung kerugian: TRUNCATE(-108276.76 / 3.9) = TRUNCATE(-27763.27) = -27763

10. Saiz Panggilan Margin: -27763 * 4 = - 111052