We propose a fast, accurate, and scalable algorithm to detect ultimate controlling entities in global corporate networks. α-ICON uses company-participant links to identify super-holders who exert control in networks with millions of nodes. By exploiting onion-like properties of such networks we iteratively peel off the hanging vertices until a dense core remains. This procedure allows for a dramatic speed-up, uncovers meaningful structures, and handles circular ownership by design. Read our paper with the applications. As a toy example, consider the below corporate network where α-ICON designates Mr Philip Mactaggart (in green) as the super-holder exerting control over all other entities, directly or indirectly held: |
To replicate the analysis you need to clone this repository to your local machine. Then you need to install the required versions of R dependencies listed in DEPENDENCIES
. code/helper_functions/install_dependencies.r
automates this step, but you may still need to install the underlying libraries manually with Homebrew or apt-get
, depending on your platform. Finally, you need to declare the environment variable ALPHAICON_PATH
in bash pointing to the repository. Or, better yet, you can add it in your .Renviron
with
user:~$ echo 'ALPHAICON_PATH="path_to_cloned_repository"' >> ~/.Renviron
The repository does not contain any data due to its size (10+ GB unpacked); most files in data/
and output/
folders are zero-byte placeholders. We provide a public Google Drive folder with the populated data/
and output/
directories. You may still need to unzip them manually.
A self-contained example of α-ICON is also available in Google Colaboratory.
data/
├─uk/ # Data on UK companies and participants
| ├ persons-with-significant-control-snapshot-2021-08-02.txt # Source PSC data
| ├ BasicCompanyDataAsOneFile-2021-08-01.csv # Source data on live companies in UK
| ├ sic_2007_code_list.csv # Standard Industrial Classification codes
| ├ psc_snapshot_2021-08-02.rdata # Processed People with Significant Control data
| └ uk_basic_companies_data_2021-08-01.rdata # Processed Basic Company data
|
├─corpwatch_api_tables_csv_14aug21/ # Data from CorpWatch Dump
| ├ company_info.csv # Source companies data from SEC filings
| ├ cik_name_lookup.csv # Company name variants in SEC filings
| └ company_locations.csv # Company locations in SEC filings
|
code/
├─helper_functions/
| ├ install_dependencies.r # Installs R dependencies used in the project
| └ compute_power_index.r # Computes Mizuno et al. (2020) DPI and NPI
|
├─data_preparation/
| └─uk/
| ├ 1a_process_psc_snapshot.r # Prepare source PSC data
| ├ 1b_process_companies_data.r # Prepare source data on live companies
| ├ 2_psc_snapshot_to_participants_panel.r # PSC data to entity-participant info
| └ 3_prepare_affiliated_entities_evaluation_data.r # Process CorpWatch data
|
├─alphaicon_paper/
| ├ 1_compute_alphaicon.ipynb # Jupyter Notebook w. α-ICON (also on Google Colab)
| ├ 2_compute_npi_dpi.r # Computation of Direct and Network Power Indices
| ├ 3_summary_stat_by_node_type.r # UK PSC network statistics by core/SH/ST/I
| ├ 4_illustrate_algorithm.r # Visualise selected networks
| ├ 5_algorithm_evaluation.r # Compute recall @ k and l for various algorithms
| └ 6_rank_top_holders.r # Examine the rankings of super-holders & Kendall's tau
|
output/
├─uk/
| ├ uk_organisations_participants_2021_long_2aug21.csv # Primary ownership data
| ├ uk_organisations_participation_graph_core_periphery_membership_6aug21.csv
| ├─npi_dpi/ # Mizuno et al. (2020) computation results on UK PSC data
| | └─10000iter/
| | ├ uk_organisations_participants_2021_long_7sep21_dpi_10000iter.csv # DPI
| | └ uk_organisations_participants_2021_long_7sep21_npi_10000iter.csv # NPI
| |
| ├─transitive/ # Computed α-ICON shares on equity shares or DPI weights
| | ├ uk_organisations_transitive_ownership_alpha*_2021_long_2aug21.csv # α = *
| | └ uk_organisations_transitive_ownership_alpha*_2021_long_7sep21_dpi_....csv
| |
└─alphaicon_paper/
├ uk_orgs_algorithm_evaluation_recall.csv # Algorithm recall by k
├ uk_orgs_algorithm_evaluation_recall_by_pathlength.csv # Algorithm recall by l
├ uk_organisations_top100_holders_2021_long_2aug21.csv # Top SH in PSC network
├ uk_organisations_top100_holders_diff_npi_dpi_2021_long_2aug21.csv # Top-100 SH
| # with the largest difference betw. total DPI and NPI
├ uk_organisations_top100_holders_diff_transitive_dpi_2021_long_2aug21.csv
| # Top-100 SH with the largest difference betw. total DPI and α-ICON (α=0.999)
├ uk_organisations_top100_holders_diff_transitive_npi_2021_long_2aug21.csv
| # Top-100 SH with the largest difference betw. total NPI and α-ICON (α=0.999)
└ network_examples/ # Visualisations of selected networks
We provide an annotated Makefile
that documents the data analysis in our papers.
To build the ‘α-Indirect Control in Onion-like Networks’ paper run make alphaicon_paper
when in the repository folder.
Please note that those commands will not produce any publication-ready output files (e.g. tables or figures): the export statements are commented out in the code. Our intention is to make the analysis pipeline transparent to the readers with the aid of make
:
Creative Commons License Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Copyright © the respective contributors, as shown by the AUTHORS
file.
People with Significant Control data is distributed by Companies House under Open Government Licence v3.0.
Free Company Data Product is distributed by Companies House under Open Government Licence v3.0.
Dmitriy Skougarevskiy, Ph.D.