Como faço para simular a negociação com alavancagem?

O básico

Todos os scripts de estratégia escritos em Pine Script™ v4 e em versões posteriores suportam nativamente a simulação de negociação com alavancagem, ou seja, empréstimo de uma corretora para abrir posições maiores com quantidades menores de capital. 

 

Com a negociação com alavancagem, é possível que os operadores coloquem ordens com tamanhos maiores do que o saldo de sua conta permitiria, desde que a conta do operador mantenha a margem necessária para sustentar o empréstimo. 

 

OBSERVAÇÃO: A negociação com alavancagem amplia os lucros e as perdas potenciais. Os traders devem sempre ter cautela e avaliar minuciosamente seu potencial de risco antes de utilizar a alavancagem em negociações em tempo real. 

 

As estratégias do Pine Script™ determinam os valores de alavancagem aplicados às negociações long e short simuladas por meio dos inputs "Margin for long positions" (Margem para posições long) e "Margin for short positions" (Margem para posições short) na aba Propriedades das configurações do script. Esses inputs definem a porcentagem mínima do valor de uma posição exigida no saldo da conta para que a estratégia simule a abertura e a manutenção da posição.

 

Por exemplo, um valor de "Margin for long positions" (Margem para posições long) de 20% significa que a simulação exigirá que 20% de qualquer posição long seja coberta pelo saldo disponível da estratégia, com os 80% restantes cobertos pela corretora emulada. Como qualquer posição long requer apenas um quinto de seu valor para ser coberto pela conta, a estratégia pode simular posições long de até cinco vezes seu saldo disponível. Em outros termos, esse nível de margem (1:5) aumenta a alavancagem da estratégia para 5:1.

 

Se uma negociação com esse nível de margem sofrer perdas suficientes para colocar os fundos da corretora em risco, a corretora emulada acionará um evento de chamada de margem e liquidará parte ou toda a posição aberta para liberar capital. Consulte as seções abaixo para obter mais informações. 

 

OBSERVAÇÃO: os programadores podem definir os valores de margem padrão em seus scripts de estratégia por meio dos parâmetros `margin_long` e `margin_short` da função `strategy()`. 

 

Os detalhes

Quando um operador toma emprestado de uma corretora para aumentar o poder de compra, a corretora exigirá que ele tenha um valor mínimo de capital em sua conta para usar como garantia, também conhecido como margem. Em outras palavras, a margem é a parte da posição que o trader deve cobrir com seu próprio patrimônio para que a corretora cubra o restante.

 

A margem alocada para uma negociação é o produto do valor de mercado da posição e o índice de margem (ou seja, o recíproco do índice de alavancagem desejado).

 

Suponha que a taxa atual do EURUSD seja de 1,05 e que queiramos simular a compra de um lote padrão (100.000 unidades) sem pedir recursos emprestados à corretora (ou seja, usando alavancagem de 1:1). Nesse caso, definimos a "Margem para posições long" como 100%, instruindo a estratégia a colocar ordens usando somente seus fundos disponíveis. Portanto, a conta deve ter pelo menos 105.000 USD (1,05 * 100.000) disponíveis para facilitar a negociação. 

 

Agora, suponha que desejemos simular a mesma negociação com alavancagem de 20:1. Nesse caso, a taxa de margem é de 1:20 (5%). Definir a "Margem para posições long" como 5% especifica que o saldo da conta deve ser de pelo menos 5% do valor da posição para simular o recebimento dos outros 95% da corretora. O saldo mínimo da conta (margem) necessário para facilitar essa negociação é 5% de 105.000 (US$ 5.250).

Diferentemente do exemplo que não depende dos recursos da corretora, a abertura de uma posição com alavancagem de 20:1 em um cenário real acarreta um risco de perda para o titular da conta e para a corretora. Se a posição aberta perder mais do que o saldo da conta pode cobrir, a corretora solicitará mais fundos do trader ou liquidará à força parte ou toda a posição aberta para cobrir as perdas. O Testador de Estratégias representa cenários de liquidação forçada como eventos de "Chamada de margem".

 

Nosso Emulador de Corretora lida com esses cenários nos resultados da estratégia liquidando quatro vezes o valor necessário para cobrir a perda na simulação, evitando eventos constantes de Chamada de Margem nas barras subsequentes do gráfico.

 

