Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

critère de Kelly dimensionnement position mesuré

Le critère de Kelly fixe la mise à partir de votre edge. Voyez ce que dix ans de rendements boursiers quotidiens impliquent pour le Kelly plein, le drawdown et le demi-Kelly en

Le critère de Kelly est une formule qui détermine la taille d'une mise. En lui fournissant une probabilité de gain, le montant d'un gain et le montant d'une perte, il renvoie la fraction de capital qui maximise le taux de croissance à long terme de la richesse. John Kelly l'a publié aux laboratoires Bell en 1956 comme un résultat de la théorie de l'information, et les joueurs ainsi que les traders l'ont adopté par la suite. Cette page présente la formule à partir des principes fondamentaux, puis mesure ce qu'elle prescrit sur dix années de rendements boursiers quotidiens réels, où la prescription s'avère intenable.

Ce que dit réellement le critère de Kelly

Prenons un pari répété qui rapporte une fraction g du montant misé avec une probabilité p, et qui perd une fraction l du montant misé avec une probabilité q, où q est égal à un moins p. La fraction de capital optimale pour la croissance à engager à chaque répétition est :

f* = p / l - q / g

Dans le cas classique d'un pari à enjeux égaux, où un gain rapporte ce qu'une perte coûte, g et l sont tous deux égaux à 1 et la formule se simplifie en f* = p - q. Cette différence est l'avantage lui-même. Un pari gagnant 60 % du temps à enjeux égaux offre un avantage de 20 points, et Kelly mise 20 % du capital sur celui-ci.

La dérivation est une simple étape de calcul appliquée à l'espérance mathématique du logarithme de la richesse. Maximiser le logarithme moyen de la richesse par pari équivaut à maximiser le taux de croissance composé sur une longue séquence, et la fraction qui y parvient est celle ci-dessus. Deux propriétés en découlent. Kelly ne mise jamais la totalité du capital sur un pari qui peut tout perdre, car le logarithme de zéro est l'infini négatif. Et toute fraction fixe autre que f, répétée suffisamment longtemps, se compose plus lentement que f.

Un tirage à pile ou face que vous pouvez vérifier manuellement

Les chiffres de cette section sont hypothétiques, choisis pour rendre le calcul visible. Prenons une pièce qui tombe sur pile 60 % du temps et paie à enjeux égaux, avec un capital de départ de 1 000 $.

  • Miser 20 % du capital à chaque tirage. Un gain fait passer le capital de 1 000 $ à 1 200 $ ; une perte le fait passer à 800 $. Un gain et une perte, dans n'importe quel ordre, laissent 960 $.
  • Miser 40 % du capital à chaque tirage. La même paire gain-perte fait passer le capital de 1 000 $ à 1 400 $, puis à 840 $.
  • Miser la totalité du capital à chaque tirage. Un seul côté face met fin définitivement à la séquence, quel que soit l'avantage.

Ce coût de 4 % sur un aller-retour avec une mise de 20 % est le prix de la composition d'un capital volatil, et une pièce à 60/40 le compense de nombreuses fois sur une longue séquence. Avec une mise de 40 %, le coût de l'aller-retour est de 16 %, et la pièce ne le compense plus : le taux de croissance à deux fois la fraction de Kelly atteint environ zéro. Au-delà de ce point, un pari avec un avantage réel et vérifié ne fait croître aucune richesse, ce qui est le fait unique le plus utile que la formule apporte.

Ce que la formule exige pour un pari boursier quotidien

Appliquons maintenant la même formule à un marché. Traitons un jour de bourse sur une action comme une répétition du pari : la probabilité de gain est la part des jours qui ont clôturé en hausse, la taille du gain est le mouvement moyen des jours de hausse, et la taille de la perte est le mouvement moyen des jours de baisse. Dix années civiles complètes de clôtures quotidiennes, de 2016 à 2025, sur six noms familiers :

RequêteEntrées Kelly issues des clôtures quotidiennes, 2016 à 2025 : taux de réussite, gain moyen, perte moyenne et fraction renvoyée par la formule
Le SQL exact derrière chaque chiffre
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

