Tracking Esports ROI, CLV and Variance Without False Proof
A betting ledger answers three different questions: what happened to the money, what was predicted before the result, and how the accepted price compared with a defined reference. Those questions require separate columns. A profitable week is a result, not proof of a forecasting advantage. A favourable closing-price comparison is a diagnostic, not a guarantee that the closing market was correct. Build the record so that a later review can distinguish these statements instead of converting every winning streak into a claim of skill.
Start with the accepted ticket, not the price briefly visible on a screen. Save placement time, event identifier, game, market, selection, line, stake, currency and accepted odds. Add settlement status and net profit only when confirmed. Record pushes, voids, partial settlements and cash-outs explicitly rather than treating every non-win as a loss. For a series market, identify format and whether overtime or map advantages are included. A price comparison across different settlement definitions is not meaningful CLV.
Keep deposits, withdrawals and transfers outside betting profit. They change account balances without being wins or losses. Use one reporting currency with a recorded conversion convention if multiple currencies are involved, and show transfer and conversion fees separately. Otherwise a deposit can look like a recovery and a withdrawal can look like a drawdown. Reconcile the ledger with account statements at a scheduled interval. Preserve corrections with a reason so the historical record cannot quietly become a cleaned-up version of what happened.
Metrics and reference prices
Define turnover yield as total settled net profit divided by the relevant total stakes. State how voided stakes enter that denominator and apply the same policy throughout. Bankroll return has a different denominator. Win rate also needs a definition: a binary win/loss rate can exclude pushes, but the resulting number does not summarize every market. The reciprocal of average odds is a break-even win rate only under suitable common-price assumptions. With mixed prices and stakes, calculate profit or expected return ticket by ticket instead of using an average-odds shortcut.
For closing-price analysis, define both the reference source and cutoff before inspecting results. Compare the same selection and line under matching rules. Keep the full closing market when margin removal requires all outcomes. Missing references remain missing, with a reason; they are not zero and should not disappear from coverage statistics. If the reference changes, record the date and compare periods separately. A methodological change can create apparent improvement even when the selections have not changed.
Raw CLV compares two quoted prices. A de-margined version compares the taken price with an estimated fair reference. The latter still depends on the removal method and reference quality. If its probability equals the true probability, the price ratio equals expected return on a unit stake. That is a conditional identity, not evidence that the assumption holds. With variable stakes, unweighted average CLV and stake-weighted estimated yield answer different questions. Report the weighting rather than giving both numbers the same label.
Segments and uncertainty
Segment by game, market, event, model version, timing and roster or patch regime when relevant. Display counts, turnover, profit, reference coverage and the size of the largest positions. A positive aggregate can hide a negative segment, but searching many small segments also produces chance winners and losers. Choose review questions in advance and evaluate a later holdout period before increasing exposure because of an apparent pattern. A difference between two segments may reflect different odds, opponents or event selection rather than a useful forecasting difference.
Uncertainty calculations require a model of the observations. Independent equal-stake bets at a fixed price permit a simple binary-return variance. Bets from the same match can be correlated; changing odds, stakes and model versions invalidate an identical-trials shortcut. A standard error is conditional on those assumptions. A p-value is not the probability that the no-edge hypothesis is true, and a non-significant result does not prove no edge. Report estimates with assumptions and practical limits instead of a universal minimum number of bets.
Drawdown is measured from the running peak of a consistently defined capital series. A terminal loss, a longest losing streak and a maximum drawdown are different statistics. Record open exposure separately from settled cash so capital is not counted twice. Use the numerical example to check arithmetic, not to forecast a future path. Past maximum drawdown is an observation from one record, not an upper bound. External flows require adjustment or disclosure before comparing periods.
Reconciliation and decisions
At review time, first reconcile money and repair missing or mismatched records. Then compare forecasts with outcomes, inspect prices and examine plausible causes of changes. Check whether a stale lineup, obsolete patch, execution delay or different market definition explains the pattern. Make the decision explicit: observe, revise an input, reduce exposure or stop the segment. No positive CLV threshold proves profitability automatically, and no isolated negative segment proves model decay. Preserve the supporting evidence so the decision can be challenged later.
The local bankroll tool supports the functions visible in its interface. This guide does not promise automated CSV import, Monte Carlo paths or a forecast envelope. A separate spreadsheet can store additional fields. If you build an expected-profit line, use recorded forecast probabilities and accepted odds; do not relabel closing-price movement as established true expectation. Validate formulas on known tickets before extending them to the whole record. A transparent small ledger is more useful than a complex dashboard with an ambiguous denominator.
Worked conditional calculations
Hypothetical equal-stake binary ledger; every ticket has odds 2.05
n = 500; wins W = 261; losses L = 239; stake s = 1
profit = W * (2.05 - 1) - L = 35.05
turnover = 500; yield = 35.05 / 500 = 0.0701
observed win fraction = 261 / 500 = 0.522
common-price break-even probability = 1 / 2.05 = 0.487804878
return X = 1.05 on win, -1 on loss
plug-in mean = 0.0701
plug-in E[X^2] = 0.522 * 1.05^2 + 0.478 = 1.053505
plug-in variance = E[X^2] - mean^2 = 1.04859099
plug-in SD = sqrt(1.04859099)
independence-based SE = SD / sqrt(500)
This descriptive calculation does not establish a true probability.
Mixed-price counterexample: 2 wins / 4 bets, mean odds 2.00
odds list = [1.50, 1.50, 2.50, 2.50], stake 1 each
wins at 1.50 -> profit = 0.50 + 0.50 - 1 - 1 = -1
wins at 2.50 -> profit = -1 - 1 + 1.50 + 1.50 = +1
same mean odds and win count, different realized profit
Hypothetical closing comparison, proportional removal
taken = 2.10; closing A = 1.95; closing B = 1.87
Q = 1/1.95 + 1/1.87
a_fair = (1/1.95) / Q = 1.87 / (1.95 + 1.87)
fair odds A = (1.95 + 1.87) / 1.87 = 2.042780749
raw CLV = 2.10 / 1.95 - 1 = 0.076923077
reference CLV = 2.10 * 1.87 / 3.82 - 1 = 0.028010471
conditional EV only if true p = a_fair
Hypothetical capital observation, no external flows
running peak = 142.3; later trough = 118.6
absolute drawdown = 23.7
relative drawdown = 23.7 / 142.3 = 0.166549543
forecast expected profit = sum_i stake_i * (p_i * odds_i - 1)
independent variance = sum_i stake_i^2 * odds_i^2 * p_i * (1-p_i)
with dependence, add 2 * sum_{i<j} Cov(profit_i, profit_j)
forecast probabilities remain estimates, not established truth.
