2026-04-16/Ben Severn

Wagner Was on OFAC in 2018: What 10 Years of Sanctions Data Reveals

Reconciled 85 sanctions lists + 10 years of OFAC history + a 13M-wallet attribution graph. Wagner was listed in 2018; 18% of designations get reversed.

If you asked most people when the Wagner Group was first sanctioned by the United States, they'd say 2022 or 2023. That's the period the current narrative covers — the post-invasion wave of Russia-related designations, the Treasury press releases, the coordinated EU/UK/CA/AU announcements. It's also wrong by four years.

The first OFAC designation of "Private Military Company 'Wagner'" was on April 5, 2018, under the CAR (Central African Republic) and TCO (Transnational Criminal Organizations) programs, plus one called UKRAINE-EO13660 — a 2014-era authority that pre-dates the 2022 invasion by nearly a decade. I didn't know that going in; the dominant story about Russia sanctions skips over it. The pipeline I built to analyse sanctions data found it in about three seconds, because the pipeline doesn't read press releases — it reads dated XML snapshots of the SDN list itself.

This post is about what falls out when you point one entity-resolution pipeline at (a) every public sanctions list in the world, (b) a decade of historical OFAC snapshots from the Wayback Machine, and (c) a 13-million-wallet blockchain attribution graph, and ask it all the questions that compliance vendors don't want to answer. Six findings surface, four of which change how I'd think about screening coverage. This is a follow-up to last week's OSS vulnerability reconciliation post; same pipeline shape, completely different domain.

The three datasets

Three public data sources, stitched together on OpenSanctions' canonical entity IDs:

  1. OpenSanctions sanctions collection — 278,647 FtM entities spanning 85 distinct public sanctions lists across 50+ jurisdictions. After filtering to real sanctionable entity schemas (Person, Organization, Company, LegalEntity, Vessel, Airplane, CryptoWallet), the universe is 72,326 canonical sanctioned entities. OpenSanctions has already resolved cross-list duplicates, so os_id is ground truth.
  2. OpenSanctions peps collection — 708,385 politically-exposed persons across Wikidata, national legislature sources, and curated PEP datasets. Joins cleanly to the sanctions set by os_id.
  3. Wayback Machine OFAC SDN snapshots — 38 usable distinct-digest captures of treasury.gov/ofac/downloads/sdn.xml between 2014 and 2023. 15,438 distinct UIDs ever seen across a decade.
  4. Wallet-attribution graph — ~12.6 million Ethereum / Tron / Bitcoin addresses with public labels (Etherscan tags, Forta threat intelligence, DeFiLlama protocol IDs, Scamsniffer blacklists, FBI Lazarus disclosures) from my prior post.

Everything is free, permissively licensed, and bulk-downloadable. No paid API, no commercial compliance vendor, no proprietary chain analytics.

A decade of OFAC SDN snapshots with Wagner's 2018 listing, Putin's 2022 listing, JCPOA delistings, and the post-invasion wave marked on the timeline

Finding 1: Wagner was on OFAC four years before the current narrative admits

The 38 Wayback snapshots of the SDN list let me compute a first-listing date for every UID. A substring search for "Wagner" returns exactly one hit:

2018-04-05  PRIVATE MILITARY COMPANY 'WAGNER'     progs=CAR,TCO,UKRAINE-EO13660

UID assigned in the April 2018 snapshot, under three separate authorities. UKRAINE-EO13660 dates to 2014 and was built for Crimea-annexation response — Wagner was pulled in under it because the unit was active in eastern Ukraine even then. CAR covered their operations in Central African Republic. TCO was the "this is a crime ring in all but name" framing.

For comparison, Vladimir Putin's personal OFAC entry dates to February 26, 2022 — two days after the invasion. That's also visible in the snapshot timeline. He wasn't on OFAC SDN before that; Wagner was on OFAC for four years before he was.

What this changes: a lot of the Russia-sanctions coverage treats "unprecedented" and "since 2022" as nearly interchangeable. The data says the authorities were already in place, parts of the Russian state-military-crime apparatus were already designated, and the post-2022 wave expanded an existing framework rather than built it from scratch. This is a more boring story but a more accurate one, and it's visible in public data if you parse the XML instead of the press releases.

Finding 2: 1 in 5 OFAC designations gets reversed

The decade of snapshots shows a shape most people don't associate with sanctions: sanctions regimes are not monotonic. Entities get added, but they also get delisted.

