Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

critério de Kelly dimensionamento de posição

O critério de Kelly define o tamanho da aposta a partir do seu edge. Veja o que dez anos de retornos diários de ações revelam sobre Kelly total, drawdown e meio Kelly na prática.

O critério de Kelly é uma fórmula para o tamanho da aposta. Forneça a probabilidade de ganhar, o tamanho de um ganho e o tamanho de uma perda, e ela retorna a fração do capital que maximiza a taxa de crescimento da riqueza no longo prazo. John Kelly o publicou no Bell Labs em 1956 como um resultado da teoria da informação, e apostadores e traders o adotaram depois. Esta página percorre a fórmula a partir dos primeiros princípios e, em seguida, mede o que ela prescreve em dez anos de retornos reais diários de ações, onde a prescrição acaba sendo inviável.

O que o critério de Kelly realmente diz

Considere uma aposta repetida que ganha uma fração g do valor apostado com probabilidade p, e perde uma fração l do valor apostado com probabilidade q, onde q é um menos p. A fração de capital que otimiza o crescimento em cada repetição é:

f* = p / l - q / g

No caso clássico de odds iguais, onde um ganho custa o mesmo que uma perda, g e l são ambos iguais a 1 e a fórmula se reduz a f* = p - q. Essa diferença é a própria vantagem. Uma aposta que ganha 60% das vezes com odds iguais carrega uma vantagem de 20 pontos percentuais, e Kelly determina apostar 20% do bankroll nela.

A derivação é uma única etapa de cálculo aplicada ao logaritmo esperado da riqueza. Maximizar o logaritmo médio da riqueza por aposta é equivalente a maximizar a taxa de crescimento composta ao longo de uma longa sequência, e a fração que atinge isso é a mostrada acima. Duas propriedades decorrem disso. Kelly nunca aposta todo o bankroll em uma aposta que pode perder tudo, pois o logaritmo de zero é infinito negativo. E qualquer fração fixa diferente de f, repetida por tempo suficiente, compõe mais lentamente do que f.

Um cara ou coroa que você pode verificar manualmente

Os números nesta seção são hipotéticos, escolhidos para tornar a aritmética visível. Considere uma moeda que dá cara 60% das vezes e paga odds iguais, com um bankroll inicial de R$ 1.000.

  • Aposte 20% do bankroll em cada lance. Uma vitória leva R$ 1.000 para R$ 1.200; uma perda leva para R$ 800. Uma vitória e uma perda, em qualquer ordem, deixam R$ 960.
  • Aposte 40% do bankroll em cada lance. O mesmo par vitória-depois-perda vai de R$ 1.000 para R$ 1.400 para R$ 840.
  • Aposte todo o bankroll em cada lance. Uma única coroa encerra a sequência permanentemente, independentemente da vantagem.

Esse custo de ida e volta de 4% com aposta de 20% é o preço de compor um bankroll volátil, e uma moeda 60/40 cobre isso muitas vezes ao longo de uma longa sequência. Com aposta de 40%, o custo de ida e volta é de 16%, e a moeda não cobre mais: a taxa de crescimento com o dobro da fração Kelly chega a aproximadamente zero. Além desse ponto, uma aposta com uma vantagem genuína e verificada não cresce nada, que é o fato mais útil que a fórmula carrega.

O que a fórmula pede em uma aposta diária de ações

Agora aponte a mesma fórmula para um mercado. Trate um dia de negociação em uma ação como uma repetição da aposta: a probabilidade de ganhar é a parcela de dias que fecharam em alta, o tamanho do ganho é o movimento médio dos dias de alta, e o tamanho da perda é o movimento médio dos dias de baixa. Dez anos civis completos de fechamentos diários, de 2016 a 2025, em seis nomes familiares:

QueryEntradas de Kelly a partir de fechamentos diários, 2016 a 2025: taxa de acerto, ganho médio, perda média e a fração retornada pela fórmula
O SQL exato por trás de cada número
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), window_start) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'KO', 'JNJ', 'MSFT', 'NVDA', 'TSLA')
      AND window_start >= '2016-01-01 00:00:00'
      AND window_start <  '2026-01-01 00:00:00'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, dt
),
steps AS (
    SELECT ticker, dt, c,
           lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt
                               ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
    FROM daily
),
rets AS (
    SELECT ticker, c / prev - 1 AS ret
    FROM steps
    WHERE prev > 0 AND c != prev
)
SELECT ticker,
       round(100 * countIf(ret > 0) / count(), 1) AS win_rate_pct,
       round(100 * avgIf(ret, ret > 0), 2) AS avg_gain_pct,
       round(100 * abs(avgIf(ret, ret < 0)), 2) AS avg_loss_pct,
       round(countIf(ret > 0) / count() / abs(avgIf(ret, ret < 0))
             - countIf(ret < 0) / count() / avgIf(ret, ret > 0), 1) AS full_kelly_x
