---
title: "How to choose qpAdm sources and right populations"
description: "How to choose qpAdm sources and right populations: the O9 outgroup set and its extensions, how many to use, the drift rule, the rank test, temporal logic, proxy labels, rotation and a worked example."
canonical: https://www.ancestrify.io/blog/how-to-choose-qpadm-sources-and-outgroups
date: 2026-08-30
updated: 2026-10-19
author: "Andi Thomaj"
---

# How to choose qpAdm sources and right populations

Every qpAdm result is a property of three choices: the target, the sources on the left, and the
right populations the sources are measured against. Most bad models are bad because of the second
and third choices, not because of the software. This guide is about making those choices well: the
standard right sets the literature uses (O9 and its extensions) and how many right populations a
model needs, three rules for what may sit on each side, how to pick a proxy label, where rotation
helps and where it misleads, and a worked example. It is the working method behind
[Ancient Ancestry](/qpadm), the qpAdm analysis Ancestrify publishes, and it is also what a customer needs in order to use
the [Ancestry Workbench](/workbench) productively rather than generating rejections at random.

If you have not met the method, [Understanding qpAdm](/blog/understanding-qpadm) covers what it
computes; this post assumes you know what an f4-statistic is and want to know how to set one up.

## Left and right, in one paragraph

The **left** list is the target followed by the candidate sources. The **right** list is a set of
populations that the model uses as reference points: qpAdm computes f4-statistics of the form
f4(target, source; right_i, right_j) and asks whether the target's vector of those statistics can
be written as a weighted combination of the sources' vectors. The sources do the explaining; the
right populations do the measuring. Nothing on the right is ever assigned a weight.

That asymmetry is the whole design. The right populations are there to **detect** ancestry that
the sources cannot account for. If a right population is related to some ancestry the target has
and the sources lack, the f4 pattern will be inconsistent and the model will fail, which is exactly
what you want. If no right population is related to that missing ancestry, the model will pass
anyway, and it will be wrong.

## The standard right sets

