Methodology
in plain math.

How we find value in sports markets, why CLV is our north star, and the exact filter parameters that pass. Updated when the data changes — last refresh shown below.

Open source — public formulas Paper trading — no real money yet Last updated · 04 May 2026 11:00 UTC

Three numbers that define an edge

Value betting is a math problem first. Three formulas matter — everything else is execution.

[ EV ]

Expected value

EV = p × (k − 1) − (1 − p)

p — your true win probability. k — bookmaker's odds. EV > 0 means a value bet. Anything below zero is gambling.

[ CLV ]

Closing Line Value

CLV = k_taken / k_close − 1

The single most predictive metric of long-term ROI. If you consistently beat the closing line, profit follows on a long enough timeline. ROI is noise until ~1000 bets.

[ Kelly ]

Stake size

f = (b × p − q) / b · 0.25

Kelly maximises log-growth of bankroll. We take ¼ Kelly to halve variance, capped at 1.5% of bankroll. Full Kelly is mathematically optimal but psychologically unbearable.

What feeds the engine

Three sharp books for fair-line consensus, eight RU books for line-shopping, internal Elo for sanity-check on tennis.

[ Sharps ]

Fair-line consensus

Median of Pinnacle, Betfair Exchange, and Matchbook — three sharps via the-odds-api. Three-source median eliminates stale lines and single-book noise. Sharp_spread filter rejects events where consensus disagrees by more than 8 percentage points (likely news shock).

[ RU books ]

Line-shopping

Live odds from Fonbet and Pari every 30 minutes (1xСтавка in dev — Cloudflare Bot Management). For each value signal we take the highest of the available RU prices. 1xBet and Marathonbet excluded for non-tennis sports — known multi-sport limit-cutting.

[ Engine ]

Internal Elo + median sharps

Custom Elo trained on 91k+ matches across 14 sports. For tennis, ATP+WTA models use 2015-warmup walk-forward. The model is a sanity check — sharp consensus drives bet decisions. Glicko-2 lost in backtest (ADR-009) — Elo wins on this dataset.

[ News ]

News impacts

RSS fetcher monitors ~30 sources every 55 min — fuzzy-matched to competitors and events. Confirmed news (≥2 sources) flag the value engine to skip or down-weight. Anti-fake corroboration filter prevents single-tweet manipulation.

What gets through (ADR-008 LOCK)

Locked after 0.5-sprint backtest on 10,682 ATP matches 2022-2025. Walk-forward Elo + grid search across 324 filter combinations + bootstrap CIs.

[ Pass ]

Bet passes if all true

k_RU ∈ [1.30, 3.00] EV ≥ +3% (max +20%) sharp_spread ≤ 8 п.п. news flag = none

EV upper bound (20%) is a safety guard against engine bugs and stale lines. Anything above is more likely a data error than a real edge.

[ Stop ]

Stop-loss criteria

CLV < +3% over 50 → STOP ROI < −5% over 200 → REVIEW Pinnacle margin > 5% × 7d → PAUSE

Three independent guard rails. ¼ Kelly + 1.5% bankroll cap means we can sustain a 30% drawdown without a margin call.

Public, embedded, no cherry-picking

Snapshot from our database. Includes ALL paper-mode settled bets — wins, losses, voids. ROI is noise at this N — track CLV.

37
Settled bets
9 / 28
Won / Lost
+14.9%
Avg CLV
-33.1%
ROI · noisy at N<200
Last 50 settled bets · auto-rendered from database
Date Sport Side Odds Result CLV
Sport breakdown
Sport Bets W Avg CLV Net P/L (₽)

CLV distribution across all paper bets

Each bar = number of bets in a CLV bucket. Mass concentrated to the right of zero is the visual proof of edge — even if individual bets lose.

Σ Pulse — five rubrics, daily

Live in @value_sniper_research (Telegram) and Bluesky. Triple-publish where applicable. Bot-driven, no manual moderation past initial template lock.

[ 09:00 МСК ]

📰 ТОП ДНЯ

Main news of the day, auto-translated to RU. Driven by RSS impact-score.

[ 15:00 МСК ]

⚡ Σ FACT

Random data fact pulled from the database — historic CLV oddities, sport breakdowns, bookmaker margin trends.

[ 21:00 МСК ]

🌙 ВЕЧЕРНИЙ MENU

Daily wrap-up: today's posts, top reactions, settled bets, P/L. Also: any open questions for the morning.

[ :00 / :30 ]

📊 LINE MOVED

Triggered when Pinnacle line moves >5pp over 6 hours. Indicates a sharp re-pricing — useful as a leading signal even if no value bet appeared.

[ :15 / :45 ]

🎯 FOUND VALUE

A value bet we just placed (paper). Posted with 30-minute delay and the bookmaker name redacted — protects the edge from public reverse-engineering.

[ Reactions ]

Inline 🔥 / 📊 / 👀

Every Pulse post has three inline reactions — captured into pulse_reactions table for engagement analytics in the daily MENU.

⚠️ Methodology document only. NOT financial advice. NOT bookmaker advertising. Sports betting carries financial risk. Do not bet what you cannot afford to lose. 18+. Currently paper-trading only — no real bets are placed by this system. Real-money phase requires 200+ bets with positive CLV.