kelly-stake
v4.1.0
Published
Kelly criterion position sizing and bankroll risk management.
Maintainers
Readme
kelly-stake
Kelly criterion position sizing and bankroll risk management for betting and trading.
- Zero runtime dependencies — pure, deterministic math.
- No install scripts — nothing runs on
npm install. - TypeScript-first — ships type declarations.
- Guard rails built in: fractional Kelly, bankroll-fraction caps, min/max stake clamps, and never a negative stake.
Install
npm install kelly-stakeQuick start
import { kellyStake, kellyStakeFromReturns } from "kelly-stake";
// Size a bet from a known edge (60% win chance, even money), half-Kelly:
const stake = kellyStake(
{ winProbability: 0.6, payoffRatio: 1 },
{ bankroll: 1000, fraction: 0.5, maxFraction: 0.2 }
);
// -> 100 (raw f*=0.2, half-Kelly=0.1, 10% of 1000)
// Or estimate the edge from realised per-trade returns and size directly:
const returns = [1.0, 1.0, -0.5, -0.5]; // +100%, +100%, -50%, -50%
const next = kellyStakeFromReturns(returns, { bankroll: 1000, fraction: 0.5 });The formula
f* = p - (1 - p) / bp— win probability,0..1b— net payoff ratio (units won per unit staked on a win)
A negative f* means no edge → stake 0. Full Kelly maximises long-run growth
but is volatile and unforgiving of estimation error, so prefer fractional
Kelly (fraction: 0.5 is common) with a hard maxFraction cap.
API
| Function | Purpose |
|---|---|
| kellyFraction(winProbability, payoffRatio) | Raw Kelly fraction f*, clamped >= 0. |
| kellyFractionFromDecimalOdds(winProbability, decimalOdds) | Kelly from decimal odds (stake-inclusive payout). |
| fractionalKelly(kelly, fraction) | Apply a fractional-Kelly multiplier. |
| kellyStake(bet, options) | Concrete stake with fractional Kelly, caps and clamps. |
| edgeFromReturns(returns) | Estimate { winProbability, payoffRatio, sampleSize } from realised returns. |
| kellyStakeFromReturns(returns, options) | Estimate the edge, then size the stake. |
StakeOptions
| Option | Default | Meaning |
|---|---|---|
| bankroll | — | Total bankroll to size against (required). |
| fraction | 1 | Fractional-Kelly multiplier, 0..1. |
| maxFraction | 1 | Cap on the bankroll fraction per stake, 0..1. |
| minStake | 0 | Floor for any non-zero stake. |
| maxStake | Infinity | Ceiling for any stake. |
Disclaimer
The Kelly criterion assumes accurate estimates of win probability and payoff. Real edges are uncertain — under-betting (fractional Kelly) is far safer than over-betting. This library is provided for educational purposes and is not financial advice.
License
MIT
