# methodology
OGM scores are transparent, reproducible, and computed only within the open-weights set — a score says how a model compares to other open-weights models, not to closed frontier models. Three principles:
- No imputation. When a signal is missing, its weight is dropped and the remaining weights renormalize. A missing benchmark never becomes a fake number.
- Confidence is explicit. ● high = all signals present, ● medium = one missing, ● low = a single signal. Unranked models have none.
- Every score is explainable. The published rankings.json embeds each model's normalized inputs and the weights below, so anyone can recompute any score.
- One signal doesn't make a rank. A numbered position requires at least two independent signals. Single-signal models are scored but marked provisional and sort after every ranked model (the agentic list is exempt — it is a single-benchmark ranking by construction).
## overall weights
| signal | weight |
|---|---|
| aa_intelligence | 0.50 |
| arena_elo | 0.30 |
| bench_composite | 0.20 |
## coding weights
| signal | weight |
|---|---|
| aa_coding | 0.25 |
| aider_polyglot | 0.25 |
| arena_elo_code | 0.15 |
| swe_bench_verified | 0.35 |
## agentic weights
| signal | weight |
|---|---|
| swe_bench_verified | 1.00 |
## signal normalization
aa_intelligence/aa_coding— Artificial Analysis indices, already 0–100, used as-is.arena_elo— LMArena Elo, scaled 0–100 anchored at the open-weights set's median (= 50) with a fixed slope of 1 point per 4 Elo, clamped — score gaps mirror true Elo gaps regardless of board size. The arena boards list a rotating top-N, so the last measured Elo persists for 30 days after a model rotates off, then lapses.bench_composite— mean of within-set percentile ranks across the capability benchmark pool (the LLM Stats matrix, the LiveBench category means, SWE-bench Verified, Aider polyglot, and the arena vision Elo); requires at least 3 benchmarks before it counts.swe_bench_verified,aider_polyglot,arena_elo_code— within-set percentile ranks (best open-weights submission per model).
## data flow
A pipeline pulls ten sources daily (Hugging Face, OpenRouter, Artificial Analysis,
LLM Stats, LiveBench, LMArena, Epoch AI, SWE-bench, Aider, LiteLLM), resolves every record to a
canonical model through a hand-curated registry, and publishes the merged dataset —
the same JSON this site and the ogm CLI read, public at
/data/v1/. Provider prices refresh every 6 hours.
Failed sources fall back to their last snapshot and are marked stale in the footer.
The scoring implementation lives in the repo as pure, golden-tested functions.