About & Methodology

Who runs this site, and exactly how the numbers get made.

I'm C. B. Zakarian, and this is my site. SoccerAnalytics.net is one person running numbers on public football data and trying to explain what they actually mean — no editorial team, no sponsor, no agenda beyond getting the maths right.

Why I built it

C. B. Zakarian is an independent analyst who writes about what he can measure: ball sports and the player-run economies inside Roblox. He builds every model, chart, and calculator here himself from public data, shows the working, and never invents a number. When the data can't answer a question, he says so. On SoccerAnalytics.net, that means xG and the rest of football's numbers, computed from public data with the script behind each piece published.

The short version: expected goals and pressing metrics had leaked into mainstream commentary years before anyone bothered to explain them properly, and most of what passed for explanation was either hand-waving or marketing. I'm a stubborn sort. I don't really believe a number until I've computed it myself, watched it move, and seen where it falls apart. So I started writing the explanations I wished existed — the ones that show the formula, run the code, and admit the parts that are still guesswork.

Nobody pays me to reach a conclusion here. I'm not tied to a club, a league, a broadcaster or a data vendor. When a model I like turns out to be wrong — and models are wrong constantly, often in interesting ways — I'd rather write that up than quietly defend a bad take.

How I work

One rule sits above everything else: every statistic in every article traces back to a real data pull, and the script that produced it gets published next to the piece. If I can't source a number that way, it doesn't go in. You will not find an invented figure dressed up as a measured one on this site. When the World Cup is mid-tournament and I don't have the data yet, I say so and talk about method instead of pretending I have results.

The data comes from three public sources, in roughly this order of preference:

  • StatsBomb open data — free, deep event data (every pass, shot, carry and pressure, with xG and freeze-frames) across a good spread of competitions, including several World Cups and Champions League seasons. It does most of the heavy lifting here. Anything built from it carries the attribution they ask for: "Data: StatsBomb open data."
  • Understat — season-long xG for the big European leagues, which I lean on when I need full-league tables the open event data doesn't cover.
  • FBref (Opta/StatsPerform numbers) — for breadth. I follow their scraping etiquette: requests spaced several seconds apart, responses cached locally, so a refresh never hammers their servers.

The tools are deliberately dull and reproducible — Python, statsbombpy for the data, mplsoccer and matplotlib for the pitch maps, pandas for the crunching. Each data-driven piece has a matching script in /scripts/ you can run yourself to refresh the figures or check how I got them. Charts and tables get captioned with their source and the date the data was pulled — say, "Data: StatsBomb open data, retrieved June 2026" — because football data gets revised and a number is only as good as the snapshot behind it.

What I'm skeptical of

I love this stuff, which is exactly why I don't trust most of how it gets used. A few things make me wince. People quote a single match's xG as if one game tells you anything — it mostly doesn't; the samples are tiny and the variance is enormous. "Underlying numbers" gets wheeled out to defend whatever the speaker already believed. And there's a tendency to treat any model output as more real than the football it came from, when half the value of a model is watching where it breaks. I try to write with that skepticism pointed at my own work first.

What you can expect (and what you can't)

Plain language, real worked examples, honest uncertainty, and the occasional dry joke. Historical facts, formulas and rule changes I'll just state. Anything dressed as a current or recent-season stat is pulled fresh and dated.

No betting tips. No picks, no odds, no sportsbook language anywhere on the site — probabilities here are analytical tools and nothing more.

One author, several sites

I'm C. B. Zakarian. I write a family of data sites — sports analytics on one side, Roblox's trading economies on the other — all built the same way: public data, open methods, real charts, no invented numbers. The range isn't as odd as it looks; a Pythagorean win expectation and a virtual pet's trade value are the same problem in different clothes — noisy public numbers that reward careful measurement. Every site carries my name because I'd rather stand behind the work than hide behind a brand.

Corrections

Spot an error — a mislabelled axis, a stale number, a shaky assumption — and tell me; I'll fix it and note the change. Being corrected efficiently is most of what good analysis is. Reach me via the contact page or at contact@socceranalytics.net.

Last updated 2 May 2026.