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. 🦞