Full Kelly vs Fractional Kelly in Python¶
This page builds on Kelly Criterion in Python: Calculate a Bankroll Fraction with Keeks, which covers the full Kelly formula, its inputs, and its clamps in detail. Read that page first if you have not already.
Quick answer¶
Fractional Kelly multiplies the full-Kelly fraction by a selected value between zero and one. Keeks does the scaling; you supply the fraction and the probability estimate.
Full Kelly versus fractional Kelly¶
Question |
Full Kelly |
Fractional Kelly |
|---|---|---|
What Keeks calculates |
The model’s full repeated-bet fraction |
|
Extra user input |
None |
A number from 0 through 1 |
Same payoff/loss/cost inputs? |
Yes |
Yes |
Does the result predict profit? |
No |
No |
Can it price a one-time gamble? |
Separate method |
Separate method; do not mix it into this comparison |
Smaller stake sizes change the strategy’s exposure to variance. They do not change, and cannot express, anything about whether the underlying probability estimate is correct.
Python comparison with identical inputs¶
Both classes take the same payoff, loss, and transaction_cost_rate
inputs and share the same evaluate() method:
from keeks.binary_strategies import (
FractionalKellyCriterion,
KellyCriterion,
)
inputs = {
"payoff": 1.0,
"loss": 1.0,
"transaction_cost_rate": 0.01,
}
bankroll = 1_000.0
probability = 0.55
full = KellyCriterion(**inputs)
half = FractionalKellyCriterion(**inputs, fraction=0.5)
quarter = FractionalKellyCriterion(**inputs, fraction=0.25)
for label, strategy in [
("Full Kelly", full),
("Half Kelly", half),
("Quarter Kelly", quarter),
]:
fraction = strategy.evaluate(probability, bankroll)
print(f"{label}: {fraction:.4%} (${bankroll * fraction:.2f})")
Full Kelly: 9.0009% ($90.01)
Half Kelly: 4.5005% ($45.00)
Quarter Kelly: 2.2502% ($22.50)
The values demonstrate scaling, not realized returns. Fractional Kelly computes the full-Kelly fraction first — floor and maximum-safe-bet clamp included — and only then multiplies by the selected fraction. See Kelly Criterion in Python: Calculate a Bankroll Fraction with Keeks for what those clamps do.
Half Kelly and quarter Kelly¶
fraction=0.5 (“half Kelly”) and fraction=0.25 (“quarter Kelly”) are
just FractionalKellyCriterion constructor arguments — there is no
separate class for them. Lower fractions reduce both the size of individual
stakes and the variance of the resulting bankroll path; they do not change
whether the strategy is right about the win probability.
What Keeks does and does not decide¶
FractionalKellyCriterion performs the scaling arithmetic and applies the
same safety floor and clamp as full Kelly. It does not decide which fraction
to use, and it does not validate your probability estimate. Those are
choices you make going in.
How to compare strategies in a simulation¶
A fair comparison between strategies needs:
a fresh bankroll and a fresh strategy object per run — simulators mutate the bankroll in place, and some strategies carry state across
evaluate()calls;identical simulator inputs (
payoff,loss,fee_per_bet,probability) across every strategy being compared;multiple seeded runs, because a single stochastic path does not support a general claim about which strategy is “better”; and
a distribution of terminal outcomes, not one number, since the mean of a Kelly-like strategy’s terminal bankroll is often dominated by a handful of extreme paths.
Keeks ships a seeded, reproducible benchmark that runs all nine strategies under identical assumptions and reports exactly this kind of distribution — median and percentile terminal bankroll, drawdown, growth rate, and early-stop rates. See Nine-Strategy Risk Benchmark for the current figures; this page does not restate them, so there is only one place they can go stale.
Repeated sizing is not one-time pricing¶
Both classes on this page answer a repeated-bet question. A different
question — the maximum price to pay for a single, one-time gamble with known
outcomes and probabilities — is answered by Utilities’s
find_indifference_price() instead. Keep the two separate.
Next step¶
Run the comparison code above with your own probability and fraction, then see Kelly Criterion in Python: Calculate a Bankroll Fraction with Keeks for the full-Kelly formula and clamp details, or Nine-Strategy Risk Benchmark for how all nine strategies behave under identical, seeded assumptions.