Lot Sizing e Risk Management para Bots Forex

A matemática de lot sizing e risk management pra bots forex. Regra de 1%, position sizing, Kelly.

Lot sizing errado é a causa #1 de blowup de conta em forex retail. Não é a estratégia — é o tamanho. Esta página cobre a matemática que deveria estar hardcoded em todo bot.

A regra de 1% (e por que não é negociável)

Princípio: nunca arrisque mais de 1% da conta em um único trade.

Por quê?

  • Com 10 trades perdedores seguidos arriscando 1% cada, você perde ~10% (sobrevivível)
  • Arriscando 5%, mesmos 10 perdedores = ~40% (drawdown que mata psicologia)
  • Arriscando 10%, mesmos 10 perdedores = ~65% (conta basicamente morta)

10 perdedores seguidos parece muito? Acontece. Variance é assim.

Calculando o lot size

A fórmula básica:

Lot Size = (Account Balance × Risk %) / (Stop Loss em pips × Pip Value)

Exemplo concreto:

  • Conta: US$ 5.000
  • Risk: 1% = US$ 50
  • SL: 30 pips
  • Pip value EUR/USD (1 lote padrão): US$ 10/pip
  • Lot size = US$ 50 / (30 × US$ 10) = 0.166 lots

Bot deve calcular isso pra cada trade, baseado no SL daquele trade específico — não fixar lot size.

Pip value por par

Pip value varia por par:

  • Pares com USD como quote (EUR/USD, GBP/USD): 1 pip = US$ 10 por lote padrão
  • Pares com USD como base (USD/JPY, USD/CHF): 1 pip = ~US$ 9 por lote padrão (depende do exchange rate)
  • Pares sem USD (EUR/GBP, EUR/JPY): conversão necessária via USD

Bot deve buscar pip value de uma fonte confiável (API do broker) em vez de hardcode.

Stop Loss não-negociável

Sem SL ≠ "stop mental". SL precisa estar no broker:

  • Internet pode cair — sua "stop mental" não fecha trade
  • VPS pode crashar — bot offline, posição aberta sem proteção
  • News pode mover preço 100 pips em 1 segundo — você não vai reagir a tempo

SL no broker é o último resort. Use sempre.

Distância do Stop Loss

Distância de SL depende de:

  • Volatilidade do par: EUR/USD ~30-50 pips, GBP/JPY ~80-150 pips em horizonte similar
  • Horizonte do trade: scalping = 10-20 pips, swing = 100-300 pips
  • Estrutura técnica: abaixo do swing low recente
  • ATR (Average True Range): SL = 1.5-2x ATR é heurística comum

Bot ideal calcula SL dinamicamente baseado em ATR ou estrutura, não usa valor fixo.

Take Profit e Risk:Reward Ratio

Risk:Reward ratio = quanto você arrisca pra quanto pretende ganhar.

  • 1:1 — você precisa de win rate >50% pra lucrar. Difícil.
  • 1:2 — você precisa de >33% win rate. Muito mais factível.
  • 1:3 — >25% win rate. Mais espaço.

Bot bem feito mira 1:2 ou melhor. Trades 1:1 ou pior são quase sempre marginais.

Kelly Criterion (avançado)

Pra otimizar lot size dado win rate e risk:reward conhecidos:

f* = (b·p - q) / b

Onde:
- f* = fração do bankroll a apostar
- b = odds (R:R ratio)
- p = probabilidade de ganhar
- q = probabilidade de perder (1 - p)

Exemplo:

  • Win rate p = 50% (0.5)
  • R:R b = 2.0
  • f* = (2 × 0.5 - 0.5) / 2 = 0.25 → 25% do bankroll

NUNCA use Kelly puro — variance é destrutiva. Use Kelly fractional (1/4 Kelly = 6.25% nesse exemplo, ainda alto). Pra retail, sticking a 1% regra fixa é mais robusto.

Correlação entre pares

Abrir 3 posições "diversificadas" em EUR/USD, GBP/USD e EUR/GBP não diversifica — todas correlacionadas. Bot deve:

  • Limitar exposure por par-base (max 1.5% em EUR-related ao mesmo tempo)
  • Considerar matriz de correlação dos últimos 30 dias
  • Reduzir lot size proporcionalmente quando múltiplas posições correlacionadas

Drawdown e kill switch

Limites de drawdown não-negociáveis:

  • Daily drawdown 3%: kill switch automático, retoma só amanhã
  • Weekly drawdown 8%: kill switch, retoma só semana seguinte
  • Monthly drawdown 15%: kill switch + revisão completa da estratégia

Esses limites parecem conservadores. São. Mas é por isso que poucos retail traders sobrevivem — não respeitam limites.

Position sizing scaling

Quando você está em winning streak, é tentador aumentar lot size. NÃO. Use anti-Martingale moderado:

  • +1% lot por 10% de equity ganho
  • -2% lot por 5% drawdown

Conservador na escalada, agressivo na redução. Capital preservation > capital growth.

Margin call e leverage real

Leverage anunciada pelo broker (500x) não é o que você usa. Leverage real usado:

Leverage Real = Position Notional / Equity

Exemplo:

  • Equity: US$ 5.000
  • Position: 0.5 lots EUR/USD = US$ 50.000 notional
  • Leverage real = 10x

Bot deve calcular e logar leverage real após cada ordem. Acima de 5x = warning. Acima de 10x = stop.

Configuração completa de risk pra bot

# risk_config.yml
max_risk_per_trade_pct: 1.0
max_daily_drawdown_pct: 3.0
max_weekly_drawdown_pct: 8.0
max_open_positions: 3
max_leverage_real: 5.0
max_correlated_exposure_pct: 2.0
min_risk_reward_ratio: 1.8
sl_atr_multiplier: 1.5
kill_switch_active: true
emergency_close_all_below_equity: 90.0  # % do initial

Próximas leituras

Estratégia chama atenção. Risk management ganha o jogo. 🦞