# methodology
OGM methodology v5 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 while its two benchmarks still cover nearly disjoint model sets).
## overall weights
| signal | weight |
|---|---|
| aa_intelligence | 0.70 |
| bench_composite | 0.30 |
## coding weights
| signal | weight |
|---|---|
| aa_coding | 0.30 |
| aider_polyglot | 0.30 |
| swe_bench_verified | 0.40 |
## agentic weights
| signal | weight |
|---|---|
| swe_bench_verified | 0.60 |
| swe_rebench | 0.40 |
## signal normalization
aa_intelligence/aa_coding— Artificial Analysis indices, entered as within-set percentile ranks (the raw index is shown on model pages). Every ranking input shares the same percentile scale and center — mixing raw indices with 50-centered percentiles would systematically deflate models whose evidence is AA-heavy.arena_elo— LMArena Elo is published but does not score: the boards list only chart-toppers (three open models today), and a 3-model human-preference board carrying real weight let one elite model's slightly-cool Elo reorder the podium against peers the board never measured. Elo rows remain on model pages and in the dataset; the boards rotate a top-N, so the last measured Elo persists for 30 days after a model rotates off, then lapses.bench_composite— equal mean of complete, versioned benchmark-panel scores. A model must have every measurement in a panel; percentiles use only that same-exam cohort; and a panel activates only with at least 6 models from 3 organizations. Each panel is anchored at its cohort's median AA percentile — panel cohorts are coverage elites, and centering them at 50 would drag every measured model toward the middle while unmeasured peers escape. Spread shrinks toward the anchor until the complete cohort reaches 25 models, and each panel contributes one vote regardless of how many category rows it contains.swe_bench_verified,aider_polyglot— within-set percentile ranks (best open-weights submission per model).
## benchmark panels
The raw benchmark feed is larger than the scoring set. Sparse, overlapping, superseded, and modality-incompatible rows remain visible on model profiles but do not silently become rank inputs. Current immutable panels:
| panel | complete measurements required | modality |
|---|---|---|
aime-2025-v1 | AIME 2025 | text |
aime-2026-v1 | AIME 2026 | text |
browsecomp-v1 | BrowseComp | text |
swe-bench-verified-v1 | SWE-bench Verified | text |
aider-polyglot-v1 | Aider polyglot | text |
livebench-v1 | all seven category means | text |
Panels are mostly single benchmarks — joint requirements shrink a cohort to the intersection of coverage, which starves panels exactly where coverage is heterogeneous. A suite whose rows ship together (LiveBench) stays one panel and casts one vote, not seven. Vision benchmarks never feed the overall score: OCR/diagram skill is evidence, not general capability. Changing panel membership creates a new version. Active panel scores are published as components in rankings.json, so the composite never hides which complete exams contributed.
## data flow
A pipeline pulls twenty-four sources daily (Hugging Face, OpenRouter, HF Inference
Providers, Artificial Analysis, LLM Stats, LiveBench, SWE-rebench, LMArena, Epoch AI,
SWE-bench, Aider, LiteLLM, models.dev, Requesty, the AWS/Azure price-list APIs, and eight first-party provider catalogs), 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.