OBSERVAÇÃO: As negociações a descoberto normalmente implicam o empréstimo de ações, unidades etc. da corretora e sua posterior venda a outro preço. O valor da posição representa o custo de comprar um número equivalente de ações, unidades etc. para devolvê-las. Dessa forma, as negociações a descoberto perdem dinheiro quando os preços sobem. Diferentemente das posições compradas, a perda potencial em uma posição vendida é ilimitada, pois não há limite definido para o aumento do preço de um instrumento. Portanto, mesmo com 100% de margem, uma posição vendida enfrenta o risco de liquidação forçada. 

 

As estratégias também podem simular requisitos de margem não convencionais. Por exemplo, pode-se usar um valor de "Margem para posições longas" de 200%, o que significa que a conta simulada deve ter pelo menos o dobro do valor da posição para facilitar a negociação e manter a posição. Essa configuração limita efetivamente o tamanho máximo da posição a 50% do patrimônio líquido da estratégia.

 

É importante observar que as configurações de margem de um script de estratégia permitem que ele valide os tamanhos das posições. Ao desativar os requisitos de margem definindo-os como 0%, o script pode simular posições de qualquer tamanho, independentemente do patrimônio real disponível na simulação, o que pode produzir resultados enganosos. Portanto, não recomendamos definir os valores "Margem para posições long" ou "Margem para posições short" como 0%.

Ficar em fundos

A principal ressalva da negociação com alavancagem é que ela aumenta o risco de ficar sem recursos. As posições fechadas à força por uma corretora reduzem substancialmente a capacidade de um operador de se recuperar de prejuízos e podem acelerar o esgotamento de sua conta. O Testador de Estratégias representa as posições fechadas à força como eventos de "Chamada de Margem". 

 

A fórmula que rege quando ocorre um evento de chamada de margem é

 

CurrentEquity <= MarginRequired

 

O valor CurrentEquity é a quantidade de recursos que a estratégia simulada tem em um momento específico, incluindo lucros ou perdas da posição aberta. O MarginRequired é o capital que a conta precisa para sustentar a posição. Quando o CurrentEquity não for suficiente para financiar a posição aberta, ocorrerá um evento de Chamada de Margem.

 

A fórmula do CurrentEquity é PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit, onde:

  • PriceChange é a diferença entre o preço atual e o preço de entrada da posição aberta.
  • A direção é 1 se a posição for long ou -1 se for short.
  • PointValue é a quantidade de dinheiro que um movimento de preço de um número inteiro representa. Para a maioria dos símbolos, o valor é 1, com a principal exceção sendo os futuros, em que uma mudança de 100 para 101 pode significar que o valor foi alterado em 50 USD em vez de 1 USD, caso em que o PointValue será 50. 
  • AbsPositionSize é o tamanho da posição atual. Esse valor é sempre positivo, mesmo que os scripts de estratégia representem negociações short com números negativos no gráfico. 
  • InitialCapital + NetProfit é o valor total do patrimônio líquido da estratégia antes de abrir a posição atual.

A fórmula para MarginRequired é LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100), em que LastPrice é o preço do gráfico para o cálculo e (Margin Percent / 100) é o coeficiente pelo qual multiplicamos para obter a porção necessária do titular da conta da posição aberta. 

 

Para demonstrar esses cálculos, imagine que simulamos uma estratégia com US$ 1.000,00 como "Capital inicial" e um valor de "Margem para posições long" de 20% (alavancagem de 5:1) para comprar 40 ações da NASDAQ:GOOG ao preço de US$ 100,00.

 

Se o preço da ação cair para US$ 95, o CurrentEquity será PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit = (95 - 100) * 1 * 1 * 40 + 1000 + 0 = 800, e a MarginRequired será LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100) = 95 * 1 * 40 * 0,2 = 760. A estratégia ainda pode manter a posição aberta a esse preço, portanto, não ocorre nenhum evento de chamada de margem.

 

Em seguida, suponha que o preço tenha caído ainda mais para um valor de US$ 90. O novo valor do CurrentEquity é (90 - 100) * 1 * 1 * 40 + 1000 + 0 = 600, e a MarginRequired agora é 90 * 1 * 40 * 0,2 = 720. Como o CurrentEquity não é mais suficiente para cobrir a MarginRequired, a estratégia cria um evento de Chamada de Margem e liquida à força parte da posição.

Visualização do "margin price"

 