The right set's job, put in one line: it supplies the contrasts. The
[f4-statistics](/blog/f4-statistics-explained) of the target and the sources against it are the
equations the model must satisfy, so the set has to be **differentially related** to the left, with
at least some right populations closer to some sources than to others. A right set symmetric to
everything on the left yields no usable equations; Harney and colleagues (2021) are blunt that qpAdm
then "will not produce meaningful results". What must never sit on the right is the subject of
[rule one](#rule-one-outgroups-must-not-share-drift-with-a-source-that-the-target-lacks) below. On
a stepping-stone landscape even that question is ill-posed, and how far the right set sits from the
left moves the p-values, so the sets below are a starting point to check a model against, not a
guarantee.

### O9: the spine

The set the field standardised on comes from Lazaridis et al. (2016) and is quoted as "the basic
set of nine outgroups (o9)" in the Bronze Age Levant literature. Its members, in the papers' own
labels, and the reason each is there:

| Population | Why it is there |
|---|---|
| Mbuti | Deep African outgroup; anchors the whole set |
| Ust_Ishim | 45,000-year-old Siberian, equally related to West and East Eurasians |
| Kostenki14 | Early Upper Palaeolithic European |
| MA1 | Mal'ta boy, Ancient North Eurasian (ANE) |
| Han | East Asian |
| Papuan | Oceanian |
| Onge | Andamanese, a deeply diverged South Asian lineage |
| Chukchi | Northeast Siberian, related to both East Asians and Native Americans |
| Karitiana | Indigenous American, carries ANE-related ancestry |

Nine populations, all very distant from a West Eurasian target and, crucially, distant in
**different directions**: every major non-African deep branch appears once, so the set breaks
symmetry along many independent axes at once. That diversity is what gives it power. A source that
carries hidden East Asian ancestry will show up against Han; hidden ANE will show up against MA1 and
Karitiana. In the AADR itself the labels carry suffixes and, for the ancient genomes, longer names
(Mbuti.DG and Han.DG, where `.DG` marks a high-coverage diploid shotgun genome);
[the AADR explainer](/blog/aadr-allen-ancient-dna-resource-explained) says how to read them.

### The extensions: o9a and o9aamcn

O9 alone often cannot separate West Eurasian sources from each other: its contrasts are too deep.
The published fix is era-appropriate additions, and the canonical example carries its own
justification. Agranat-Tamir and colleagues (2020), modelling the Bronze Age Southern Levant, added
Neolithic Anatolia to form **o9a**, and reported that the addition "significantly improved the model
by reducing the standard errors of the mixing coefficients by 3-fold (Iran_ChL) and 2.1-fold
(Armenia_EBA)". One well-chosen reference, and a standard error fell to a third: that is what
differential relatedness buys when it targets exactly the contrast the sources need. Their widest
set, **o9aamcn**, reaches thirteen:

```
o9 + Anatolia_N, Armenia_MLBA, CHG, Natufian
```

For European targets the same logic gives the familiar additions, each there to split one specific
pair of candidate sources and each only when it is not itself a source. For a Bronze Age European
target modelled from Anatolia_N, WHG and Yamnaya_Samara, adding Iran_N, Levant_N, Natufian, CHG and
EHG on the right lets the test distinguish, say, a source with Iranian-related ancestry from one
without. Two of those, CHG and EHG, stand for the two ancestries Yamnaya formed from, which makes
them a **stress test** as well as a contrast. With a close relative of a source on the right, the
model either sharpens (the Agranat-Tamir case) or is rejected, and a rejection is information, not
misfortune: it means the proxy was
[standing in for ancestry the new reference resolves](/blog/why-qpadm-models-get-rejected).

### How many right populations

- **The floor is arithmetic.** The degrees of freedom are the number of right populations minus
  the number of sources, so a testable model needs at least one more right population than it has
  sources, and at exactly one degree of freedom the whole test rests on a single contrast. Every
  report prints the degrees of freedom for every era.
- **The band is the published one.** The standard sets run from nine (o9) to thirteen (o9aamcn).
  Within that band, composition beats count: one reference that splits two candidate sources is
  worth more than several that split nothing.
- **The ceiling is about 30 added references.** In simulations, Harney and colleagues found that
  qpAdm "begins to reject models that would otherwise be deemed plausible when as few as 30
  additional populations are added". With enough right populations every model fails, true ones
  included; more right populations is not more rigour.

Composition also covers the type of data: mix ancient and present-day references with care,
because differential DNA damage between the two classes can bias the statistics themselves.

### What we run

Our published models use era-appropriate right sets built on this literature: the deep spine plus
contrasts chosen for the specific source pool under test, listed population by population with
sample counts in the [model record](/blog/qpadm-model-record-explained) of every report, because a
weight without its right set cannot be evaluated by anyone. The
[worked tutorial](/blog/qpadm-analysis-tutorial-worked-example) walks through a full right set; for
the right set's place among all the other rules,
[the best-practices checklist](/blog/qpadm-best-practices) carries the full discipline in one page,
and the [population-specific recipes](/blog/qpadm-models-european-ancestry) show these sets adapted
to [South Asian](/blog/qpadm-models-south-asian-ancestry) and
[Middle Eastern](/blog/qpadm-models-middle-eastern-ancestry) contrasts.

## Rule one: outgroups must not share drift with a source that the target lacks

This is the rule that is broken most often and hurts the most. A right population may be closer to
one source than to another; that is the differential relatedness the model measures with. What it
must not share with a source is drift the target's own ancestors never carried, typically the result
of gene flow between that right population and the source after the target's ancestors split away.
That drift leaks into the f4 pattern and either rejects a true model or, worse, admits a false one.
On a graph-like history the rule is topological, and it gives the prohibition list: nothing on the
right cladal with a source, nothing descended from the target, nothing that received gene flow from
the left after the two separated, and no population on both sides.

The case that needs judgement: Yamnaya_Samara on the left as a source and EHG on the right. EHG is
a major component of Yamnaya, which makes it a sharp reference for telling a steppe source from a
farmer one, and also the likeliest to share drift with the sampled Samara group that the target's
own steppe ancestors never carried. The conservative choice is a right set related to the sources
only through the deep tree, not through recent admixture with one of them; the bolder one is the
stress test described under [the standard right sets](#the-standard-right-sets), and it needs the
model run both ways.

That is a rule for graph-like histories. On a landscape-like one, where neighbours exchange
migrants continuously, every population is related to every other through the groups in between,
so "nothing entangled on the right" cannot be met literally. There, check the model against right
sets at different distances from the left, because in simulations right sets close to the left
lowered p-values and pushed screens toward more complex models, and distant ones let screens stop
early at simpler ones.

A quick check before running anything: for each right population, ask "is this cladal with a
source, descended from the target, or on the receiving end of gene flow from the left?" If yes, move
it or drop it. If it is a close relative of one source, run the model with and without it and see
whether the weights hold.

## Rule two: sources must be distinguishable through the right set

qpAdm can only assign weights between sources that the right set can tell apart. If two sources
look identical to every population on the right, their weights are a single number split
arbitrarily, and the standard errors on both will be enormous.

The formal check is the **rank test**: qpAdm fits the f4 matrix at rank k minus 1 for k sources,
and its output reports the chi-square and p-value at every lower rank. If the rank k minus 2 fit
also passes, the sources are not all distinguishable relative to this right set, and one of them is
redundant. Our analyst reads that table before a model is proposed; the report prints each era's f4
rank among its fit figures rather than the table itself, and
[The model record explained](/blog/qpadm-model-record-explained) reads those figures.

The practical consequence: if you want to split Anatolia_N from Iberia_N as separate sources, you
need something on the right that sees the difference between them. Against O9 alone, they are
nearly the same population, and the model will tell you so through a rank test that passes one
rank too early.

## Rule three: temporal logic

A source should be **older** than the target, or at least not descended from it. A 2,000-year-old
target modelled from a 1,000-year-old source is a chronological impossibility that qpAdm cannot
detect, because f-statistics have no clock. The test will happily fit the model if the drift pattern
is compatible, which it often is when the "source" is actually a descendant.

For a living person as target, every ancient population is older, so the rule is met by
construction on the left. That protects against one class of errors on graph-like histories; it is
not a guarantee on landscape-like ones. It still bites on the right: a Medieval population placed on the right for a Bronze Age
model is not an outgroup, it is a mixture of the very things being modelled. The audit literature
has since measured what the rule buys, and where: on simulated admixture-graph histories,
[distal protocols](/blog/qpadm-distal-vs-proximal) had median false-discovery rates of 16.4 to
31.2% against 72.5 to 100% for proximal rotating screens, while on simulated stepping-stone
landscapes the protocols did not differ significantly.

## Proxies, and why the label matters

Every source is a **proxy**: a sampled population standing in for an unsampled ancestral one. The
AADR gives you many candidate proxies for the same broad ancestry, and they are not
interchangeable.

Consider Anatolia_N versus Anatolia_BA. Both are from Anatolia; one is Neolithic farmers around
6500 BC, the other is Bronze Age people three thousand years later who carry additional
Iranian-related and Levantine-related ancestry. A model that uses Anatolia_BA as the "farmer"
source for a European target is asking the wrong question: it is modelling in a component that
European farmers never had, and the CHG or Iran_N weight elsewhere in the model will shrink to
compensate. The p-value may still pass. The weights will be wrong.

The same logic separates Iran_N from CHG, Levant_N from Natufian, Steppe_MLBA from
Yamnaya_Samara. The last pair is a good example of how much a label carries: Steppe_MLBA
populations have a farmer-related layer that Yamnaya_Samara lacks, so swapping one for the other in
a European model shifts weight from Anatolia_N to the steppe source by several points.

The rule is to pick the proxy that is **closest in time and place to the ancestry you actually
mean**, and to state the label precisely in the report. Ancestrify publishes the exact AADR panel
label beside every source name for this reason.

## The rotating strategy

Harney and colleagues (2021) formalised what practitioners had been doing informally: instead of
one fixed right set, take a pool of candidate populations and **rotate** them, so that each
candidate is on the left in some runs and on the right in others. A source that is genuinely needed
will be required in every configuration; one that only "works" when a particular competitor is on
the right is a proxy artefact.

Rotation is powerful and dangerous in equal measure. Powerful, because it exposes models that pass
only by luck of the right set. Dangerous, because if you rotate enough combinations, some will
clear p = 0.05 by chance, and picking the best-scoring one turns noise into findings. The deeper
problem is the pool: how often a search's passing models are wrong depends mostly on its pre-study
odds, the ratio of plausible to implausible models among those tested, so a pool chosen for reasons
outside qpAdm (archaeology, chronology, geography) matters more than whether a script or a person
runs the combinations. Rotation is a **diagnostic you run on hypotheses you already have reasons to
believe**, not a search procedure for finding them. The published numbers, on admixture graphs and
on landscapes, are in [the rotation explainer](/blog/qpadm-rotation-explained).

## The two-to-four source sweet spot

One source is a qpWave-style question: is the target a clade with this population? Rarely true
for anyone living. Two sources is the most defensible model in the literature, because the rank
test has the least room to hide. Three is the workhorse for Holocene West Eurasia (farmer,
hunter-gatherer, steppe). Four is possible with a dense file and a strong right set. Beyond four,
standard errors balloon, the rank test loses power, and the model starts to describe the reference
panel's structure rather than the target.

The house publish bar, our own convention rather than a validated standard, makes this concrete:
every source must sit at |Z| > 3 with SE < 0.10, and the model at p > 0.05. Adding a fifth source
almost never survives that, and when it does the nested four-source model usually passes too, which
means the fifth was not needed.

## Common mistakes, collected

- **A source's parent on the right, unexamined.** EHG right, Yamnaya left; Anatolia_N right,
  Iberia_N left. It can sharpen the model or break it; run it both ways. Rule one.
- **Using a descendant as a source.** Anatolia_BA to model a Neolithic-era question. Rule three.
- **Two proxies for one ancestry on the left.** Iran_N and CHG together, against a right set that
  cannot separate them. Rule two; watch the SEs.
- **A thin right set.** Six outgroups makes almost everything pass, and the published sets start at
  nine. The p-value is only as strong as the set it was computed against.
- **A bloated right set.** Past about 30 added references, true models start failing too.
- **Reading a passing p-value as confirmation.** Several contradictory models can pass. A model is
  "not refuted", never "confirmed".
- **Rotating until something passes.** See above.
- **Ignoring the nested models.** If removing a source still passes, publish the simpler model.

## A worked illustrative example

Numbers below are invented to illustrate the reasoning, not a customer's result.

**Target:** a living person whose file merged to about 210,000 markers with AADR v66.

**Right set (11):** the nine O9 populations plus Iran_N and Levant_N.

**Run 1: two sources, Anatolia_N + WHG.**

```
p-value: 0.0007    chi-square: 28.8    dof: 9
Anatolia_N   0.842   SE 0.021   Z 40.1
WHG          0.158   SE 0.021   Z  7.5
```

Rejected. The right set contains MA1 and Karitiana, both of which carry Ancient North Eurasian
ancestry, and the target shares more drift with them than either source can explain. That is the
right set doing its job: it has detected something missing.

**Run 2: three sources, Anatolia_N + WHG + Yamnaya_Samara.**

```
p-value: 0.31    chi-square: 9.4    dof: 8    f4 rank: 2
Anatolia_N        0.581   SE 0.029   Z 20.0   95% CI 0.524 to 0.638
Yamnaya_Samara    0.271   SE 0.033   Z  8.2   95% CI 0.206 to 0.336
WHG               0.148   SE 0.027   Z  5.5   95% CI 0.095 to 0.201
```

Passes the bar on every line. Rank test: rank 1 is rejected, so relative to this right set three
sources is the minimum. Nested models: removing any one source is rejected below p = 0.001.

**Run 3: swap the proxy. Iberia_N + Yamnaya_Samara.**

```
p-value: 0.42    chi-square: 9.2    dof: 9
Iberia_N          0.712   SE 0.030   Z 23.7   95% CI 0.653 to 0.771
Yamnaya_Samara    0.288   SE 0.030   Z  9.6   95% CI 0.229 to 0.347
```

Also passes, with two sources instead of three. Why? Iberia_N already contains a WHG-related layer
that Anatolia_N does not, so the hunter-gatherer share is absorbed into the farmer proxy. Both models
are admissible. They say different things: Run 2 says "farmer, hunter-gatherer and steppe, with the
hunter-gatherer share estimated separately"; Run 3 says "a western farmer population that had
already absorbed hunter-gatherers, plus steppe".

Which to publish depends on the question. If the target's declared background is western
European, Run 3 with the geographically closer proxy is the more informative model. If the point is
to estimate the WHG share as its own number, Run 2 is the one. In either case the right set is
published in full, and every source is printed with its panel label beside its catalog name, so the
label that was chosen is on the record. The nested table is read by the analyst before a model is
proposed and is not printed in the report. The published part is what the Your model view in every
Ancestrify report carries.

Notice what changed between Run 1 and Run 2: nothing about the target, and nothing about the right
set. A single source was added and a rejection turned into a pass. Notice what changed between
Run 2 and Run 3: one proxy label, and the number of sources needed fell by one. The result is a
property of the model, and the model is a set of choices.

## Trying your own choices

The [Ancestry Workbench](/workbench) lets you compose your own left and right lists from the same
merged panel a report is computed on, with your sample as the target, paid per completed run from
a prepaid balance that never expires, and returns the real statistics; a rotation fits every
combination of a pool as real runs. Add one reference to the right and watch the standard errors
answer: the o9a experiment, on your own genome. It also includes the EIGENSTRAT bundle download for
running ADMIXTOOLS 2 on your own machine. The walkthrough is in
[Run your own qpAdm models](/blog/run-your-own-qpadm-model-lab). Before buying anything, the free
[AdmixTools 2 Lab](/lab/admixtools) runs qpAdm over the public panel, which is enough to practise
the rules above on real data.

If you would rather have the choices made for you, that is what [Ancient Ancestry](/qpadm) is:
candidate sources come from a pool curated for your declared origins and era before any model runs,
our analyst tests models from that pool (automated searches included) and re-tests the survivors,
and a person reviews the candidates, chooses and approves the published model for each era. That
model is measured against our house bar (p > 0.05, every |Z| > 3, every SE < 0.10), and the report
says per era whether the bar is met.

Terms used here are defined in the [glossary](/glossary).

## References

- Agranat-Tamir, L. et al. (2020). The genomic history of the Bronze Age Southern Levant. *Cell*,
  181(5), 1146 to 1157. (The o9a and o9aamcn sets and the threefold SE reduction.)
- Flegontova, O. et al. (2025). [Performance of qpAdm-based screens for genetic admixture on graph-shaped histories and stepping stone landscapes](https://doi.org/10.1093/genetics/iyaf047). *Genetics*, 230(1), iyaf047.
- Haak, W. et al. (2015). Massive migration from the steppe was a source for Indo-European
  languages in Europe. *Nature*, 522, 207 to 211.
- Harney, É., Patterson, N., Reich, D. & Wakeley, J. (2021). Assessing the performance of qpAdm:
  a statistical tool for studying population admixture. *Genetics*, 217(4), iyaa045.
- Lazaridis, I. et al. (2016). Genomic insights into the origin of farming in the ancient Near
  East. *Nature*, 536, 419 to 424. (The O9 outgroup set.)
- Maier, R. et al. (2023). On the limits of fitting complex models of population history to
  f-statistics. *eLife*, 12, e85492.
- Patterson, N. et al. (2012). Ancient admixture in human history. *Genetics*, 192(3), 1065 to 1093.
