Kelly grows your account; it doesn't keep you alive. Add a simulated drawdown budget, a CVaR tail cap that VaR hides, and a portfolio QP that prices the correlated blowup you didn't see.
Kelly gives the growth-optimal bet size, outputs "no trade" when the edge is too thin, and punishes overbetting with ruin while underbetting only costs growth. Bet small, often, and never the negative-f* trades.
Bayes turns news into an edge, but the whole trade hangs on the likelihood ratio you estimate. Update in log-odds, tie it to the maker's softmax, and gate every belief on three tests: better, earlier, calibrated. Then shrink.
A prediction-market price is the capital-weighted consensus, not a probability fact. Coherent prices can still be wrong, but before betting your view, pass the Brier Skill Score gate: beat the market on your own logged forecasts or stop.
The clean arbitrage solver crashes near 99 cents because the log gradient blows up at the boundary. The barrier fix shrinks the shape off 0 and 1, converging slower but actually finishing.
Frank-Wolfe projects onto a shape with a quintillion corners by adding one corner per step, about a hundred total, with a gap number that certifies how much profit you might still be missing.
A bracket has 9.2 quintillion outcomes and you can describe the legal ones with about 200 rules. Read them as assert statements, hand the solver a direction, and it returns one valid outcome at a time.
The cleanest prediction-market edge is geometric, not predictive. Learn convex sets, polytopes, separating hyperplanes, conjugates, and why KL beats Euclidean, and the arbitrage machinery stops looking like a wall.
Most of your cost is trading the noise in a signal, not the edge. Build 10 to 20 variants of one alpha and average: true parts survive, noise divides by N. Don't pick the best lookback, keep them all.
OLS is the best unbiased fit only under assumptions markets shatter, so on correlated alphas it hands you wild coefficients. Add an L2 or L1 penalty: biased, lower variance, steadier out of sample.
Stochastic calculus is one twist on the integral you know. Riemann weights rectangles by equal width, Riemann-Stieltjes by a function g, Itô by Brownian motion. Random weights make the integral a process Y(t).
Profiling a slow algo points at JSON decode, not your alpha. Put the simple hot path (decode, filter, forward) in Rust and keep the complex stateful brain (OMS, reporting, unwinding) in Python. Split at the JSON, forward binary, and match your backtest exactly.