A maneira mais fácil de visualizar o preço no qual um evento de chamada de margem pode ocorrer é usar a variável interna `strategy.margin_liquidation_price` no código-fonte do Pine Script™ da estratégia. Ao adicionar essa linha de código a qualquer estratégia do Pine Script™ v5, o preço de liquidação será exibido como uma linha azul no gráfico:

 

plot(strategy.margin_liquidation_price)

 

Se houver necessidade de calcular o preço manualmente, é possível transformar a equação da seção anterior na fórmula a seguir:

 

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

 

O valor MarginLiquidationPriceRaw resultante é então arredondado para cima (para posições short) ou para baixo (para posições long) até o preço mais próximo divisível pelo valor mínimo de tick do símbolo. 

 

Observe como a expressão inteira é dividida por (MarginPercent / 100 - Direction). Se a direção for long e a MarginLong% for 100, o divisor será 0 e o MarginLiquidationPriceRaw resultante não poderá ser atingido devido à divisão por zero. Esse comportamento é consistente com a noção de que uma corretora não pode liquidar à força uma posição long com uma margem de 100%.

 

Com a estratégia hipotética descrita na seção anterior, esse cálculo resultará em: ((1000 + 0) / (1 * 40) - 100) / (20 / 100 - 1) = 93,75, que é o primeiro preço que garantirá uma chamada de margem. Como 93,75 é divisível pelo tamanho do tick da GOOG de 0,01, o arredondamento com base no tick mínimo não tem efeito nesse cenário.

 

Observe que não é garantido que o evento de chamada de margem seja acionado a esse preço calculado durante a simulação.

 

 

Cálculo do tamanho da liquidação

 

O valor exato de uma posição liquidada por um evento de Chamada de Margem depende do preço em que ele ocorre. Conforme observado acima, o emulador de corretora liquida quatro vezes o valor necessário para cobrir o prejuízo, fornecendo um lastro para garantir que esses eventos não sejam acionados de forma rápida e recorrente. Usamos o seguinte algoritmo para calcular o valor da liquidação:

 

1. Calcular o dinheiro gasto, ou seja, o valor gasto na abertura da posição.

 

Position Size * Entry Price 

 

2. Calcular o valor de mercado do título (MVS).

 

Position Size * Current Price 

 

3. Calcular o Open Profit. Se a direção da negociação for short e o Open Profit for um número positivo, o resultado ainda deverá ser negativo, portanto, multiplicamos o valor absoluto de nosso cálculo por -1.

 

ABS(MVS - Money Spent) * -1 ABS(MVS - Money Spent) * -1

 

4. Calcule o Patrimônio Líquido, ou seja, o capital disponível na simulação.

 

Initial Capital + Net Profit + Open Profit 

 

5. Converta a Margem Percentual em uma Razão de Margem.

 

Margin Percent / 100 

 

6. Calcule a margem, ou seja, o valor necessário na conta para cobrir a parte do trader na posição aberta.

 

MVS * Margin Ratio 

 

7. Calcule os fundos disponíveis, ou seja, o valor do dinheiro perdido que o trader não pode cobrir com seu patrimônio líquido atual.

 

Equity - Margin 

 

8. Calcule o valor total de recursos que o trader perdeu.

 

Available Funds / Margin Ratio. 

 

9. Calcule quantas ações, unidades, etc. a estratégia precisaria liquidar para cobrir a perda. Truncamos o valor para a mesma casa decimal que o tamanho mínimo do contrato para o símbolo atual.

 

TRUNCATE(Etapa #8 / Current Price) 

 

10. Calcule quantas ações, unidades, etc. a corretora liquidará para cobrir a perda. Nossa corretora emulada vende quatro vezes a quantidade necessária para garantir que um evento de chamada de margem não seja constantemente acionado se as perdas continuarem. Esse valor será positivo para negociações short porque a corretora compra unidades para cobrir a perda em vez de vendê-las.

 

Etapa #9 * 4 

 

Para examinar esse cálculo em detalhes, vamos adicionar a Estratégia de Supertendência integrada ao gráfico NASDAQ:TSLA no período "1D" e definir o "Tamanho da ordem" como 300% do patrimônio líquido e a "Margem para posições long" como 25%:


A primeira entrada ocorreu no preço de abertura da barra em 16 de setembro de 2010. A estratégia comprou 682.438 ações (tamanho da posição) a 4,43 USD (preço de entrada). Em seguida, em 23 de setembro de 2010, quando o preço caiu para 3,9 (preço atual), o emulador liquidou à força 111.052 ações por meio do evento de Chamada de Margem.

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