Can sanction.control sustain itself through ownership loops?

Hi all,

I’m building a portfolio project on the OpenSanctions bulk data (Databricks, snapshot from 30 October 2026). Part of it rebuilds the ownership walk myself so I can compare it with the sanction.control topic. The match is very close, and I’d like to understand the small gap.

What I did

  • Started from every listed entity (topic sanction).
  • Followed Ownership links downward, any percentage, any depth.
  • Used only current links (no end date, or an end date after the snapshot), following the note in the sanction.control article that an end date on a shareholding stops the chain.

What I found

  • 29,150 companies carry sanction.control without being listed themselves. My walk reaches 29,083 of them (99.8%).
  • 67 are tagged but not reached, and all 67 can only be reached through links that have an end date.
  • The ended links are 16 shareholdings from the Russian EGRUL registry, all with full end dates: 5 ended between 2022 and 2025, and 11 in July 2026.
  • 12 of the 14 companies directly below those ended links still carry the tag.
  • 66 of the 67 are part of, or owned through, a pair of companies that own each other (A owns part of B, B owns part of A).
  • I checked one on the live site: it still shows the tag next to the ended shareholdings, with data from late October, so it doesn’t look like a timing issue.

My guess (please correct me)

Listed owner --x--> A        (stake ended)
                    A <--> B (A and B own each other)
                    B ---> C (C still tagged)

If tagged companies pass the tag on to what they own, a pair that owns each other could keep both companies tagged after the link from the listed owner has ended: A keeps B tagged, and B keeps A tagged. My walk starts fresh from listed entities on every run, so a loop can’t keep itself going in my version.

Questions

  1. Is the tag recomputed from listed entities on each run, or can companies that are already tagged feed it?
  2. Is this the expected behaviour for ownership loops, or a known edge case?

I’m happy to share the specific entity IDs privately if that helps. Thanks for the data and for the write-up on the new topic.

Edit: corrected the counts. 4 companies I first counted as having no path were old rows in my own table, not an issue in your data.