Kaldıraçlı işlemleri nasıl simüle edebilirim?
Temel bilgiler
Pine Script ™ v4 ve üzeri sürümlerde yazılan tüm strateji komut dosyaları, kaldıraç ticaretinin simülasyonunu, yani daha küçük miktarlarda sermaye ile daha büyük pozisyonlar açmak için bir komisyoncudan borç almayı yerel olarak destekler.
Kaldıraç ticareti ile, tüccarın hesabı krediyi sürdürmek için gerekli marjı koruduğu sürece, tüccarların hesap bakiyelerinin izin verdiğinden daha büyük boyutlarda sipariş vermeleri mümkündür.
NOT: Kaldıraçlı alım satım, potansiyel kâr ve zararları artırır. Yatırımcılar, canlı ticarette kaldıraç kullanmadan önce her zaman dikkatli olmalı ve risk iştahlarını iyice değerlendirmelidir.
Pine Script™ stratejileri, simüle edilmiş uzun ve kısa işlemlere uygulanan kaldıraç miktarlarını, script ayarlarının "Özellikler" sekmesindeki "Uzun pozisyonlar için marj" ve "Kısa pozisyonlar için marj" girdileri aracılığıyla belirler. Bu girdiler, stratejinin pozisyon açma ve sürdürmeyi simüle etmesi için hesap bakiyesinde gereken pozisyon değerinin minimum yüzdesini tanımlar.
Örneğin, %20'lik bir "Uzun pozisyonlar için marj" değeri, simülasyonun herhangi bir uzun pozisyonun %20'sinin stratejinin mevcut bakiyesi tarafından, kalan %80'inin ise taklit edilen broker tarafından karşılanmasını gerektireceği anlamına gelir. Herhangi bir uzun pozisyon, değerinin yalnızca beşte birinin hesap tarafından finanse edilmesini gerektirdiğinden, strateji mevcut bakiyesinin beş katına kadar uzun pozisyonları simüle edebilir. Başka bir deyişle, bu marj seviyesi (1:5) stratejinin kaldıracını 5:1'e çıkarır.
Bu marj seviyesine sahip bir işlem, komisyoncunun fonlarını riske atacak kadar para kaybederse, taklit edilen komisyoncu bir Marj Çağrısı olayını tetikleyecek ve sermayeyi serbest bırakmak için açık pozisyonun bir kısmını veya tamamını tasfiye edecektir. Daha fazla bilgi için aşağıdaki bölümlere bakın.
NOT: Programcılar, `strategy()` fonksiyonunun `margin_long` ve `margin_short` parametreleri aracılığıyla strateji komut dosyalarında varsayılan marj değerlerini tanımlayabilir.
Detaylar
Bir tüccar satın alma gücünü artırmak için bir komisyoncudan borç aldığında, komisyoncu, teminat olarak kullanmak için hesaplarında minimum miktarda sermaye bulundurmalarını isteyecektir, aksi takdirde marj olarak bilinir. Başka bir deyişle, marj, komisyoncunun geri kalanını karşılaması için tüccarın kendi öz sermayesiyle karşılaması gereken pozisyonun bir kısmıdır.
Bir işleme tahsis edilen marjin, pozisyonun piyasa değeri ile marjin oranının (yani istenen kaldıraç oranının tersi) çarpımıdır.
Mevcut EURUSD kurunun 1,05 olduğunu ve aracıdan borç almadan (yani 1:1 kaldıraç kullanarak) standart bir lot (100.000 birim) satın almayı simüle etmek istediğimizi varsayalım. Bu durumda, stratejiye yalnızca mevcut fonlarını kullanarak emir vermesi talimatını vererek "Uzun pozisyonlar için marjı" %100 olarak ayarlıyoruz. Bu nedenle, ticareti kolaylaştırmak için hesapta en az 105.000 USD (1,05 * 100.000) bulunmalıdır.
Şimdi, aynı işlemi 20:1 kaldıraçla simüle etmek istediğimizi varsayalım. Bu durumda, marj oranı 1:20'dir (%5). "Uzun pozisyonlar için marjın" %5 olarak ayarlanması, diğer %95'in komisyoncudan alınmasını simüle etmek için hesap bakiyesinin pozisyon değerinin en az %5'i olması gerektiğini belirtir. Bu işlemi kolaylaştırmak için gereken minimum hesap bakiyesi (marj) 105.000'in %5'idir (5.250 USD).
Broker fonlarına dayanmayan örnekten farklı olarak, gerçek dünya ortamında 20:1 kaldıraçla pozisyon açmak hesap sahibi ve broker için kayıp riski taşır. Açık pozisyon, hesap bakiyesinin karşılayabileceğinden daha fazla kaybederse, komisyoncu ya tüccardan daha fazla para talep edecek ya da kayıpları karşılamak için açık pozisyonun bir kısmını / tamamını zorla tasfiye edecektir. Strateji Test Cihazı, zorunlu tasfiye senaryolarını "Teminat Çağrısı" olayları olarak temsil eder.
Broker Emülatörümüz, simülasyondaki zararı karşılamak için gereken miktarın dört katını tasfiye ederek ve sonraki grafik çubuklarında sürekli Teminat Çağrısı olaylarını önleyerek bu senaryoları strateji sonuçlarında ele alır.
NOT: Kısa işlemler tipik olarak aracıdan hisse, birim vb. ödünç almayı ve bunları daha sonra başka bir fiyattan satmayı gerektirir. Pozisyonun değeri, bunları iade etmek için eşdeğer sayıda hisse, birim vb. satın alma maliyetini temsil eder. Bu nedenle, kısa pozisyonlar fiyatlar yükseldiğinde para kaybeder. Uzun pozisyonların aksine, bir enstrümanın fiyatının ne kadar yükselebileceğine dair kesin bir sınır olmadığından, kısa pozisyondaki potansiyel kayıp sınırsızdır. Bu nedenle, %100 marjla bile kısa pozisyon zorunlu likidasyon riskiyle karşı karşıyadır.
Stratejiler geleneksel olmayan teminat gereksinimlerini de simüle edebilir. Örneğin, %200'lük bir "Uzun pozisyonlar için teminat" değeri kullanılabilir; bu, simüle edilen hesabın işlemi kolaylaştırmak ve pozisyonu korumak için pozisyon değerinin en az iki katına sahip olması gerektiği anlamına gelir. Bu ayar, maksimum pozisyon boyutunu stratejinin öz sermayesinin %50'si ile etkin bir şekilde sınırlar.
Bir strateji komut dosyasının marj ayarlarının, pozisyon boyutlarını doğrulamasına izin verdiğini unutmamak önemlidir. Teminat gereksinimlerini %0 olarak ayarlayarak devre dışı bıraktığınızda, komut dosyası simülasyonda mevcut olan gerçek sermayeden bağımsız olarak herhangi bir boyuttaki pozisyonları simüle edebilir ve bu da yanıltıcı sonuçlar üretebilir. Bu nedenle, "Uzun pozisyonlar için marj" veya "Kısa pozisyonlar için marj" değerlerinin %0 olarak ayarlanmasını önermiyoruz.
Fonların tükenmesi
Kaldıraçlı ticaretin birincil uyarısı, fonların tükenme riskini artırmasıdır. Bir komisyoncu tarafından zorla kapatılan pozisyonlar, bir tüccarın kayıplardan kurtulma yeteneğini önemli ölçüde azaltır ve hesaplarını tükenmeye doğru hızlandırabilir. Strateji Test Cihazı, zorla kapatılan pozisyonları "Marj Çağrısı" olayları olarak temsil eder.
Bir Teminat Çağrısı olayının ne zaman gerçekleşeceğini yöneten formül şudur:
CurrentEquity <= MarginRequired
CurrentEquity değeri, açık pozisyondan elde edilen kar veya zarar dahil olmak üzere simüle edilen stratejinin belirli bir anda sahip olduğu sermaye miktarıdır. MarginRequired, hesabın pozisyonu sürdürmek için ihtiyaç duyduğu sermayedir. CurrentEquity açık pozisyonu finanse etmek için yeterli olmadığında, bir Marjin Çağrısı olayı meydana gelecektir.
CurrentEquity formülü PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit'tir, burada:
- PriceChange, mevcut fiyat ile açık pozisyonun giriş fiyatı arasındaki farktır.
- Yön, pozisyon uzunsa 1 veya kısaysa -1'dir.
- PointValue, bir tam sayı fiyat hareketinin ifade ettiği para miktarıdır. Çoğu sembol için değer 1'dir, bunun ana istisnası vadeli işlemlerdir; burada 100'den 101'e bir değişiklik, değerin 1 USD yerine 50 USD değiştiği anlamına gelebilir, bu durumda PointValue 50 olacaktır.
- AbsPositionSize, mevcut pozisyonun boyutudur. Strateji komut dosyaları grafikte negatif sayılarla kısa işlemleri temsil etse bile bu değer her zaman pozitiftir.
- InitialCapital + NetProfit, stratejinin mevcut pozisyonu açmadan önceki toplam öz sermaye tutarıdır.
MarginRequired formülü LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100) şeklindedir; burada LastPrice hesaplama için grafik fiyatıdır ve (Margin Percent / 100) hesap sahibinin açık pozisyonun gerekli kısmını elde etmek için çarptığımız katsayıdır.
Bu hesaplamaları göstermek için, "İlk sermaye" olarak 1.000 USD ve "Uzun pozisyonlar için Marjin" değeri %20 (5:1 kaldıraç) olan bir stratejiyi simüle ettiğimizi ve NASDAQ:GOOG'un 40 hissesini 100 USD fiyatından satın aldığımızı hayal edin.
Hisse senedinin fiyatı 95 USD'ye düşerse, CurrentEquity PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit = (95 - 100) * 1 * 1 * 40 + 1000 + 0 = 800 ve MarginRequired LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100) = 95 * 1 * 40 * 0.2 = 760 olur. Strateji hala bu fiyattan açık pozisyonu sürdürebilir, bu nedenle Margin Call olayı gerçekleşmez.
Ardından, fiyatın daha da düşerek 90 USD değerine gerilediğini varsayalım. Yeni CurrentEquity değeri (90 - 100) * 1 * 1 * 40 + 1000 + 0 = 600'dür ve MarginRequired artık 90 * 1 * 40 * 0.2 = 720'dir. CurrentEquity artık MarginRequired'ı karşılamak için yeterli olmadığından, strateji bir Margin Call olayı yaratır ve pozisyonun bir kısmını zorla likide eder.
Marj fiyatını görselleştirme
Bir Marjin Çağrısı olayının gerçekleşebileceği fiyatı görselleştirmenin en kolay yolu, stratejinin Pine Script™ kaynak kodundaki `strategy.margin_liquidation_price' yerleşik değişkenini kullanmaktır. Bu kod satırını herhangi bir Pine Script™ v5 stratejisine eklemek, likidasyon fiyatını grafikte mavi bir çizgi olarak gösterecektir:
plot(strategy.margin_liquidation_price)plot(strategy.margin_liquidation_price)
GenericFiyatın manuel olarak hesaplanması gerekiyorsa, bir önceki bölümdeki denklem aşağıdaki formüle dönüştürülebilir:
MarginLiquidationPriceRaw = ((InitialCapital + NetPofit) / (PointValue * AbsPositionSize) - Direction * EntryPrice) / (MarginPercent / 100 - Direction)
Ortaya çıkan MarginLiquidationPriceRaw değeri daha sonra sembolün minimum tik değerine bölünebilen en yakın fiyata yukarı (kısa pozisyonlar için) veya aşağı (uzun pozisyonlar için) yuvarlanır.
Tüm ifadenin (MarginPercent / 100 - Direction) ile nasıl bölündüğüne dikkat edin. Yön Uzun ve MarginLong% 100 ise, bölen 0 olacak ve sonuçta elde edilen MarginLiquidationPriceRaw sıfıra bölünme nedeniyle elde edilemeyecektir. Bu davranış, bir brokerın %100 marjlı bir Uzun pozisyonu zorla likide edemeyeceği fikriyle tutarlıdır.
Önceki bölümde açıklanan varsayımsal strateji ile bu hesaplama şu sonucu verecektir: ((1000 + 0) / (1 * 40) - 100) / (20 / 100 - 1) = 93,75, bu da bir teminat tamamlama çağrısı gerektirecek ilk fiyattır. 93,75 değeri GOOG'un 0,01'lik tik boyutuna bölünebildiğinden, minimum tike göre yuvarlamanın bu senaryoda bir etkisi yoktur.
Marjin Çağrısı olayının simülasyon sırasında hesaplanan bu fiyatta tetiklenmesinin garanti edilmediğini unutmayın.
Likidasyon büyüklüğünün hesaplanması
Bir Teminat Çağrısı olayıyla likide edilen pozisyonun kesin miktarı, olayın gerçekleştiği fiyata bağlıdır. Yukarıda belirtildiği gibi, broker emülatörü zararı karşılamak için gereken miktarın dört katını likide eder ve bu olayların hızlı bir şekilde art arda tetiklenmemesini sağlamak için bir yastık sağlar. Likidasyon tutarını hesaplamak için aşağıdaki algoritmayı kullanırız:
1. Harcanan Parayı, yani pozisyonu açmak için harcanan sermayeyi hesaplayın.
Pozisyon Büyüklüğü * Giriş Fiyatı
2. Menkul Kıymetin Piyasa Değerini (MVS) hesaplayın.
Pozisyon Büyüklüğü * Güncel Fiyat
3. Açık Kârı hesaplayın. İşlem yönü kısaysa ve Açık Kar pozitif bir sayı ise, sonuç yine de negatif olmalıdır, bu nedenle hesaplamamızın mutlak değerini -1 ile çarpıyoruz.
ABS(MVS - Harcanan Para) * -1
4. Özkaynakları, yani simülasyonda mevcut olan sermayeyi hesaplayın.
Başlangıç Sermayesi + Net Kar + Açık Kar
5. Marj Yüzdesini Marj Oranına Dönüştürün.
Marj Yüzdesi / 100
6. Teminatı, yani yatırımcının açık pozisyondaki payını karşılamak için hesapta bulunması gereken tutarı hesaplayın.
MVS * Marjin Oranı
7. Kullanılabilir Fonları, yani yatırımcının mevcut özkaynaklarıyla karşılayamayacağı kayıp para miktarını hesaplayın.
Özkaynak - Marj
8. Yatırımcının kaybettiği toplam para miktarını hesaplayın.
Kullanılabilir Fonlar / Teminat Oranı.
9. Stratejinin zararı karşılamak için kaç hisse, birim vb. likide etmesi gerektiğini hesaplayın. Değeri, mevcut sembol için minimum sözleşme boyutu ile aynı ondalık noktaya keseriz.
TRUNCATE(Adım #8 / Mevcut Fiyat)
10. Komisyoncunun zararı karşılamak için kaç hisse, birim vb. tasfiye edeceğini hesaplayın. Taklit komisyoncumuz, kayıplar devam ederse bir Teminat Çağrısı olayının sürekli tetiklenmemesini sağlamak için gerekli miktarın dört katını satar. Bu değer kısa işlemler için pozitif olacaktır çünkü broker zararı karşılamak için satmak yerine birim satın alır.
Adım #9 * 4
Bu hesaplamayı ayrıntılı olarak incelemek için, yerleşik Süper Trend Stratejisini "1D" zaman diliminde NASDAQ: TSLA grafiğine ekleyelim ve "Sipariş boyutu" nu öz sermayenin% 300'üne ve "Uzun pozisyonlar için marjı" % 25'e ayarlayalım:
İlk giriş 16 Eylül 2010 tarihinde barın açılış fiyatından gerçekleşti. Strateji, 4,43 USD'den (Giriş fiyatı) 682.438 hisse (Pozisyon büyüklüğü) satın aldı. Ardından, 23 Eylül 2010'da fiyat 3,9'a (Mevcut fiyat) düştüğünde, emülatör Margin Call olayı aracılığıyla 111.052 hisseyi zorla tasfiye etti.
1. Harcanan para: 682438 * 4.43 = 3023200.34
2. MVS: 682438 * 3.9 = 2661508.2
3. Açık Kâr: -361692.14
4. Özkaynak: 1000000 + 0 - 361692.14 = 638307.86
5. Marj Oranı: 25 / 100 = 0,25
6. Marj: 2661508.2 * 0.25 = 665377.05
7. Kullanılabilir Fonlar: 638307.86 - 665377.05 = -27069.19
8. Kaybedilen Para: -27069.19 / 0.25 = -108276.76
9. Kaybı karşılayacak hisseler: TRUNCATE(-108276.76 / 3.9) = TRUNCATE(-27763.27) = -27763
10. Teminat (marj) Çağrısı Boyutu: -27763 * 4 = - 111052