npm.io
4.1.0 • Published yesterday

kelly-stake

Licence
MIT
Version
4.1.0
Deps
0
Size
17 kB
Vulns
0
Weekly
0
Install scriptsThis package runs scripts during installation (preinstall/install/postinstall)

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-stake

Quick 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) / b
  • p — win probability, 0..1
  • b — 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