Computed 2026-08-05 against hypothesis.md (commits cd26894, 6ace438,
pre-registered before any monthly value was pulled). Every number below is
reproducible: python -m src.domains.domain_e_eu_waste_oil_transparency.compute
regenerates results.json from the staged fixtures in data/.
Read this before the numbers below: this is a monitor, not a verdict. Nothing here proves mislabeling, fraud, or circumvention. It flags patterns that match the shape of what real investigative and regulatory scrutiny of this sector has looked for. A flag is a prompt to look closer, never a conclusion — see Antithesis for the alternative explanations that must be ruled out before reading any of this as more than that.
The pre-registered threshold was a waste_price / virgin_price ratio
above 0.70, sustained for 3+ consecutive available months.
| Reporter | Months compared | Mean ratio | Max ratio | Months above 0.70 | 3+ month streaks |
|---|---|---|---|---|---|
| Spain | 32 | 1.01 | 1.25 | 31 of 32 | 2 streaks (24 months, then 7 months) |
| Belgium | 5 | 0.98 | 1.13 | 5 of 5 | 1 streak (all 5) |
| Netherlands | 19 | 0.97 | 1.27 | 19 of 19 | 1 streak (all 19) |
| Italy | 0 | — | — | — | — (no months where both series had data) |
Spain is the standout. Its "waste" import price from China ran at parity with, and often above, virgin technical-grade palm oil from Indonesia for essentially the entire observed window (mean ratio 1.01 — the waste category was, on average, not discounted at all). The lowest reading in the whole series (0.59, March 2025) is the only material dip; every other month sits at or above the flagged threshold. Belgium and the Netherlands show the same pattern on thinner data. Italy's two series never had overlapping months in this window, so H1 could not be evaluated for it at all — reported as a gap, not a zero.
This is the single most notable result in this domain: genuine waste/residue material is not supposed to price like virgin oil. That it does, consistently, across three independent reporters, is exactly the shape of signal this monitor was built to surface.
"Waste" (CN8 15180095) import value grew faster than the virgin-oil benchmark in every one of the 4 core reporters, 2023 → 2025:
| Reporter | Waste growth | Benchmark growth |
|---|---|---|
| Spain | +75% | −29% |
| Belgium | +514% | −100% (benchmark went to zero) |
| Netherlands | +199% | +144% (both grew — waste still grew faster) |
| Italy | +26% | −100% (benchmark went to zero) |
As declared in advance, this has no fixed pass/fail threshold — it's a comparison, not a test. But the direction is unanimous: in every reporter checked, the "waste" category is growing faster than, or moving opposite to, the legitimate virgin-oil trade it's nominally a byproduct of.
Using quantity (kg), not value, as the reconciliation metric — this avoids currency mismatches, since China reports in USD and the EU reporters in EUR:
| Reporter | Overlap months | Average relative difference | Reconciles (≤20%)? |
|---|---|---|---|
| Spain | 33 | 52.1% | No |
| Belgium | 21 | 65.5% | No |
| Netherlands | 36 | 48.0% | No |
| Italy | 6 | 42.5% | No |
Same qualitative finding as Domain B's gas check: China's declared export quantity and each EU reporter's declared import quantity for the same nominal flow do not reconcile. But the pattern is different — gas showed a consistently large gap every month; this shows high variance, swinging between near-perfect matches (Spain: 1.5% in March 2026, 4.1% in May 2025) and near-total mismatches (Spain: 89% in April 2026) in adjacent or nearby months. That variance pattern is more consistent with shipment-timing misalignment (a single large cargo recorded by the exporter in one month and the importer in the next) than with a stable measurement-convention offset — a real, different-shaped finding from Domain B's, not the same one repeated.
Unlike Domain B's gas finding, none of the reporters checked anonymize
this specific trade line. Every reporter's series for CN8 1518 00 95
carries real, named partner attribution — including Germany, which
suppressed gas partner data completely but discloses this product
normally (just at negligible volume, €21,875/month average).
Confirmed immaterial. 5 observations from China (avg €15,034/month), 1 from India (€50 total). China Customs has no dedicated export series to Ireland at all for this HS code. Ireland's real, indexed trade in biodiesel-adjacent products is intra-EU petroleum blending stock from Spain/Netherlands/France (a different CN8 family entirely), not this waste-oil line. Included in the disclosure map, not the core analysis.
1518 00 95 comingles
genuine waste cooking oil, palm fatty acid distillate, and other
inedible fat/oil blends of varying legitimate quality and price. A
price at parity with virgin oil could mean a higher-value sub-blend
within this code, not necessarily virgin oil relabeled as waste. This
analysis cannot distinguish those cases — it can only say the average
declared price for the whole code doesn't look like cheap waste.1511 10 10)
was chosen as the closer comparator to non-food-grade waste material,
but it is still a specific, single benchmark. A different reference
(rapeseed oil, tallow, a blended feedstock index) could shift the ratio
materially. This should be treated as a first pass, not a settled
benchmark choice.search_news, not found) — none is used here as a
reference marker.Status: PRE-REGISTERED, 2026-08-05. No monthly price/volume panel has been pulled at the time this file is committed — only series existence, reporter coverage, and magnitude checks (metadata, not results). Per project principle, this hypothesis will not be edited after results are computed; if a check finds nothing notable, that is recorded as the result, not adjusted.
This is explicitly not a trading domain, unlike A–D. No output of this domain will ever claim to prove fraud, mislabeling, or circumvention. The purpose is narrower and different: build a reproducible, ongoing monitor of publicly-derived trade patterns in a sector (EU imports of "waste"-classified fats/oils and biodiesel from Asia) that has already drawn real regulatory and investigative scrutiny, using the same quantitative techniques that scrutiny has used — price-benchmark comparison, volume-plausibility comparison, mirror-statistic reconciliation, and disclosure-transparency mapping — and to say plainly, every time, what the data does and does not show. A flagged pattern is a prompt for a human to look further, never a conclusion.
Because this is a monitor, not a one-off backtest, it will be wired
into the existing daily harvester (src/harvest/) after this initial
pass, so the same pre-declared method re-applies to new data as it
arrives — future monthly updates are not new hypotheses, they are the
same method run again.
"Waste"/residue proxy — FactIQ eu_comext_<iso2> schemas:
CN8 1518 00 95 — "Inedible mixtures or preparations of animal fats and
oils and their fractions, whether or not containing vegetable or
microbial fats or oils." This is the specific line real-world reporting
on suspected mislabeled UCO/palm-residue imports has used. Value (_eur)
and quantity (_kg) both available.
Biodiesel — same schemas:
CN8 3826 00 10 (pure FAME, ≥96.5% ester content) and 3826 00 90
(biodiesel mixtures, <70% petroleum content). Value and quantity both
available.
Virgin-oil benchmark — same schemas, from Indonesia:
CN8 1511 10 10 (crude palm oil, technical/industrial use — the closer
comparator, since "waste" material is itself non-food-grade) and
1511 10 90 (crude palm oil, standard/food-adjacent grade — secondary
comparator). Confirmed present for the Netherlands, 2002–2025/2026, value
and quantity both available.
Reporters — confirmed via direct coverage check (COUNT/AVG/date
range on each reporter's own data_points), not assumed:
| Reporter | CN8 15180095 from China | Verdict |
|---|---|---|
Spain (es) |
129 obs, 2011-09 → 2026-05 | Core reporter — strongest coverage |
Belgium (be) |
55 obs, 2018-08 → 2026-03 | Core reporter |
Netherlands (nl) |
20+ obs confirmed 2023–2024, real data | Core reporter |
Italy (it) |
28 obs, 2008-10 → 2026-05 | Core reporter |
Germany (de) |
16 obs, avg €21,875/month | Checked, found immaterial — real series exist (52 partner series total, not anonymized like Domain B's gas finding), but average trade value is negligible next to the four core reporters (millions/month). Included in the disclosure map, excluded from the core price/volume analysis. |
France (fr) |
2 obs total (2012, 2024) | Checked, found unusable — too sparse for any trend statement. Included in the disclosure map only. |
Ireland (ie) |
5 obs, avg €15,034/month; from India: 1 obs, €50 | Checked (2026-08-05 addendum, before any monthly panel pulled), found immaterial — despite Ireland's real-world public profile in biofuel/UCO policy debates, its declared CN8 15180095 trade from China is negligible and from India essentially nil. China Customs has no dedicated export series to Ireland at all for HS 15180000 (no partner match found), consistent with genuinely minimal flow rather than a suppressed/anonymized one. Included in the disclosure map only. |
Core reporter set for H1–H3: ES, BE, NL, IT. DE, FR, and IE are carried into H4 (the disclosure map) only, with their thinness stated as the finding, not hidden.
Partners: China (cn) primary; India (in) secondary, checked but
not yet quantified. Indonesia and Malaysia have no FactIQ trade schema of
their own (Phase 0 finding, still true) and cannot be observed directly
as EU-side partners — but China's own customs data discloses partner
country by name for this exact HS code, including Indonesia, on both
its import and export sides, which is the closest available window onto
that leg of the chain.
Mirror-statistic data — FactIQ china_customs schema:
China's HS8 15180000 export series are partner-disaggregated. Confirmed
exact series IDs exist for exports to Spain, Netherlands, Belgium, Italy,
Germany, France, Poland, and Lithuania (value in USD, plus a _qty
companion in kg), e.g. china_customs_X_8d_15180000_312 = China's
exports to Spain.
Method: for each core reporter, compute implied unit price
(value ÷ quantity, €/kg) monthly for (a) CN8 1518 00 95 from China and
(b) CN8 1511 10 10 from Indonesia (the technical-grade virgin
benchmark, same reporter). Compute the ratio waste_price / virgin_price
each month.
Pre-declared monitoring threshold (not a classical falsification criterion, since this is a monitor, not a backtest — but declared now, in writing, before any monthly value is pulled, for the same no-p-hacking reason): genuine waste/residue material is expected to trade at a real discount to virgin oil. A ratio above 0.70, sustained for 3 or more consecutive months, is flagged as notable in this monitor — worth a human's attention, not proof of anything. This threshold is informed by publicly documented historical UCO-to-virgin-oil discount ranges (typically 20–40% below virgin vegetable oil); it is a round, conservative number chosen in advance, not fitted to this data.
Method: for each core reporter, compute the year-over-year growth
rate of CN8 1518 00 95 import value from China, and separately the
year-over-year growth rate of CN8 1511 10 10/90 (virgin palm oil) and
CN8 3826 00 10/90 (biodiesel) import value from the same or
comparable partners, over the same window. Flag: any period where the
"waste" category's growth rate exceeds every one of these comparators by
a wide margin — no fixed numeric threshold is pre-declared here, since
there is no independently verified "plausible waste generation" series in
FactIQ to calibrate one against; this leg is reported as a relative
comparison chart, not a pass/fail test, and that limitation is stated
here in advance rather than papered over with a fabricated threshold.
Method: identical to Domain B's approach. For each core reporter, compare
China's declared export value/quantity (china_customs_X_8d_15180000_<partner>)
against that reporter's declared import value/quantity
(eu_comext_M_<reporter>_cn_te_p1_cn8_15180095_<eur|kg>) for the same
nominal flow, month by month where both sides report. Relative difference
= |export − import| / max(export, import). Domain B found this method
fails to reconcile for gas (69.7% average gap) — this domain re-runs the
same test on a structurally different commodity (bulk liquid moved by
tanker, not a piped grid commodity), with no assumption about whether it
will reconcile better or worse.
Method: repeat Domain B's anonymization-discovery method (scan the
dimensions table for every partner code attached to the relevant import
series) across a broader reporter set: the 4 core reporters plus DE, FR
(already found thin, checked for anonymization status regardless), and
PL, LT, PT, RO, DK, SE, AT — for both CN8 1518 00 95 and 3826 00 10/90.
Output is a standing table: which reporters disclose real partner data
for this trade, which anonymize, refreshed on every harvest. A reporter
that changes status between harvests is itself the notable event.
search_news), which will
divert palm oil toward domestic use and reduce export availability
going forward. A future decline in Indonesia-linked feedstock volume,
or a future price rise in genuine palm oil, should be read against this
policy first, not assumed to indicate anything about the waste-oil
question.1511 10 10 (technical-grade) and
1511 10 90 (food-grade) crude palm oil carry different legitimate
price levels; the benchmark choice must be stated on every chart, and
both should be shown if they diverge meaningfully.Password required.