Come posso simulare il trading con la leva finanziaria?
Concetti di base
Tutti gli script scritti in Pine Script™ v4 e successivi supportano in modo nativo la simulazione del trading con leva finanziaria, ossia il prestito da un broker per aprire posizioni più grandi con un capitale ridotto.
Con il "leverage trading", è possibile per i trader piazzare ordini di dimensioni maggiori rispetto a quelle che il saldo del loro conto consentirebbe, a patto che il conto del trader mantenga il margine necessario per sostenere il prestito.
NOTA: il trading con leva finanziaria amplifica i potenziali profitti ma anche le potenziali perdite. I trader devono sempre essere cauti e valutare attentamente la propria propensione al rischio prima di utilizzare la leva finanziaria nel trading live.
Le strategie Pine Script™ determinano l'importo della leva finanziaria applicata alle operazioni long e short simulate tramite gli input "Margine per posizioni long" e "Margine per posizioni short" nella scheda "Proprietà" delle impostazioni dello script. Questi input definiscono la percentuale minima del valore di una posizione richiesta nel saldo del conto affinché la strategia simuli l'apertura e il mantenimento della posizione.
Ad esempio, un valore di "Margine per le posizioni lunghe" del 20% significa che la simulazione richiederà che il 20% di ogni posizione lunga sia coperto dal saldo disponibile della strategia, mentre il restante 80% sarà coperto dal broker emulato. Poiché ogni posizione lunga richiede solo un quinto del suo valore per essere finanziata dal conto, la strategia può simulare posizioni lunghe fino a cinque volte il suo saldo disponibile. In altri termini, questo livello di margine (1:5) aumenta la leva finanziaria della strategia a 5:1.
Se un'operazione con questo livello di margine perde abbastanza denaro da mettere a rischio i fondi del broker, il broker emulato attiverà un evento di Margin Call e liquiderà parte o tutta la posizione aperta per liberare il capitale. Per ulteriori informazioni, consultare le sezioni seguenti.
NOTA: I programmatori possono definire i valori di margine predefiniti nei loro script attraverso i parametri `margin_long` e `margin_short` della funzione `strategy()`.
Dettagli
Quando un trader prende un prestito da un broker per aumentare il proprio potere d'acquisto, quest'ultimo gli chiederà di avere sul proprio conto una quantità minima di capitale da utilizzare come garanzia, altrimenti nota come margine. In altre parole, il margine è la parte della posizione che il trader deve coprire con il proprio capitale affinché il broker possa coprire il resto.
Il margine assegnato a un'operazione è il prodotto del valore di mercato della posizione e del rapporto di margine (cioè il reciproco del rapporto di leva desiderato).
Supponiamo che il tasso attuale di EURUSD sia 1,05 e che si voglia simulare l'acquisto di un lotto standard (100.000 unità) senza prendere in prestito fondi dal broker (cioè utilizzando una leva 1:1). In questo caso, impostiamo il "Margine per le posizioni long" al 100%, indicando alla strategia di piazzare gli ordini utilizzando solo i fondi disponibili. Pertanto, il conto deve avere a disposizione almeno 105.000 USD (1,05 * 100.000) per facilitare l'operazione.
Supponiamo ora di voler simulare la stessa operazione con una leva finanziaria di 20:1. In questo caso, il rapporto di margine è di 20:1. In questo caso, il rapporto di margine è 1:20 (5%). Impostando il "Margine per le posizioni lunghe" al 5% si specifica che il saldo del conto deve essere almeno il 5% del valore della posizione per simulare la ricezione del restante 95% dal broker. Il saldo minimo del conto (margine) richiesto per facilitare questa operazione è il 5% di 105.000 (5.250 USD).
A differenza dell'esempio che non si basa sui fondi del broker, l'apertura di una posizione con leva 20:1 in un contesto reale comporta un rischio di perdita per il titolare del conto e per il broker. Se la posizione aperta perde più di quanto il saldo del conto possa coprire, il broker richiederà più fondi al trader o liquiderà forzatamente una parte o tutta la posizione aperta per coprire le perdite. Lo Strategy Tester rappresenta gli scenari di liquidazione forzata come eventi di "Margin Call" (richiesta di margine).
Il nostro Emulatore di broker gestisce questi scenari nei risultati della strategia liquidando quattro volte l'importo richiesto per coprire la perdita nella simulazione, evitando eventi Margin Call costanti nelle barre successive del grafico.
NOTA: Le operazioni short consistono tipicamente nel prendere in prestito azioni, unità, ecc. dal broker e venderle successivamente a un altro prezzo. Il valore della posizione rappresenta il costo dell'acquisto di un numero equivalente di azioni, unità, ecc. per restituirle. Pertanto, le operazioni short perdono denaro quando i prezzi aumentano. A differenza delle posizioni lunghe, la perdita potenziale di una posizione corta è illimitata, poiché non esiste un limite preciso al rialzo del prezzo di uno strumento. Pertanto, anche con un margine del 100%, una posizione corta è soggetta al rischio di liquidazione forzata.
Le strategie possono anche simulare requisiti di margine non convenzionali. Ad esempio, si può utilizzare un valore di "Margine per le posizioni lunghe" del 200%, il che significa che il conto simulato deve avere almeno il doppio del valore della posizione per facilitare l'operazione e mantenere la posizione. Questa impostazione limita di fatto la dimensione massima della posizione al 50% del patrimonio netto della strategia.
È importante notare che le impostazioni dei margini di uno script consentono di convalidare le dimensioni delle posizioni. Se si disattivano i requisiti di margine impostandoli allo 0%, lo script può simulare posizioni di qualsiasi dimensione, indipendentemente dal capitale effettivamente disponibile nella simulazione, il che può produrre risultati fuorvianti. Pertanto, non si consiglia di impostare i valori "Margine per le posizioni lunghe" o "Margine per le posizioni corte" allo 0%.
Esaurimento dei fondi
L'avvertenza principale del trading con leva è che aumenta il rischio di esaurimento dei fondi. Le posizioni chiuse forzatamente da un broker riducono sostanzialmente la capacità del trader di recuperare le perdite e possono accelerare l'esaurimento del conto. Lo Strategy Tester rappresenta le posizioni chiuse forzatamente come eventi di "Margin Call".
La formula che regola quando si verifica un evento di Margin Call è:
CurrentEquity <= MarginRequired
Il valore CurrentEquity è la quantità di capitale che la strategia simulata possiede in un momento specifico, compresi i profitti o le perdite della posizione aperta. Il MarginRequired è il capitale di cui il conto ha bisogno per sostenere la posizione. Quando il CurrentEquity non è sufficiente a finanziare la posizione aperta, si verifica un evento Margin Call.
La formula del CurrentEquity è PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit, dove:
- PriceChange è la differenza tra il prezzo corrente e il prezzo di ingresso della posizione aperta.
- Direction è 1 se la posizione è lunga o -1 se è corta.
- PointValue è la quantità di denaro che rappresenta una variazione di prezzo di un numero intero. Per la maggior parte dei simboli, il valore è 1, con la principale eccezione dei futures, dove una variazione da 100 a 101 può significare che il valore è cambiato di 50 dollari USA invece che di 1 dollaro USA, nel qual caso il PointValue sarà 50.
- AbsPositionSize è la dimensione della posizione corrente. Questo valore è sempre positivo, anche se gli script rappresentano le operazioni short con numeri negativi sul grafico.
- InitialCapital + NetProfit è il capitale totale della strategia prima di aprire la posizione corrente.
La formula di MarginRequired è LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100), dove LastPrice è il prezzo del grafico per il calcolo e (Margin Percent / 100) è il coefficiente che moltiplichiamo per ottenere la quota richiesta dal titolare del conto della posizione aperta.
Per dimostrare questi calcoli, immaginiamo di simulare una strategia con 1.000 USD come "Capitale iniziale" e un valore di "Margine per posizioni lunghe" del 20% (leva 5:1) per acquistare 40 azioni di NASDAQ:GOOG al prezzo di 100 USD.
Se il prezzo dell'azione scende a 95 USD, la CurrentEquity è PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit = (95 - 100) * 1 * 1 * 40 + 1000 + 0 = 800, e il MarginRequired è LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100) = 95 * 1 * 40 * 0,2 = 760. La strategia può ancora sostenere la posizione aperta a questo prezzo, quindi non si verifica alcun evento Margin Call.
Supponiamo poi che il prezzo scenda ulteriormente a un valore di 90 USD. Il nuovo valore di CurrentEquity è (90 - 100) * 1 * 1 * 40 + 1000 + 0 = 600, e il MarginRequired è ora 90 * 1 * 40 * 0.2 = 720. Poiché la CurrentEquity non è più sufficiente a coprire il MarginRequired, la strategia crea un evento Margin Call e liquida forzatamente parte della posizione.
Visualizzazione del prezzo del margine
Il modo più semplice per visualizzare il prezzo a cui può verificarsi un evento Margin Call è utilizzare la variabile incorporata `strategy.margin_liquidation_price` nel codice sorgente di Pine Script™ della strategia. Aggiungendo questa riga di codice a qualsiasi strategia Pine Script™ v5, il prezzo di liquidazione verrà visualizzato come una linea blu sul grafico:
plot(strategy.margin_liquidation_price)
Se è necessario calcolare il prezzo manualmente, è possibile trasformare l'equazione della sezione precedente nella formula seguente:
MarginLiquidationPriceRaw = ((InitialCapital + NetPofit) / (PointValue * AbsPositionSize) - Direction * EntryPrice) / (MarginPercent / 100 - Direction)
Il valore risultante di MarginLiquidationPriceRaw viene arrotondato per eccesso (per le posizioni corte) o per difetto (per le posizioni lunghe) al prezzo più vicino divisibile per il valore minimo di tick del simbolo.
Si noti come l'intera espressione sia divisa per (MarginPercent / 100 - Direction). Se la direzione è Long e il MarginLong% è 100, il divisore sarà 0 e il MarginLiquidationPriceRaw risultante non sarà raggiungibile a causa della divisione per zero. Questo comportamento è coerente con l'idea che un broker non possa liquidare forzatamente una posizione Long con un margine del 100%.
Con la strategia ipotetica descritta nella sezione precedente, questo calcolo risulterà: ((1000 + 0) / (1 * 40) - 100) / (20 / 100 - 1) = 93,75, che è il primo prezzo che giustifica una richiesta di margine. Poiché 93,75 è divisibile per la dimensione del tick di GOOG, pari a 0,01, l'arrotondamento basato sul tick minimo non ha alcun effetto in questo scenario.
Si noti che non è garantito che l'evento Margin Call si attivi a questo prezzo calcolato durante la simulazione.
Calcolo dell'entità della liquidazione
L'importo preciso di una posizione liquidata da un evento Margin Call dipende dal prezzo in cui si verifica. Come già detto, l'emulatore di broker liquida quattro volte l'importo richiesto per coprire la perdita, fornendo un cuscinetto per garantire che questi eventi non si attivino in rapida successione. Per calcolare l'importo della liquidazione utilizziamo il seguente algoritmo:
1. Calcolo del denaro speso, ossia del capitale speso per aprire la posizione.
Dimensione della posizione * Prezzo di entrata
2. Calcolo del valore di mercato del titolo (MVS).
Dimensione della posizione * Prezzo corrente
3. Calcolo dell'Open Profit. Se la direzione dell'operazione è corta e l'Open Profit è un numero positivo, il risultato dovrebbe essere comunque negativo, quindi moltiplichiamo il valore assoluto del calcolo per -1.
ABS(MVS - Denaro speso) * -1
4. Calcolare l'equity, ovvero il capitale disponibile nella simulazione.
Capitale iniziale + Profitto netto + Open Profit
5. Convertire la percentuale di margine in un rapporto di margine.
Percentuale di margine / 100
6. Calcolare il Margine, ossia l'importo necessario sul conto per coprire la parte di posizione aperta del trader.
MVS * Rapporto di Margine
7. Calcolo dei fondi disponibili, ovvero l'importo del denaro perso che il trader non può coprire con il suo capitale attuale.
Equity - Margine
8. Calcolare la somma totale di denaro che il trader ha perso.
Fondi disponibili / Rapporto di margine.
9. Calcolare quante azioni, unità, ecc. la strategia dovrebbe liquidare per coprire la perdita. Il valore viene troncato allo stesso punto decimale della dimensione minima del contratto per il simbolo corrente.
TRUNCATE(Step #8 / Prezzo corrente)
10. Calcolare quante azioni, unità, ecc. il broker liquiderà per coprire la perdita. Il nostro broker emulato vende quattro volte l'importo necessario per garantire che non venga costantemente attivato un evento Margin Call se le perdite continuano. Questo valore sarà positivo per le operazioni short perché il broker acquista quote per coprire la perdita invece di venderle.
Step #9 * 4
Per esaminare questo calcolo in dettaglio, aggiungiamo la strategia Supertrend integrata al grafico NASDAQ:TSLA sul timeframe "1D" e impostiamo la "Dimensione dell'ordine" al 300% del capitale e il "Margine per le posizioni lunghe" al 25%:
Il primo ingresso è avvenuto al prezzo di apertura della barra il 16 settembre 2010. La strategia ha acquistato 682.438 azioni (dimensione della posizione) a 4,43 USD (prezzo di entrata). Poi, il 23 settembre 2010, quando il prezzo è sceso a 3,9 (prezzo corrente), l'emulatore ha liquidato forzatamente 111.052 azioni tramite l'evento Margin Call.
1. Soldi spesi: 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. Rapporto di margine: 25 / 100 = 0,25
6. Margine: 2661508,2 * 0,25 = 665377,05
7. Fondi disponibili: 638307.86 - 665377.05 = -27069.19
8. Denaro perso: -27069,19 / 0,25 = -108276,76
9. Azioni per coprire la perdita: TRONCARE(-108276,76 / 3,9) = TRONCARE(-27763,27) = -27763
10. Dimensione della Margin Call: -27763 * 4 = - 111052