ShockAtlas.

The Premium library: all published packs, old and new, while your official plan is valid. Downloaded files remain yours.Premium, 49 USD / month →

Low water · Kaub, Rhineland-Palatinate (Rhine gauge) / Karlsruhe, Baden-Württemberg (Upper Rhine ports) / Swiss Rhine ports, Basel area / Rotterdam (Amsterdam-Rotterdam-Antwerp hub) · 2026-10-24

A German river gauge emptied Swiss fuel barges, and Switzerland opened its jet-fuel stocks

On 1 October the Rhine at Kaub read −6 cm, after 80 days since 10 July with the daily mean below the 77 cm low-water reference. Mineral oil landed at the Swiss Rhine ports fell from 125,541 t in June to 33,584 t in September, and on 15 October Switzerland released jet fuel from its compulsory stocks equal to about 4.7 days of national demand.

Behind this edition: a reasoning dossier of 52 sourced constants, 12 bounded constraints and a 9-link chain (1 untested, 1 contradicted), accepted by an independent reviewer on 2026-10-24. Read the dossier →

The three vectors

Rhine level at Kaub, daily minimum (cm)206AugSeptOct20 · 23 Oct6 · 16 OctHeating oil price gap, Germany minus Belgium (EUR per 1000 L)171.40-82AugSeptOct171.40 · 21 Sept-82 · 3 Aug
Data table (last 12 points of each; the chart draws them all)
Rhine level at Kaub, daily minimum (cm)
PeriodValue
2026-10-1215
2026-10-1319
2026-10-1410
2026-10-159
2026-10-166
2026-10-179
2026-10-187
2026-10-199
2026-10-2017
2026-10-2111
2026-10-2217
2026-10-2320
Heating oil price gap, Germany minus Belgium (EUR per 1000 L)
PeriodValue
2026-08-03-82
2026-08-1086.60
2026-08-1724.30
2026-08-24-6.50
2026-08-31148.30
2026-09-0782
2026-09-14129.10
2026-09-21171.40
2026-09-28134.50
2026-10-05121
2026-10-12101.10
2026-10-19167.80

Charts show only the last twelve points of redistributable series. Restricted observations are not sent to the browser.

Why these three series belong together

The three series meet in one question: how much fuel a tanker can carry past Kaub, the Middle Rhine's shallowest point. The gauge sets the load and the load sets what lands in Basel. It is the Mississippi mechanism in another geography: refined fuel instead of grain, a landlocked buyer with statutory stocks and other routes, and a crude-price shock to strip out, which the Germany-minus-Belgium price gap does.

What the river did

On 1 July the Kaub daily minimum read 85 cm [F1]. The daily mean fell below the 77 cm low-water reference on 10 July at 70.57 cm [F6], and the minimum reached 44 cm on 16 July [F4]. By 24 September the daily mean was 5.45 cm [F7]; on 1 October the minimum touched −6 cm [F2] and the mean −4.75 cm [F8], the period's lows. On 15 October the minimum read 9 cm [F5]; by 23 October it had recovered to 20 cm [F3], with a daily mean of 25.59 cm [F9]. From July the daily mean averaged 35.0 cm [F37].

The federal hydrology institute's forecasts of 22 and 23 October show a brief rise near 91 cm around 28 October, a 95 percent probability of being back below 77 cm on 5 November, and median weekly means of about 45 to 65 cm in November.

What arrived in Basel

Mineral oil landed at the Swiss Rhine ports fell from 125,541 t in June [F10] to 93,982 t in July [F11], 38,791 t in August [F12] and 33,584 t in September [F13], 82.0 percent below the February peak of 186,889 t [F16, F14]. All inbound cargo fell too, from 300,128 t [F17] to 113,832 t [F18]. The Rhine carried about 22 percent of Swiss mineral-oil imports in 2025 and every third litre of heating oil; rail about 31 percent; pipelines from southern France about 41 percent, mostly crude for the Cressier refinery. The SAPPRO products line serves Geneva, not the Basel tank farms.

What the German consumer paid, and why the national spread does not show the river

German heating oil rose from 1,135.2 EUR per 1000 L on 29 June [F19] to 1,712.8 on 19 October [F20]; Belgian from 1,003.2 [F23] to 1,545.0 [F24]. The Germany-minus-Belgium spread moved from 132.0 [F28] to 167.8 [F31], below its January level of 206.0 [F27] and inside its own swings, from −82.0 on 3 August [F34] to 171.4 on 21 September [F30]; its 2026 average is 86.7 [F38]. Week by week it shows no link with the gauge.

