Kirchner working paper · ocean bills of lading · 22 August 2026
Did COVID permanently raise supplier turnover among large US importers?
Year-to-year supplier add and leave rates for ten major US ocean importers, 2014–2019 versus 2020–2025, measured on Kirchner’s CBP bill-of-lading corpus.
Snapshot generated 2026-08-22T15:29:17+00:00 from kirchner.bols.
Abstract
Did the COVID shock permanently raise how often large US importers replace their foreign suppliers? This paper compares year-to-year supplier add and leave rates in 2014–2019 with the same rates in 2020–2025 for ten large ocean consignees in different industries, using US Customs bills of lading in Kirchner’s kirchner.bols table. A supplier is a distinct shipper name on a bill to that consignee. Period means use the five interior year-to-year transitions in each six-year window and drop the 2019→2020 onset year. Years with implausibly thin bill counts—typically consignee-name holes, not factory exits—are excluded.
Among the 9 firms with usable transitions in both windows, mean exit rates are 51.3% before COVID and 47.6% after (Δ -3.7%). A slower four-year set test agrees. Apparent spikes in add rates are concentrated in two non-stationary identities (Tesla, Home Depot) and reverse in the set test. On the balanced subsample with dense coverage in both windows, both adding and leaving decline after 2020. The paper does not find a durable increase in ocean supplier turnover among the importers whose names can be tracked.
1. Introduction
Public US ocean bills of lading are one of the few firm-to-firm trade datasets available outside a Census research data center. They are also messy: no official HS on many rows, redactions, and consignee strings that fragment across legal names. That mess is why search platforms exist. It is also why a COVID “supply chain reset” is easy to project onto a search box and hard to measure.
The 2020 collapse in US imports was real. Flaaen, Hortaçsu, and Tintelnot (2021) show that it was an extensive-margin event—trading pairs dying—while the rebound was intensive-margin: surviving pairs shipped more. That describes the shock year. It does not answer whether, once volumes recovered, large importers kept rotating factories at a permanently higher rate.
This paper takes ten large importers in different industries, locks the consignee strings actually present in Kirchner’s data, and asks how often those importers added or left ocean suppliers in 2014–2019 versus 2020–2025. The design is descriptive. The queries are public. The claim is narrower than “COVID changed everything,” and more useful: among importers whose names we can track, supplier turnover did not permanently jump.
Hypothesis
Conditional on a US ocean consignee identity that is observed in both 2014–2019 and 2020–2025, year-to-year supplier exit rates are not higher in the COVID window than in the five preceding transitions. Apparent post-2020 “churn” in unfiltered name series is mostly coverage holes and a small number of non-stationary identities, not a durable increase in factory replacement.
2. Data
The source is Kirchner kirchner.bols on ClickHouse: US ocean Automated Manifest System / CBP bills of lading. The snapshot used here covers 2014-01-01 through 2025-12-31 (173,043,175 rows; 158,548,137 unique bills). Unique bills of lading rise from 10,685,269 in 2014 to 20,017,014 in 2025; 2025 is not a stub year in this file.
Fourteen candidate brands were searched with explicit startsWith(upperUTF8(consignee_name), …) prefixes. Consignee names containing CANADA, MEXICO, DE MEXICO, or S DE R L are dropped so Mexican or Canadian affiliates that match a US prefix are not treated as the US importer. A name variant is kept if it has at least 200 bills in 2014–2025 and is among the top three names or at least 5% of the top name. The analysis sample is ten firms in different industries that clear 200 bills in both windows. Starbucks, Sephora, lululemon, and Pfizer were screened out. Nike’s locked list includes NIKE EUROPEAN OPERATIONS; IKEA’s top consignee is IKEA SUPPLY AG. Those strings are disclosed, not cleaned after the fact.
| Importer | Industry | Locked consignee names |
|---|---|---|
| Walmart | General merchandise retail | WALMART INC; WALMART STORES INC; WALMART GLOBAL LOGISTICS |
| The Home Depot | Home improvement retail | HOME DEPOT USA INC; HOME DEPOT USA; THE HOME DEPOT INC |
| IKEA | Furniture / home furnishings | IKEA SUPPLY AG; IKEA DISTRIBUTION SERVICES INC; IKEA DISTRIBUTION SERVICES INC L |
| Nike | Athletic apparel and footwear | NIKE USA INC; NIKE INC; NIKE EUROPEAN OPERATIONS |
| Tesla | Electric vehicles | TESLA INC; TESLA MOTORS INC; TESLA MOTORS |
| Apple | Consumer electronics | APPLE INC; APPLE COMPUTER INC |
| Intel | Semiconductors | INTEL CORP |
| Costco | Warehouse club retail | COSTCO WHOLESALE CORP; COSTCO WHOLESALE; COSTCO WHOLESALE COPRORATION |
| Toyota | Automotive manufacturing | TOYOTA MOTOR SALES USA; TOYOTA MOTOR SALES USA INC; TOYOTA MOTOR MANUFACTURING KENTUCKY INC; TOYOTA MOTOR MANUFACTURING INDIANA INC; TOYOTA MOTOR MANUFACTURING; TOYOTA MOTOR MANUFACTURING WEST VIRGINIA INC; TOYOTA MOTOR MANUFACTURING TEXAS INC; TOYOTA MOTOR MANUFACTURING KENTUCKY; TOYOTA MOTOR MANUFACTURING MISSISSIPPI INC; TOYOTA MOTOR MANUFACTURING INDIANA; TOYOTA MOTOR MANUFACTURING WEST VI; TOYOTA MOTOR CORP; TOYOTA MOTOR MANUFACTURING ALABAMA INC; TOYOTA MOTOR MANUFACTURING MISSISSI; TOYOTA MOTOR MANUFACTURING ALABAMA; TOYOTA MOTOR MANUFACTURING TEXAS IN |
| Mattel | Toys | MATTEL INC; MATTEL IMPORT SERVICES CORP; MATTEL IMPORT SERVICES LLC; MATTEL INCORPORATED |
Limitations that belong to the legal dataset, not to this design: public bills are ocean only; HS codes on these rows are not official Census HTS; firms may request name redaction; shipper strings are not parent-resolved. Replication queries and firm-level series are archived in the source listed at the end of the paper.
3. Methods
The unit is a consignee–shipper pair on a US ocean bill of lading. For importer i and calendar year t, a foreign supplier (the shipper_name field, uppercased and trimmed) is active if it appears on at least one bill to that importer in year t. Empty and placeholder shipper names (N/A, NONE, NULL, UNKNOWN, length < 3) are dropped.
The two windows are inclusive calendar years 2014–2019 and 2020–2025. Period means use the five year-to-year transitions inside each window: 2014→2015 through 2018→2019, and 2020→2021 through 2024→2025. For a transition t → t+1, left suppliers are active in t and absent in t+1; added suppliers are active in t+1 and absent in t. Exit rate is left divided by the number of suppliers in t; add rate is added divided by the same denominator. The 2019→2020 step is stored but excluded from period means, so a one-year lockdown shock is not averaged into either window.
A second, slower test compares supplier sets at the ends of each window: unique shippers in 2014–2015 versus 2018–2019, and 2020–2021 versus 2024–2025. That test asks whether the roster turned over across four years, not whether it flickered year to year.
Raw consignee strings are unstable. A year in which Walmart almost vanishes from WALMART INC is not a year in which Walmart fired its factories. After the yearly series showed those holes, every year is marked usable only if unique bills of lading for that importer are at least max(100, 0.25 × that importer’s median yearly BOL count). A transition is usable only if both years are usable. Period means use usable transitions only. Apple drops out of the paired year-to-year comparison because no post-2020 year clears the threshold—consistent with electronics moving by air, which this dataset cannot see.
4. Results
Table 1 reports bill and unique-supplier counts by window. Walmart’s unique shipper count falls from 3,403 to 1,427 while bills rise. Apple’s ocean bills collapse from 6,160 to 1,083.
Table 1. Volume by window
| Importer | BOLs 2014–19 | BOLs 2020–25 | Suppliers 2014–19 | Suppliers 2020–25 |
|---|---|---|---|---|
| Walmart | 120,723 | 182,609 | 3,403 | 1,427 |
| The Home Depot | 124,053 | 107,568 | 1,877 | 1,684 |
| IKEA | 323,961 | 763,728 | 2,287 | 3,251 |
| Nike | 1,862 | 129,928 | 59 | 753 |
| Tesla | 6,774 | 36,111 | 327 | 1,287 |
| Apple | 6,160 | 1,083 | 87 | 95 |
| Intel | 2,448 | 3,446 | 135 | 176 |
| Costco | 146,746 | 21,965 | 2,322 | 615 |
| Toyota | 15,593 | 14,553 | 59 | 51 |
| Mattel | 42,531 | 32,910 | 477 | 352 |
Table 2 is the main test: coverage-filtered year-to-year means. Apple has no usable post-2020 transitions, so n = 9 of 10 firms.
Table 2. Mean year-to-year add and leave rates
| Importer | Usable trans. pre | Usable trans. post | Mean exit pre | Mean exit post | Δ exit | Mean add pre | Mean add post | Δ add |
|---|---|---|---|---|---|---|---|---|
| Walmart | 1 | 5 | 39.2% | 41.7% | 2.5% | 236.6% | 37.1% | -199.5% |
| The Home Depot | 3 | 4 | 59.3% | 56.6% | -2.7% | 94.9% | 356.7% | 261.8% |
| IKEA | 5 | 5 | 31.8% | 29.6% | -2.2% | 42.9% | 30.5% | -12.4% |
| Nike | 1 | 1 | 85.7% | 32.5% | -53.2% | 66.7% | 84.0% | 17.3% |
| Tesla | 3 | 5 | 56.8% | 66.2% | 9.4% | 43.7% | 666.7% | 623.0% |
| Apple | 5 | 0 | 51.3% | — | — | 70.3% | — | — |
| Intel | 3 | 3 | 40.8% | 59.5% | 18.7% | 75.8% | 43.6% | -32.3% |
| Costco | 5 | 2 | 60.2% | 64.7% | 4.5% | 70.9% | 62.2% | -8.7% |
| Toyota | 5 | 5 | 42.3% | 37.7% | -4.6% | 47.7% | 38.9% | -8.8% |
| Mattel | 5 | 4 | 45.3% | 40.0% | -5.4% | 46.6% | 43.0% | -3.7% |
| Equal-weight mean across firms with both periods | Pre | Post | Post − pre |
|---|---|---|---|
| YoY exit rate | 51.3% | 47.6% | -3.7% |
| YoY add rate | 80.6% | 151.4% | 70.8% |
| Four-year set exit (n = 9) | see Table 3 | -0.9% | |
| Four-year set add | see Table 3 | -3.0% | |
Exit rates did not rise. The nine-firm mean exit rate is 51.3% before COVID and 47.6% after (Δ -3.7%). The four-year set test agrees: Δ exit -0.9%.
Add rates look higher in the nine-firm mean because of two spikes (Tesla Δ add 623.0%, Home Depot Δ add 261.8%). Tesla’s 2023 shipper count jumps from 53 to 880 then collapses in 2024—the same family of coverage and scale artifacts as Walmart 2017. The four-year set add rate falls slightly (Δ -3.0%).
Table 3. Four-year set turnover
| Importer | Pre exit 14–15 → 18–19 |
Pre add | Post exit 20–21 → 24–25 |
Post add |
|---|---|---|---|---|
| Walmart | 56.1% | 1,299.6% | 69.8% | 34.2% |
| The Home Depot | 69.5% | 69.9% | 68.3% | 115.0% |
| IKEA | 51.9% | 91.3% | 50.4% | 59.1% |
| Nike | — | — | 97.8% | 3.7% |
| Tesla | 98.5% | 8.1% | 76.4% | 1,180.0% |
| Apple | 60.7% | 110.7% | 83.3% | 88.1% |
| Intel | 65.7% | 84.3% | 55.6% | 175.9% |
| Costco | 89.1% | 30.2% | 85.0% | 44.4% |
| Toyota | 54.8% | 51.6% | 54.8% | 35.5% |
| Mattel | 72.2% | 50.2% | 67.0% | 36.5% |
Balanced subsample
Restricting to firms with at least four usable transitions in each window leaves IKEA, Toyota, Mattel. Mean exit 39.8% → 35.8% (Δ -4.0%). Mean add 45.7% → 37.4% (Δ -8.3%). On the series that can actually be compared year by year, both adding and leaving decline after 2020.
5. Discussion
If COVID had permanently scrambled who sells to whom on US ocean lanes, exit rates in 2020–2025 would exceed 2014–2019. They do not. Among IKEA, Toyota, and Mattel—the firms with dense, usable coverage in both windows—the supplier roster is slightly more persistent after 2020 than before. That is the opposite of a long-run reset.
What the unfiltered series would have said is different and false. Walmart 2017 is 437 bills against tens of thousands in adjacent years; Home Depot 2020 shows the same pattern. Treating those years as mass supplier exit would invent a COVID result. The coverage filter exists to refuse that invention. It is a stopgap for name fragmentation, not a substitute for parent-level entity resolution.
Tesla’s post-2020 add spike is real in the table and unreliable as a general COVID fact: the firm’s ocean consignee identity and volume are not stationary. Apple’s ocean bills shrink; that is a mode-of-transport fact, not a supplier-turnover fact. Costco’s US-name ocean volume is much lower in 2020–2025 than in 2014–2019; whether that is naming, channel shift, or sourcing is not identified here.
Relative to Flaaen et al. (2021), who document that 2020 was extensive-margin collapse and intensive-margin rebound, this paper asks a longer question: after the rebound, did large importers keep rotating factories? In ocean bills, for this sample, no.
6. Conclusion
Large US ocean importers in this sample did not permanently raise supplier exit rates after COVID. Once coverage holes are refused, year-to-year leaving is flat to down, and the four-year set test agrees. Add-rate spikes are not a general result.
Several extensions would tighten the claim. Parent-level entity resolution would make WALMART INC and a 2017 spelling variant one firm before churn is computed. Restricting pairs to a product family would stop a retailer adding furniture factories from counting as leaving an apparel mill. The 2019→2020 step could be studied as its own event rather than excluded from both means. Confidential or redacted bills may hide Apple and beauty retailers rather than their ocean trade. A random sample of mid-size consignees would test whether large incumbents are exactly the firms that could keep factories. Vessel AIS, as in Ganapati, Wong, and Ziv, could separate factory switching from routing switching.
Appendix. Query log
Each block is the SQL that produced the numbered check in the snapshot. The same statements are listed on the replication page in Sources.
A. Corpus coverage, 2014–2025
SELECT min(actual_arrival_date) AS min_date, max(actual_arrival_date) AS max_date,
count() AS rows, uniqExact(bill_of_lading) AS unique_bols
FROM bols
WHERE actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31') | Min date | Max date | Rows | Unique BOLs |
|---|---|---|---|
| 2014-01-01 | 2025-12-31 | 173,043,175 | 158,548,137 |
SELECT toYear(actual_arrival_date) AS year, count() AS rows, uniqExact(bill_of_lading) AS unique_bols
FROM bols
WHERE actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31')
GROUP BY year ORDER BY year | Year | Rows | Unique BOLs |
|---|---|---|
| 2014 | 11,235,494 | 10,685,269 |
| 2015 | 11,317,661 | 10,763,968 |
| 2016 | 11,529,522 | 10,902,902 |
| 2017 | 12,185,128 | 11,342,408 |
| 2018 | 12,950,900 | 12,130,298 |
| 2019 | 12,649,876 | 11,991,418 |
| 2020 | 13,773,553 | 12,620,768 |
| 2021 | 16,422,482 | 13,798,798 |
| 2022 | 16,922,821 | 13,933,642 |
| 2023 | 14,553,002 | 13,230,371 |
| 2024 | 19,122,279 | 17,330,181 |
| 2025 | 20,380,457 | 20,017,014 |
B. Importer name discovery (Walmart)
SELECT consignee_name AS name,
uniqExactIf(bill_of_lading, actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2019-12-31')) AS bols_2014_2019,
uniqExactIf(bill_of_lading, actual_arrival_date >= toDate('2020-01-01') AND actual_arrival_date <= toDate('2025-12-31')) AS bols_2020_2025,
uniqExact(bill_of_lading) AS bols_2014_2025
FROM bols
WHERE actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31')
AND (startsWith(upperUTF8(consignee_name), 'WALMART') OR startsWith(upperUTF8(consignee_name), 'WAL-MART'))
GROUP BY name
ORDER BY bols_2014_2025 DESC
LIMIT 20
C. Bills and unique suppliers by window (Walmart)
SELECT
uniqExactIf(bill_of_lading, actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2019-12-31')) AS bols_pre,
uniqExactIf(bill_of_lading, actual_arrival_date >= toDate('2020-01-01') AND actual_arrival_date <= toDate('2025-12-31')) AS bols_post,
uniqExactIf(upperUTF8(trimBoth(shipper_name)), actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2019-12-31') AND trimBoth(shipper_name) != '' AND lengthUTF8(trimBoth(shipper_name)) >= 3 AND upperUTF8(trimBoth(shipper_name)) NOT IN ('N/A','NA','NONE','NULL','UNKNOWN','-','--','N.A.')) AS suppliers_pre,
uniqExactIf(upperUTF8(trimBoth(shipper_name)), actual_arrival_date >= toDate('2020-01-01') AND actual_arrival_date <= toDate('2025-12-31') AND trimBoth(shipper_name) != '' AND lengthUTF8(trimBoth(shipper_name)) >= 3 AND upperUTF8(trimBoth(shipper_name)) NOT IN ('N/A','NA','NONE','NULL','UNKNOWN','-','--','N.A.')) AS suppliers_post
FROM bols
WHERE consignee_name IN ('WALMART INC','WALMART STORES INC','WALMART GLOBAL LOGISTICS')
AND actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31')
D. Yearly series (why a coverage filter is required)
IKEA is the clean series. Walmart is the warning.
IKEA
SELECT toYear(actual_arrival_date) AS year,
uniqExact(bill_of_lading) AS bols,
uniqExactIf(upperUTF8(trimBoth(shipper_name)), trimBoth(shipper_name) != '' AND lengthUTF8(trimBoth(shipper_name)) >= 3 AND upperUTF8(trimBoth(shipper_name)) NOT IN ('N/A','NA','NONE','NULL','UNKNOWN','-','--','N.A.')) AS suppliers
FROM bols
WHERE consignee_name IN ('IKEA SUPPLY AG','IKEA DISTRIBUTION SERVICES INC','IKEA DISTRIBUTION SERVICES INC L')
AND actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31')
GROUP BY year ORDER BY year | Year | BOLs | Suppliers |
|---|---|---|
| 2014 | 32,756 | 794 |
| 2015 | 38,068 | 822 |
| 2016 | 38,123 | 709 |
| 2017 | 40,241 | 758 |
| 2018 | 77,059 | 1,123 |
| 2019 | 97,902 | 1,242 |
| 2020 | 97,466 | 1,259 |
| 2021 | 125,189 | 1,400 |
| 2022 | 139,556 | 1,701 |
| 2023 | 135,096 | 1,491 |
| 2024 | 119,611 | 1,449 |
| 2025 | 147,464 | 1,256 |
Walmart
SELECT toYear(actual_arrival_date) AS year,
uniqExact(bill_of_lading) AS bols,
uniqExactIf(upperUTF8(trimBoth(shipper_name)), trimBoth(shipper_name) != '' AND lengthUTF8(trimBoth(shipper_name)) >= 3 AND upperUTF8(trimBoth(shipper_name)) NOT IN ('N/A','NA','NONE','NULL','UNKNOWN','-','--','N.A.')) AS suppliers
FROM bols
WHERE consignee_name IN ('WALMART INC','WALMART STORES INC','WALMART GLOBAL LOGISTICS')
AND actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31')
GROUP BY year ORDER BY year | Year | BOLs | Suppliers |
|---|---|---|
| 2014 | 6,388 | 118 |
| 2015 | 4,929 | 184 |
| 2016 | 1,849 | 206 |
| 2017 | 437 | 42 |
| 2018 | 26,115 | 946 |
| 2019 | 81,006 | 2,813 |
| 2020 | 24,697 | 525 |
| 2021 | 32,546 | 626 |
| 2022 | 29,553 | 579 |
| 2023 | 34,568 | 508 |
| 2024 | 32,042 | 430 |
| 2025 | 29,203 | 399 |
Walmart 2017 is a filing-name hole, not de-globalization. Home Depot 2020 shows the same pattern.
E. Year-to-year left and added (Walmart)
WITH base AS (
SELECT toYear(actual_arrival_date) AS y, upperUTF8(trimBoth(shipper_name)) AS shipper
FROM bols
WHERE consignee_name IN ('WALMART INC','WALMART STORES INC','WALMART GLOBAL LOGISTICS')
AND actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31')
AND trimBoth(shipper_name) != '' AND lengthUTF8(trimBoth(shipper_name)) >= 3 AND upperUTF8(trimBoth(shipper_name)) NOT IN ('N/A','NA','NONE','NULL','UNKNOWN','-','--','N.A.')
GROUP BY y, shipper
)
SELECT p.y AS year_from, p.y + 1 AS year_to,
uniqExact(p.shipper) AS suppliers_from,
uniqExactIf(p.shipper, c.shipper != '') AS stayed,
uniqExact(p.shipper) - uniqExactIf(p.shipper, c.shipper != '') AS left_count
FROM base AS p
LEFT JOIN base AS c ON p.shipper = c.shipper AND c.y = p.y + 1
WHERE p.y >= 2014 AND p.y <= 2024
GROUP BY p.y ORDER BY p.y WITH base AS (
SELECT toYear(actual_arrival_date) AS y, upperUTF8(trimBoth(shipper_name)) AS shipper
FROM bols
WHERE consignee_name IN ('WALMART INC','WALMART STORES INC','WALMART GLOBAL LOGISTICS')
AND actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31')
AND trimBoth(shipper_name) != '' AND lengthUTF8(trimBoth(shipper_name)) >= 3 AND upperUTF8(trimBoth(shipper_name)) NOT IN ('N/A','NA','NONE','NULL','UNKNOWN','-','--','N.A.')
GROUP BY y, shipper
)
SELECT c.y - 1 AS year_from, c.y AS year_to,
uniqExact(c.shipper) AS suppliers_to,
uniqExactIf(c.shipper, p.shipper = '') AS added_count
FROM base AS c
LEFT JOIN base AS p ON c.shipper = p.shipper AND p.y = c.y - 1
WHERE c.y >= 2015 AND c.y <= 2025
GROUP BY c.y ORDER BY c.y
F. Four-year set turnover (IKEA)
WITH base AS (
SELECT toYear(actual_arrival_date) AS y, upperUTF8(trimBoth(shipper_name)) AS shipper
FROM bols
WHERE consignee_name IN ('IKEA SUPPLY AG','IKEA DISTRIBUTION SERVICES INC','IKEA DISTRIBUTION SERVICES INC L')
AND actual_arrival_date >= toDate('2014-01-01') AND actual_arrival_date <= toDate('2025-12-31')
AND trimBoth(shipper_name) != '' AND lengthUTF8(trimBoth(shipper_name)) >= 3 AND upperUTF8(trimBoth(shipper_name)) NOT IN ('N/A','NA','NONE','NULL','UNKNOWN','-','--','N.A.')
GROUP BY y, shipper
),
pre_early AS (SELECT DISTINCT shipper FROM base WHERE y IN (2014, 2015)),
pre_late AS (SELECT DISTINCT shipper FROM base WHERE y IN (2018, 2019)),
post_early AS (SELECT DISTINCT shipper FROM base WHERE y IN (2020, 2021)),
post_late AS (SELECT DISTINCT shipper FROM base WHERE y IN (2024, 2025))
SELECT
(SELECT count() FROM pre_early) AS pre_early_n,
(SELECT count() FROM pre_late) AS pre_late_n,
(SELECT count() FROM pre_early INNER JOIN pre_late USING shipper) AS pre_stayed,
(SELECT count() FROM pre_early) - (SELECT count() FROM pre_early INNER JOIN pre_late USING shipper) AS pre_left,
(SELECT count() FROM pre_late) - (SELECT count() FROM pre_early INNER JOIN pre_late USING shipper) AS pre_added,
(SELECT count() FROM post_early) AS post_early_n,
(SELECT count() FROM post_late) AS post_late_n,
(SELECT count() FROM post_early INNER JOIN post_late USING shipper) AS post_stayed,
(SELECT count() FROM post_early) - (SELECT count() FROM post_early INNER JOIN post_late USING shipper) AS post_left,
(SELECT count() FROM post_late) - (SELECT count() FROM post_early INNER JOIN post_late USING shipper) AS post_added Sources
- Kirchner. 2026. “Supplier turnover, 2014–2019 vs 2020–2025.” Replication of the ClickHouse snapshot used in this paper: locked consignee names, yearly series, add/leave rates, and every SQL statement. /research-covid-supplier-churn.
-
Kirchner.
kirchner.bols. US ocean bills of lading compiled from CBP Automated Manifest System filings, 2014–2025. Snapshot generated 2026-08-22T15:29:17+00:00. Runner:scripts/run-covid-supplier-churn.php. - Flaaen, Aaron, Ali Hortaçsu, and Felix Tintelnot. 2021. Federal Reserve Board FEDS Working Paper 2021-066. Documents the 2020 US import collapse as an extensive-margin event and the rebound as intensive-margin.
- Ganapati, Sharat, Woan Foong Wong, and Oren Ziv. “Entrepôt: Hubs, Scale, and Trade Costs.” On hubs, routing, and why observed shipper switching need not be factory switching.
- U.S. Customs and Border Protection. Automated Manifest System / ocean bill of lading public filings (19 U.S.C. § 1431; 19 CFR § 103.31).
-
Kirchner. JSON-driven PHP version of this article (loads
config/research-covid-supplier-churn.jsonon each request). Kept for future re-runs. /blog/covid-supply-chain-generated.