如何使用槓桿模擬交易?
基礎
所有以Pine Script™ v4及更高版本編寫的策略腳本,本身都支援槓桿模擬交易,即從經紀商借錢,以較小的資金開立較大的部位。
透過槓桿交易,只要交易者的帳戶將維持貸款所需的保證金,交易者可以下達比其帳戶餘額更大的訂單。
注意:槓桿交易會放大潛在的利潤和損失。在即時交易使用槓桿之前,交易者應始終保持謹慎,並徹底評估自己的風險偏好。
Pine Script™ 策略透過腳本設定的「屬性」標籤中的「多頭部位保證金」和「空頭部位保證金」輸入確定模擬的多頭和空頭交易的槓桿金額。這些輸入定義了策略模擬開啟和維持部位所需的帳戶餘額中部位價值的最低百分比。
例如:「多頭部位保證金」的值為 20%,表示模擬將要求策略可用餘額覆蓋任何多頭部位的20%,剩餘的80%由模擬經紀商覆蓋。由於任何多頭部位只需要其價值的五分之一由帳戶資金支持,因此該策略可以模擬多頭部位,其價值最多是可用餘額的五倍。換句話說,這個槓桿水平(1:5)將策略的槓桿提高到5:1。
如果具有此保證金水準的交易損失了足夠的資金,使經紀商的資金面臨風險,則模擬經紀商將觸發追加保證金事件,並清算部分或全部未平倉部位以釋放資金。請參閱以下部分以了解更多資訊。
注意:程式設計師可以透過`strategy()` 函數的`margin_long`和`margin_short` 參數在策略腳本中定義預設保證金值。
細節
當交易者向經紀商借款以增加購買力時,經紀商將要求他們的帳戶中有最低金額的資本用作抵押品,也稱為保證金。換句話說,保證金是交易者必須用自己的資產來彌補部位的一部分,以便經紀商能夠彌補其餘部分。
分配給交易的保證金是部位的市場價值和保證金比率(即所需槓桿比率的倒數)的乘積。
假設EURUSD的當前匯率為1.05,我們想要模擬購買一個標準手(100,000單位),而無需從經紀商借入資金(即使用1:1槓桿)。在本例中,我們將「多頭部位保證金」設定為100%,指示策略僅使用其可用資金下單。因此,該帳戶必須至少有105,000美元(1.05 * 100,000)以方便交易。
現在,假設我們希望用20:1的槓桿模擬相同的交易。在本例中,保證金比例為1:20 (5%)。將「多頭部位保證金」設定為5%指定帳戶餘額必須至少為部位價值的5%,才能模擬從經紀商接收其餘95%。促進此項交易所需的最低帳戶餘額(保證金)為105,000(5,250美元)的5%。
與不依賴經紀商資金的範例不同,在現實環境中以20:1槓桿開倉,會給帳戶持有人和經紀商帶來損失風險。如果未平倉部位的損失超過帳戶餘額可以彌補的範圍,經紀商將要求交易者提供更多資金或強制清算 部分/全部 未平倉部位以彌補損失。策略模擬器將強制清算場景表示為「追加保證金」事件。
我們的經紀商模擬器透過清算彌補模擬中損失所需金額的四倍來處理策略結果中的這些情況,從而防止後續圖表K線上不斷發生追加保證金事件。
注意:空頭交易通常需要向經紀商借入股票、單位等,然後以另一個價格出售。部位價值代表購買同等數量的股票、單位等以回報它們的成本。因此,當價格上漲時,空頭交易就會虧損。與多頭部位不同,空頭部位的潛在損失沒有上限,因為工具的價格上漲幅度沒有明確的限制。因此,即使保證金為100%,空頭部位也面臨強制平倉的風險。
策略還可以模擬非常規的保證金要求。例如:可以使用200%的「多頭部位保證金」值,這代表模擬帳戶必須至少具有部位價值的兩倍,才能促進交易並維持部位。此設定有效地將最大部位規模限制為策略淨值的50%。
值得注意的是,策略腳本的保證金設定允許其驗證部位規模。透過將保證金要求設為0%來停用保證金要求時,腳本可以模擬任何規模的部位,無論模擬中的實際可用資本如何,這可能會產生誤導性結果。因此,我們不建議將「多頭部位保證金」或「空頭部位保證金」值設為0%。
資金用完
槓桿交易的主要警告是它會增加資金耗盡的風險。經紀商強行平倉的部位大大降低了交易者從損失中恢復的能力,並可能加速其帳戶的耗盡。策略模擬器將強制平倉表示為「追加保證金」事件。
控制追加保證金事件何時發生的公式為:
CurrentEquity <= MarginRequired
CurrentEquity值是模擬策略在特定時刻擁有的資本金額,包括未平倉部位的利潤或損失。 MarginRequired是帳戶維持部位所需的資本。一旦目前淨值不足以為未平倉部位提供資金,就會發生追加保證金事件。
CurrentEquity的公式為PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit,其中:
- PriceChange是目前價格與未平倉部位的開倉價格之間的差額。
- 若持多頭部位,則方向為1;若持空頭部位,則方向為 -1。
- PointValue是整數價格變動所代表的金額。對於大多數商品,該值是1,主要例外是期貨,其中從100更改為101可能代表值更改了50美元而不是1美元,在這種情況下,PointValue將為50。
- AbsPositionSize是目前位置的大小。即使策略腳本代表圖表上帶有負數的空頭交易,該值始終為正值。
- InitialCapital + NetProfit是該策略在開倉前的總股本金額。
MarginRequired的公式為LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100),其中LastPrice是用於計算的圖表價格,(Margin Percent / 100)是我們乘以以獲得帳戶持有人所需開倉的係數位置。
為了示範這些計算,假設我們模擬一個策略,以1,000美元作為“初始資本”,「多頭部位保證金」值為 20%(5:1 槓桿),以以下價格購買40股NASDAQ:GOOG:100美元。
如果股票價格跌至95美元,則CurrentEquity為 PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit = (95 - 100) * 1 * 1 * 40 + 1000 + 0 = 800,MarginRequired * Absrice * MarginPercent / 100) = 95 * 1 * 40 * 0.2 = 760。此策略仍可維持該價格的未平倉部位,因此不會發生追加保證金事件。
然後,假設價格進一步下跌至90美元。新的CurrentEquity值為(90 - 100) * 1 * 1 * 40 + 1000 + 0 = 600,MarginRequired現在為 90 * 1 * 40 * 0.2 = 720。由於CurrentEquity不再足以覆蓋MarginRequired,因此保證該策略建立追加金事件並強制平倉部分部位。
保證金價格視覺化
視覺化追加保證金事件可能發生最簡單的方法是使用策略的Pine Script™原始碼中的「strategy.margin_liquidation_price」內建變數。將此行程式碼新增至任何Pine Script™ v5策略中都會將強平價格顯示為圖表上的藍線:
plot(strategy.margin_liquidation_price)
如果需手動計算價格,可以將上一節的等式轉換為以下公式:
MarginLiquidationPriceRaw = ((InitialCapital + NetPofit) / (PointValue * AbsPositionSize) - Direction * EntryPrice) / (MarginPercent / 100 - Direction)
然後將產生的 MarginLiquidationPriceRaw 值向上舍入(對於空頭部位)或向下捨去(對於多頭部位)至可除以商品最小變動價位值的最接近價格。
請注意整個表達式如何除以 (MarginPercent / 100 - Direction)。如果方向為多頭且MarginLong%為100,則除數將為0,並且由於除以零而無法獲得最終的 MarginLiquidationPriceRaw。這種行為與經紀商不能強行以100%保證金平倉多頭部位的理念是一致的。
使用上一節中描述的假設策略,此計算將得出:((1000 + 0) / (1 * 40) - 100) / (20 / 100 - 1) = 93.75,這是保證的第一個價格追加保證金通知。由於 93.75 可以被GOOG的tick大小0.01整除,因此基於最小tick的捨入在這種情況下不起作用。
請注意,在模擬期間,不保證保證金追繳事件會在此計算價格處觸發。
計算清算規模
追加保證金事件所清算部位的精準金額取決於其發生時的價格。如上所述,經紀商模擬器清算的金額是彌補損失所需金額的四倍,從而提供緩衝以確保這些事件不會快速連續觸發。我們使用以下演算法來計算強平金額:
1. 計算所花費的資金,即開倉所花費的資金。
Position Size * Entry Price
2. 計算證券的市場價值(MVS)。
Position Size * Current Price
3. 計算未平倉利潤。如果交易方向為空頭且未平倉利潤為正數,則結果仍應為負數,因此我們將計算的絕對值乘以 -1。
ABS(MVS - Money Spent) * -1
4. 計算淨值,即模擬中的可用資本。
Initial Capital + Net Profit + Open Profit
5. 將保證金百分比轉換為保證金比率。
Margin Percent / 100
6. 計算保證金,即帳戶中支付交易者未平倉部位部分所需的金額。
MVS * Margin Ratio
7. 計算可用資金,即交易者無法以其目前權益彌補的損失金額。
Equity - Margin
8. 計算交易者虧損總金額。
Available Funds / Margin Ratio.
9. 計算策略需要清算多少股票、單位等來彌補損失。我們將該值截斷為與目前商品的最小合約大小相同的小數點。
TRUNCATE(Step #8 / Current Price)
10. 計算經紀商將清算多少股票、單位等以彌補損失。我們的模擬經紀商賣出所需金額的四倍,以確保在虧損持續的情況下不會持續觸發追加保證金事件。該值對於空頭交易來說是正數,因為經紀商購買單位來彌補損失而不是出售它們。
步驟 #9 * 4
為了詳細檢查此計算,讓我們將內建的超級趨勢策略新增至「1D」時間範圍內的NASDAQ:TSLA 圖表中,並將「訂單大小」設定為權益的300%,將「多頭部位保證金」設為25% :
第一次入場發生在2010年9月16日K線的開盤價。該策略以4.43美元(入場價)買入682,438股(部位規模)。然後,在2010年9月23日,當價格跌至3.9(當前價格)時,模擬器透過追加保證金事件強制平倉111,052股。
1. Money spent: 682438 * 4.43 = 3023200.34
2. MVS: 682438 * 3.9 = 2661508.2
3. Open Profit: −361692.14
4. Equity: 1000000 + 0 − 361692.14 = 638307.86
5. Margin Ratio: 25 / 100 = 0.25
6. Margin: 2661508.2 * 0.25 = 665377.05
7. Available Funds: 638307.86 - 665377.05 = -27069.19
8. Money Lost: -27069.19 / 0.25 = -108276.76
9. Shares to cover the loss: TRUNCATE(-108276.76 / 3.9) = TRUNCATE(-27763.27) = -27763
10. Margin Call Size: -27763 * 4 = - 111052