The premium sits where Rhine barges deliver: on 24 October heating oil cost 178.52 EUR per 100 L in Hessen, 177.30 in Rheinland-Pfalz and 177.22 in Nordrhein-Westfalen, against 170.78 in Niedersachsen, 172.55 in Baden-Württemberg and 172.86 in Bayern. Swiss prices rose about 35 percent from June to September, less than German and Belgian ones.

The mechanism, and what else could explain it

Hypothesis · At −6 cm the channel held about 107 cm of water; after a carrier's 20 cm keel clearance that leaves 87 cm of draft, less than a large vessel draws empty, and a 30 cm margin leaves less. Spot freight from the ARA hub to Karlsruhe went from about 45 EUR per tonne in late June to about 200 in October. Demand destruction after Hormuz fits Basel poorly, since all cargo fell; the crude shock explains most of the German price rise. Whether rail congestion and rain-delayed French pipelines alone would have forced the stock releases is open.

Who sits on this chain

Port of Switzerland lost most of its fuel intake. The federal supply office released up to 30,000 cubic metres of jet fuel on 15 October after rail deliveries to Zurich airport failed, then 45,000 of diesel. SBB Cargo and DB Cargo took diverted volume; VT Group and Interstream Barging earn spot rates on fewer tonnes. MiRO at Karlsruhe, above the bottleneck, has two faces: its barges still serve Basel, while its gate cut truck prices to clear product it could not ship to ARA. SPSE's crude line to Cressier competes with the river.

Hypothesis · Deduced: Vitol Aviation Switzerland, a jet-fuel trader, may gain; Rotterdam and Antwerp-Bruges load fewer, lighter upstream barges.

A conditional sensitivity, not a forecast

Scenario · The 30,000 cubic metres of jet fuel equal about 4.7 days of Swiss taxed consumption in the first half of 2026, and the 6.5 percent share implies a stock of about 461,500 cubic metres. If the gauge stays low and the federal delegate releases the further 13.5 points he may grant alone, about 62,300 cubic metres, that bridges about 9.8 more days and leaves roughly 58 days in stock.

What would change this reading

Hypothesis · A Kaub reading at or above 100 cm on 30 November should lift Basel intake toward its July level by December; intake that stays low on an open river would point to demand, not draft. A daily regional price series, or Basel landed prices for Karlsruhe against ARA product, would locate the freight premium. A national spread outside its observed range would reopen the price question.

What to watch

Open hypotheses

HypothesisConfidenceHorizonStatus
If the federal hydrology institute's central path holds, the Rhine at Kaub reads below 100 cm on 30 November 2026, as both daily minimum and daily mean, so the low-water constraint on Basel-bound tankers is still in force at the start of December.MEDIUM2026-12-01OPEN
If the Kaub daily mean on 30 November 2026 is below 100 cm, inbound mineral oil at the Swiss Rhine ports stays between 30,000 and 100,000 t in November and between 30,000 and 130,000 t in December 2026; if it is at or above 100 cm, December intake reaches at least 90,000 t. Intake outside the band of the branch that occurs refutes the river reading of Basel supply.MEDIUM2027-01-31OPEN
If the Kaub daily mean stays below 100 cm through November, every weekly Germany-minus-Belgium heating-oil spread in the EC Weekly Oil Bulletin from 26 October to 28 December 2026 stays between −82.0 and 171.4 EUR per 1000 L, the range observed from July to October, because the river premium is regional and averages out of the national price. A reading above 250 EUR per 1000 L while Kaub is below 40 cm would show a national premium after all.LOW2027-01-15OPEN

Who is concerned

33 organisations, each with a verbatim public quote and a dated source; evidenced when the quote itself places the organisation on this chain, deduced when the exposure is inferred from its business. Where the universe came from →