Lisez les trois premières colonnes et l'avantage semble minuscule. Les taux de victoire se regroupent près d'un tirage à pile ou face, et le jour de hausse moyen ainsi que le jour de baisse moyen sont de taille similaire pour chaque nom du tableau. SPY a clôturé en hausse lors de 55.3% de ses séances, gagnant 0.71% lors d'un jour de hausse moyen contre 0.76% lors d'un jour de baisse moyen.

La dernière colonne est là où les problèmes commencent. Ces intrants petits et presque équilibrés se situent dans les dénominateurs de la formule, et de petits dénominateurs produisent de grandes réponses. La fraction que la formule renvoie pour SPY est de 10.1 fois le capital, et la plus basse des 6 noms se situe encore à 2 fois. Le Kelly complet sur un pari boursier quotidien n'est pas un pourcentage du compte. C'est une demande de levier qu'aucun courtier n'accorde et qu'aucun compte ne supporte.

La forme du compromis

Voilà la théorie. Le panneau suivant est l'expérience. Prenons les rendements quotidiens réels du tracker du S&P 500 sur les mêmes dix années, multiplions le rendement de chaque jour par une taille de mise fixe, et composons le résultat. Une taille de mise de 1,0x correspond à l'indice sans levier. Une taille de mise de 3,0x engage trois dollars pour chaque dollar de capital, chaque jour, avec un rééquilibrage quotidien. Chaque ligne représente un chemin complet de dix ans, avec sa richesse finale et la baisse la plus profonde d'un sommet à un creux qu'il a subie en cours de route.

RequêteUne décennie de rendements quotidiens du S&P 500 capitalisés à huit tailles de mise fixes : richesse finale et drawdown maximal
Le SQL exact derrière chaque chiffre
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

À 0.5x, le chemin s'est terminé à 1.92 fois le capital de départ, avec une baisse maximale de 18.2% par rapport à un sommet antérieur. À 5x, avec les mêmes rendements quotidiens et la même décennie, le chemin s'est terminé à 14.35 fois, avec une baisse maximale de 94.5%.

Les deux colonnes évoluent différemment, et c'est toute la leçon du Kelly fractionnaire. La richesse finale augmente avec la taille de la mise pendant un certain temps, s'aplatit, puis diminue lorsque le frein de la composition de la volatilité dépasse l'exposition supplémentaire. La colonne des drawdowns n'a pas un tel point de retournement. Elle augmente à chaque étape à travers les 8 lignes, et elle augmente plus rapidement que la colonne de la richesse ne l'a jamais fait. La moitié de la croissance de la mise optimale est disponible à la moitié de la taille de mise optimale, pour une petite fraction de la douleur. Cette asymétrie est l'argument en faveur d'une mise inférieure à f*, et c'est la raison pour laquelle la convention de la demi-mise de Kelly existe.

L'estimation est le maillon faible, pas la formule

La formule est exacte pour un pari dont les probabilités sont connues. Dans un casino, les probabilités sont imprimées. Sur un marché, elles sont estimées à partir de l'historique, et l'estimation fluctue. Voici le même calcul que le premier panneau, effectué séparément sur chacune des dix années civiles pour un seul tracker d'indice.

RequêteLe même calcul Kelly sur le tracker S&P 500, année par année, 2016 à 2025
Le SQL exact derrière chaque chiffre
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

Chaque ligne est une estimation de la même quantité inconnue, construite à partir d'environ 250 observations. L'année 2016 a renvoyé 13.7, avec un taux de victoire de 53.8%. L'année 2025 a renvoyé 12.3, avec un taux de victoire de 57.8%. Le graphique montre à quel point 10 lectures d'un même nombre peuvent être éloignées lorsque chacune est tirée d'une seule année.