SnapshotUIDs on SDN
2014-03-295,819
2016-04-025,266 (Iran JCPOA delistings)
2018-04-056,256
2019-08-057,737
2022-03-029,226
2022-08-0610,489 (post-invasion wave)
2023-06-2312,635

Distinct UIDs ever seen across the decade: 15,438. Current count: ~12,635. Delisted: 2,803 — 18.2%.

Almost one in five entities that was ever on the SDN has been removed. That happens for three main reasons: JCPOA-style diplomatic deals (the 2016 drop of ~600 Iran-related entries is visible as a cliff in the timeline), administrative restructuring (Tornado Cash's UID was retired and re-issued after a program-basis revision in 2022–2023), and sanctions-lift decisions where the underlying conduct stopped or was judged to be addressed.

What this changes: "being on the SDN" is not a life sentence in the data. The compliance industry does a lot of false-positive-weary work based on the assumption that OFAC designations are permanent records — and they are, in the sense that historical presence creates a lasting paper trail. But presence on the current list is a 1-in-5-you'll-be-removed-eventually proposition at the decade scale. That's not what most compliance training material implies.

The other shape in the delisting data worth noting: the 2022 Ukraine wave was the single largest multi-month expansion in the decade of snapshots. +1,263 UIDs between January and August 2022. The program code RUSSIA-EO14024 alone accounts for 2,588 designations since 2020 — more than any other OFAC program in recent memory. The scale of the 2022 expansion is unambiguous; the claim that it was built from scratch is the part that Finding 1 pushes back on.

Finding 3: Sanctioned crypto wallets are almost entirely new public intelligence

I joined the 2,461 publicly-sanctioned crypto-wallet entities from the sanctions universe against the 13M-address wallet-attribution graph. After excluding sanctions-derived labels (the OFAC list appears inside the attribution graph, so including it would be a tautology — every OFAC-sanctioned address would trivially match "attributed by OFAC"), the comparison is simple: of the 1,454 distinct sanctioned wallet addresses, how many carried a non-sanctions public label in Etherscan, Forta, DeFiLlama, exchange-attribution datasets, or the community-curated blacklists?

50 addresses. 3.4%.

Per-list breakdown after filtering out the tautological labels:

Sanctioning authoritySanctioned walletsHad prior external attribution
US OFAC SDN77250 (6.5%)
Israel MoD Crypto6850 (0.0%)
Japan MOF269 (34.6%)
France Trésor60

The OFAC overlap is mostly what you'd guess — Hydra Market, Blender.io, Chatex, Suex OTC all had prior Etherscan tags because these were darknet / mixer operations that blockchain observers had been tracking for years before formal designation. Those are the 50. The other ~720 OFAC-designated addresses had zero non-sanctions public labelling before OFAC added them.

Israel MoD's 685 wallets — almost all Tron-based, tied to Hamas financial infrastructure — had zero prior entries in any of the 10 wallet-attribution sources. Forta didn't flag them. Etherscan didn't tag them. Scamsniffer didn't blacklist them. The Israeli designation is 100% novel public intelligence for these addresses; every one of them was invisible to open-source chain analytics before the MoD published the list.

Japan MOF's 34.6% hit rate is a different phenomenon — most of the Japanese designations are mirrors of OFAC, so the prior-attribution there is shared OFAC lineage filtered through one additional authority.

What this changes: "blockchain is public, so chain analytics knows everything anyway" is a popular framing among people who think sanctions screening is an obsolete layer in crypto. The data says the opposite. Formal sanctions designations are adding new information to the public attribution graph in 97% of cases — information that the chain-analytics firms may have had internally but that no open-source database carried. If you run a crypto on-ramp or custody product, your sanctions screen is importing public intelligence you could not have derived from any other free source.

Finding 4: 63.9% of sanctioned entities are on exactly one list

This is the headline coverage number. The universe is 72,326 canonical entities; 46,219 of them (63.9%) appear on exactly one public sanctions list. The Big-3 Western stack (OFAC SDN + UK FCDO + EU Financial Sanctions) collectively covers 33.2% of the universe. Adding Canada, Australia, Japan, and Switzerland brings coverage to 35.5% — a 2.3-point improvement for four additional integrations.

Lists an entity appears onEntitiesShare
146,21963.9%
210,48314.5%
35,6087.8%
4–75,1127.1%
8+4,6836.5%

One-way coverage gaps are sharper than the averages suggest: OFAC-SDN-only screening misses 46.7% of EU Financial Sanctions designations and 46.1% of UK FCDO designations. That goes the other direction too — EU-only misses 84.2% of OFAC SDN, and UN Security Council coverage alone misses 95.8% of OFAC SDN, because OFAC designates hugely more unilaterally than the UN authorises.

This is the least structural of the findings and the most directly actionable. A compliance team buying "comprehensive sanctions screening" should ask which of the 85 public lists the vendor consumes — and should expect the honest answer to cover somewhere between 5 and 12, not 85.

Finding 5: PEP screening is a much weaker leading indicator than vendors suggest

One common compliance-industry claim is that aggressive PEP screening catches sanctions risk early — the theory being that politically-exposed persons are the pool from which future sanctioned individuals are drawn. I joined OpenSanctions' 708k-entity PEPs dataset against the 40,076 sanctioned persons in the sanctions universe.

Only 8.5% of sanctioned persons were in the PEPs dataset first. 3,419 of 40,076.

But the variance across individual sanctions lists is enormous and tells a more interesting story:

Sanctions listSanctioned personsAlso PEPsPEP coverage
New Zealand Russia1,35287064.3%
Australia DFAT2,4971,03841.6%
Canada SEMA3,4571,33038.5%
Japan MOF1,97066833.9%
Switzerland SECO3,7211,25333.7%
EU Travel Bans3,8291,26733.1%
UK FCDO3,8531,22131.7%
EU Financial Sanctions4,3191,31530.4%
US OFAC SDN7,3841,39418.9%
Ukraine NSDC13,1872,15516.3%
Iraq AML6,20100.0%
Pakistan Proscribed4,27710.0%

What the table is actually showing: each sanctions regime has a characteristic target type, and PEP-overlap is a clean signature of it.

What this changes: the "PEP screening is a leading indicator of sanctions risk" framing is true for some regimes and false for others, and the variance is a four-order-of-magnitude spread. If your compliance program's PEP screen is tuned for EU-style political designations (which most vendors default to), it will look strong against Canadian or Swiss sanctions and collapse to near-zero leading-indicator value against OFAC's transnational-crime designations or Pakistan's terror list. A flat "X% of sanctioned individuals were PEPs first" average hides this entirely.

Finding 6: Russia and the West sanction disjoint populations

One small finding worth flagging as-is: the ru_mfa_sanctions dataset — Russia's own Foreign Ministry counter-sanctions list — carries 2,163 entities, mostly Western politicians, journalists, officials. Zero of them appear on any Western sanctions list.

This is structurally the cleanest data point in the post. The West sanctions Russian entities; Russia sanctions Western ones; neither side sanctions its own nationals. The intersection is empty. Which sounds obvious in hindsight but is also a concrete illustration of the way sanctions regimes target completely disjoint populations — and a reminder that if your firm has exposure to Russian markets, screening only against Western lists misses an entire parallel regime.

Honest limitations

As with the prior two posts in this series, what I can't support matters as much as what I can:

Takeaways

Reproduce it

Everything in this post is in a public repo: benseverndev-oss/goldenmatch-sanctions-reconciliation. Five commands from a fresh clone:

python fetch_public_data.py      # OpenSanctions sanctions + peps + default (~3.5 GB, ~5 min)
python extract_records.py        # filter sanctions → parquet
python analyze.py                # cross-list coverage + pairwise overlap + famous cases
python analyze_peps.py           # sanctioned persons ∩ PEPs
python fetch_wayback_ofac.py     # ~70 Wayback SDN snapshots (~3 min with rate-limit courtesy)
python analyze_history.py        # first-listing dates + growth + delisting
python analyze_crypto.py         # cross-reference against wallet-attribution graph

The raw OpenSanctions data is CC-BY 4.0; Wayback snapshots are web.archive.org captures of treasury.gov/ofac/downloads/sdn.xml (U.S. government public domain); wallet-attribution data is permissively licensed. No API keys, no auth. Outputs land in output/report.json for the headline coverage numbers, history_report.json for the decade-of-OFAC findings, peps_report.json for the PEP-overlap table, crypto_report.json for the wallet-attribution cross-reference.

Companion repos, same ER pipeline, completely different domains: goldenmatch-vuln-attribution (869k OSS vuln records, 608k canonical clusters) and goldenmatch-wallet-attribution (13.1M blockchain attribution records). Three posts, three domains, one conceptual pipeline.

Install GoldenMatch: pip install goldenmatch. Star the repo: benseverndev-oss/goldenmatch. Try the playground: bensevern.dev/playground.

Reproducibility footer.

Related posts