OrganisationCountryPositionDecisionEvidence
Federal Office for National Economic Supply (BWL / OFAE / FONES)CHAdjacent (evidenced)Operational, localsource, 2026-10-24
CARBURA, Swiss Organisation for Compulsory Stockpiling of Liquid FuelsCHAdjacent (deduced)Operational, localsource, 2026-10-24
Flughafen Zürich AGCHExposed (evidenced)Supply chainsource, 2026-10-24
Swiss International Air Lines AGCHExposed (evidenced)Supply chainsource, 2026-10-24
Schweizerische Rheinhäfen (Port of Switzerland)CHExposed (evidenced)Operational, localsource, 2026-10-24
Hafenbahn Schweiz AGCHExposed (evidenced)Operational, localsource, 2026-10-24
TAU Tanklager Auhafen AGCHExposed (evidenced)Operational, localsource, 2026-10-24
VARO Energy Tankstorage AGCHExposed (evidenced)Operational, localsource, 2026-10-24
Voegtlin-Meyer AGCHExposed (evidenced)Supply chainsource, 2026-10-24
Osterwalder Zürich AGCHExposed (deduced)Supply chainsource, 2026-10-24
Suter, Joerin AGCHExposed (deduced)Supply chainsource, 2026-10-24
Grisard Bitumen AGCHExposed (evidenced)Supply chainsource, 2026-10-24
Migrol AGCHExposed (evidenced)Supply chainsource, 2026-10-24
Tamoil SACHExposed (evidenced)Supply chainsource, 2026-10-24
Vitol Aviation Switzerland AGCHBeneficiary (deduced)Financial, remotesource, 2026-10-24
SBB Cargo AG (incl. ChemOil Logistics AG)CHBeneficiary (evidenced)Operational, localsource, 2026-10-24
Ultra-Brag AGCHExposed (deduced)Operational, localsource, 2026-10-24
VT Group (Verenigde Tankrederij B.V.)NLBeneficiary (evidenced)Operational, localsource, 2026-10-24
Interstream Barging B.V.NLBeneficiary (evidenced)Operational, localsource, 2026-10-24
Havenbedrijf Rotterdam N.V. (Port of Rotterdam Authority)NLAdjacent (deduced)Financial, remotesource, 2026-10-24
Port of Antwerp-BrugesBEAdjacent (deduced)Financial, remotesource, 2026-10-24
Société du Pipeline Méditerranée-Rhône (SPMR)FRCompetitor (evidenced)Supply chainsource, 2026-10-24
Central Commission for the Navigation of the Rhine (CCNR)FRAdjacent (evidenced)Operational, localsource, 2026-10-24
Mineraloelraffinerie Oberrhein GmbH & Co. KG (MiRO)DEBeneficiary (evidenced)Operational, localsource, 2026-10-24
Shell Deutschland GmbH (Energy and Chemicals Park Rheinland)DEExposed (evidenced)Operational, localsource, 2026-10-24
BASF SEDEExposed (evidenced)Supply chainsource, 2026-10-24
Häfen und Güterverkehr Köln AG (HGK Shipping)DEBeneficiary (evidenced)Operational, localsource, 2026-10-24
DB Cargo AGDEBeneficiary (evidenced)Operational, localsource, 2026-10-24
VTG GmbHDEBeneficiary (deduced)Financial, remotesource, 2026-10-24
en2x – Wirtschaftsverband Fuels und Energie e.V.DEAdjacent (deduced)Operational, localsource, 2026-10-24
Deutsche Transalpine Oelleitung GmbH (TAL Group)DECompetitor (deduced)Supply chainsource, 2026-10-24
Société du Pipeline Sud-Européen (SPSE)FRCompetitor (evidenced)Supply chainsource, 2026-10-24
Avenergy SuisseCHAdjacent (evidenced)Operational, localsource, 2026-10-24

Data you can manipulate

The chart and free downloads show the last twelve redistributable observations; available full series, dossiers and exports require a valid official Premium right. Restricted observations remain withheld.

SeriesFamilyUnitPublisher · rightsDownload (sample)
Inbound (Zufuhr) waterborne cargo, NST-2007 group 07 mineral oil products, Swiss Rhine ports (Basel-Kleinhüningen, Birsfelden, Auhafen Muttenz, St. Johann and Kaiseraugst), net weightFlowtPort of Switzerland (Schweizerische Rheinhäfen) · restrictedcited, read at source
Inbound (Zufuhr) waterborne cargo, all NST-2007 groups, Swiss Rhine ports, net weightFlowtPort of Switzerland (Schweizerische Rheinhäfen) · restrictedcited, read at source
Consumer price of heating gas oil incl. duties and taxes, Belgium, Weekly Oil Bulletin (prices in force on the Monday date)EconomicEUR per 1000 LEuropean Commission, DG Energy — Weekly Oil Bulletin · open attributionJSON · CSV
Germany minus Belgium consumer price of heating gas oil incl. taxes (derived) · derived: diff of heating-oil-de-eur-1000l, heating-oil-be-eur-1000lEconomicEUR per 1000 LEuropean Commission, DG Energy — Weekly Oil Bulletin · open attributionJSON · CSV
Consumer price of heating gas oil incl. duties and taxes, Germany, Weekly Oil Bulletin (prices in force on the Monday date)EconomicEUR per 1000 LEuropean Commission, DG Energy — Weekly Oil Bulletin · open attributionJSON · CSV
Rhine water level at gauge Kaub (WSV 25700100), daily minimum of 15-minute raw values (unverified), relative to gauge zero PNP 67.669 mPhysicalcmWasserstraßen- und Schifffahrtsverwaltung des Bundes (WSV), PEGELONLINE · public domainJSON · CSV
Rhine water level at gauge Kaub (WSV 25700100), daily mean of 15-minute raw values (unverified), relative to gauge zero PNP 67.669 mPhysicalcmWasserstraßen- und Schifffahrtsverwaltung des Bundes (WSV), PEGELONLINE · public domainJSON · CSV