FROM rets
GROUP BY ticker
HAVING countIf(ret > 0) > 0 AND countIf(ret < 0) > 0
ORDER BY full_kelly_x DESC
Run this yourself

Leia as três primeiras colunas e a vantagem parece minúscula. As taxas de vitória se aglomeram perto de um cara ou coroa, e o dia médio de alta e o dia médio de baixa têm tamanhos próximos para todos os nomes no painel. SPY fechou em alta em 55.3% de suas sessões, ganhando 0.71% em um dia médio de alta contra 0.76% em um dia médio de baixa.

A última coluna é onde o problema começa. Essas entradas pequenas e quase equilibradas ficam nos denominadores da fórmula, e denominadores pequenos produzem respostas grandes. A fração que a fórmula retorna para SPY é 10.1 vezes o capital, e o menor dos 6 nomes ainda fica em 2 vezes. O Kelly completo em uma aposta diária de ações não é uma porcentagem da conta. É uma demanda por alavancagem que nenhum corretora oferece e nenhuma conta sobrevive.

A forma do trade-off

Essa é a teoria. O próximo painel é o experimento. Pegue os retornos diários reais do tracker do S&P 500 no mesmo período de dez anos, escale o retorno de cada dia por um tamanho de aposta fixo e componha o resultado. Um tamanho de aposta de 1,0x é o índice sem alavancagem. Um tamanho de aposta de 3,0x compromete três dólares para cada dólar de capital, todos os dias, rebalanceado diariamente. Cada linha é um caminho completo de dez anos, com sua riqueza final e a maior queda de pico a vale que sofreu ao longo do caminho.

