This measures when trade happens, not when food grows. Every axis on this page is a shipment month, the month customs cleared the cargo. Fit a phase to all 265,500 monthly export series in the clean segment and the first result is a null: 94.2% of them have no detectable annual cycle at all. Inside the 15,420 that do, the phase carries something the Herfindahl index cannot: it puts the Netherlands and Hong Kong SAR on Chile’s grape calendar rather than their own latitude’s.
Instrument
Circular mean resultant length, Rayleigh test, Mardia circular-linear correlation, on phases from a K = 2 harmonic regression
Borrowed from
Directional statistics, with the unison-versus-counterpoint distinction borrowed from music
TradeWeave measures supply concentration in the cross-section four different ways and none of them has a clock. Two products with the same Herfindahl index over exporters score identically whether their suppliers all ship in March or spread evenly round the year. The missing statistic is the phase: give every exporter a direction on a twelve-month circle and the length of the value-weighted resultant, R̄, says how much the world’s suppliers agree about when.
Three things have to be said before any R̄ on this page is read. The customs record is a clearance date, not a harvest date, so this is a shipment-timing statistic and it is labelled as one throughout. R̄ under the null is not zero: with twenty exporters at uniformly random phases the median R̄ is 0.187 and the 95th percentile is 0.384, so a product at 0.30 is indistinguishable from noise. And the world is mostly aphasic: the median seasonal strength across all 265,500 fitted series is 0.0398. The atlas is the 15,420 series that clear a 0.25 gate, not the whole record. The sonification the original proposal asked for is cut: by its own test it is decoration unless a forced-choice listening test passes, and an unpassed self-test does not ship.
Series fitted265,500MEASURED reporter × HS6, ≥ 60 months
With a detectable phase5.81%MODELED 15,420 series
Median product R̄0.282–0.597MODELED unweighted to value weighted
HHI vs R̄r = 0.351MODELED 12.3% of the variance
Netherlands, grapes5.03 moMODELED from its own hemisphere’s clock
The instrument
For each reporter and HS6 code with at least 60 distinct months in the clean segment, regress log monthly export value on a linear trend and K = 2 harmonic pairs at the annual and semi-annual frequencies. The first-harmonic amplitude R₁ is the size of the annual swing in log points and its phase is the peak shipment month. Seasonal strength is the share of the detrended variance the harmonics explain; a series is called seasonal when that clears 0.25. At product level, take the top 20 exporters by value, place each at its fitted peak month as a unit phasor, weight by export value, and R̄ is the length of the resultant. R̄ near 1 is unison, every supplier shipping at the same point of the year. R̄ near 0 is counterpoint, the world covered round the clock.
A phase on the (0, 12] circle is written as a month number: 1 is the January mark, 12 the December mark, and 3.23 sits between Mar and Apr. A value below 1, like Peru’s 0.24, lands just before the January mark, which is late December. Two specifications are defensible for the phase, the detrended harmonic fit and the value-weighted circular mean of raw monthly value, and both are shipped on every table here because at product level they disagree far more than is comfortable (Figure 6).
Figure 1
The segment, and everything dropped before a single fit
Metric
Value
What it is
rows_clean_export_segment
45,874,182
flowCode='X', period 200001..202308
reporter_codes
167
distinct reporterCode, includes aggregates with NULL ISO
reporter_iso3
163
distinct reporterISO after dropping NULL
hs6_codes
6,688
distinct 6-digit cmdCode
rows_null_reporter_iso
1,271,164
EU-28, ASEAN and Faeroe Isds carry NULL reporterISO
rows_nonpositive_value
332
dropped before the log fit
total_value_usd
269.56tn USD
primaryValue is USD not thousands; rounded to the nearest million
duplicate_reporter_period_flow_cmd_keys
0
SOURCE.md claims zero for this segment; re-verified here
series_ge60_months_all_reporter_codes
275,460
spec figure, keyed on reporterCode without the NULL-ISO drop
series_ge60_months_drop_null_iso
265,503
method step 1 applied as written (drop NULL reporterISO)
series_ge60_months_drop_null_iso_positive
265,500
the panel actually fitted
The fitted panel is 265,500 series, not the 275,460 a reporter-code count would give.MEASURED The gap is the NULL-ISO drop: 1,271,164 rows carry no reporter ISO3 and they come from three reporter codes, not from aggregates alone. Two are aggregates (EU-28 and ASEAN) and one, the Faeroe Islands, is a real territory that costs 290 rows to drop. Sudan appears under two reporter codes, 729 and 736 (Fmr Sudan), which is why every series here is keyed on reporterCode and not on the ISO3.
The first result is a null
The pitch for this page assumed world trade has a clock and that the job was to read it. It mostly does not. Of 265,500 fitted series, 5.81% clear the 0.25 seasonal-strength gate, covering 2,734 HS6 codes and 125 reporters. The median series puts 0.0398 of its detrended variance into the annual and semi-annual harmonics. Any framing in which most of world trade carries a detectable annual phase is false, and the atlas below is an atlas of 15,420 series.
Figure 2
How much of world trade has a clock at all
Figure 3
R̄ under the null is not zero
Exporters
Null R̄ p50
p90
p95
p99
Analytic R̄ at p = 0.05
5
0.385
0.672
0.754
0.885
0.774
8
0.301
0.535
0.604
0.725
0.612
10
0.267
0.477
0.540
0.656
0.547
12
0.243
0.438
0.496
0.596
0.500
15
0.217
0.387
0.439
0.543
0.447
20
0.187
0.336
0.384
0.474
0.387
25
0.168
0.302
0.343
0.423
0.346
30
0.153
0.276
0.314
0.388
0.316
With 20 exporters at uniformly random phases, the median R̄ is 0.187 and the 95th percentile is 0.384.MODELED This is why 3,578 products of 5,613 score above 0.5 but only 2,136 reach a Monte-Carlo Rayleigh p below 0.05, and only 1,531 reach it on the conservative analytic test. Read R̄ against the null column for the right exporter count, never against zero.
The dial
Grapes, HS 080610, are the canonical case and they do not behave the way the pitch expected. As a product they are counterpoint, not unison: R̄ = 0.1459 with a Monte-Carlo Rayleigh p of 0.8445 and a bootstrap 95% interval of [0.073, 0.696] that straddles the null 95th percentile of 0.539. The world grape clock is not detectable as a single harvest, which is the point: 132 exporters cover the calendar between them. What the dial shows is not concentration. It is who ships when, and which spokes sit where their latitude says they should not.
Figure 4
Grapes, HS 080610: fourteen exporters on a twelve-month dial
Figure 5
The same grapes with no fit in them at all
Figure 6
How far apart the two defensible phase specifications land
Comparison, harmonic R̄ against circular-mean R̄
Value
Products compared
5,613
Pearson correlation
0.618
Spearman correlation
0.648
Median absolute gap in R̄
0.107
90th percentile gap
0.337
Share differing by more than 0.10
52.1%
Share differing by more than 0.30
13.3%
Share crossing R̄ = 0.5 between specifications
25.6%
Median gap where R̄ below 0.3
0.196
Median gap where R̄ above 0.7
0.061
Log against asinh, Pearson
0.924
Log against asinh, median absolute gap
0.030
At product level the harmonic R̄ and the circular-mean R̄ correlate at Pearson 0.618 only, and 25.6% of products cross the R̄ = 0.5 line depending on which one you pick.MODELED The disagreement is concentrated exactly where it should be: median gap 0.196 among weakly seasonal products (R̄ below 0.3) against 0.061 among strongly seasonal ones (R̄ above 0.7). On genuinely seasonal series the two specs are interchangeable. On weak ones they are not, because the circular mean of raw monthly value picks up month length and common-calendar effects that the detrended fit removes. This is the reason both columns ship on every table here.
Computed across the same 5,613 products under both phase specifications. The log-versus-asinh comparison in the same table is far tamer, Pearson 0.924 with a median absolute R̄ gap of 0.030: the transform choice matters much less than the phase-estimator choice.
Specification comparison: data/parquet/instruments_counterpoint_spec_compare.parquet, built from the Rbar, Rbar_circ and Rbar_asinh columns of instruments_counterpoint_products.parquet.
Figure 7
The counterpoint finder: who covers you when you are out of season
Exporter
Its peak month
Closest counterpoint
Counterpoint peak
Separation (months)
Chile
3.14
Italy
9.23
5.91
Italy
9.23
Chile
3.14
5.91
United States
9.33
Australia
3.44
5.89
Netherlands
2.64
Italy
9.23
5.41
South Africa
1.70
Egypt
7.11
5.41
China
9.49
Australia
3.44
5.95
Peru
0.14
Egypt
7.11
5.03
Spain
9.28
Chile
3.14
5.87
Hong Kong SAR
3.01
Italy
9.23
5.78
Australia
3.44
Turkey
9.48
5.96
Egypt
7.11
South Africa
1.70
5.41
India
2.36
Italy
9.23
5.13
Turkey
9.48
Australia
3.44
5.96
Brazil
9.60
Australia
3.44
5.84
Figure 8
Unison and counterpoint at the top of world trade
HS6
Product
R̄ harmonic
R̄ circular
Peak month
MC Rayleigh p
Analytic p
Fitted value
210500
Ice cream and other edible ice: whether or not containing coc…
0.9932
0.9937
5.39
0.000
0.000
$50.3bn
220410
Wine: sparkling
0.9899
0.9775
9.64
0.000
0.063
$107.9bn
430310
Furskin articles: apparel and clothing accessories
0.9818
0.9598
8.93
0.000
0.075
$42.1bn
610433
Jackets: women's or girls', of synthetic fibres, knitted or c…
0.9740
0.9487
8.74
0.000
0.219
$22.6bn
120100
Soya beans: whether or not broken
0.9720
0.9694
6.31
0.166
0.392
$96.3bn
180690
Chocolate and other food preparations containing cocoa: n.e.s…
If R̄ were recoverable from the cross-section, this instrument would be redundant. It is not. Across 5,613 products, exporter HHI and R̄ correlate at Pearson 0.351, Spearman 0.309, so the concentration measure this site already computes explains 12.3% of the variance in the timing measure it does not. Inside a single narrow HHI band the entire R̄ range is present.
The twin: same HHI to three decimals, R̄ 0.96 against 0.12
HS 220210, Waters: including mineral and aerated, containing added sugar or other sweetening matter or flavoured. HHI 0.0658, R̄ 0.964 harmonic / 0.961 circular, $95.3bn.
The byproduct: a clock in the wrong hemisphere
Grapes have a hemisphere structure the fit recovers without being told about it. Among the 43 northern and 5 southern grape exporters outside the tropics, the value-weighted mean peak months are 9.374 and 2.884, 5.51 months apart, with a Mardia circular-linear correlation between port latitude and phase of 0.328. That is the reference clock. An exporter whose own phase sits closer to the opposite hemisphere’s clock than to its own, by a margin, is flagged. The Netherlands ships grapes at month 2.645 from a vessel-weighted port latitude of 52.0 degrees north, 5.03 months from its own hemisphere’s clock. Hong Kong SAR ships at 3.009 from 22.3 degrees, 5.51 months out, which is the maximum the 5.51-month hemisphere separation allows.
Figure 11
Grapes: port latitude against fitted shipment phase
Figure 12
What the flag actually catches, including what it gets wrong
Exporter
Port lat
HS6
Product
Peak month
Strength
Margin (mo)
Value
Harvest possible
Netherlands
52.0
080610
Fruit, edible: grapes, fresh
2.64
0.95
5.03
$9.72bn
HS 01-24
China
31.2
730640
Steel, stainless: tubes and pipes, welded, of circular cross-…
8.24
0.44
2.05
$4.89bn
no, false positive
China
31.2
230400
Oil-cake and other solid residues: whether or not ground or i…
Seven things on this page could have been chosen differently. Each one gets a table. The largest sensitivity is not the harmonic order or the estimation window: it is the weighting and the exporter cut, which move the median product R̄ from 0.282 to 0.597, a factor of 2.1.
Figure 13
Sweep 1, the entrepot clock: four parameters, and the kill-condition run
Seasonality gate
Clock products
Lines
Flagged
Flagged share
Outside HS 01-24
NLD
HKG
RUS
CHN
0.00
299
10,844
2,284
21.1%
72.7%
0.070
0.198
0.270
0.126
0.05
299
5,699
800
14.0%
60.5%
0.120
0.177
0.099
0.113
0.10
289
3,481
344
9.9%
51.5%
0.153
0.203
0.079
0.063
0.25
193
1,676
99
5.9%
33.3%
0.190
0.357
0.054
0.052
0.50
113
684
30
4.4%
6.7%
0.266
0.491
0.000
0.000
Separation ≥
Hemisphere R̄ ≥
Clock products
Lines
Figure 14
Sweep 2, exporter count and weighting: the largest free parameter on the page
Top N exporters
Weighting
Median R̄
Mean R̄
Share R̄ > 0.5
Share MC p < 0.05
Grapes R̄
5
value weighted
0.6992
0.6642
75.5%
15.4%
0.2123
10
value weighted
0.6313
0.6095
68.0%
23.4%
0.1896
15
value weighted
0.6091
0.5904
65.2%
26.1%
0.1518
20
value weighted
0.5967
0.5817
63.7%
27.3%
0.1459
30
value weighted
0.5880
0.5745
62.7%
28.3%
0.1454
50
value weighted
0.5850
0.5713
62.3%
28.6%
0.1453
all
value weighted
0.5845
0.5709
62.3%
28.6%
0.1454
5
unweighted
0.5762
0.5733
61.3%
27.8%
0.2584
10
Figure 15
Sweep 3, number of harmonic pairs K
K
Series
Median R₁
Median strength
Share above gate
Median peak shift vs K = 2
p90 shift
Median product R̄
Grapes R̄
1
265,500
0.1862
0.0192
3.94%
0.024
0.143
0.5983
0.1459
2
265,500
0.1864
0.0398
5.81%
0.000
0.000
0.5967
0.1459
3
265,499
0.1864
0.0579
7.45%
0.011
0.112
0.5980
0.1451
4
265,487
0.1866
0.0731
8.84%
0.018
0.168
0.5968
0.1452
Phase is essentially invariant to K: the median peak month moves by under 0.024 months across all four settings.MODELED What K does move is the seasonal-strength gate: median strength runs from 0.0192 at K = 1 to 0.0731 at K = 4, mechanically, because more harmonics explain more variance. Product R̄ is unaffected to three decimals.
A fit is kept only if the scaled normal-equation matrix has a minimum eigenvalue above 1e-9 and the series has at least 2K + 1 distinct months of the year. All 265,500 series pass at K = 2; 13 fail at K = 3 and 26 at K = 4, which is why the series count is not constant down the column.
Figure 16
Sweep 4, minimum distinct months required to fit a series
Min months
Series
Reporters
HS6 fitted
Median strength
Median R₁
Products
Median product R̄
Grapes R̄
36
314,135
146
6,071
0.0455
0.2131
5,834
0.5936
0.1458
48
286,580
139
6,039
0.0420
0.1984
5,734
0.5957
0.1458
60
265,500
133
6,009
0.0398
0.1864
5,613
0.5967
0.1459
72
248,460
128
5,942
0.0384
0.1768
5,532
0.5993
0.1459
96
212,628
115
5,381
0.0361
0.1618
5,170
0.6038
0.1459
120
174,695
104
5,325
0.0340
0.1498
5,054
0.6093
0.1673
The threshold trades panel size against fit quality and buys almost nothing either way. Grapes R̄ is stable to four decimals from 36 to 96 months and only moves at 120, where the panel has lost a third of its series.
Figure 17
Sweep 5, the seasonal-strength gate
Gate
Series passing
Share of panel
Median R₂/R₁
p90 R₂/R₁
Share with R₂ > R₁
Median R₁ among passers
0.05
109,148
41.11%
0.7066
2.0964
33.13%
0.2941
0.10
50,743
19.11%
0.5824
1.7012
24.76%
0.3584
0.15
30,068
11.33%
0.5017
1.3949
18.46%
0.4222
0.20
20,827
7.84%
0.4528
1.2058
14.53%
0.4887
0.25
15,420
5.81%
0.4201
1.1005
12.04%
0.5558
0.30
11,891
4.48%
0.3948
0.9993
9.97%
0.6181
0.40
7,303
2.75%
0.3578
0.8410
6.98%
0.7498
0.50
4,540
1.71%
0.3291
0.7398
4.91%
Figure 18
Sweep 6, estimation window
Window
Periods
Series
Median strength
Products
Median product R̄
Median peak shift vs full
Grapes R̄
full
200001 to 202308
265,500
0.0398
5,613
0.5967
0.000
0.1459
w2010
201001 to 202308
255,190
0.0441
5,312
0.5960
0.000
0.1479
w2015
201501 to 202308
216,668
0.0600
5,176
0.5796
0.578
0.1692
Restricting the fit to 2010 onward changes nothing; restricting it to 2015 onward moves the median peak month by 0.578 months.MODELED The 2015 window also raises median seasonal strength from 0.0398 to 0.0600, which is what a shorter window does to any harmonic fit: less time for the seasonal pattern to drift. The canonical choice is the full segment because it is the longest window with zero duplicate keys.
All three windows end at 2023m8, the last month of the clean segment. The full window starts in 2000m1, when only 21 reporters were filing monthly data, which is why the fixed-panel correction in Figure 20 exists.
Who was filing, and what a moving reporter set does to a pooled statistic
What did not survive the computation
The premise that world trade has a clock. Median seasonal strength is 0.0398 and 5.81% of series clear the gate. The atlas is 15,420 series of 265,500, and any framing implying most trade carries a detectable annual phase is false.
Grapes as a concentrated harvest. At product level grapes are R̄ = 0.1459 with Monte-Carlo p = 0.8445. They are the counterpoint case, not evidence of synchronisation. The world covers grapes round the calendar; that is the finding, and it is the opposite of what the pitch assumed.
The first HHI twin. HS 051199, animal products: n.e.s. in chapter 5, scored R̄ 0.029 on the harmonic specification and 0.670 on the circular-mean one. It was replaced with a pair that survives both, at a worst-case gap of 0.8422.
The one-criterion entrepot flag. Without a seasonality gate it put Russia at the top of the entrepot ranking and returned Chinese sports footwear as the largest flagged line. Four gated parameters and a printed false-positive floor of 33.3% replaced it.
The series count. 275,460 is the count before the NULL-ISO drop that the method itself specifies. The fitted panel is 265,500.
The sonification. Cut outright. By the proposal’s own test it is decoration unless a forced-choice listening test passes, and an unpassed self-test is not something this section ships.
The strongest objection to this page
Customs records the month of clearance, not the month of harvest. Contracts, cold storage and demand spikes around Chinese New Year or Ramadan all move the recorded peak away from any physical cycle, so this atlas is not measuring agriculture.
Secondly, reporter coverage in the monthly file is unstable, so any pooled world statistic drifts with whoever happened to be filing that year.
The first objection is conceded rather than argued with, because the concession costs nothing. This page measures when trade happens, not when food grows: the dek says so, every axis label says shipment month, and the word harvest appears only where the hemisphere reference clock is being defined. Both results that carry the page are about shipment timing by construction. R̄ is a supply-security statistic about when cargo actually arrives, which is the operationally relevant quantity for anyone holding a contract, and the entrepot diagnostic works precisely because clearance timing and growing season come apart: it is that gap the flag is reading.
The objection does bite in one place and the page prints the damage. Of the 99 flagged lines at the canonical setting, 33.3% fall outside HS chapters 01 to 24, where no harvest clock can physically exist. Those are demand calendars, Christmas retail and contract cycles, exactly the mechanism the objection names, and at a strict gate the share falls to 6.7% (Figure 13). The flag is never claimed to prove transshipment.
The second objection is answered mechanically. Every pooled statistic here is computed on a fixed panel of 61 reporters that filed at least 11 months in every year from 2010 to 2022, and the panel’s membership, the unbalanced comparison and the size of the distortion are all published in Figure 20: the unbalanced panel overstates within-series monthly concentration in all 13 years, by 1.7% to 34.4%. No series is fitted outside the zero-duplicate segment ending 2023m8, and the duplicate count for that segment was re-verified here rather than taken on trust: 0 keys (Figure 1).
What the objection does not touch is the twin. HS 220210 and HS 200190 have the same exporter Herfindahl index to three decimals and R̄ of 0.964 against 0.118. Whatever the phase is measuring, clearance calendars or growing seasons or contract cycles, it is not recoverable from the concentration statistics this site already computes, and that was the claim.
Every figure on this page reads a precomputed table under data/parquet/instruments_counterpoint_*.parquet; the build script that produced them is data/build_instruments_counterpoint.py. The full atlas (265,500 rows) is not read by this page, which uses the gated subset of 15,420 series wherever it needs series-level rows. primaryValue is USD not thousands; rounded to the nearest million.
Duplicate (reporterCode, period, flowCode, cmdCode) keys in this segment: 0, re-verified here rather than taken from the source note. Nothing on this page is fitted outside the zero-duplicate segment ending 2023m8. Total value is stored rounded to the nearest million because DuckDB’s parallel sum over 45,874,182 doubles is not bit-reproducible in the last three digits; do not quote more precision than $269.56tn. All values are USD, not thousands of USD: this is Comtrade raw monthly, not BACI.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Integrity table: data/parquet/instruments_counterpoint_integrity.parquet.
Query
SELECT metric, value, note FROM read_parquet('data/parquet/instruments_counterpoint_integrity.parquet')
The seasonal-strength distribution is pinned against zero: median 0.0398, and only 5.81% of series reach the 0.25 gate this page applies.MODELED The product-level R̄ distribution beneath it looks the opposite, with its mode in the 0.64 to 0.66 bin and 63.7% of products above 0.5, and that contrast is the trap the page is built around: R̄ is high because a value-weighted resultant over 20 exporters is high under the null too (Figure 3), not because most products have a synchronised harvest.
Top: seasonal strength per fitted series, the share of detrended log-value variance explained by K = 2 harmonics, 50 bins on [0, 1]. Bottom: product-level R̄, top 20 exporters, value weighted, 50 bins on [0, 1], 5,613 products with at least 5 qualifying exporters. Both are MODELED: K is a free choice and its sweep is Figure 15, the 0.25 gate is a free choice and its sweep is Figure 17.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Binned distributions: data/parquet/instruments_counterpoint_dists.parquet (variables seasonal_strength, product_Rbar).Query
SELECT variable, bin_lo, bin_hi, bin_mid, "count" AS n, share
FROM read_parquet('data/parquet/instruments_counterpoint_dists.parquet')
WHERE variable IN ('seasonal_strength', 'product_Rbar')
ORDER BY variable, bin_lo
/* what the 0.25 gate leaves standing */
SELECT count(*) AS n_series,
count(DISTINCT cmdCode) AS n_products,
count(DISTINCT iso3) AS n_reporters
FROM read_parquet('data/parquet/instruments_counterpoint_atlas_seasonal.parquet')
20,000 replications per exporter count, unweighted unit phasors drawn from a uniform phase. The analytic column is the weighted Rayleigh test at the Kish effective sample size with the Mardia-Jupp small-sample correction, inverted to the R̄ that would give p = 0.05; it is the conservative test and both p-values ship in the products table (rayleigh_p and rayleigh_p_mc).
Monte-Carlo null: data/parquet/instruments_counterpoint_null.parquet (20,000 replications per exporter count).
Query
SELECT n_exporters, null_Rbar_p50, null_Rbar_p90, null_Rbar_p95, null_Rbar_p99,
analytic_p05_Rbar, reps
FROM read_parquet('data/parquet/instruments_counterpoint_null.parquet')
ORDER BY n_exporters
Exporter
Peak month, harmonic
Peak month, circular mean
Seasonal strength
R₁ (log pts)
Value in window
Chile
3.143
3.059
0.842
4.509
$24.71bn
Italy
9.231
9.338
0.922
2.737
$16.10bn
United States
9.328
9.458
0.933
1.212
$11.91bn
Netherlands
2.645
2.701
0.947
1.202
$9.72bn
South Africa
1.700
1.597
0.937
3.366
$7.25bn
China
9.487
9.373
0.688
2.431
$6.22bn
Peru
0.145
0.179
0.853
3.856
$6.10bn
Spain
9.275
9.023
0.865
1.486
$6.04bn
Hong Kong SAR
3.009
3.633
0.668
1.671
$4.24bn
Australia
3.438
3.499
0.887
4.075
$3.58bn
Egypt
7.111
5.910
0.758
4.501
$3.14bn
India
2.360
2.639
0.831
4.409
$3.10bn
Turkey
9.482
9.235
0.892
4.580
$3.02bn
Brazil
9.603
10.126
0.654
1.742
$2.26bn
Italy’s grape peak falls 5.97 to 6.09 months after Chile’s, which is as close to antiphase as a twelve-month circle allows.MODELED Spoke direction is the fitted peak shipment month, length is seasonal strength, thickness is share of world grape value. The accent arrow is the product resultant, R̄ = 0.1459 pointing at month 0.35, and it does not even reach the dashed ring, which is the Monte-Carlo null 95th percentile at 0.539. Five spokes are drawn in accent: the Netherlands, Hong Kong SAR, Germany, Britain and Denmark, all northern ports shipping on the southern clock. The blue rim ticks are the same exporters under the other phase specification.
The 14 largest grape exporters by fitted-window value among the 15,420 series that clear the 0.25 gate; 46 grape exporters clear it in total and 132 appear in the segment. The resultant is the canonical product statistic over the top 20 exporters, so it is not the resultant of the 14 spokes drawn. Rim ticks are the value-weighted circular mean of raw monthly value, the second defensible specification; the two agree to a median of 0.070 months across the 12 largest exporters and disagree worst on Egypt at 1.21 months. Phase convention: the tick labelled Jan is exactly month 1.0, so a phase of 0.24 falls just before it, in late December. A spoke label is dropped where it would print on top of another; the table carries all fourteen exporters either way.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Series fits: data/parquet/instruments_counterpoint_atlas_seasonal.parquet (peak_month, seasonal_strength, circ_peak_month). Product resultant: data/parquet/instruments_counterpoint_products.parquet. HS6 names: data/parquet/products_all.parquet, matched through HS22, HS17, HS12, HS07, HS02, HS96, HS92 in that order with comtrade_monthly.cmdDesc as the last fallback; every product row carries label_revision and label_source.Query
SELECT iso3, peak_month, seasonal_strength, R1, circ_peak_month, circ_Rbar,
value_usd, n_obs, first_period, last_period
FROM read_parquet('data/parquet/instruments_counterpoint_atlas_seasonal.parquet')
WHERE cmdCode = '080610'
ORDER BY value_usd DESC
LIMIT 14
Twelve exporters, twelve calendar months, raw value shares: the antiphase is visible before any harmonic is fitted.MEASURED Chile, South Africa, Peru, Australia and India light up at the start of the year; Italy, the United States, Spain and China light up in the northern autumn. The Netherlands and Hong Kong SAR light up with the southern group. Nothing on this grid is estimated, so it is the backstop for everything the dial claims.
Cell shade is that exporter’s share of its own 2015m1 to 2023m8 grape export total falling in that calendar month, so rows sum to 1 and rows are comparable to each other rather than to world value. The 12 largest exporters by value in that window. This is a different window from the harmonic fits, which use the full segment; the window is printed because the two are not interchangeable.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md), restricted to HS 080610 and periods 201501 to 202308. Monthly profile: data/parquet/instruments_counterpoint_grapes_profile.parquet.Query
SELECT iso3, refMonth, value_usd, month_share
FROM read_parquet('data/parquet/instruments_counterpoint_grapes_profile.parquet')
ORDER BY iso3, refMonth
Query
SELECT * FROM read_parquet('data/parquet/instruments_counterpoint_spec_compare.parquet')
For every large grape exporter, the exporter whose fitted phase sits closest to six months away.MODELED Chile’s counterpoint is Italy, at a shorter-arc separation of 5.91 months on the harmonic specification and 5.97 months on the circular-mean one; measured the other way round the year, as the wait from Chile’s peak to Italy’s, that is 6.09 and 5.97 months. Both describe the same near-perfect antiphase and the range is quoted rather than a single figure. This is the operational version of the whole page: a buyer covered only by suppliers within a month of each other has a calendar hole, and no Herfindahl index will show it.
Candidate set is the 14 largest grape exporters by fitted-window value among the gated series, the same set drawn on the dial. Separation is circular distance in months, capped at 6, so 6.00 is perfect antiphase. Phases are MODELED harmonic peaks; the circular-mean specification moves them by a median of 0.070 months across the 12 largest exporters.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Fitted phases: data/parquet/instruments_counterpoint_atlas_seasonal.parquet (peak_month), HS 080610.
Query
WITH top AS (
SELECT iso3, peak_month, value_usd
FROM read_parquet('data/parquet/instruments_counterpoint_atlas_seasonal.parquet')
WHERE cmdCode = '080610'
ORDER BY value_usd DESC
LIMIT 14
), pairs AS (
SELECT a.iso3 AS focal, a.peak_month AS focal_peak,
b.iso3 AS partner, b.peak_month AS partner_peak, b.value_usd AS partner_value_usd,
least(abs(a.peak_month - b.peak_month) % 12,
12 - (abs(a.peak_month - b.peak_month) % 12)) AS separation_months,
a.value_usd AS focal_value
FROM top a JOIN top b ON a.iso3 <> b.iso3
)
SELECT focal, focal_peak, partner, partner_peak, separation_months, partner_value_usd
FROM (SELECT *, row_number() OVER (PARTITION BY focal ORDER BY separation_months DESC) AS rk FROM pairs)
WHERE rk = 1
ORDER BY focal_value DESC
$26.9bn
910221
Wrist-watches: whether or not incorporating a stop-watch faci…
0.9682
0.8696
9.86
0.000
0.318
$203.6bn
Lowest R̄ above the same $20bn value floor
640620
Footwear: parts, outer soles and heels, of rubber or plastics
0.0245
0.1958
10.46
0.999
0.998
$25.1bn
410150
Hides and skins: raw, whole, of bovine or equine animals, of …
0.0411
0.6539
10.84
0.998
0.990
$44.4bn
290230
Cyclic hydrocarbons: toluene
0.0420
0.4833
2.11
0.977
0.980
$30.2bn
550320
Fibres: synthetic staple fibres, of polyesters, not carded, c…
0.0459
0.4904
8.07
0.988
0.984
$40.3bn
392630
Plastics: fittings for furniture, coachwork or the like
0.0502
0.6619
6.11
0.986
0.979
$50.2bn
230990
Dog or cat food: (not put up for retail sale), used in animal…
0.0512
0.7517
10.60
0.980
0.973
$170.3bn
040900
Honey: natural
0.0583
0.1463
10.93
0.962
0.954
$23.4bn
851190
Ignition or starting equipment: parts of the equipment of hea…
0.0595
0.6233
7.42
0.978
0.971
$39.6bn
Among products above $20bn of fitted export value, R̄ runs from 0.9932 for ice cream down to 0.0245 for footwear soles and heels.MODELED The unison list is a list of calendars, not of harvests: ice cream in May, sparkling wine and fur apparel and synthetic jackets and wristwatches in the northern autumn shipping season, chocolate preparations in October. The counterpoint list is industrial: toluene, polyester staple fibre, plastic furniture fittings, ignition parts. Both p-value columns are shown because the analytic test is the conservative one.
Fitted export value is the top-20-exporter total in the clean segment, not world trade in the product; the world column beside it is the full exporter set. Peak month is the value-weighted circular mean of the exporters’ fitted phases. Where the two specifications disagree, both R̄ values are printed side by side. MODELED throughout: the top-20 cut and the value weighting are free choices and their sweep is Figure 14.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Product statistics: data/parquet/instruments_counterpoint_products.parquet. HS6 names: data/parquet/products_all.parquet, matched through HS22, HS17, HS12, HS07, HS02, HS96, HS92 in that order with comtrade_monthly.cmdDesc as the last fallback; every product row carries label_revision and label_source.Query
SELECT cmdCode, product_name, label_revision, n_exporters, n_exporters_all, n_eff,
value_usd, world_value_usd, hhi_exporters, Rbar, Rbar_circ,
mean_peak_month, mean_peak_month_circ, rayleigh_p, rayleigh_p_mc,
null_Rbar_p95, Rbar_boot_lo, Rbar_boot_hi
FROM read_parquet('data/parquet/instruments_counterpoint_products.parquet')
WHERE value_usd > 20e9
ORDER BY Rbar DESC
LIMIT 8
/* and the mirror image */
SELECT cmdCode, product_name, label_revision, n_exporters, n_exporters_all, n_eff,
value_usd, world_value_usd, hhi_exporters, Rbar, Rbar_circ,
mean_peak_month, mean_peak_month_circ, rayleigh_p, rayleigh_p_mc,
null_Rbar_p95, Rbar_boot_lo, Rbar_boot_hi
FROM read_parquet('data/parquet/instruments_counterpoint_products.parquet')
WHERE value_usd > 20e9
ORDER BY Rbar ASC
LIMIT 8
233
0.6015
0.1698
0.655
0.8625
0.962
0.9895
0.158
In the HHI band 0.10 to 0.15, which holds 1,600 products, R̄ runs from 0.0233 to 0.9625 with an interquartile range of 0.341.MEASURED for the HHI, MODELED for the R̄. Knowing a product’s supplier concentration tells you almost nothing about whether its suppliers ship together. That is the gap this instrument fills, and it is the whole argument for the page existing.
HHI is over the same top-20 exporter value shares used for R̄, so the two statistics are computed on identical exporter sets and any correlation between them is not an artefact of different samples. Bins are the raw HHI deciles the products fall in; the extreme bins hold few products and are shown for completeness.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Binned HHI against R̄: data/parquet/instruments_counterpoint_hhi_bins.parquet, from instruments_counterpoint_products.parquet.Query
SELECT hhi_bin, n_products, median_hhi, min_Rbar, p10_Rbar, median_Rbar,
p90_Rbar, max_Rbar, Rbar_iqr
FROM read_parquet('data/parquet/instruments_counterpoint_hhi_bins.parquet')
ORDER BY median_hhi
HS 200190, Vegetable preparations: vegetables, fruit, nuts and other edible parts of plants, prepared or preserved by vinegar or acetic acid (excluding cucumbers, gherkins and onions). HHI 0.0639, R̄ 0.118 harmonic / 0.099 circular, $16.7bn.
HS 220210 and HS 200190 have exporter HHIs of 0.0658 and 0.0639, a gap of 0.0019, and R̄ of 0.964 against 0.118.MODELED Flavoured waters are shipped by everyone at once: all twelve of the largest exporters peak inside a 1.13-month window centred between Jun and Jul. Vinegar-preserved vegetables have the same supplier concentration and no shared calendar at all, with peaks from Netherlands at 0.92 to Poland at 11.87.
This twin was re-selected. The first pass paired HS 220210 with HS 051199, animal products: n.e.s. in chapter 5, at R̄ 0.029, and that pairing dies under the second phase specification, where 051199 scores 0.670 and flips from counterpoint to near-unison. The pair shown survives both: worst-case R̄ gap across specifications 0.8422 against a headline gap of 0.8456. Spoke length is seasonal strength; the accent arrow is the product resultant and the dashed ring the Monte-Carlo null 95th percentile for that product. A max-minus-min window is only meaningful when the peaks do not wrap the circle, which is why it is quoted for the unison product only.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Twin selection: data/parquet/instruments_counterpoint_hhi_twins.parquet; exporter phases: data/parquet/instruments_counterpoint_twin_profile.parquet. HS6 names: data/parquet/products_all.parquet, matched through HS22, HS17, HS12, HS07, HS02, HS96, HS92 in that order with comtrade_monthly.cmdDesc as the last fallback; every product row carries label_revision and label_source.Query
SELECT cmd_unison, name_unison, hhi_unison, Rbar_unison, Rbar_circ_unison, peak_unison,
value_unison_usd, cmd_counterpoint, name_counterpoint, hhi_counterpoint,
Rbar_counterpoint, Rbar_circ_counterpoint, peak_counterpoint, value_counterpoint_usd,
hhi_gap, Rbar_gap, Rbar_gap_worst_case
FROM read_parquet('data/parquet/instruments_counterpoint_hhi_twins.parquet')
WHERE cmd_unison = '220210' AND cmd_counterpoint = '200190'
/* exporter phases behind the two dials */
SELECT DISTINCT cmdCode, role, iso3, peak_month, seasonal_strength
FROM read_parquet('data/parquet/instruments_counterpoint_twin_profile.parquet')
ORDER BY cmdCode, peak_month
The cloud separates cleanly into a southern-latitude group shipping early in the year and a northern group shipping in autumn, and five northern ports sit with the southern group.MODELED Chile, South Africa and Australia are at bottom left: southern latitudes, phases in the first quarter. Italy, Spain, Turkey, the United States and China are at upper right, northern latitudes with autumn phases. The five accent points break the pattern. The Netherlands at 52.0 degrees north sits at top left with Germany, Britain and Denmark, and Hong Kong SAR at 22.3 degrees north sits below them, all of them on the southern clock.
Points are grape exporters whose fit clears the 0.25 seasonal-strength gate and whose vessel-weighted port latitude is at least 20 degrees from the equator, the diagnostic’s own admission rule; India and Peru are excluded by the tropics rule, not by their phases. Marker area is share of world grape value in the 2015m1 to 2023m8 window. Labels are shown for exporters above 1% of world value and for every flagged exporter. Latitude is a port-traffic weighted mean, which is not the same as a country centroid.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md), HS 080610. Fitted phases: data/parquet/instruments_counterpoint_grapes.parquet. Port latitudes: IMF PortWatch, data/parquet/portwatch_ports.parquet (lat, vessel_count_total), aggregated to a vessel-weighted mean latitude per country.Query
SELECT g.iso3, g.port_lat, g.harmonic_peak_month, g.harmonic_strength, g.world_share,
(e.iso3 IS NOT NULL) AS flagged,
CASE WHEN g.world_share >= 0.01 OR e.iso3 IS NOT NULL THEN g.iso3 END AS label
FROM read_parquet('data/parquet/instruments_counterpoint_grapes.parquet') g
LEFT JOIN (SELECT iso3 FROM read_parquet('data/parquet/instruments_counterpoint_entrepot_lines.parquet') WHERE cmdCode = '080610') e
ON e.iso3 = g.iso3
WHERE g.harmonic_strength >= 0.25 AND abs(g.port_lat) >= 20
ORDER BY g.world_share DESC
Fruit, edible: oranges, fresh or dried
8.50
0.80
5.31
$3.30bn
HS 01-24
China
31.2
901832
Medical, surgical instruments and appliances: tubular metal n…
8.08
0.35
2.66
$2.36bn
no, false positive
Belgium
51.3
081010
Fruit, edible: strawberries, fresh
7.49
0.90
1.47
$2.17bn
HS 01-24
Netherlands
52.0
080719
Fruit, edible: melons, (other than watermelons), fresh
1.81
0.87
3.81
$2.13bn
HS 01-24
Belgium
51.3
080810
Fruit, edible: apples, fresh
6.49
0.53
4.79
$1.77bn
HS 01-24
Australia
-27.1
030214
Fish: fresh or chilled, Atlantic salmon (Salmo salar) and Dan…
11.14
0.33
4.44
$1.26bn
HS 01-24
Country
Port lat
Lines
Flagged
Value in clock products
Flagged share of value
Hong Kong SAR
22.3
30
8
$29.9bn
0.3567
Portugal
39.1
38
4
$6.0bn
0.2126
Korea, Rep.
35.7
15
2
$1.7bn
0.1986
Netherlands
52.0
73
8
$107.1bn
0.1903
Belgium
51.3
61
3
$29.2bn
0.1358
Bulgaria
42.7
44
3
$6.9bn
0.1014
Mexico
20.8
27
4
$35.0bn
0.0753
Japan
35.1
41
2
$10.7bn
0.0663
Canada
47.3
37
6
$12.0bn
0.0554
Russia
51.2
67
6
$3.7bn
0.0540
China
31.2
72
4
$228.2bn
0.0522
At the canonical setting the diagnostic flags 99 exporter-product lines, and 33.3% of them fall outside HS chapters 01 to 24, where no harvest clock can exist.MODELED That is the measured false-positive floor and it is not an estimate: Chinese stainless steel tube, Hong Kong sports footwear and Chinese suture needles are in the flagged list and none of them has a growing season. The largest flagged line in the world is Netherlands grapes at $9.7bn. The country table underneath ranks by the share of a country’s value inside latitude-clock products that gets flagged: Hong Kong SAR heads it at 0.3567, with the Netherlands fourth on that share while carrying much the largest flagged line in absolute value.
Canonical setting: hemisphere separation at least 4.5 months, both hemisphere resultants at least 0.5, exporter seasonal strength at least 0.25, margin at least 1.0 month, latitude reference at least 20 degrees from the equator. Country rows are restricted to countries with at least 5 lines inside qualifying products. The flag is a timing coincidence, not a customs finding: it says an exporter’s clearance calendar matches the other hemisphere, and nothing more. The sweep over all four parameters is Figure 13.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Flagged lines: data/parquet/instruments_counterpoint_entrepot_lines.parquet; country scores: data/parquet/instruments_counterpoint_entrepot_countries.parquet. Port latitudes: IMF PortWatch, data/parquet/portwatch_ports.parquet (lat, vessel_count_total), aggregated to a vessel-weighted mean latitude per country. HS6 names: data/parquet/products_all.parquet, matched through HS22, HS17, HS12, HS07, HS02, HS96, HS92 in that order with comtrade_monthly.cmdDesc as the last fallback; every product row carries label_revision and label_source.Query
SELECT cmdCode, iso3, product_name, port_lat, peak_month, seasonal_strength, value_usd,
own_hemi_peak, opp_hemi_peak, hemisphere_separation_months, mardia_r_cl,
margin_months, is_agri
FROM read_parquet('data/parquet/instruments_counterpoint_entrepot_lines.parquet')
ORDER BY value_usd DESC
LIMIT 12
/* country scores */
SELECT iso3, n_lines, n_flagged, value_usd, flagged_value_share, port_lat, vessels
FROM read_parquet('data/parquet/instruments_counterpoint_entrepot_countries.parquet')
WHERE n_lines >= 5
ORDER BY flagged_value_share DESC
LIMIT 11
Flagged
Outside HS 01-24
Flagged share of world value
3.0
0.3
594
4,322
319
41.7%
5.26%
3.5
0.4
424
3,394
214
38.3%
3.17%
4.0
0.5
268
2,292
126
34.9%
2.49%
4.5
0.5
193
1,676
99
33.3%
3.25%
4.5
0.6
155
1,363
50
18.0%
1.97%
5.0
0.6
99
859
36
8.3%
2.24%
5.0
0.7
68
661
23
4.3%
1.38%
Tightening the exporter seasonality gate from 0.00 to 0.50 cuts the share of flags that cannot be a harvest from 72.7% to 6.7%, and moves the flagged value toward the two entrepots and away from Russia and China.MODELED The top table sweeps the gate at the canonical clock; the bottom sweeps the clock’s own definition, the hemisphere separation minimum and the minimum hemisphere resultant. Both move in the same direction: strictness buys precision and costs coverage, from 2,284 flagged lines down to 30. The canonical setting is the middle row and its false-positive floor of 33.3% is printed wherever the flag appears.
Top table: separation ≥ 4.5 months, hemisphere R̄ ≥ 0.5, margin ≥ 1.0 month, exporter seasonality gate swept. Bottom table: gate 0.25 and margin 1.0 held, the clock’s own two parameters swept. The share outside HS 01-24 is the false-positive measure because no manufactured good has a harvest clock; it is a floor, not the full error rate, since an agricultural false positive is invisible to it.
Parameter sweeps: data/parquet/instruments_counterpoint_sweep_margin.parquet and data/parquet/instruments_counterpoint_sweep_latclock.parquet.Query
SELECT strength_gate, n_products, n_lines, n_flagged, flagged_share_of_lines,
flagged_share_outside_agri, NLD_flagged_value_share, HKG_flagged_value_share,
RUS_flagged_value_share, CHN_flagged_value_share
FROM read_parquet('data/parquet/instruments_counterpoint_sweep_margin.parquet')
WHERE margin_months = 1.0
ORDER BY strength_gate
/* the clock's own two parameters */
SELECT sep_min, hemi_rbar_min, n_products, n_lines, n_flagged,
flagged_share_outside_agri, flagged_value_share_global
FROM read_parquet('data/parquet/instruments_counterpoint_sweep_latclock.parquet')
WHERE (sep_min = 3.0 AND hemi_rbar_min = 0.3)
OR (sep_min = 3.5 AND hemi_rbar_min = 0.4)
OR (sep_min = 4.0 AND hemi_rbar_min = 0.5)
OR (sep_min = 4.5 AND hemi_rbar_min = 0.5)
OR (sep_min = 4.5 AND hemi_rbar_min = 0.6)
OR (sep_min = 5.0 AND hemi_rbar_min = 0.6)
OR (sep_min = 5.0 AND hemi_rbar_min = 0.7)
ORDER BY sep_min, hemi_rbar_min
unweighted
0.4664
0.4785
45.5%
38.9%
0.2358
15
unweighted
0.4128
0.4311
36.3%
43.7%
0.1947
20
unweighted
0.3807
0.4008
31.0%
46.4%
0.1681
30
unweighted
0.3362
0.3633
23.8%
49.2%
0.2483
50
unweighted
0.3017
0.3258
16.7%
51.0%
0.3233
all
unweighted
0.2820
0.3008
11.5%
50.7%
0.2582
Median product R̄ is 0.597 value weighted and 0.381 unweighted at the same top-20 cut, a factor of 1.6, and the share of products above 0.5 goes from 63.7% to 31.0%.MODELED Taking every exporter unweighted drops the median further to 0.282 and the share above 0.5 to 11.5%, so the full span of defensible answers to "what is the median product’s phase agreement" is 0.282 to 0.597, a factor of 2.1. The specification calls for value-weighted unit phasors, so that is canonical, but no single number should be quoted from this page without the range. Grapes are the exception that proves the estimator is not driving the result: their R̄ barely moves, 0.146 against 0.168.
Weighting the phasors by export value makes large exporters dominate the resultant, and large exporters within a product tend to share a shipping calendar, so the value-weighted R̄ is mechanically higher. Neither choice is wrong. The unweighted column is the honest answer to "do the world’s suppliers agree", the weighted column to "does the world’s supply agree".
Exporter-count and weighting sweep: data/parquet/instruments_counterpoint_sweep_topn.parquet.Query
SELECT top_n, top_n_label, weighted, median_Rbar, mean_Rbar, share_Rbar_gt_0p5,
share_rayleigh_p_lt_0p05, grapes_Rbar
FROM read_parquet('data/parquet/instruments_counterpoint_sweep_topn.parquet')
ORDER BY weighted DESC, CASE WHEN top_n < 0 THEN 9999 ELSE top_n END
SELECT * FROM read_parquet('data/parquet/instruments_counterpoint_sweep_k.parquet') ORDER BY K
Relaxing the threshold from 60 months to 36 adds 48,635 series and 13 reporters, and moves the median product R̄ by 0.0031.
MODELED
Distinct months, not consecutive months: a reporter that files 60 scattered months qualifies. Raising the bar drops reporters, and the reporters it drops are the intermittent filers, which is why median seasonal strength falls as the threshold rises.
SELECT * FROM read_parquet('data/parquet/instruments_counterpoint_sweep_minmonths.parquet') ORDER BY min_months
0.8918
The gate is a severity dial, not a discovery: it moves the reported median second-to-first harmonic ratio by a factor of 2.15, from 0.707 at 0.05 to 0.329 at 0.50.MODELED At a loose gate a third of the passing series have a stronger semi-annual harmonic than annual one, which means the phase being called "the peak month" is not an annual peak. At the canonical 0.25 that falls to 12.0%. The gate exists to keep the word "seasonal" honest, and it costs 94.2% of the panel to say it.
R₂/R₁ above 1 means the semi-annual harmonic dominates the annual one, so the series has two peaks a year rather than one and a single "peak month" misdescribes it. Median R₁ among passing series rises from 0.294 to 0.892 log points across the sweep, so the gate is selecting on amplitude as well as on fit quality.
SELECT * FROM read_parquet('data/parquet/instruments_counterpoint_sweep_gate.parquet') ORDER BY gate
Query
SELECT * FROM read_parquet('data/parquet/instruments_counterpoint_sweep_window.parquet') ORDER BY period_lo
29.6%
(0.1, 0.2]
22,164
0.526
0.628
34.3%
(0.2, 0.35]
25,552
0.480
0.742
39.6%
(0.35, 1.01]
41,402
0.363
0.930
47.4%
The log fit silently deletes every zero month, which affects 149,080 of 265,500 series (56.2%). Restoring them under a scale-matched asinh raises the first-harmonic amplitude by 13% to 68% on those series, and the range is a factor of 3.3 wide because the asinh scale θ is itself a free parameter.MODELED At θ set to the series median the amplitude ratio is 0.504, which reads as the opposite of the predicted bias and is an artefact of θ, not a finding. At θ = 1 USD, where asinh(v) equals ln(2v) up to a constant, it is 1.677. The direction the specification predicted, that log biases amplitude down, holds only under scale-matched θ, and the magnitude is not pinned down.
A month counts as a true zero only if the reporter filed something that month, taken from the reporter’s own filing calendar; non-reporting months stay excluded. The bottom table shows the peak-month shift by how much of a series the log specification deletes: for the 116,420 series with nothing deleted the median shift is 0.190 months, and for the 41,402 series with more than 35% deleted it is 0.930 months.
Transform sweeps: data/parquet/instruments_counterpoint_sweep_asinh_theta.parquet and data/parquet/instruments_counterpoint_sweep_transform.parquet.Query
SELECT theta, theta_expr, median_log_R1, median_asinh_R1,
median_amp_ratio_asinh_over_log, median_peak_shift_months, share_peak_shift_gt_1mo,
n_series_with_deleted_months, median_amp_ratio_deleted_only,
median_peak_shift_deleted_only
FROM read_parquet('data/parquet/instruments_counterpoint_sweep_asinh_theta.parquet')
/* by share of months the log spec deletes */
SELECT zero_share_bin, n_series, median_amp_ratio_asinh_over_log,
median_peak_shift_months, share_peak_shift_gt_1mo
FROM read_parquet('data/parquet/instruments_counterpoint_sweep_transform.parquet')
WHERE zero_share_bin <> 'all'
ORDER BY zero_share_lo, zero_share_hi
Year
Fixed panel reporters
Unbalanced reporters
Within-series R̄, fixed
Within-series R̄, unbalanced
Overstatement
World resultant, fixed
2010
61
115
0.0930
0.0997
+7.1%
0.0299
2011
61
119
0.0915
0.0996
+8.8%
0.0202
2012
61
120
0.0896
0.1204
+34.4%
0.0052
2013
61
118
0.0907
0.0936
+3.2%
0.0119
2014
61
121
0.0870
0.0929
+6.8%
0.0134
2015
61
138
0.0876
0.0891
+1.7%
0.0101
2016
61
137
0.0873
0.0901
+3.2%
0.0169
2017
61
135
0.0828
0.0937
+13.1%
0.0192
2018
61
137
0.0832
0.0869
+4.4%
0.0079
2019
61
130
0.0788
0.0838
+6.4%
0.0059
2020
61
125
0.1277
0.1386
+8.5%
0.0648
2021
61
113
0.0957
0.1018
+6.4%
0.0158
2022
61
106
0.1030
0.1051
+2.1%
0.0258
Monthly reporter coverage jumps from 38 in 2009 to 117 in 2010, peaks at 140 in 2015 and reads 76 in 2023 only because the clean segment stops in August.MEASURED Every pooled statistic on this page is therefore computed on a fixed panel of 61 reporters that filed at least 11 months in every year from 2010 to 2022. It matters: the unbalanced panel overstates value-weighted within-series monthly concentration in all 13 years, by up to 34.4% in 2012. The aggregate world resultant, by contrast, is near zero on every panel, 0.0052 in 2012 to 0.0648 in 2020. Counterpoint cancels in the sum, which is exactly why the within-series statistic replaced it.
The 2009-to-2010 jump is 38 to 117 counting all reporter codes, or 38 to 115 after dropping rows with a NULL reporter ISO3. Both are shown because they are different numbers and the difference is the aggregate reporters. The world resultant column is the resultant of aggregate world monthly export value, a single series per year, and it is too unstable to headline; it is published so nobody has to take that judgement on trust.
UN Comtrade raw monthly bulk, clean export segment 2000m1 to 2023m8, data/parquet/comtrade_monthly.parquet (flowCode = X, primaryValue in USD, not thousands; Germany 2022m12 is absent from the source bulk, one corrupt gzip, documented in comtrade_monthly.SOURCE.md). Coverage: data/parquet/instruments_counterpoint_coverage.parquet; panel comparison: data/parquet/instruments_counterpoint_panel.parquet.Query
SELECT year, reporters_all_codes, reporters_iso, rows, value_usd, reporters_fixed_panel
FROM read_parquet('data/parquet/instruments_counterpoint_coverage.parquet')
ORDER BY year
/* fixed panel against the unbalanced one */
SELECT year,
max(reporters) FILTER (WHERE panel = 'fixed_61') AS fixed_reporters,
max(reporters) FILTER (WHERE panel = 'unbalanced_all') AS unb_reporters,
max(vw_within_Rbar) FILTER (WHERE panel = 'fixed_61') AS fixed_within,
max(vw_within_Rbar) FILTER (WHERE panel = 'unbalanced_all') AS unb_within,
max(vw_within_Rbar) FILTER (WHERE panel = 'unbalanced_all')
/ max(vw_within_Rbar) FILTER (WHERE panel = 'fixed_61') - 1 AS overstate,
max(world_Rbar) FILTER (WHERE panel = 'fixed_61') AS fixed_world_Rbar,
max(world_Rbar) FILTER (WHERE panel = 'unbalanced_all') AS unb_world_Rbar
FROM read_parquet('data/parquet/instruments_counterpoint_panel.parquet')
GROUP BY year
ORDER BY year