Figures, recomputed at every build

IdSeriesStatisticValue
F1Rhine level at Kaub, daily minimumvalue · 2026-07-0185 cm
F2Rhine level at Kaub, daily minimummin-6 cm
F3Rhine level at Kaub, daily minimumlast20 cm
F4Rhine level at Kaub, daily minimumvalue · 2026-07-1644 cm
F5Rhine level at Kaub, daily minimumvalue · 2026-10-159 cm
F6Rhine level at Kaub, daily meanvalue · 2026-07-1070.57 cm
F7Rhine level at Kaub, daily meanvalue · 2026-09-245.45 cm
F8Rhine level at Kaub, daily meanmin-4.75 cm
F9Rhine level at Kaub, daily meanlast25.59 cm
F10Mineral oil products into Swiss Rhine portsvalue · 2026-06125,541 t
F11Mineral oil products into Swiss Rhine portsvalue · 2026-0793,982 t
F12Mineral oil products into Swiss Rhine portsvalue · 2026-0838,791 t
F13Mineral oil products into Swiss Rhine portsmin33,584 t
F14Mineral oil products into Swiss Rhine portsmax186,889 t
F16Mineral oil products into Swiss Rhine portschange pct max last-82.03 t
F17All cargo into Swiss Rhine portsvalue · 2026-06300,128 t
F18All cargo into Swiss Rhine portslast113,832 t
F19Heating oil price, Germanyvalue · 2026-06-291,135.20 EUR per 1000 L
F20Heating oil price, Germanymax1,712.80 EUR per 1000 L
F23Heating oil price, Belgiumvalue · 2026-06-291,003.20 EUR per 1000 L
F24Heating oil price, Belgiumlast1,545 EUR per 1000 L
F27Heating oil price gap, Germany minus Belgiumfirst206 EUR per 1000 L
F28Heating oil price gap, Germany minus Belgiumvalue · 2026-06-29132 EUR per 1000 L
F29Heating oil price gap, Germany minus Belgiumvalue · 2026-09-0782 EUR per 1000 L
F30Heating oil price gap, Germany minus Belgiumvalue · 2026-09-21171.40 EUR per 1000 L
F31Heating oil price gap, Germany minus Belgiumlast167.80 EUR per 1000 L
F32Heating oil price gap, Germany minus Belgiummin-163.50 EUR per 1000 L
F34Heating oil price gap, Germany minus Belgiumvalue · 2026-08-03-82 EUR per 1000 L
F35Heating oil price, Germanyvalue · 2026-09-281,697.40 EUR per 1000 L
F36Heating oil price, Belgiumvalue · 2026-09-281,562.90 EUR per 1000 L
F37Rhine level at Kaub, daily meanmean35.02 cm
F38Heating oil price gap, Germany minus Belgiummean86.74 EUR per 1000 L

Every number above is recomputed from the published observations before this page is built; a mismatch stops the build. Sources: Port of Switzerland (Schweizerische Rheinhäfen), European Commission, DG Energy — Weekly Oil Bulletin, Wasserstraßen- und Schifffahrtsverwaltung des Bundes (WSV), PEGELONLINE. Signal data sheet →

PREMIUM · 49 USD A MONTH

One plan, the whole published library.

  • Access to every published pack, old and new, while your official Premium right is valid; new packs join the same library
  • Three formats per pack: dossier bundle as JSON, organisations as CSV and redistributable series as CSV
  • Provenance, licences, hashes and review notes where available; restricted observations withheld and unfinished dossiers labelled honestly
  • A member key for available full data on the JSON API and MCP; no free newsletter subscription without separate consent

Library downloads and full API/MCP access require a valid official Premium right. After it ends, no new retrieval is available. Keep files already downloaded. Restricted observations remain withheld; incomplete review and content limits are listed before subscription.

Premium details and subscription →

No individual pack purchase. Free summaries and samples need no account. The free weekly requires separate consent.