QueryUma década de retornos diários do S&P 500 compostos em oito tamanhos fixos de aposta: riqueza final e pior drawdown
O SQL exato por trás de cada número
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), window_start) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2016-01-01 00:00:00'
      AND window_start <  '2026-01-01 00:00:00'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY dt
),
steps AS (
    SELECT dt, c,
           lagInFrame(c) OVER (ORDER BY dt ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
    FROM daily
),
rets AS (
    SELECT dt, c / prev - 1 AS ret
    FROM steps
    WHERE prev > 0
),
sizes AS (
    SELECT arrayJoin([0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0]) AS bet
),
paths AS (
    SELECT bet, dt,
           exp(sum(log(greatest(1 + bet * ret, 0.0001)))
               OVER (PARTITION BY bet ORDER BY dt
                     ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) AS equity
    FROM rets CROSS JOIN sizes
),
peaks AS (
    SELECT bet, dt, equity,
           max(equity) OVER (PARTITION BY bet ORDER BY dt
                             ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS peak
    FROM paths
)
SELECT concat(toString(bet), 'x') AS bet_size,
       round(argMax(equity, dt), 2) AS ending_multiple,
       round(100 * max(1 - equity / peak), 1) AS max_drawdown_pct
FROM peaks
GROUP BY bet
ORDER BY bet
Run this yourself

Em 0.5x o caminho terminou em 1.92 vezes o capital inicial, com uma pior queda de 18.2% a partir de um pico anterior. Em 5x, os mesmos retornos diários e a mesma década, o caminho terminou em 14.35 vezes, com uma pior queda de 94.5%.

As duas colunas se movem de forma diferente, e essa é toda a lição do Kelly fracionário. A riqueza final aumenta com o tamanho da aposta por um tempo, estabiliza e depois cai à medida que o arrasto da composição da volatilidade supera a exposição extra. A coluna de drawdown não tem esse ponto de inflexão. Ela sobe a cada passo nas 8 linhas, e sobe mais rápido do que a coluna de riqueza jamais subiu. Metade do crescimento da aposta ótima está disponível com metade do tamanho da aposta ótima, a uma pequena fração da dor. Essa assimetria é o argumento para apostar menos que f*, e é por isso que a convenção do meio-Kelly existe.

A estimativa é a parte fraca, não a fórmula

A fórmula é exata para uma aposta cujas odds são conhecidas. Em um cassino, as odds estão impressas. Em um mercado, elas são estimadas a partir do histórico, e a estimativa oscila. Aqui está o mesmo cálculo do primeiro painel, executado separadamente em cada um dos dez anos civis para um único tracker de índice.

QueryO mesmo cálculo de Kelly no tracker do S&P 500, ano a ano, 2016 a 2025
O SQL exato por trás de cada número
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), window_start) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2016-01-01 00:00:00'
      AND window_start <  '2026-01-01 00:00:00'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY dt
),
steps AS (
    SELECT dt, c,
           lagInFrame(c) OVER (ORDER BY dt ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
    FROM daily
),
rets AS (
    SELECT dt, c / prev - 1 AS ret
    FROM steps
    WHERE prev > 0 AND c != prev
)
SELECT toString(toYear(dt)) AS year,
       round(100 * countIf(ret > 0) / count(), 1) AS win_rate_pct,
       round(100 * avgIf(ret, ret > 0), 2) AS avg_gain_pct,
       round(100 * abs(avgIf(ret, ret < 0)), 2) AS avg_loss_pct,
       round(countIf(ret > 0) / count() / abs(avgIf(ret, ret < 0))
             - countIf(ret < 0) / count() / avgIf(ret, ret > 0), 1) AS full_kelly_x
FROM rets
GROUP BY year
HAVING countIf(ret > 0) > 0 AND countIf(ret < 0) > 0
ORDER BY year
Run this yourself

Cada linha é uma estimativa da mesma quantidade desconhecida, construída a partir de aproximadamente 250 observações. O ano 2016 retornou 13.7, com uma taxa de vitória de 53.8%. O ano 2025 retornou 12.3, com uma taxa de vitória de 57.8%. O gráfico mostra o quão distantes 10 leituras de um único número podem ficar quando cada uma é extraída de um único ano.

Essa dispersão importa mais do que qualquer refinamento da fórmula. Superestime sua vantagem por um fator de dois e a fórmula devolve aproximadamente o dobro do tamanho da aposta, o que o coloca no ponto ou além do ponto onde o crescimento se torna negativo. Subestime-a e você abre mão de crescimento que poderia ter composto, sem risco de ruína. Os dois erros não são simétricos, e o lado barato da assimetria é o lado pequeno. Praticantes que usam Kelly tendem a apostar metade dele, ou um quarto, e tratam a fórmula como um teto, não como uma meta.

Onde o modelo para de descrever um mercado

Kelly assume uma aposta que você pode repetir com odds fixas e conhecidas, e resultados que são independentes de uma repetição para a próxima. Um mercado quebra tudo isso. As odds são estimadas e mudam ao longo do tempo. Os retornos diários se aglomeram: períodos calmos seguem períodos calmos, e dias violentos chegam em grupos, o que estica os drawdowns além do que uma suposição de independência prevê. As posições não são liquidadas no final de cada dia, gaps pulam o preço onde uma aposta teria sido fechada, e chamadas de margem chegam no cronograma da corretora, não no cronograma do modelo.

A fórmula ainda ganha seu lugar como um limite. Ela afirma, em uma linha, que existe um tamanho de aposta além do qual mais convicção produz menos riqueza, e localiza esse limite a partir de quantidades que um trader pode pelo menos tentar medir. É também por isso que a mesma lógica aponta para a diversificação: várias apostas parcialmente independentes compartilham o mesmo orçamento total de risco de forma mais eficiente do que uma única aposta, que é a aritmética por trás do risco de concentração. E para um investidor que adiciona dinheiro em um cronograma, em vez de dimensionar apostas discretas, a questão do dimensionamento da posição é respondida pelo próprio cronograma, que é o caso da média do custo em dólar.

FAQ

Qual é a fórmula do critério de Kelly?

Para uma aposta que ganha uma fração g do valor apostado com probabilidade p e perde uma fração l com probabilidade q, a fração de capital que otimiza o crescimento é f = p / l - q / g. No caso de odds iguais, simplifica para f = p - q, a própria vantagem.

Por que os traders usam meio Kelly em vez de Kelly completo?

O crescimento é quase estável perto do ótimo, enquanto o risco continua subindo além dele, então cortar a aposta pela metade sacrifica uma quantidade modesta de crescimento de longo prazo e remove uma grande parcela do drawdown. O erro de estimativa agrava o argumento: uma aposta dobrada a partir de uma vantagem superestimada fica perto do ponto onde o crescimento para.

O critério de Kelly funciona para ações?

Ele se aplica como aritmética, e suas suposições de odds fixas e conhecidas e resultados independentes não se sustentam nos mercados. Aplicado ingenuamente a retornos diários de ações, ele pede uma alavancagem muito além do que qualquer conta pode suportar, como mostra o primeiro painel acima.

O que acontece se você apostar mais do que a fração Kelly?

A taxa de crescimento de longo prazo cai. Em aproximadamente o dobro da fração Kelly, ela atinge cerca de zero, e além disso uma aposta com uma vantagem real encolhe o capital ao longo do tempo, enquanto seus drawdowns continuam se aprofundando.

O critério de Kelly é o mesmo que arriscar 1% ou 2% por trade?

Não. Uma regra de porcentagem fixa ignora completamente as odds e aplica o mesmo número a todas as configurações. Kelly dimensiona a aposta com a vantagem medida, o que a torna mais responsiva quando a vantagem é conhecida e mais frágil quando a vantagem é adivinhada.


Cada número acima vem de uma consulta armazenada que você pode abrir, editar e executar novamente. Troque os tickers, a janela ou a grade de tamanhos de aposta e meça o trade-off você mesmo no terminal Strasmore.