Company · Report Card data
Connectivity exposure of listed companies
Trailing twelve months to 16 July 2026 · Vintage 2026-07-16
Every asset location of 53,310 listed companies (369,074 locations in 9,281 districts) scored on measured working-hours connectivity and on the frequency and length of anomaly events, rolled into one exposure level, bucket shares and peer ranks.
What’s in it
| File | Grain | Rows | Size | Keys | Plan |
|---|---|---|---|---|---|
| company_scores.parquet | company | 53,310 | 3.0 MB | parent_bvd | Any plan |
| district_exposure.parquet | adm2 | 9,281 | 291 KB | area_id | Any plan |
| exposure_priorities.parquet | company × priority rank | 51,524 | 693 KB | parent_bvd, priority_rank | Any plan |
| site_metrics_lite.parquet | company × adm2 | 369,074 | 14.2 MB | parent_bvd, area_id | Pro |
Definitions
Each location is compared with the other locations in its country over the trailing twelve months on two things: working-hours latency (the median across Monday–Friday office hours, local time) and outage exposure (hours above the location’s own baseline, plus the longest run). Critical means both sit in the worst fifth, Stressed means one does, Watch means a degrading trend or thin data, Sound means neither.
A company’s exposure level follows its share of Critical and Stressed locations: Critical at 40% or more, High at 20%, Moderate at 10%, Low below that. Ranks within sector, country and index are computed only for companies with at least five locations that pass the data-sufficiency gate.
The priorities are the three locations contributing most to the Critical and Stressed share, weighted by how many of the company’s assets sit there; each names the metric behind it. The district table gives one value per district: the share of all listed-company locations there that are Critical or Stressed.
Caveats
32,299 of the 53,310 companies carry the level “Insufficient data”: fewer than five locations pass the gate, so they have shares but no level and no rank.
“Anomaly” at three median absolute deviations on an unscaled baseline flags roughly one hour in ten in well-measured countries, so the buckets are relative rankings within a country, not absolute outage counts.
Asset locations are inferred from the parent’s IP ranges, headquarters and subsidiaries, not from a verified asset register; the index memberships come from public constituent lists. The measurement records timing, depth and shape; it names no cause.
Downloads
Downloads need an account. Sign in, or continue with Google for a Free account on the spot; the two large files need Pro.
- company_scores.parquet · 3.0 MBSign in to download
- district_exposure.parquet · 291 KBSign in to download
- exposure_priorities.parquet · 693 KBSign in to download
- site_metrics_lite.parquet · 14.2 MBSign in to download
- Data dictionary (CSV)Sign in to download
Schema
company_scores.parquet · 31 columns
| Column | Type | Unit | Description |
|---|---|---|---|
| parent_bvd | character | Orbis BvD id of the listed parent (company key, as in data/company) | |
| parent_isin | character | ISIN | |
| parent_name | character | listed parent name | |
| parent_ticker | character | ticker | |
| country_iso2 | character | HQ country, ISO2 (company-layer convention) | |
| iso | character | ISO3 | |
| sector_gics2 | character | GICS sector (2 digits) | |
| n_sites | integer | asset locations (districts holding the parent's IP ranges, HQ or subsidiaries) | |
| n_sites_ok | integer | sites with ok data sufficiency | |
| n_countries | integer | ||
| exposure_level | character | Critical / High / Moderate / Low / Insufficient data | |
| exposure_share | numeric | share (0-1) or percentile (0-100) | share of sites Critical or Stressed |
| exposure_share_weighted | numeric | share (0-1) or percentile (0-100) | same, weighted by asset points |
| share_critical | numeric | share (0-1) or percentile (0-100) | |
| share_stressed | numeric | share (0-1) or percentile (0-100) | |
| share_watch | numeric | share (0-1) or percentile (0-100) | |
| share_sound | numeric | share (0-1) or percentile (0-100) | |
| lat_working_12m_ms | numeric | ms | |
| anomaly_hours_12m | numeric | hours | |
| events_12m | numeric | ||
| spof_flag | logical | more than half of scored sites in one district | |
| global_rank | integer | ||
| global_n | integer | ||
| sector_rank | integer | ||
| sector_n | integer | ||
| country_rank | integer | ||
| country_n | integer | ||
| index_name | character | ||
| index_rank | integer | ||
| index_n | integer | ||
| data_vintage | character | KASPR panel vintage |
site_metrics_lite.parquet · 35 columns
| Column | Type | Unit | Description |
|---|---|---|---|
| parent_bvd | character | Orbis BvD id of the listed parent (company key, as in data/company) | |
| parent_isin | character | ISIN | |
| area_id | character | KASPR district id (ISO3-id1-id2) | |
| iso | character | ISO3 | |
| country_iso2 | character | HQ country, ISO2 (company-layer convention) | |
| name_1 | character | ||
| name_2 | character | ||
| n_ip_ranges | integer | ||
| n_hq | integer | ||
| n_subsidiaries | integer | ||
| bucket | character | Critical / Stressed / Watch / Sound (A4 DECISIONS.md thresholds) | |
| data_sufficiency | character | ok / low / insufficient | |
| lat_med_working_ms | numeric | ms | |
| lat_p90_working_ms | numeric | ms | |
| lat_med_evening_ms | numeric | ms | |
| jitter_ms | numeric | ms | |
| jitter_evening_ms | numeric | ms | |
| congestion_spread_ms | numeric | ms | |
| anomaly_hours | numeric | hours | hours above the district's own baseline by > 3 MAD (METHODS.md section 5) |
| anomaly_share | numeric | share (0-1) or percentile (0-100) | |
| events | numeric | runs of >= 2 anomalous hours | |
| mttr_hours | numeric | hours | mean event length |
| longest_event_h | numeric | ||
| mean_excess_ms | numeric | ms | |
| max_excess_ms | numeric | ms | |
| persistence | numeric | share (0-1) or percentile (0-100) | |
| co_movement | numeric | share (0-1) or percentile (0-100) | |
| trend_12m_ms_per_year | numeric | ||
| trend_class | character | ||
| pct_country | numeric | share (0-1) or percentile (0-100) | |
| pct_adm1 | numeric | share (0-1) or percentile (0-100) | |
| n_endpoints | numeric | ||
| obs_hours | numeric | hours | |
| window | character | ||
| data_vintage | character | KASPR panel vintage |
exposure_priorities.parquet · 13 columns
| Column | Type | Unit | Description |
|---|---|---|---|
| parent_bvd | character | Orbis BvD id of the listed parent (company key, as in data/company) | |
| priority_rank | integer | ||
| area_id | character | KASPR district id (ISO3-id1-id2) | |
| iso | character | ISO3 | |
| name_1 | character | ||
| name_2 | character | ||
| bucket | character | Critical / Stressed / Watch / Sound (A4 DECISIONS.md thresholds) | |
| driver | character | metric driving the priority | |
| lat_med_working_ms | numeric | ms | |
| anomaly_hours | numeric | hours | hours above the district's own baseline by > 3 MAD (METHODS.md section 5) |
| events | numeric | runs of >= 2 anomalous hours | |
| asset_points | integer | ||
| data_vintage | character | KASPR panel vintage |
district_exposure.parquet · 16 columns
| Column | Type | Unit | Description |
|---|---|---|---|
| area_id | character | KASPR district id (ISO3-id1-id2) | |
| iso | character | ISO3 | |
| n_companies | integer | ||
| n_sites | integer | asset locations (districts holding the parent's IP ranges, HQ or subsidiaries) | |
| n_ip_ranges | integer | ||
| sites_critical | integer | ||
| sites_stressed | integer | ||
| sites_watch | integer | ||
| sites_sound | integer | ||
| lat_med_working_ms | numeric | ms | |
| anomaly_hours | numeric | hours | hours above the district's own baseline by > 3 MAD (METHODS.md section 5) |
| events | numeric | runs of >= 2 anomalous hours | |
| n_endpoints | numeric | ||
| exposed_share | numeric | share (0-1) or percentile (0-100) | share of the district's company sites Critical or Stressed |
| level | character | ||
| data_vintage | character | KASPR panel vintage |
Source and licence
KASPR measurement, vintage 2026-07-16; company linkage from Orbis, DB-IP and GLEIF as in the dashboard’s company layer. Downloads are for the account holder’s internal use under the terms; the company identifiers are not for redistribution.