Cette dispersion importe plus que tout raffinement de la formule. Surestimez votre avantage d'un facteur deux et la formule renvoie environ le double de la taille de la mise, ce qui vous place au point où la croissance devient négative ou au-delà. Sous-estimez-le et vous renoncez à une croissance que vous auriez pu composer, sans risque de ruine. Les deux erreurs ne sont pas symétriques, et le côté bon marché de l'asymétrie est le côté modeste. Les praticiens qui utilisent Kelly ont tendance à miser la moitié, ou un quart, et à traiter la formule comme un plafond plutôt qu'un objectif.

Là où le modèle cesse de décrire un marché

Kelly suppose un pari que vous pouvez répéter avec des probabilités fixes et connues, et des résultats indépendants d'une répétition à l'autre. Un marché brise tout cela. Les probabilités sont estimées et changent avec le temps. Les rendements quotidiens se regroupent : les périodes calmes succèdent aux périodes calmes, et les journées violentes arrivent en groupes, ce qui étire les drawdowns au-delà de ce qu'une hypothèse d'indépendance prédit. Les positions ne sont pas soldées à la fin de chaque journée, les gaps sautent au-delà du prix auquel un pari aurait été clôturé, et les appels de marge arrivent selon le calendrier du courtier plutôt que selon le calendrier du modèle.

La formule conserve néanmoins son utilité en tant que limite. Elle énonce, en une ligne, qu'il existe une taille de mise au-delà de laquelle plus de conviction produit moins de richesse, et elle localise cette limite à partir de quantités qu'un trader peut au moins tenter de mesurer. C'est aussi pourquoi la même logique pointe vers la diversification : plusieurs paris partiellement indépendants partagent le même budget de risque total plus efficacement qu'un seul pari, ce qui est l'arithmétique sous-jacente au risque de concentration. Et pour un investisseur qui ajoute de l'argent selon un calendrier plutôt que de dimensionner des paris discrets, la question du dimensionnement des positions est résolue par le calendrier lui-même, ce qui est l'argument en faveur de l'investissement par sommes fixes.

FAQ

Quelle est la formule du critère de Kelly ?

Pour un pari qui rapporte une fraction g de la mise avec une probabilité p et qui perd une fraction l avec une probabilité q, la fraction de capital optimale pour la croissance est f = p / l - q / g. Dans le cas d'enjeux égaux, elle se simplifie en f = p - q, l'avantage lui-même.

Pourquoi les traders utilisent-ils la moitié de Kelly plutôt que le Kelly complet ?

La croissance est proche de la stagnation près de l'optimum tandis que le risque continue d'augmenter au-delà, donc réduire la mise de moitié sacrifie une quantité modeste de croissance à long terme et supprime une grande partie du drawdown. L'erreur d'estimation renforce l'argument : une mise doublée à partir d'un avantage surestimé se situe près du point où la croissance s'arrête.

Le critère de Kelly fonctionne-t-il pour les actions ?

Il s'applique en tant qu'arithmétique, et ses hypothèses de probabilités fixes et connues et de résultats indépendants ne tiennent pas sur les marchés. Appliqué naïvement aux rendements boursiers quotidiens, il exige un levier bien supérieur à ce qu'un compte peut supporter, comme le montre le premier panneau ci-dessus.

Que se passe-t-il si vous misez plus que la fraction de Kelly ?

Le taux de croissance à long terme diminue. À environ deux fois la fraction de Kelly, il atteint environ zéro, et au-delà, un pari avec un avantage réel réduit le capital au fil du temps tandis que ses drawdowns continuent de s'aggraver.

Le critère de Kelly est-il la même chose que risquer 1 % ou 2 % par transaction ?

Non. Une règle de pourcentage fixe ignore complètement les probabilités et applique le même nombre à chaque configuration. Kelly adapte la mise à l'avantage mesuré, ce qui le rend plus réactif lorsque l'avantage est connu et plus fragile lorsque l'avantage est deviné.


Chaque chiffre ci-dessus provient d'une requête stockée que vous pouvez ouvrir, modifier et réexécuter. Remplacez les tickers, la fenêtre temporelle ou la grille de tailles de mise et mesurez le compromis vous-même sur le terminal Strasmore.