@sdelsad/commodity-desk-daily 1.0.34 → 1.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/covered.md +1 -1
- package/ep12.html +706 -0
- package/ep12_chart1.png +0 -0
- package/ep12_chart2.png +0 -0
- package/ep12_chart3.png +0 -0
- package/package.json +1 -1
package/covered.md
CHANGED
|
@@ -13,4 +13,4 @@ Running log. Read before writing a new episode: avoid repeating material, and on
|
|
|
13
13
|
- **Ep 9** (Thu) — *Vegetable oils and biofuels*: Palm, soy, rape and sun trade as one system, and the spread between them is the switch that rations demand. Then biofuels: how a mandate turns a political decision into a standing bid for a crop, and why a fuel policy is always a protein policy.
|
|
14
14
|
- **Ep 10** (Fri) — *Freight: Dry Bulk and Chartering*: Freight and chartering (see ep10 notes). Pulse: Thu 20 Aug CBOT closes, corn led with Dec above five dollars, Pro Farmer Illinois corn 184.2 vs 199.6 year-ago, BDI 2791; Pulse: Sea of Azov closed to Russian grain, read as a vessel-class constraint rather than a tonnage constraint.
|
|
15
15
|
- **Ep 11** (Mon) — *Storage, Elevation and Trade Flows*: Ep 11 — Storage, Elevation and Trade Flows: the elevator as a seller of space rather than a speculator; elevation margin versus basis-and-carry as two separate businesses; storage tariff in cents per bushel per month and shrink as a percentage; the posted bid as a queue-management tool rather than a price; worked example buying corn at 45 under Dec and selling at 15 under Mar with Mar 18 over Dec, restated against one month as a 48c basis gain less 7.5c interest and 3c shrink for 37.5c net on 3m bu; the carry belongs only to whoever has a bin (ep 3 callback); US storage capacity flat at 25.3 bn bu since 2019 against a 27.5 bn trend, on-farm 13.6 and off-farm 11.9, 80% on-farm utilisation at 1 Dec 2025 and ~5% system surplus, tightest since 1988; temporary storage as the cost that floors the basis; blending as the cheapest form change, worked example 40kt at 12.4% and 20kt at 11.2% blending to exactly 12.0% at 244 against a 250 sale for 6 USD/t gross and 3 net = 180,000 on the cargo; why the blender sets the discount; protein moisture and test weight average while aflatoxin, infestation, unapproved events and falling number do not; replacement value and the bottleneck asset as the answer to why merchants rent ships but own elevators. Pulse: Fri 21 Aug closes Dec corn 508.5 +5 (2.5-year high, +25.25 on week), Nov beans 1239.5 +3 (+47 on week), Sep meal 317.70, Sep oil 69.35, Chi Sep wheat 681.5, KC 756.25, MGE 698.25; Pro Farmer final tour corn 173.2 bu/ac and 15.344 bn bu against USDA 180.7, beans 53.3 against 52.7; GEO escalation on the Black Sea — the storage transmission: 90%+ of Russian Azov-Black Sea export capacity offline, three Novorossiysk terminals suspended, Taman since late July, Azov navigation suspended since July, one working deepwater terminal in a basin that moved 46.3 mt last season, ~140 mt harvested, exporters stopped buying, grain backing up inland and 4th-class Russian wheat at ~12,000 roubles/t against 15,000 a year ago — world price up and farmgate price down in the same crop.
|
|
16
|
-
- **Ep 12** (Wed) — *Coffee: The Market*:
|
|
16
|
+
- **Ep 12** (Wed) — *Coffee: The Market*: Arabica and robusta are two different plants on two different exchanges in two different units, and on Monday one settled at 2.2 times the other. Then certified stocks: why 226,242 bags, under half a day of world consumption, can move a global market five percent in a session.
|
package/ep12.html
ADDED
|
@@ -0,0 +1,706 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-theme="light">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Ep 12 — Coffee: The Market · Soft Commodity Trading</title>
|
|
7
|
+
<meta name="description" content="Arabica and robusta are two different plants on two different exchanges in two different units — and 226,242 bags of certified stock, under half a day of world consumption, is what the front month can actually be delivered from.">
|
|
8
|
+
<meta name="author" content="Sébastien Delsad">
|
|
9
|
+
<link rel="canonical" href="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep12.html">
|
|
10
|
+
<meta property="og:type" content="article">
|
|
11
|
+
<meta property="og:site_name" content="Soft Commodity Trading">
|
|
12
|
+
<meta property="og:title" content="Ep 12 — Coffee: The Market">
|
|
13
|
+
<meta property="og:description" content="Arabica and robusta are two different plants on two different exchanges in two different units — and 226,242 bags of certified stock, under half a day of world consumption, is what the front month can actually be delivered from.">
|
|
14
|
+
<meta property="og:url" content="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep12.html">
|
|
15
|
+
<meta property="og:image" content="https://cdn.jsdelivr.net/npm/@sdelsad/commodity-desk-daily@1.0.15/cover.jpg">
|
|
16
|
+
<meta property="og:image:alt" content="Soft Commodity Trading cover art">
|
|
17
|
+
<meta property="og:audio" content="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep12.mp3">
|
|
18
|
+
<meta property="og:audio:type" content="audio/mpeg">
|
|
19
|
+
<meta property="article:published_time" content="2026-08-26">
|
|
20
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
21
|
+
<meta name="twitter:title" content="Ep 12 — Coffee: The Market">
|
|
22
|
+
<meta name="twitter:description" content="Arabica and robusta are two different plants on two different exchanges in two different units — and 226,242 bags of certified stock, under half a day of world consumption, is what the front month can actually be delivered from.">
|
|
23
|
+
<meta name="twitter:image" content="https://cdn.jsdelivr.net/npm/@sdelsad/commodity-desk-daily@1.0.15/cover.jpg">
|
|
24
|
+
<meta name="theme-color" content="#faf7f1" media="(prefers-color-scheme: light)">
|
|
25
|
+
<meta name="theme-color" content="#14110e" media="(prefers-color-scheme: dark)">
|
|
26
|
+
<link rel="alternate" type="application/rss+xml" title="Soft Commodity Trading" href="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/feed.xml">
|
|
27
|
+
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='12' fill='%231d4032'/%3E%3Ctext x='32' y='44' font-family='Georgia,serif' font-size='34' fill='%23c9a45c' text-anchor='middle'%3ES%3C/text%3E%3C/svg%3E">
|
|
28
|
+
<script type="application/ld+json">
|
|
29
|
+
{
|
|
30
|
+
"@context": "https://schema.org",
|
|
31
|
+
"@type": "PodcastEpisode",
|
|
32
|
+
"url": "https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep12.html",
|
|
33
|
+
"name": "Ep 12 — Coffee: The Market",
|
|
34
|
+
"episodeNumber": 12,
|
|
35
|
+
"duration": "PT12M09S",
|
|
36
|
+
"description": "Arabica and robusta are two different plants on two different exchanges in two different units — and 226,242 bags of certified stock, under half a day of world consumption, is what the front month can actually be delivered from.",
|
|
37
|
+
"image": "https://cdn.jsdelivr.net/npm/@sdelsad/commodity-desk-daily@1.0.15/cover.jpg",
|
|
38
|
+
"inLanguage": "en",
|
|
39
|
+
"author": {
|
|
40
|
+
"@type": "Person",
|
|
41
|
+
"name": "Sébastien Delsad"
|
|
42
|
+
},
|
|
43
|
+
"associatedMedia": {
|
|
44
|
+
"@type": "MediaObject",
|
|
45
|
+
"contentUrl": "https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep12.mp3",
|
|
46
|
+
"encodingFormat": "audio/mpeg"
|
|
47
|
+
},
|
|
48
|
+
"partOfSeries": {
|
|
49
|
+
"@type": "PodcastSeries",
|
|
50
|
+
"name": "Soft Commodity Trading",
|
|
51
|
+
"url": "https://storage.googleapis.com/podcast-audio-2647223968/index.html",
|
|
52
|
+
"image": "https://cdn.jsdelivr.net/npm/@sdelsad/commodity-desk-daily@1.0.15/cover.jpg",
|
|
53
|
+
"webFeed": "https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/feed.xml"
|
|
54
|
+
},
|
|
55
|
+
"datePublished": "2026-08-26"
|
|
56
|
+
}
|
|
57
|
+
</script>
|
|
58
|
+
<style>
|
|
59
|
+
:root{
|
|
60
|
+
--ink:#16110c; --ink-soft:#4a4238; --line:#e3ddd2; --paper:#faf7f1;
|
|
61
|
+
--accent:#1d4032; --gold:#a8813c; --spoiler:#8a2f2f;
|
|
62
|
+
--tint:rgba(128,110,70,.07); --tint-2:rgba(128,110,70,.045);
|
|
63
|
+
--up:#215c44; --down:#8a2f2f; --shadow:rgba(22,17,12,.14);
|
|
64
|
+
--sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
|
|
65
|
+
--serif:Georgia,"Iowan Old Style","Times New Roman",serif;
|
|
66
|
+
--col:680px;
|
|
67
|
+
}
|
|
68
|
+
html[data-theme="dark"]{
|
|
69
|
+
--ink:#ece6dc; --ink-soft:#a49c90; --line:#2f2a24; --paper:#14110e;
|
|
70
|
+
--accent:#7fae95; --gold:#c9a45c; --spoiler:#d98a8a;
|
|
71
|
+
--tint:rgba(200,180,130,.06); --tint-2:rgba(200,180,130,.035);
|
|
72
|
+
--up:#7fae95; --down:#d98a8a; --shadow:rgba(0,0,0,.55);
|
|
73
|
+
color-scheme:dark;
|
|
74
|
+
}
|
|
75
|
+
*{box-sizing:border-box}
|
|
76
|
+
html{scroll-behavior:smooth;scroll-padding-top:64px}
|
|
77
|
+
html,body{transition:background-color .25s ease,color .25s ease}
|
|
78
|
+
body{margin:0;background:var(--paper);color:var(--ink);
|
|
79
|
+
font:18px/1.72 var(--serif);-webkit-font-smoothing:antialiased;
|
|
80
|
+
text-rendering:optimizeLegibility}
|
|
81
|
+
.wrap{max-width:var(--col);margin:0 auto;padding:0 24px 40px}
|
|
82
|
+
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);
|
|
83
|
+
white-space:nowrap}
|
|
84
|
+
|
|
85
|
+
/* ---------- reading progress ---------- */
|
|
86
|
+
#bar{position:fixed;top:0;left:0;height:2px;width:0;z-index:30;
|
|
87
|
+
background:var(--gold);transition:width .12s linear}
|
|
88
|
+
|
|
89
|
+
/* ---------- masthead ---------- */
|
|
90
|
+
header{padding:52px 0 30px}
|
|
91
|
+
.masthead{display:flex;justify-content:space-between;align-items:baseline;gap:16px;
|
|
92
|
+
padding-bottom:12px;border-bottom:1px solid var(--ink);
|
|
93
|
+
font:600 13px/1 var(--sans);letter-spacing:.13em;text-transform:uppercase}
|
|
94
|
+
.masthead a{color:inherit;text-decoration:none}
|
|
95
|
+
.masthead .epno{color:var(--gold);letter-spacing:.1em}
|
|
96
|
+
h1{font-size:clamp(31px,5.6vw,44px);line-height:1.12;margin:26px 0 0;
|
|
97
|
+
letter-spacing:-.017em;font-weight:400;text-wrap:balance}
|
|
98
|
+
.dek{color:var(--ink-soft);font-size:20px;line-height:1.5;margin:16px 0 0;
|
|
99
|
+
max-width:34em;text-wrap:pretty}
|
|
100
|
+
.meta{margin-top:22px;font:12.5px/1.6 var(--sans);color:var(--ink-soft);
|
|
101
|
+
letter-spacing:.05em;text-transform:uppercase}
|
|
102
|
+
.meta b{font-weight:600;color:var(--ink)}
|
|
103
|
+
|
|
104
|
+
/* ---------- listen ---------- */
|
|
105
|
+
.listen{margin-top:26px;border:1px solid var(--line);border-radius:12px;
|
|
106
|
+
background:var(--tint-2);padding:16px 18px 14px}
|
|
107
|
+
audio{width:100%;height:38px;display:block}
|
|
108
|
+
.listenrow{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;
|
|
109
|
+
margin-top:12px;font:12.5px/1 var(--sans);color:var(--ink-soft)}
|
|
110
|
+
.listenrow a{color:var(--ink-soft);text-decoration:none;border-bottom:1px solid var(--line)}
|
|
111
|
+
.listenrow a:hover{color:var(--accent);border-color:var(--accent)}
|
|
112
|
+
.rates{display:flex;gap:6px;margin-right:auto}
|
|
113
|
+
.rate{background:none;border:1px solid var(--line);color:var(--ink-soft);
|
|
114
|
+
border-radius:99px;padding:4px 10px;cursor:pointer;
|
|
115
|
+
font:600 11.5px/1 var(--sans);letter-spacing:.04em;transition:all .2s}
|
|
116
|
+
.rate:hover{border-color:var(--gold);color:var(--ink)}
|
|
117
|
+
.rate[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
|
|
118
|
+
|
|
119
|
+
/* ---------- contents ---------- */
|
|
120
|
+
.toc{margin:34px 0 6px;padding:16px 0 4px;border-top:1px solid var(--line);
|
|
121
|
+
border-bottom:1px solid var(--line)}
|
|
122
|
+
.tochead{font:600 11px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;
|
|
123
|
+
color:var(--gold);margin:0 0 12px}
|
|
124
|
+
.toc ol{list-style:none;margin:0 0 12px;padding:0;
|
|
125
|
+
font:14.5px/1.5 var(--sans);columns:2;column-gap:26px}
|
|
126
|
+
.toc li{margin:0 0 7px;break-inside:avoid}
|
|
127
|
+
.toc li.t3{padding-left:12px;font-size:13.5px}
|
|
128
|
+
.toc a{color:var(--ink-soft);text-decoration:none;border-bottom:1px solid transparent}
|
|
129
|
+
.toc a:hover{color:var(--ink);border-color:var(--gold)}
|
|
130
|
+
.toc li.on>a{color:var(--ink);font-weight:600}
|
|
131
|
+
|
|
132
|
+
/* ---------- body ---------- */
|
|
133
|
+
main{padding-top:8px}
|
|
134
|
+
h2{font:400 27px/1.25 var(--serif);color:var(--gold);margin:56px 0 18px;
|
|
135
|
+
font-variant-caps:all-small-caps;letter-spacing:.045em;
|
|
136
|
+
padding-bottom:9px;border-bottom:1px solid var(--line)}
|
|
137
|
+
h3{font-size:23px;line-height:1.3;margin:38px 0 10px;letter-spacing:-.012em;
|
|
138
|
+
font-weight:400}
|
|
139
|
+
h4{font:600 17px/1.4 var(--sans);margin:26px 0 6px;letter-spacing:-.005em}
|
|
140
|
+
p{margin:0 0 18px}
|
|
141
|
+
h2+p,h3+p,h4+p{margin-top:0}
|
|
142
|
+
ul,ol{margin:0 0 18px;padding-left:24px}
|
|
143
|
+
li{margin:0 0 9px}
|
|
144
|
+
li::marker{color:var(--gold)}
|
|
145
|
+
strong{font-weight:700}
|
|
146
|
+
a{color:var(--accent);text-underline-offset:2px;text-decoration-thickness:1px}
|
|
147
|
+
.anchor{float:right;margin-left:12px;color:var(--line);text-decoration:none;
|
|
148
|
+
font:400 16px/1 var(--sans);opacity:0;transition:opacity .2s}
|
|
149
|
+
h2:hover .anchor,h3:hover .anchor,.anchor:focus{opacity:1;color:var(--gold)}
|
|
150
|
+
.secnote{font:14.5px/1.6 var(--sans);color:var(--ink-soft);margin:-4px 0 18px}
|
|
151
|
+
code{background:var(--tint);padding:1px 5px;border-radius:3px;
|
|
152
|
+
font:15px/1 ui-monospace,Menlo,Consolas,monospace}
|
|
153
|
+
blockquote{border-left:2px solid var(--gold);margin:26px 0;padding:6px 0 6px 20px;
|
|
154
|
+
font-style:italic;color:var(--ink-soft);font-size:17.5px}
|
|
155
|
+
blockquote strong{font-style:normal;color:var(--ink);font-weight:600}
|
|
156
|
+
hr{border:none;border-top:1px solid var(--line);margin:40px 0}
|
|
157
|
+
.charterr{color:var(--spoiler);font:14px/1.5 var(--sans)}
|
|
158
|
+
|
|
159
|
+
/* ---------- tables ---------- */
|
|
160
|
+
.tablewrap{margin:26px 0;overflow-x:auto;overscroll-behavior-x:contain;
|
|
161
|
+
background:
|
|
162
|
+
linear-gradient(to right,var(--paper) 34%,rgba(255,255,255,0)) left center,
|
|
163
|
+
linear-gradient(to left,var(--paper) 34%,rgba(255,255,255,0)) right center,
|
|
164
|
+
radial-gradient(farthest-side at 0 50%,var(--shadow),rgba(255,255,255,0)) left center,
|
|
165
|
+
radial-gradient(farthest-side at 100% 50%,var(--shadow),rgba(255,255,255,0)) right center;
|
|
166
|
+
background-repeat:no-repeat;
|
|
167
|
+
background-size:44px 100%,44px 100%,13px 100%,13px 100%;
|
|
168
|
+
background-attachment:local,local,scroll,scroll}
|
|
169
|
+
.tablewrap:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
|
|
170
|
+
table{width:100%;border-collapse:collapse;font:15.5px/1.5 var(--sans);
|
|
171
|
+
font-variant-numeric:tabular-nums lining-nums}
|
|
172
|
+
th{text-align:left;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;
|
|
173
|
+
color:var(--ink-soft);border-bottom:1px solid var(--ink);padding:0 14px 9px 0;
|
|
174
|
+
font-weight:600;white-space:nowrap}
|
|
175
|
+
td{padding:10px 14px 10px 0;border-bottom:1px solid var(--line);vertical-align:top}
|
|
176
|
+
th:last-child,td:last-child{padding-right:0}
|
|
177
|
+
th.num,td.num{text-align:right;white-space:nowrap}
|
|
178
|
+
tbody tr:last-child td{border-bottom:none}
|
|
179
|
+
tr td:first-child{font-weight:600;padding-right:20px;min-width:9em}
|
|
180
|
+
.mv{font-weight:600;font-variant-numeric:tabular-nums}
|
|
181
|
+
.mv.up{color:var(--up)} .mv.down{color:var(--down)} .mv.flat{color:var(--ink-soft)}
|
|
182
|
+
|
|
183
|
+
/* ---------- quiz and solutions ---------- */
|
|
184
|
+
.qq{scroll-margin-top:70px}
|
|
185
|
+
.solnbar{display:flex;gap:8px;margin:0 0 16px}
|
|
186
|
+
.ghost{background:none;border:1px solid var(--line);color:var(--ink-soft);
|
|
187
|
+
border-radius:99px;padding:6px 14px;cursor:pointer;
|
|
188
|
+
font:600 11.5px/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;
|
|
189
|
+
transition:all .2s}
|
|
190
|
+
.ghost:hover{border-color:var(--gold);color:var(--ink)}
|
|
191
|
+
details.soln{margin:0 0 10px;scroll-margin-top:70px}
|
|
192
|
+
details.soln>summary{cursor:pointer;list-style:none;display:flex;align-items:center;
|
|
193
|
+
gap:12px;border:1px solid var(--line);border-left:3px solid var(--spoiler);
|
|
194
|
+
border-radius:7px;padding:11px 16px;transition:all .2s;background:var(--tint-2)}
|
|
195
|
+
summary::-webkit-details-marker{display:none}
|
|
196
|
+
details.soln>summary:hover{border-color:var(--spoiler);background:var(--tint)}
|
|
197
|
+
.qn{font:700 13px/1 var(--sans);letter-spacing:.08em;color:var(--spoiler);
|
|
198
|
+
text-transform:uppercase}
|
|
199
|
+
.sl{font:500 12.5px/1 var(--sans);color:var(--ink-soft);letter-spacing:.05em}
|
|
200
|
+
details[open]>summary .sl{opacity:.6}
|
|
201
|
+
.solnbody{border-left:2px solid var(--accent);margin:14px 0 22px 3px;
|
|
202
|
+
padding:2px 0 2px 20px;font-size:17.5px}
|
|
203
|
+
.backq{font:12.5px/1 var(--sans);margin:0}
|
|
204
|
+
.backq a{color:var(--ink-soft);text-decoration:none}
|
|
205
|
+
.backq a:hover{color:var(--accent)}
|
|
206
|
+
|
|
207
|
+
/* ---------- glossary ---------- */
|
|
208
|
+
details.gloss>summary,details.archive>summary{cursor:pointer;list-style:none;
|
|
209
|
+
display:flex;align-items:baseline;justify-content:space-between;gap:14px;
|
|
210
|
+
border:1px solid var(--line);border-radius:8px;padding:13px 18px;
|
|
211
|
+
font:600 14px/1 var(--sans);letter-spacing:.03em;transition:all .2s;
|
|
212
|
+
background:var(--tint-2)}
|
|
213
|
+
details.gloss>summary:hover,details.archive>summary:hover{border-color:var(--gold)}
|
|
214
|
+
.glossbody{padding:22px 2px 6px}
|
|
215
|
+
.gsearch input{width:100%;padding:11px 14px;border:1px solid var(--line);
|
|
216
|
+
border-radius:8px;background:var(--paper);color:var(--ink);
|
|
217
|
+
font:15px/1 var(--sans)}
|
|
218
|
+
.gsearch input:focus{outline:none;border-color:var(--gold)}
|
|
219
|
+
.gchips{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0 0}
|
|
220
|
+
.gchip{background:none;border:1px solid var(--line);color:var(--ink-soft);
|
|
221
|
+
border-radius:99px;padding:6px 12px;cursor:pointer;display:flex;align-items:center;
|
|
222
|
+
gap:6px;font:600 12px/1 var(--sans);letter-spacing:.04em;transition:all .2s}
|
|
223
|
+
.gchip:hover{border-color:var(--gold);color:var(--ink)}
|
|
224
|
+
.gchip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
|
|
225
|
+
.gn{font-weight:400;opacity:.65;font-variant-numeric:tabular-nums}
|
|
226
|
+
dl{margin:20px 0 0}
|
|
227
|
+
.gterm{padding:11px 0;border-top:1px solid var(--line)}
|
|
228
|
+
.gterm dt{font:600 15.5px/1.4 var(--sans)}
|
|
229
|
+
.gterm dd{margin:3px 0 0;font-size:16.5px;color:var(--ink-soft)}
|
|
230
|
+
.gep{font:600 10.5px/1 var(--sans);letter-spacing:.09em;text-transform:uppercase;
|
|
231
|
+
color:var(--ink-soft);border:1px solid var(--line);border-radius:99px;
|
|
232
|
+
padding:3px 7px;white-space:nowrap;margin-left:4px}
|
|
233
|
+
.gep.now{color:var(--gold);border-color:var(--gold)}
|
|
234
|
+
.gnone{font:15px/1.5 var(--sans);color:var(--ink-soft);padding:16px 0}
|
|
235
|
+
|
|
236
|
+
/* ---------- episode navigation ---------- */
|
|
237
|
+
.epnav{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:56px 0 20px;
|
|
238
|
+
padding-top:26px;border-top:1px solid var(--ink)}
|
|
239
|
+
.epnav a{display:flex;flex-direction:column;gap:5px;text-decoration:none;
|
|
240
|
+
border:1px solid var(--line);border-radius:10px;padding:16px 18px;
|
|
241
|
+
color:var(--ink);transition:all .25s}
|
|
242
|
+
.epnav a:hover{border-color:var(--gold);background:var(--tint-2)}
|
|
243
|
+
.epnav .epnext{text-align:right}
|
|
244
|
+
.epnav .dir{font:600 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
|
|
245
|
+
color:var(--gold)}
|
|
246
|
+
.epnav .ept{font:19px/1.3 var(--serif)}
|
|
247
|
+
.epnav .epn{font:12px/1 var(--sans);color:var(--ink-soft);letter-spacing:.05em}
|
|
248
|
+
.epnav a:only-child{grid-column:1/-1;max-width:60%}
|
|
249
|
+
.epnav .epnext:only-child{margin-left:auto}
|
|
250
|
+
details.archive{margin:0 0 12px}
|
|
251
|
+
.arclist{list-style:none;margin:18px 0 6px;padding:0;font:15px/1.5 var(--sans)}
|
|
252
|
+
.arclist li{margin:0;border-top:1px solid var(--line)}
|
|
253
|
+
.arclist a{display:flex;gap:14px;padding:11px 4px;text-decoration:none;
|
|
254
|
+
color:var(--ink);transition:background .2s}
|
|
255
|
+
.arclist a:hover{background:var(--tint-2)}
|
|
256
|
+
.arclist b{color:var(--gold);font-variant-numeric:tabular-nums;font-weight:600}
|
|
257
|
+
.arclist li.here a{color:var(--ink-soft)}
|
|
258
|
+
.arclist li.here b:after{content:" · you are here";font-weight:400;
|
|
259
|
+
font-size:11px;letter-spacing:.1em;text-transform:uppercase}
|
|
260
|
+
|
|
261
|
+
/* ---------- theme button + footer ---------- */
|
|
262
|
+
.themebtn{position:fixed;top:14px;right:14px;z-index:20;background:var(--paper);
|
|
263
|
+
color:var(--ink-soft);border:1px solid var(--line);border-radius:99px;
|
|
264
|
+
padding:8px 14px;cursor:pointer;font:500 12px/1 var(--sans);letter-spacing:.06em;
|
|
265
|
+
display:flex;align-items:center;gap:7px;box-shadow:0 1px 4px var(--shadow);
|
|
266
|
+
transition:all .2s}
|
|
267
|
+
.themebtn:hover{color:var(--ink);border-color:var(--gold)}
|
|
268
|
+
.themebtn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;
|
|
269
|
+
stroke-linecap:round;stroke-linejoin:round}
|
|
270
|
+
html[data-theme="dark"] .themebtn{box-shadow:none}
|
|
271
|
+
.themebtn .moon{display:block} .themebtn .sun{display:none}
|
|
272
|
+
html[data-theme="dark"] .themebtn .moon{display:none}
|
|
273
|
+
html[data-theme="dark"] .themebtn .sun{display:block}
|
|
274
|
+
.themebtn .lbl:after{content:"Dark"}
|
|
275
|
+
html[data-theme="dark"] .themebtn .lbl:after{content:"Light"}
|
|
276
|
+
footer{margin-top:40px;padding:24px 0 70px;border-top:1px solid var(--line);
|
|
277
|
+
font:14px/1.7 var(--sans);color:var(--ink-soft);
|
|
278
|
+
display:flex;flex-wrap:wrap;gap:8px 22px;justify-content:space-between}
|
|
279
|
+
footer a{color:var(--ink-soft)}
|
|
280
|
+
footer a:hover{color:var(--accent)}
|
|
281
|
+
footer .sig b{color:var(--ink);font-weight:600}
|
|
282
|
+
|
|
283
|
+
/* ---------- wide screens: the rail, and the breakout ---------- */
|
|
284
|
+
@media (min-width:1240px){
|
|
285
|
+
.toc{position:fixed;top:96px;left:max(24px,calc(50% - 596px));width:216px;
|
|
286
|
+
max-height:74vh;overflow-y:auto;margin:0;padding:0;border:none;
|
|
287
|
+
border-left:1px solid var(--line);padding-left:18px;z-index:5}
|
|
288
|
+
.toc ol{columns:1;font-size:14px}
|
|
289
|
+
.toc li{margin-bottom:9px}
|
|
290
|
+
/* charts break out of the measure; tables stay aligned with the prose,
|
|
291
|
+
because a table that starts left of the paragraph above it reads as a
|
|
292
|
+
layout fault rather than as emphasis */
|
|
293
|
+
.chartfig{margin-left:-38px;margin-right:-38px;
|
|
294
|
+
padding-left:26px;padding-right:26px}
|
|
295
|
+
}
|
|
296
|
+
@media (min-width:1240px) and (max-height:620px){ .toc{display:none} }
|
|
297
|
+
|
|
298
|
+
/* ---------- phones ---------- */
|
|
299
|
+
@media (max-width:640px){
|
|
300
|
+
body{font-size:17px;line-height:1.68}
|
|
301
|
+
.wrap{padding:0 18px 32px}
|
|
302
|
+
header{padding-top:34px}
|
|
303
|
+
.dek{font-size:18px}
|
|
304
|
+
h2{font-size:24px;margin-top:44px}
|
|
305
|
+
h3{font-size:20.5px}
|
|
306
|
+
/* a phone gets the sections, not every subhead: eleven rows of contents
|
|
307
|
+
is a screenful of scrolling before the article even starts */
|
|
308
|
+
.toc li.t3{display:none}
|
|
309
|
+
.toc ol{columns:2;column-gap:18px;font-size:14px}
|
|
310
|
+
.themebtn{top:9px;right:9px;padding:7px 11px}
|
|
311
|
+
table{font-size:14.5px}
|
|
312
|
+
th{font-size:10.5px;padding-right:12px}
|
|
313
|
+
td{padding-right:12px}
|
|
314
|
+
tr td:first-child{min-width:7.5em;padding-right:14px}
|
|
315
|
+
.epnav{grid-template-columns:1fr}
|
|
316
|
+
.epnav .epnext{text-align:left}
|
|
317
|
+
.epnav a:only-child{max-width:none}
|
|
318
|
+
.solnbody{font-size:17px;padding-left:15px}
|
|
319
|
+
/* charts earn the full width of a phone */
|
|
320
|
+
.chartfig{margin-left:-18px;margin-right:-18px;border-radius:0;
|
|
321
|
+
border-left:none;border-right:none;padding:16px 14px 12px}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/* ---------- print ---------- */
|
|
325
|
+
@page{margin:16mm 14mm}
|
|
326
|
+
@media print{
|
|
327
|
+
:root{--ink:#000;--ink-soft:#333;--line:#bbb;--paper:#fff;--tint:#f4f2ec;
|
|
328
|
+
--tint-2:#f8f7f3;--gold:#7a5c24;--accent:#123024;--up:#123024;
|
|
329
|
+
--down:#7a1f1f;--shadow:transparent}
|
|
330
|
+
html[data-theme="dark"]{--ink:#000;--ink-soft:#333;--line:#bbb;--paper:#fff;
|
|
331
|
+
--tint:#f4f2ec;--tint-2:#f8f7f3;--gold:#7a5c24;--accent:#123024}
|
|
332
|
+
body{font-size:11pt;line-height:1.5;background:#fff}
|
|
333
|
+
.wrap{max-width:none;padding:0}
|
|
334
|
+
#bar,.themebtn,.toc,.listen,.solnbar,.gsearch,.epnav,.anchor,.backq{display:none!important}
|
|
335
|
+
header{padding-top:0}
|
|
336
|
+
.masthead{border-color:#000}
|
|
337
|
+
h1{font-size:23pt;margin-top:14pt}
|
|
338
|
+
.dek{font-size:12pt}
|
|
339
|
+
h2{font-size:15pt;margin:22pt 0 8pt;break-after:avoid}
|
|
340
|
+
h3{font-size:13pt;margin:14pt 0 5pt;break-after:avoid}
|
|
341
|
+
p,li{orphans:3;widows:3}
|
|
342
|
+
.tablewrap{overflow:visible;background:none;break-inside:avoid}
|
|
343
|
+
.chartfig{break-inside:avoid;border-color:#ccc;background:none}
|
|
344
|
+
details{break-inside:avoid;margin:0}
|
|
345
|
+
/* the answers print open, labelled by question, without a button */
|
|
346
|
+
details.soln>summary{display:flex;border:none;background:none;
|
|
347
|
+
padding:10pt 0 2pt;border-top:1px solid #ddd}
|
|
348
|
+
summary .sl{display:none}
|
|
349
|
+
.solnbody{border-color:#999;margin:2pt 0 8pt;padding-left:0}
|
|
350
|
+
/* the cumulative glossary is a reference, not part of the article:
|
|
351
|
+
eighty-odd terms would add pages to every printout */
|
|
352
|
+
.glossec,details.archive{display:none}
|
|
353
|
+
a{color:#000;text-decoration:none}
|
|
354
|
+
footer{border-color:#000}
|
|
355
|
+
}
|
|
356
|
+
@media (prefers-reduced-motion:reduce){
|
|
357
|
+
html{scroll-behavior:auto}
|
|
358
|
+
*{animation-duration:.001ms!important;transition-duration:.001ms!important}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
.chartfig{margin:36px 0;padding:22px 22px 16px;border:1px solid var(--line);
|
|
362
|
+
border-radius:10px;background:var(--tint-2,var(--tint))}
|
|
363
|
+
.charttitle{font:600 17.5px/1.3 var(--serif,Georgia,serif);color:var(--ink);
|
|
364
|
+
margin:0 0 16px;letter-spacing:-.012em}
|
|
365
|
+
.chartcap{font:italic 15.5px/1.55 var(--serif,Georgia,serif);color:var(--ink-soft);
|
|
366
|
+
margin:14px 2px 0;text-wrap:pretty}
|
|
367
|
+
.chartsrc{display:block;font:500 11.5px/1.5 var(--sans,ui-sans-serif,system-ui,sans-serif);
|
|
368
|
+
font-style:normal;letter-spacing:.05em;opacity:.8;margin-top:7px}
|
|
369
|
+
.chart{display:block;overflow:visible;font-variant-numeric:tabular-nums}
|
|
370
|
+
@media (max-width:640px){
|
|
371
|
+
.charttitle{font-size:16.5px;margin-bottom:12px}
|
|
372
|
+
.chartcap{font-size:15px}
|
|
373
|
+
}
|
|
374
|
+
</style>
|
|
375
|
+
<script>
|
|
376
|
+
try{
|
|
377
|
+
var s = localStorage.getItem('cdd-theme');
|
|
378
|
+
if(s){ document.documentElement.setAttribute('data-theme', s); }
|
|
379
|
+
else if(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches){
|
|
380
|
+
document.documentElement.setAttribute('data-theme','dark');
|
|
381
|
+
}
|
|
382
|
+
}catch(e){}
|
|
383
|
+
</script>
|
|
384
|
+
</head>
|
|
385
|
+
<body>
|
|
386
|
+
<div id="bar" aria-hidden="true"></div>
|
|
387
|
+
<button class="themebtn" type="button" aria-label="Switch colour theme">
|
|
388
|
+
<svg class="moon" viewBox="0 0 24 24" aria-hidden="true"><path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/></svg>
|
|
389
|
+
<svg class="sun" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4.2"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg>
|
|
390
|
+
<span class="lbl"></span>
|
|
391
|
+
</button>
|
|
392
|
+
<div class="wrap">
|
|
393
|
+
<header>
|
|
394
|
+
<div class="masthead">
|
|
395
|
+
<a href="https://storage.googleapis.com/podcast-audio-2647223968/index.html">Soft Commodity Trading</a>
|
|
396
|
+
<span class="epno">Ep 12</span>
|
|
397
|
+
</div>
|
|
398
|
+
<h1>Coffee: The Market</h1>
|
|
399
|
+
<p class="dek">Arabica and robusta are two different plants on two different exchanges in two different units — and 226,242 bags of certified stock, under half a day of world consumption, is what the front month can actually be delivered from.</p>
|
|
400
|
+
<div class="meta">Wednesday 26 August 2026 · <b>12 min 09</b></div>
|
|
401
|
+
<div class="listen">
|
|
402
|
+
<audio controls preload="none" src="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep12.mp3"></audio>
|
|
403
|
+
<div class="listenrow">
|
|
404
|
+
<span class="rates" role="group" aria-label="Playback speed">
|
|
405
|
+
<button type="button" class="rate" data-rate="1" aria-pressed="true">1×</button>
|
|
406
|
+
<button type="button" class="rate" data-rate="1.25" aria-pressed="false">1.25×</button>
|
|
407
|
+
<button type="button" class="rate" data-rate="1.5" aria-pressed="false">1.5×</button>
|
|
408
|
+
</span>
|
|
409
|
+
<a href="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep12.mp3" download>Download</a>
|
|
410
|
+
<a href="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/feed.xml">Subscribe · RSS</a>
|
|
411
|
+
</div>
|
|
412
|
+
</div>
|
|
413
|
+
<nav class="toc" id="toc" aria-label="Contents"><p class="tochead">Contents</p><ol><li class="t2"><a href="#solutions">Solutions</a></li><li class="t2"><a href="#there-is-no-such-thing-as-the-coffee-price">There is no such thing as the coffee price</a></li><li class="t2"><a href="#certified-stock-is-not-inventory">Certified stock is not inventory</a></li><li class="t2"><a href="#the-number-of-the-day">The number of the day</a></li><li class="t2"><a href="#what-the-desk-is-actually-arguing-about">What the desk is actually arguing about</a></li><li class="t2"><a href="#the-valve">The valve</a></li><li class="t2"><a href="#glossary">Glossary</a></li></ol></nav>
|
|
414
|
+
</header>
|
|
415
|
+
<main>
|
|
416
|
+
<p><strong>Coffee led every agricultural market on Monday, and the reason was an inventory number, not a crop number.</strong></p>
|
|
417
|
+
<div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Market</th><th>Contract</th><th>Price</th><th class="num">Change</th></tr></thead><tbody><tr><td>Arabica (ICE)</td><td>Sep 26</td><td>377.75 c/lb</td><td class="num"><span class="mv up">+19.00c / +5.05%</span></td></tr><tr><td>Arabica (ICE)</td><td>Dec 26</td><td>341.65 c/lb</td><td class="num"><span class="mv up">+19.00c / +5.89%</span></td></tr><tr><td>Robusta (London)</td><td>Sep 26</td><td>~$3,790/t</td><td class="num"><span class="mv up">+$192 / +5.34%</span></td></tr><tr><td>Corn (CBOT)</td><td>Dec 26</td><td>515.50 c/bu</td><td class="num"><span class="mv up">+1.4%</span></td></tr><tr><td>Soybeans (CBOT)</td><td>Nov 26</td><td>1224.25 c/bu</td><td class="num"><span class="mv down">−1.2%</span></td></tr></tbody></table></div>
|
|
418
|
+
<p>September arabica settled at a seven-and-a-half-month high, and it settled 36.10 cents <strong>over</strong> December. That inverse is the story. Certified arabica stocks at the exchange fell to 226,242 bags, a two-and-three-quarter-year low, and Monday was the first day of the delivery notice period for the spot contract. Certified robusta stocks went the other way, to an eight-and-three-quarter-month high. Same drink, opposite inventory stories.</p>
|
|
419
|
+
<p>The crop background pulls the same direction for arabica and the opposite direction for robusta. Brazil was 81.1% harvested at 14 August against 86.1% a year earlier, and the arabica harvest specifically was 86% done against 95%. Vietnam is running a four-year-high robusta crop near 1.76 million tonnes, with January-to-July exports up 21.1% year on year. USDA still forecasts record world output of 189.7 million bags for 2026/27.</p>
|
|
420
|
+
<figure class="chartfig">
|
|
421
|
+
<figcaption class="charttitle">Coffee did a month in a day</figcaption>
|
|
422
|
+
<svg class="chart" viewBox="0 0 640 330" width="100%" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">
|
|
423
|
+
<style>.chart{--c-a:var(--accent,#1d4032);--c-b:var(--gold,#a8813c);--c-c:#4a6f8c;font-family:inherit}html[data-theme="dark"] .chart{--c-c:#7ba3c4}.chart .grid{stroke:var(--line,#ddd6c9);stroke-width:1}.chart .axis{fill:var(--ink-soft,#4a4238);font-size:12px}.chart .unit{fill:var(--ink-soft,#4a4238);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.chart .ln{fill:none;stroke-width:2.25;stroke-linejoin:round;stroke-linecap:round}.chart .lg{fill:var(--ink,#16110c);font-size:12.5px}.chart .vlabel{fill:var(--ink,#16110c);font-size:11.5px;font-weight:600}@media (max-width:900px){.chart .axis{font-size:14px}.chart .unit{font-size:13px}.chart .lg{font-size:14.5px}.chart .vlabel{font-size:13.5px}.chart .ln{stroke-width:2.6}}@media (max-width:640px){.chart .axis{font-size:16px}.chart .unit{font-size:14px}.chart .lg{font-size:16px}.chart .vlabel{font-size:15px}.chart .ln{stroke-width:3.1}}</style>
|
|
424
|
+
<line class="grid" x1="56" y1="286.0" x2="622" y2="286.0" opacity=".45"/>
|
|
425
|
+
<text class="axis" x="46" y="290.0" text-anchor="end">-2</text>
|
|
426
|
+
<line class="grid" x1="56" y1="221.0" x2="622" y2="221.0"/>
|
|
427
|
+
<text class="axis" x="46" y="225.0" text-anchor="end">0</text>
|
|
428
|
+
<line class="grid" x1="56" y1="156.0" x2="622" y2="156.0" opacity=".45"/>
|
|
429
|
+
<text class="axis" x="46" y="160.0" text-anchor="end">2</text>
|
|
430
|
+
<line class="grid" x1="56" y1="91.0" x2="622" y2="91.0" opacity=".45"/>
|
|
431
|
+
<text class="axis" x="46" y="95.0" text-anchor="end">4</text>
|
|
432
|
+
<line class="grid" x1="56" y1="26.0" x2="622" y2="26.0" opacity=".45"/>
|
|
433
|
+
<text class="axis" x="46" y="30.0" text-anchor="end">6</text>
|
|
434
|
+
<text class="unit" x="622" y="16" text-anchor="end">% change on the day</text>
|
|
435
|
+
<text class="axis" x="126.8" y="306" text-anchor="middle">Arabica Sep</text>
|
|
436
|
+
<text class="axis" x="268.2" y="306" text-anchor="middle">Robusta Sep</text>
|
|
437
|
+
<text class="axis" x="409.8" y="306" text-anchor="middle">Corn Dec</text>
|
|
438
|
+
<text class="axis" x="551.2" y="306" text-anchor="middle">Beans Nov</text>
|
|
439
|
+
<rect x="106.5" y="56.9" width="40.5" height="164.1" rx="2" fill="var(--c-a)" opacity=".85"/>
|
|
440
|
+
<rect x="248.0" y="47.5" width="40.5" height="173.5" rx="2" fill="var(--c-a)" opacity=".85"/>
|
|
441
|
+
<rect x="389.5" y="175.5" width="40.5" height="45.5" rx="2" fill="var(--c-a)" opacity=".85"/>
|
|
442
|
+
<rect x="531.0" y="221.0" width="40.5" height="39.0" rx="2" fill="var(--c-a)" opacity=".85"/>
|
|
443
|
+
<line class="grid" x1="56" y1="221.0" x2="622" y2="221.0"/>
|
|
444
|
+
</svg>
|
|
445
|
+
<figcaption class="chartcap">Both coffees moved more than five percent while the grains moved one. A thin deliverable float is what lets a small market travel that far in one session. <span class="chartsrc">ICE and CBOT settlements, Monday 24 August 2026</span></figcaption>
|
|
446
|
+
</figure>
|
|
447
|
+
<p><strong>The policy read: India has lifted its wheat export ban.</strong> The mechanism matters more than the headline. A ban removes a seller from the world market; lifting it puts one back. Every tonne India offers into South and Southeast Asia is a tonne a buyer does not have to lift from the Black Sea, France or Australia. So the first place it lands is not Chicago — it is the destination differential in Asia, and then the origin basis at whichever origin loses the business. That runs directly against the other half of the wheat map: Ukraine shipped 188,000 t last week, down 11.4% week on week, with renewed strikes on Odesa and Pivdennyi. Capacity constrained on one side of the world, capacity released on the other.</p>
|
|
448
|
+
<h1>Key takeaways</h1>
|
|
449
|
+
<ul><li>There is no such thing as "the coffee price". Arabica and robusta are different plants on different exchanges in different units, and on Monday arabica traded at 2.2 times robusta on a common tonne basis.</li><li>One cent per pound is $22.05 per tonne. That single factor is what lets a New York arabica price be compared with a London robusta price at all.</li><li>Certified stock is not world inventory. At 226,242 bags it is under half a day of world consumption — but it is the entire float the front month can be delivered from.</li><li>The exchange fixes a premium or discount for each deliverable origin and never moves it. The physical differential for that origin moves daily. That difference is the valve that makes coffee walk into and out of the warehouse.</li><li>Low certified stocks usually mean roasters are paying more than the exchange, not that the coffee does not exist.</li><li>Certification guarantees a grade — defect count, screen size, an untainted cup. It does not guarantee quality anyone wants, and coffee has sat certified for years because nobody would pay to take it out.</li><li>A 36-cent inverse against a full carry of roughly plus 8 cents is a 44-cent gap. That gap is the price of owning the deliverable thing today, not a forecast of anything.</li></ul>
|
|
450
|
+
<h1>Vocabulary</h1>
|
|
451
|
+
<div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Term</th><th>What it means</th></tr></thead><tbody><tr><td><strong>arabica</strong></td><td>The high-altitude coffee species, aromatic and acidic, lower-yielding and more fragile; priced in New York</td></tr><tr><td><strong>robusta</strong></td><td>The low-altitude species, hardier and higher-yielding, about double the caffeine and a flatter cup; priced in London</td></tr><tr><td><strong>Coffee C (KC)</strong></td><td>The ICE arabica contract: 37,500 lb, quoted in US cents per pound, tick 0.05c worth $18.75</td></tr><tr><td><strong>Robusta contract (RC)</strong></td><td>The London arabica counterpart for robusta: 10 tonnes, quoted in dollars per tonne, tick $1 worth $10</td></tr><tr><td><strong>certified stock</strong></td><td>Coffee sampled, graded and stamped as deliverable against the futures contract, sitting in an exchange-licensed warehouse</td></tr><tr><td><strong>licensed warehouse</strong></td><td>A storage facility the exchange approves to hold deliverable stock, at named ports only</td></tr><tr><td><strong>grading</strong></td><td>The exchange's pass-fail examination of a sample: defect count, screen size and a clean cup</td></tr><tr><td><strong>defect count</strong></td><td>The number of black, broken, insect-damaged or foreign items in a fixed sample weight, the primary grading measure</td></tr><tr><td><strong>screen size</strong></td><td>Bean size measured by the mesh it will not fall through, part of the deliverable specification</td></tr><tr><td><strong>washed process</strong></td><td>Fruit stripped off the bean before drying, giving a cleaner and more consistent cup</td></tr><tr><td><strong>natural process</strong></td><td>Fruit left on the bean through drying, giving a sweeter, heavier and more variable cup</td></tr><tr><td><strong>deliverable origin differential</strong></td><td>The fixed premium or discount the contract assigns to each approved origin, unchanged whatever the physical market does</td></tr><tr><td><strong>delivery notice period</strong></td><td>The window in which shorts may tender certified stock against the expiring contract</td></tr><tr><td><strong>soluble solids</strong></td><td>The share of the bean that dissolves in water, higher in robusta, which is why robusta dominates instant coffee</td></tr></tbody></table></div>
|
|
452
|
+
<h1>Quiz</h1>
|
|
453
|
+
<p id="q1" class="qq"><strong>Q1.</strong> You hold 300,000 lb — eight lots — of a washed Honduran arabica already sitting at an exchange-approved port in Europe. September arabica is 377.75, December is 341.65, both in cents per pound.</p>
|
|
454
|
+
<p>You have two ways out.</p>
|
|
455
|
+
<p><em>Route A:</em> a roaster will take it at <strong>plus 14.00 against December</strong>, December shipment.</p>
|
|
456
|
+
<p><em>Route B:</em> certify it and deliver against September. The contract's fixed differential for that origin is <strong>minus 1.00 cent</strong>. Certification, handling and in-warehouse costs are <strong>2.20 cents per pound</strong>, paid whether or not it passes. If it fails to grade, you have to sell it into the physical market at <strong>6.00 cents under December</strong>, and the 2.20 is already spent.</p>
|
|
457
|
+
<p>Value both routes in cents per pound and in dollars on the position. Then, if you put the chance of it grading at 85%, say which route you take — and work out the grading probability at which you would be indifferent.</p>
|
|
458
|
+
<p id="q2" class="qq"><strong>Q2.</strong> USDA forecasts record world coffee output of 189.7 million bags for 2026/27, and certified arabica stocks are at a two-and-three-quarter-year low of 226,242 bags. Explain how both can be true at once.</p>
|
|
459
|
+
<p id="q3" class="qq"><strong>Q3.</strong> It is October. An elevator is 95% full and the December–March corn spread is 22 cents. Should it push its posted harvest bid up or down, and why?</p>
|
|
460
|
+
<p id="q4" class="qq"><strong>Q4.</strong> A US policy change lifts soybean oil demand by one billion pounds. Roughly how much additional soybean meal does that force into the market?</p>
|
|
461
|
+
<p><strong>Conversion drill.</strong> You are quoted a margin of 18 cents per bushel on 60,000 tonnes of soybeans. What is the cheque?</p>
|
|
462
|
+
<h2 id="solutions">Solutions<a class="anchor" href="#solutions" aria-label="Link to this section">#</a></h2><p class="secnote">One reveal per question — check your answer to Q1 without spoiling the rest.</p><div class="solnbar"><button type="button" class="ghost" data-solnall="open">Reveal all</button><button type="button" class="ghost" data-solnall="close">Hide all</button></div>
|
|
463
|
+
<details class="soln" id="a1"><summary><span class="qn">Q1</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>The trap is that the two routes are priced against <strong>different months</strong>. "Plus 14" is a December-based number; the certification route sells September. You cannot compare a differential with a differential here — convert both to a flat price first.</p>
|
|
464
|
+
<p><em>Route A, sell to the roaster:</em></p>
|
|
465
|
+
<div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Line</th><th class="num">c/lb</th></tr></thead><tbody><tr><td>December futures</td><td class="num">341.65</td></tr><tr><td>Roaster differential</td><td class="num">+14.00</td></tr><tr><td><strong>Net</strong></td><td class="num"><strong>355.65</strong></td></tr></tbody></table></div>
|
|
466
|
+
<p>On 300,000 lb that is <strong>$1,066,950</strong>.</p>
|
|
467
|
+
<p><em>Route B, certify and deliver, if it grades:</em></p>
|
|
468
|
+
<div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Line</th><th class="num">c/lb</th></tr></thead><tbody><tr><td>September futures</td><td class="num">377.75</td></tr><tr><td>Contract origin differential</td><td class="num">−1.00</td></tr><tr><td>Certification, handling, warehouse</td><td class="num">−2.20</td></tr><tr><td><strong>Net</strong></td><td class="num"><strong>374.55</strong></td></tr></tbody></table></div>
|
|
469
|
+
<p>On 300,000 lb that is <strong>$1,123,650</strong> — better by 18.90 c/lb, or <strong>$56,700</strong>.</p>
|
|
470
|
+
<p><em>Route B if it fails to grade:</em> you sell at December minus 6.00, so 335.65, and the 2.20 is gone anyway. Net 333.45 c/lb, or <strong>$1,000,350</strong> — worse than Route A by 22.20 c/lb, or <strong>$66,600</strong>.</p>
|
|
471
|
+
<p><em>The decision at 85%:</em></p>
|
|
472
|
+
<p>0.85 × $56,700 + 0.15 × (−$66,600) = $48,195 − $9,990 = <strong>+$38,205</strong></p>
|
|
473
|
+
<p>Certify. Note that the fixed origin differential quietly ate a cent of the inverse before you started, and the certification cost ate another 2.20 — the 36-cent spread was never 36 cents to you.</p>
|
|
474
|
+
<p><em>Indifference:</em> solve p × 56,700 = (1 − p) × 66,600. That gives p = 66,600 ÷ 123,300 = <strong>54.0%</strong>. Below a 54% chance of grading you sell to the roaster. That is the real lesson: a wide inverse does not decide the trade on its own, because the grading risk sits on your side of it.</p>
|
|
475
|
+
<p class="backq"><a href="#q1">↑ Back to question 1</a></p></div></details>
|
|
476
|
+
<details class="soln" id="a2"><summary><span class="qn">Q2</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>Because a record crop and an empty warehouse measure two different things. World output of 189.7 million bags is the flow of coffee produced in a year. Certified stock is not a share of that flow — it is the small pool of coffee that has been shipped to a licensed warehouse, sampled and graded, and left there because nobody offered enough to take it out. At 226,242 bags it is roughly ten hours of world consumption.</p>
|
|
477
|
+
<p>Coffee goes into that pool only when the physical differential a roaster will pay drops below the exchange's fixed differential for the origin. When roasters bid up, as they do when a big origin runs late, the coffee never reaches the warehouse in the first place — it goes straight to a plant. So certified stocks can drain to a multi-year low in the same month a record crop is forecast, because the number is a differential signal, not a supply statistic. The record crop, incidentally, is Brazil-weighted and running late; slow does not mean small.</p>
|
|
478
|
+
<p class="backq"><a href="#q2">↑ Back to question 2</a></p></div></details>
|
|
479
|
+
<details class="soln" id="a3"><summary><span class="qn">Q3</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>Down — it should widen the basis and push the bid lower.</p>
|
|
480
|
+
<p>The 22-cent carry looks like free money, and it is, but only to whoever has a bin. A full elevator has nothing to store the corn in, so it cannot buy grain, hold it, and sell the March against it. What it can do is charge for the space it does not have, and the way an elevator says "stop bringing me corn" is with the posted bid.</p>
|
|
481
|
+
<p>That is the point about the posted bid: it is a queue-management tool, not a price forecast. A 95%-full house in October is at the moment when trucks arrive faster than they can be loaded out, so the bid drops until the queue clears or until somebody piles the corn on the ground. Temporary storage is what floors the basis — the bid can only fall to the point where ground piling becomes the cheaper option. Nothing in that decision expresses a view on the price of corn.</p>
|
|
482
|
+
<p class="backq"><a href="#q3">↑ Back to question 3</a></p></div></details>
|
|
483
|
+
<details class="soln" id="a4"><summary><span class="qn">Q4</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>About <strong>four billion pounds</strong>.</p>
|
|
484
|
+
<p>A bushel of soybeans yields roughly 11 lb of oil and 44 lb of meal, so the two products come out in a fixed ratio of about one to four. Oil demand cannot be met without crushing beans, and crushing beans produces meal whether or not anyone wanted it. One billion extra pounds of oil demand therefore drags in roughly four billion pounds of meal.</p>
|
|
485
|
+
<p>This is why a crusher captures far less of an oil rally than the oil chart suggests. The incremental meal has to be sold into a market that did not ask for it, and the meal price falls to clear it. The oil leg gains and the meal leg gives part of it back — which is the whole reason the crush margin, not the oil price, is what a crusher actually trades.</p>
|
|
486
|
+
<p><strong>Conversion drill.</strong> <strong>$396,900.</strong></p>
|
|
487
|
+
<p>Two steps. First cents per bushel to dollars per tonne: soybeans run about 36.74 bushels to the tonne, so 18 c/bu × 36.74 ÷ 100 = <strong>$6.61/t</strong>. Then dollars per tonne to whole-cargo money: ×6, decimal four places, so 6.61 → 39.7 → <strong>$396,900</strong> on 60,000 t.</p>
|
|
488
|
+
<p>The instinct worth building is the second step. A quarter of a cent per bushel is about 9 cents a tonne, which is $5,400 on a Panamax — which is why a desk will argue for ten minutes over a quarter cent.</p>
|
|
489
|
+
<h1>The written edition</h1>
|
|
490
|
+
<p class="backq"><a href="#q4">↑ Back to question 4</a></p></div></details><h2 id="there-is-no-such-thing-as-the-coffee-price">There is no such thing as the coffee price<a class="anchor" href="#there-is-no-such-thing-as-the-coffee-price" aria-label="Link to this section">#</a></h2>
|
|
491
|
+
<p>Two plants, two exchanges, two currencies, two units.</p>
|
|
492
|
+
<p><strong>Arabica</strong> grows high and cool. It is fragile, lower-yielding per tree, and produces the aromatic, acidic cup sold in a specialty shop. <strong>Robusta</strong> grows low, hot and wet. It is hardier, yields more, carries roughly double the caffeine, and gives a heavier, flatter cup. Robusta also delivers more <strong>soluble solids</strong> per kilo, which is why it dominates instant coffee.</p>
|
|
493
|
+
<p>They do not even quote in the same units. Arabica prices in New York in US cents per pound, on a 37,500 lb contract — about 17 tonnes, or roughly 283 bags of 60 kg. A tick is five hundredths of a cent, worth $18.75. Robusta prices in London in dollars per tonne, ten tonnes to a lot, a one-dollar tick worth $10.</p>
|
|
494
|
+
<p>So a desk converts before it can compare. One cent per pound is $22.05 per tonne. Run Monday's settlements through it:</p>
|
|
495
|
+
<div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th></th><th>Settlement</th><th class="num">In $/t</th></tr></thead><tbody><tr><td>Arabica Sep</td><td>377.75 c/lb</td><td class="num">$8,327</td></tr><tr><td>Robusta Sep</td><td>—</td><td class="num">~$3,790</td></tr></tbody></table></div>
|
|
496
|
+
<p>Arabica is trading at 2.2 times robusta. That gap is not a mistake, it is a switch. A soluble manufacturer or a supermarket blender can shift a few percent of a blend between the two species, and when arabica gets rich enough they do. Substitution is what eventually caps the spread — the same mechanism that prices corn against feed wheat, running on cup profile instead of protein.</p>
|
|
497
|
+
<figure class="chartfig">
|
|
498
|
+
<figcaption class="charttitle">Two coffees, one word</figcaption>
|
|
499
|
+
<svg class="chart" viewBox="0 0 640 330" width="100%" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">
|
|
500
|
+
<style>.chart{--c-a:var(--accent,#1d4032);--c-b:var(--gold,#a8813c);--c-c:#4a6f8c;font-family:inherit}html[data-theme="dark"] .chart{--c-c:#7ba3c4}.chart .grid{stroke:var(--line,#ddd6c9);stroke-width:1}.chart .axis{fill:var(--ink-soft,#4a4238);font-size:12px}.chart .unit{fill:var(--ink-soft,#4a4238);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.chart .ln{fill:none;stroke-width:2.25;stroke-linejoin:round;stroke-linecap:round}.chart .lg{fill:var(--ink,#16110c);font-size:12.5px}.chart .vlabel{fill:var(--ink,#16110c);font-size:11.5px;font-weight:600}@media (max-width:900px){.chart .axis{font-size:14px}.chart .unit{font-size:13px}.chart .lg{font-size:14.5px}.chart .vlabel{font-size:13.5px}.chart .ln{stroke-width:2.6}}@media (max-width:640px){.chart .axis{font-size:16px}.chart .unit{font-size:14px}.chart .lg{font-size:16px}.chart .vlabel{font-size:15px}.chart .ln{stroke-width:3.1}}</style>
|
|
501
|
+
<line class="grid" x1="56" y1="286.0" x2="622" y2="286.0"/>
|
|
502
|
+
<text class="axis" x="46" y="290.0" text-anchor="end">0</text>
|
|
503
|
+
<line class="grid" x1="56" y1="223.6" x2="622" y2="223.6" opacity=".45"/>
|
|
504
|
+
<text class="axis" x="46" y="227.6" text-anchor="end">2,000</text>
|
|
505
|
+
<line class="grid" x1="56" y1="161.1" x2="622" y2="161.1" opacity=".45"/>
|
|
506
|
+
<text class="axis" x="46" y="165.1" text-anchor="end">4,000</text>
|
|
507
|
+
<line class="grid" x1="56" y1="98.7" x2="622" y2="98.7" opacity=".45"/>
|
|
508
|
+
<text class="axis" x="46" y="102.7" text-anchor="end">6,000</text>
|
|
509
|
+
<line class="grid" x1="56" y1="36.2" x2="622" y2="36.2" opacity=".45"/>
|
|
510
|
+
<text class="axis" x="46" y="40.2" text-anchor="end">8,000</text>
|
|
511
|
+
<text class="unit" x="622" y="16" text-anchor="end">USD per tonne</text>
|
|
512
|
+
<text class="axis" x="197.5" y="306" text-anchor="middle">Arabica Sep</text>
|
|
513
|
+
<text class="axis" x="480.5" y="306" text-anchor="middle">Robusta Sep</text>
|
|
514
|
+
<rect x="177.3" y="26.0" width="40.5" height="260.0" rx="2" fill="var(--c-a)" opacity=".85"/>
|
|
515
|
+
<rect x="460.3" y="167.7" width="40.5" height="118.3" rx="2" fill="var(--c-a)" opacity=".85"/>
|
|
516
|
+
<line class="grid" x1="56" y1="286.0" x2="622" y2="286.0"/>
|
|
517
|
+
</svg>
|
|
518
|
+
<figcaption class="chartcap">On a common tonne basis arabica settled at 2.2 times robusta. Roasters and soluble plants blend across that gap, and the blending is what eventually caps it. <span class="chartsrc">ICE arabica Sep and London robusta Sep settlements, 24 August 2026, converted at 1 c/lb = $22.05/t</span></figcaption>
|
|
519
|
+
</figure>
|
|
520
|
+
<p>The second division inside the species is <strong>processing</strong>, and it is a form change like any other. <strong>Washed</strong> coffee has the fruit stripped off before drying: cleaner, brighter, more consistent, and the norm in Colombia, Central America and most of East Africa. <strong>Natural</strong> coffee dries with the fruit still attached: sweeter, heavier, more variable, and the norm in most of Brazil. The same species processed two ways is two different products with two different buyers, and the market pays for the transformation.</p>
|
|
521
|
+
<h2 id="certified-stock-is-not-inventory">Certified stock is not inventory<a class="anchor" href="#certified-stock-is-not-inventory" aria-label="Link to this section">#</a></h2>
|
|
522
|
+
<p>Certified stock is coffee that has been shipped to an exchange-licensed warehouse, sampled, examined by a licensed grader and stamped as deliverable against the futures contract. Monday's figure was 226,242 bags.</p>
|
|
523
|
+
<p>Set that against the world.</p>
|
|
524
|
+
<div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th></th><th class="num">Bags</th></tr></thead><tbody><tr><td>World output forecast, 2026/27</td><td class="num">189,700,000</td></tr><tr><td>World consumption per day</td><td class="num">~520,000</td></tr><tr><td>Certified arabica stock</td><td class="num">226,242</td></tr></tbody></table></div>
|
|
525
|
+
<p>The entire visible exchange stock is about ten hours of world coffee drinking. A market that size should not be able to move a global commodity six percent in a session — and it does, every time, for a reason that has nothing to do with supply.</p>
|
|
526
|
+
<p>Certified stock is not supply. It is the <strong>deliverable float</strong>. The front month is a promise to deliver from that pile and only from that pile. At roughly 283 bags to a lot, 226,242 bags is about 800 lots of deliverable coffee. A single mid-sized roaster could stand for that. Monday was the first day of the delivery notice period for the spot contract, small volumes were tendered against a thin float, and the front month went up five percent while the deferred went up less.</p>
|
|
527
|
+
<h2 id="the-number-of-the-day">The number of the day<a class="anchor" href="#the-number-of-the-day" aria-label="Link to this section">#</a></h2>
|
|
528
|
+
<p>September settled 36.10 cents over December.</p>
|
|
529
|
+
<p>Put a lot around it. 36.10 cents on 37,500 lb is <strong>$13,537.50 per lot, for three months</strong>.</p>
|
|
530
|
+
<p>Now price what carrying that coffee actually costs. Financing 377.75 c/lb for three months at 8% is 7.56 cents. Warehousing and insurance are a fraction of that. So in a comfortable market December should trade something like 8 cents <em>over</em> September. It is trading 36 cents <em>under</em>.</p>
|
|
531
|
+
<figure class="chartfig">
|
|
532
|
+
<figcaption class="charttitle">Full carry versus the tape</figcaption>
|
|
533
|
+
<svg class="chart" viewBox="0 0 640 330" width="100%" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">
|
|
534
|
+
<style>.chart{--c-a:var(--accent,#1d4032);--c-b:var(--gold,#a8813c);--c-c:#4a6f8c;font-family:inherit}html[data-theme="dark"] .chart{--c-c:#7ba3c4}.chart .grid{stroke:var(--line,#ddd6c9);stroke-width:1}.chart .axis{fill:var(--ink-soft,#4a4238);font-size:12px}.chart .unit{fill:var(--ink-soft,#4a4238);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.chart .ln{fill:none;stroke-width:2.25;stroke-linejoin:round;stroke-linecap:round}.chart .lg{fill:var(--ink,#16110c);font-size:12.5px}.chart .vlabel{fill:var(--ink,#16110c);font-size:11.5px;font-weight:600}@media (max-width:900px){.chart .axis{font-size:14px}.chart .unit{font-size:13px}.chart .lg{font-size:14.5px}.chart .vlabel{font-size:13.5px}.chart .ln{stroke-width:2.6}}@media (max-width:640px){.chart .axis{font-size:16px}.chart .unit{font-size:14px}.chart .lg{font-size:16px}.chart .vlabel{font-size:15px}.chart .ln{stroke-width:3.1}}</style>
|
|
535
|
+
<line class="grid" x1="56" y1="286.0" x2="622" y2="286.0" opacity=".45"/>
|
|
536
|
+
<text class="axis" x="46" y="290.0" text-anchor="end">-40</text>
|
|
537
|
+
<line class="grid" x1="56" y1="199.3" x2="622" y2="199.3" opacity=".45"/>
|
|
538
|
+
<text class="axis" x="46" y="203.3" text-anchor="end">-20</text>
|
|
539
|
+
<line class="grid" x1="56" y1="112.7" x2="622" y2="112.7"/>
|
|
540
|
+
<text class="axis" x="46" y="116.7" text-anchor="end">0</text>
|
|
541
|
+
<line class="grid" x1="56" y1="26.0" x2="622" y2="26.0" opacity=".45"/>
|
|
542
|
+
<text class="axis" x="46" y="30.0" text-anchor="end">20</text>
|
|
543
|
+
<text class="unit" x="622" y="16" text-anchor="end">c/lb, Dec minus Sep</text>
|
|
544
|
+
<text class="axis" x="150.3" y="306" text-anchor="middle">Full carry</text>
|
|
545
|
+
<text class="axis" x="339.0" y="306" text-anchor="middle">Scarcity of deliverable stock</text>
|
|
546
|
+
<text class="axis" x="527.7" y="306" text-anchor="middle">Actual Dec–Sep</text>
|
|
547
|
+
<rect x="113.3" y="79.7" width="74.0" height="32.9" rx="2" fill="var(--c-a)" opacity=".92"/>
|
|
548
|
+
<text class="vlabel" x="150.3" y="72.7" text-anchor="middle">7.6</text>
|
|
549
|
+
<line class="grid" x1="187.3" y1="79.7" x2="302.0" y2="79.7" stroke-dasharray="3 3" opacity=".5"/>
|
|
550
|
+
<rect x="302.0" y="79.7" width="74.0" height="189.4" rx="2" fill="#8a3b2f" opacity=".78"/>
|
|
551
|
+
<text class="vlabel" x="339.0" y="72.7" text-anchor="middle">-43.7</text>
|
|
552
|
+
<line class="grid" x1="376.0" y1="269.1" x2="490.7" y2="269.1" stroke-dasharray="3 3" opacity=".5"/>
|
|
553
|
+
<rect x="490.7" y="112.7" width="74.0" height="156.4" rx="2" fill="var(--c-b)" opacity=".92"/>
|
|
554
|
+
<text class="vlabel" x="527.7" y="105.7" text-anchor="middle">-36.1</text>
|
|
555
|
+
</svg>
|
|
556
|
+
<figcaption class="chartcap">A comfortable market puts December about eight cents over September. It is thirty-six cents under. That forty-four cent gap is what the deliverable float is worth. <span class="chartsrc">ICE settlements 24 August 2026; carry computed on 377.75 c/lb at 8 percent for three months</span></figcaption>
|
|
557
|
+
</figure>
|
|
558
|
+
<p>Episode 3 called an inverse the market screaming for immediate supply. This is what a scream looks like in a market whose float is 800 lots.</p>
|
|
559
|
+
<h2 id="what-the-desk-is-actually-arguing-about">What the desk is actually arguing about<a class="anchor" href="#what-the-desk-is-actually-arguing-about" aria-label="Link to this section">#</a></h2>
|
|
560
|
+
<p>Here is the decision in its natural habitat.</p>
|
|
561
|
+
<blockquote><strong>TRADER:</strong> I've got two thousand bags of Honduras sitting in Antwerp. Do I certify it?<br><strong>BROKER:</strong> What's the roaster paying you?<br><strong>TRADER:</strong> Plus fourteen.<br><strong>BROKER:</strong> Board's paying you thirty-six to give it up now. Grade it.<br><strong>TRADER:</strong> If it grades. If it fails I've moved it for nothing.</blockquote>
|
|
562
|
+
<p>Neither of them mentions the price of coffee. They are comparing two prices for the same bag: the roaster's differential, and the exchange's inverse. And the trader's last line is the whole risk — grading is pass-fail, and a failed lot has been shipped, handled and paid for on the way to a warehouse it now has to leave.</p>
|
|
563
|
+
<h2 id="the-valve">The valve<a class="anchor" href="#the-valve" aria-label="Link to this section">#</a></h2>
|
|
564
|
+
<p>This is the mechanism worth taking away, because it turns certified stocks from a statistic into a signal.</p>
|
|
565
|
+
<p>The contract lists which origins are deliverable, and it assigns each one a <strong>fixed</strong> premium or discount. Fixed as in written into the contract and unchanged whatever happens. The physical differential for that same origin moves every day, with the crop, the freight and the roaster's order book.</p>
|
|
566
|
+
<p>Those two numbers are a valve:</p>
|
|
567
|
+
<ul><li>When the physical differential falls <strong>below</strong> the exchange's fixed number, the coffee is worth more delivered to the exchange than sold to a roaster. It walks into the warehouse. Certified stocks build.</li><li>When the physical differential rises <strong>above</strong> it, the roaster outbids the exchange. It walks back out. Certified stocks drain.</li></ul>
|
|
568
|
+
<p>So a two-and-three-quarter-year low in certified stocks does not mean the world is short of coffee. It means roasters are currently paying more than the exchange for the origins that are deliverable — which is exactly what you would expect with Brazil's arabica harvest running nine points behind last year.</p>
|
|
569
|
+
<p>And it clarifies what certification actually guarantees. It guarantees a <strong>grade</strong>: a defect count, a screen size, a cup that is not tainted. It does not guarantee that the coffee is good, or fresh, or that anyone wants it. Certified coffee has sat in warehouses for years at a time because no roaster would pay enough to justify taking it out — a pile of perfectly deliverable coffee that the physical market had priced at nothing.</p>
|
|
570
|
+
<section class="glossec"><h2 id="glossary">Glossary<a class="anchor" href="#glossary" aria-label="Link to this section">#</a></h2><p class="secnote">Every unit, convention and desk expression the show had introduced by episode 12. Nothing said in the audio should ever be unrecoverable.</p><details class="gloss"><summary>Open the glossary<span class="sl">200 terms</span></summary><div class="glossbody"><label class="gsearch"><span class="vh">Search the glossary</span><input type="search" id="gfilter" placeholder="Search terms…" autocomplete="off"></label><div class="gchips" role="group" aria-label="Filter by episode"><button type="button" class="gchip on" data-gep="all">All<span class="gn">200</span></button><button type="button" class="gchip" data-gep="1">Ep 1<span class="gn">37</span></button><button type="button" class="gchip" data-gep="2">Ep 2<span class="gn">15</span></button><button type="button" class="gchip" data-gep="3">Ep 3<span class="gn">11</span></button><button type="button" class="gchip" data-gep="4">Ep 4<span class="gn">13</span></button><button type="button" class="gchip" data-gep="5">Ep 5<span class="gn">12</span></button><button type="button" class="gchip" data-gep="6">Ep 6<span class="gn">13</span></button><button type="button" class="gchip" data-gep="7">Ep 7<span class="gn">14</span></button><button type="button" class="gchip" data-gep="8">Ep 8<span class="gn">16</span></button><button type="button" class="gchip" data-gep="9">Ep 9<span class="gn">18</span></button><button type="button" class="gchip" data-gep="10">Ep 10<span class="gn">18</span></button><button type="button" class="gchip" data-gep="11">Ep 11<span class="gn">18</span></button><button type="button" class="gchip" data-gep="12">Ep 12<span class="gn">15</span></button></div><dl id="glist"><div class="gterm" data-ep="8"><dt>45Z</dt><dd>the US clean fuel production credit, one of the two policy levers that sets American soybean oil demand <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="6"><dt>abandonment</dt><dd>planted area never harvested for grain, lost to drought, flood or a switch to silage <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="2"><dt>ABCD</dt><dd>the four historic majors, Archer Daniels Midland, Bunge, Cargill and Louis Dreyfus <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="12"><dt>arabica</dt><dd>the high-altitude coffee species, aromatic and acidic, lower-yielding and more fragile, priced on ICE in New York <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="2"><dt>arb</dt><dd>the full economics of moving a cargo, buy price plus freight and costs against the sale <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="11"><dt>arb window</dt><dd>the period during which a route's economics work, opening and shutting on freight, differentials and FX rather than on flat price <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="2"><dt>asset-heavy</dt><dd>owning the physical chain, which converts a volatile trading margin into a steadier toll <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="2"><dt>asset-light</dt><dd>renting elevators, terminals and plants rather than owning them <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="1"><dt>at</dt><dd>the small word that introduces the offer side (462 bid, at 462 and a half) <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="9"><dt>B50</dt><dd>a blending mandate requiring 50 percent biodiesel in the diesel pool, the level Indonesia moved to in 2026 <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="1"><dt>bag (coffee)</dt><dd>60 kg, how the coffee trade counts volume <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="7"><dt>balance sheet</dt><dd>the one-page supply and demand statement for one crop and one marketing year, built so that supply minus use equals ending stocks and the page closes <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="10"><dt>Baltic Dry Index (BDI)</dt><dd>the Baltic Exchange headline dry bulk freight index, a weighted composite of the Capesize, Panamax, Supramax and Handysize route assessments <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="1"><dt>bid</dt><dd>the price a buyer will pay <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="4"><dt>bill of lading</dt><dd>receipt, contract of carriage and document of title in one, whoever holds it owns the cargo <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="9"><dt>biomass-based diesel</dt><dd>the RFS category covering biodiesel and renewable diesel made from fats and vegetable oils <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="9"><dt>blend wall</dt><dd>the physical or warranty limit on how much conventional biodiesel an engine or fuel system will tolerate <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="11"><dt>blending</dt><dd>combining lots of different quality so the weighted average meets a contract specification, creating value from material nobody else can use <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="8"><dt>board crush</dt><dd>the processing margin implied purely by futures prices, meal price times 0.022 plus oil price times 0.11 minus the bean price, in dollars per bushel <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="11"><dt>bottleneck asset</dt><dd>a facility with no near substitute at the moment it is needed, whose owner sets the price rather than quoting one <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="10"><dt>bunkers</dt><dd>the vessel's fuel, priced separately from the hire and carried by the owner on a voyage charter and by the charterer on a time charter <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="1"><dt>bushel</dt><dd>volume measure standardized into weight, 60 lb for soybeans and wheat, 56 lb for corn <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>bushels per tonne</dt><dd>about 36.7 for soybeans and wheat, 39.4 for corn <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="3"><dt>calendar spread</dt><dd>the price difference between two months of the same contract, traded as one instrument at one price <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="4"><dt>cancelling date</dt><dd>the last day of the laycan, after which the counterparty may cancel <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="11"><dt>capacity utilisation</dt><dd>the share of storage capacity actually occupied, the best leading indicator of what harvest basis is about to do <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="10"><dt>Capesize</dt><dd>a bulk carrier of about 180,000 dwt and up, too large for the Panama Canal, used mainly for iron ore and coal <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="3"><dt>carry market (contango)</dt><dd>a curve with later months above nearer ones, the market pays for storage <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="2"><dt>carry-in</dt><dd>stocks left over from the previous season, the starting point of a balance sheet <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="7"><dt>carryout</dt><dd>ending stocks, the desk's one-word name for what is left at the end of the marketing year <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="1"><dt>cents per bushel</dt><dd>Chicago grain quoting unit, 4.39 dollars per bushel is spoken four thirty-nine <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="12"><dt>certified stock</dt><dd>coffee sampled, graded and stamped as deliverable against the futures contract and held in an exchange-licensed warehouse, the deliverable float rather than world inventory <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="4"><dt>CFR</dt><dd>cost and freight, the seller pays the voyage to a named destination but risk still passes at loading <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="4"><dt>charter party</dt><dd>the contract hiring the vessel, between charterer and shipowner <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="4"><dt>CIF</dt><dd>cost insurance and freight, CFR plus the seller buys the marine insurance the buyer would claim on <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="12"><dt>Coffee C (KC)</dt><dd>the ICE arabica futures contract, 37,500 lb quoted in US cents per pound with a 0.05 cent tick worth 18.75 dollars <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="8"><dt>conversion cost</dt><dd>the variable cost of turning beans into products, gas, power, hexane, labour and maintenance, typically 35 to 50 cents a bushel at a modern plant <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="1"><dt>conversion factors</dt><dd>36.7 bushels per tonne for wheat and beans and 39.4 for corn, so cents per bushel times 0.367 or 0.394 gives dollars per tonne <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="11"><dt>country elevator</dt><dd>the first commercial storage point off the farm, buying from growers and shipping onward by truck, rail or barge <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="9"><dt>CPO</dt><dd>crude palm oil, the unrefined oil pressed from the fruit of the oil palm and the benchmark grade traded internationally <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="7"><dt>Crop Production</dt><dd>the USDA report published alongside WASDE carrying the survey-based yield and area figures <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="5"><dt>cross-hedge</dt><dd>hedging with a contract that is not your grade or your origin, which removes flat price and adds correlation risk <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="8"><dt>crush capacity</dt><dd>installed daily processing volume, a physical constraint that cannot be expanded inside a marketing year <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="1"><dt>cwt</dt><dd>hundredweight, 100 lb, the quoting unit for US rice and cattle <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>cwt (hundredweight)</dt><dd>100 lb, the quoting unit for US rice <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="10"><dt>deadweight (dwt)</dt><dd>the total weight a vessel can carry including cargo, fuel, water, stores and crew, so always more than the cargo she can load <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="3"><dt>Dec over</dt><dd>spread quoting convention that names the expensive leg, December fifteen over means December is 15 cents above the other month <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="12"><dt>defect count</dt><dd>the number of black, broken, insect-damaged or foreign items in a fixed sample weight, the primary coffee grading measure <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="1"><dt>deferred</dt><dd>months or shipment windows further out <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="12"><dt>deliverable float</dt><dd>the quantity actually available to settle a futures delivery, which sets how far a front month can travel regardless of world supply <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="12"><dt>deliverable origin differential</dt><dd>the fixed premium or discount the contract assigns to each approved origin, unchanged whatever the physical market does <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="12"><dt>delivery notice period</dt><dd>the window in which shorts may tender certified stock against the expiring contract <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="10"><dt>demand-to-supply ratio</dt><dd>the Baltic measure of tonne-mile demand growth against fleet growth, above 1.0 when cargo is outrunning ships <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="2"><dt>demurrage</dt><dd>the penalty owed when a vessel is held beyond the agreed laytime <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="4"><dt>despatch</dt><dd>the reward paid when loading beats laytime, customarily half the demurrage rate <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="1"><dt>differential</dt><dd>the premium or discount to a named futures month, as in November plus 80, the negotiated part of a physical quote <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>differential (basis)</dt><dd>the premium or discount to a named futures month, quoted as plus 80 or minus 20 <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="11"><dt>discount schedule</dt><dd>the published table of price deductions for grain outside a contract's grade limits, and the raw material of every blending trade <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="9"><dt>discretionary blending</dt><dd>blending vegetable oil into the fuel pool purely because it is cheaper than gasoil, with no mandate and no subsidy behind it <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="6"><dt>distillers grains</dt><dd>DDGS, the protein co-product of ethanol production, sold back into the feed market <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="1"><dt>done</dt><dd>the word that seals a trade <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="10"><dt>draft</dt><dd>the depth of hull below the waterline, which rises as the ship loads and is the hard physical limit on which berths and rivers a vessel can enter <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="4"><dt>draft survey</dt><dd>weighing a cargo by reading the ship's displacement before and after loading <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="8"><dt>draw area</dt><dd>the geographic catchment a crush plant buys its beans from, whose size sets how hard it must bid the local basis <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="5"><dt>durum</dt><dd>the pasta wheat, a separate species with its own thin market <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="11"><dt>elevation margin</dt><dd>the toll an elevator earns for taking grain in, conditioning it and loading it out, separate from any gain on the basis <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="6"><dt>ethanol grind</dt><dd>the rate at which ethanol plants consume corn, which slows when the plant margin turns negative and removes corn demand in steps <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="9"><dt>export levy</dt><dd>a tax charged on a commodity leaving the country, used in Indonesia both to discourage exports of crude palm oil and to fund the domestic blending subsidy <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="5"><dt>falling number</dt><dd>the sprout-damage test, a low number demotes milling wheat to feed wheat <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="9"><dt>FAME</dt><dd>fatty acid methyl ester, the chemical name for conventional biodiesel made by reacting a vegetable oil with methanol <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="9"><dt>FCPO</dt><dd>the Bursa Malaysia Derivatives crude palm oil futures contract, 25 tonnes per lot, quoted in Malaysian ringgit per tonne with a one ringgit tick <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="7"><dt>feed and residual</dt><dd>the inferred demand line that carries livestock feeding together with every measurement error in the rest of the sheet <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="6"><dt>feed floor</dt><dd>the price at which feed substitution demand appears under a grain, corn setting the floor under feed wheat <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="6"><dt>feed wheat</dt><dd>wheat sold on energy and protein rather than milling specification, priced relationally against corn rather than at a flat price <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="1"><dt>firm</dt><dd>a tradable quote that binds if accepted, often with a time limit <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>five percent more or less</dt><dd>the contractual tolerance on cargo size, exercised at the seller's option <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="10"><dt>fixing</dt><dd>agreeing the charter of a specific vessel, the moment a freight exposure stops being open <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="1"><dt>flat price</dt><dd>the full outright price level <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="2"><dt>flat price exposure</dt><dd>outright price risk, removed deliberately by hedging so only the basis remains <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="2"><dt>FOB</dt><dd>free on board, the cargo is priced at the load port with the buyer taking it from the ship's rail <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="10"><dt>forward freight agreement (FFA)</dt><dd>a cash-settled swap on a Baltic index route or basket over a calendar month, the only liquid way to hedge freight <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="3"><dt>front month</dt><dd>the nearest actively traded contract month, where liquidity is deepest <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="3"><dt>full carry</dt><dd>storage plus interest per month of holding grain, the practical ceiling on a carry spread <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="9"><dt>gasoil</dt><dd>the traded middle distillate that diesel prices off, and the reference against which discretionary blending economics are judged <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="10"><dt>geared vessel</dt><dd>a ship carrying its own cranes, which can therefore discharge at a berth with no shore equipment <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="12"><dt>grading</dt><dd>the exchange pass-fail examination of a sample covering defect count, screen size and a clean cup <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="7"><dt>Grain Stocks</dt><dd>the quarterly USDA survey of physical inventories, from which the feed and residual line is backed out <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="8"><dt>gross processing margin</dt><dd>the industry name for product value minus raw material cost, the crush stated as a margin <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="10"><dt>Handysize</dt><dd>the smallest mainstream dry bulk class at roughly 10,000 to 40,000 dwt, geared and able to work berths larger ships cannot reach <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="5"><dt>hard red spring (HRS)</dt><dd>the 13.5 percent plus Minneapolis wheat bought to lift the protein of a grist <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="5"><dt>hard red winter (HRW)</dt><dd>the 11 to 12.5 percent bread wheat priced at Kansas City, the US wheat that competes with the Black Sea <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="11"><dt>harvest basis</dt><dd>the seasonal low in the cash-minus-futures spread, set when a year of crop arrives in six weeks into a pipe sized to move it over twelve months <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="6"><dt>harvested acres</dt><dd>area actually cut for grain, roughly 8 million acres below planted for US corn, and the denominator that yield is quoted against <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="8"><dt>hexane</dt><dd>the solvent used to extract the last of the oil from the flaked bean, and a real line in the conversion cost <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="1"><dt>hit</dt><dd>your bid was taken by a seller <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>hit the bid</dt><dd>to sell into someone else's bid <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="7"><dt>implied disappearance</dt><dd>use derived by subtraction rather than by measurement, the technique that produces the residual lines of a balance sheet <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="6"><dt>inclusion rate</dt><dd>the share of a single ingredient in a feed ration, capped by nutrition and by anti-nutritional factors <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="4"><dt>Incoterms</dt><dd>the standard three-letter trade terms that allocate cost and risk between buyer and seller <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="1"><dt>indication</dt><dd>a guide price that is not firm <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="3"><dt>initial margin</dt><dd>the deposit the clearing house takes per lot when a position is opened <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="5"><dt>inter-exchange spread</dt><dd>the price gap between two exchanges pricing related but different goods, such as Kansas City over Chicago <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="3"><dt>inverse (backwardation)</dt><dd>a curve with nearer months above later ones, the market pays a premium for immediate delivery <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="8"><dt>joint product</dt><dd>two outputs produced in fixed proportion from one input, so that neither can be made without the other <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="9"><dt>kilolitre</dt><dd>one thousand litres, the volume unit Asian governments state biofuel mandates in, converted to tonnes using the fuel's density of about 0.88 t per cubic metre for biodiesel <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="1"><dt>laycan</dt><dd>the window during which a vessel may present for loading <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="4"><dt>laytime</dt><dd>the contractually allowed time to load or discharge before demurrage begins <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="12"><dt>licensed warehouse</dt><dd>a storage facility the exchange approves to hold deliverable stock, at named ports only <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="1"><dt>lift the offer</dt><dd>to buy from someone else's offer <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>lifted</dt><dd>your offer was taken by a buyer <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="3"><dt>limit move</dt><dd>an exchange-set maximum daily price change, trading pauses beyond it <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="2"><dt>line-up</dt><dd>the queue of vessels waiting to load at a port, a key driver of origin basis <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="11"><dt>load-out capacity</dt><dd>how fast an elevator can ship grain out, the lever that decides whether a full house is a crisis or a rotation <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="1"><dt>lot</dt><dd>one futures contract, 5,000 bushels for Chicago grains, the unit desks count positions in <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="7"><dt>marketing year</dt><dd>the accounting year a crop is measured in, September to August for US corn and soybeans and June to May for US wheat <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="5"><dt>Matif milling wheat (EBM)</dt><dd>the Paris contract, 50 tonnes a lot quoted in euros per tonne and delivered into Rouen and Dunkirk <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="8"><dt>meal contract</dt><dd>CBOT soybean meal, 100 short tons, quoted in dollars per short ton <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="1"><dt>metric tonne</dt><dd>2,204.6 lb, the grain trading weight unit outside the US <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>month codes</dt><dd>F G H J K M N Q U V X Z for January through December, the Z is December <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="7"><dt>NASS</dt><dd>USDA's National Agricultural Statistics Service, the body running the surveys behind the published numbers <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="12"><dt>natural process</dt><dd>coffee dried with the fruit still attached, giving a sweeter, heavier and more variable cup <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="7"><dt>new crop</dt><dd>the marketing year about to begin, priced by the contract months that follow the coming harvest <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="4"><dt>nomination</dt><dd>formally naming the performing vessel under a cargo contract <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="8"><dt>NOPA</dt><dd>the National Oilseed Processors Association, whose monthly published crush figure makes US soybean crush a measured line rather than an inferred one <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="4"><dt>notice of readiness (NOR)</dt><dd>the master's formal declaration that the vessel has arrived and is ready, it starts the laytime clock <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="1"><dt>offer</dt><dd>the price a seller will accept <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="8"><dt>oil contract</dt><dd>CBOT soybean oil, 60,000 pounds, quoted in cents per pound <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="8"><dt>oil share</dt><dd>soybean oil's percentage of the combined value of the meal and oil produced from one bushel <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="9"><dt>oil share trade</dt><dd>long soybean oil against short soybean meal, the clean expression of a view on a fuel policy because it isolates relative product value from the bean basis <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="7"><dt>old crop</dt><dd>the marketing year now ending, priced by the contract months before the new harvest arrives <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="9"><dt>olein and stearin</dt><dd>the liquid and solid fractions palm separates into when refined, sold into cooking oil and into fats respectively <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="10"><dt>P7 and P8</dt><dd>Baltic Panamax route codes for US Gulf to Qingdao and Santos to Qingdao, the two assessments that set the soybean origin arb <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="10"><dt>Panamax and Kamsarmax</dt><dd>the 75,000 to 82,000 dwt workhorse of the grain and coal trades, usually gearless and drawing about fourteen metres fully loaded <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="2"><dt>paper</dt><dd>exchange futures and options, used by a physical desk to hedge rather than to speculate <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="10"><dt>part cargo</dt><dd>loading a vessel below capacity because the berth, river or canal cannot take her full draft <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="11"><dt>pass-fail specification</dt><dd>a contract term that cannot be met on average, such as contamination, infestation or an unapproved genetic event, where blending increases the affected tonnage instead of diluting it <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="2"><dt>physical (cash)</dt><dd>real cargoes under contract with specs and load windows, as opposed to paper <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="8"><dt>plant crush</dt><dd>what a physical plant actually earns, the board crush adjusted for bean, meal and oil basis and net of conversion cost <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="6"><dt>planted acres</dt><dd>area sown, the number that moves on farmer decisions and USDA area surveys <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="1"><dt>point</dt><dd>one hundredth of a cent per pound, how softs desks count moves <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>point (softs)</dt><dd>one hundredth of a cent per pound, so up 300 points means up 3 cents <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="6"><dt>pollination</dt><dd>the roughly one-week corn window in mid-July in the northern hemisphere after which the ear count is fixed and no forecast can change it <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="5"><dt>price assessment</dt><dd>a published daily price built by surveying brokers and exporters, used where no futures contract exists <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="1"><dt>prompt</dt><dd>the nearby month or shipment window, ready to move now <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="5"><dt>protein spec</dt><dd>the contractual protein percentage that turns the word wheat into a price <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="8"><dt>putting on the crush</dt><dd>buying bean futures and selling meal and oil futures against them in a 10-11-9 lot ratio, which fixes the processing margin <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="5"><dt>quality basis</dt><dd>the spread between the grade you own and the grade the futures contract delivers <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="6"><dt>ration</dt><dd>the formulated feed mix a mill grinds, in which every ingredient carries an inclusion limit and a substitution price against the others <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="11"><dt>receiving capacity</dt><dd>how fast an elevator can take grain in, in bushels or tonnes per hour, a different constraint from how much it can hold <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="9"><dt>renewable diesel</dt><dd>hydrotreated vegetable oil or HVO, a drop-in diesel chemically identical to fossil diesel and not limited by a blend wall, unlike FAME <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="11"><dt>replacement value</dt><dd>what it would cost to buy back today what you have just sold, the test of whether a price was genuinely good <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="2"><dt>residual</dt><dd>a figure obtained by subtraction, such as ending stocks, which absorbs any error in the larger numbers almost in full <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="8"><dt>reverse crush</dt><dd>the opposite position, short beans and long products, used when a processor expects to idle capacity rather than run it <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="9"><dt>RFS</dt><dd>the US Renewable Fuel Standard, the rule that sets annual minimum volumes of renewable fuel that must be blended into American transport fuel <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="9"><dt>RIN</dt><dd>renewable identification number, the tradable compliance certificate generated with each gallon of renewable fuel, at 1.5 RINs per gallon of biodiesel, which is why a mandate volume must be checked for basis before it is multiplied by a feedstock factor <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="10"><dt>river-sea vessel</dt><dd>a small shallow-draft ship built to work both inland waterways and short sea legs, the only class able to load in the Sea of Azov <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="12"><dt>robusta</dt><dd>the low-altitude coffee species, hardier and higher-yielding, about double the caffeine and a flatter cup, priced in London <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="12"><dt>robusta contract (RC)</dt><dd>the London robusta futures contract, 10 tonnes quoted in dollars per tonne with a one dollar tick worth 10 dollars <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="3"><dt>roll</dt><dd>closing a hedge in one month and reopening it further out, executed as a spread trade <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="8"><dt>run rate</dt><dd>the share of installed capacity a plant is actually operating at, the lever a crusher pulls when margins move <span class="gep">ep 8</span></dd></div><div class="gterm" data-ep="9"><dt>RVO</dt><dd>renewable volume obligation, the share of the national mandate assigned to an individual refiner or importer <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="6"><dt>safrinha</dt><dd>Brazil's second corn crop, planted February to March into soybean stubble and pollinating April to May, about three quarters of Brazilian corn production <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="12"><dt>screen size</dt><dd>bean size measured by the mesh it will not fall through, part of the deliverable specification <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="11"><dt>segregation</dt><dd>keeping identities and grades physically apart in separate bins, the precondition for being able to blend deliberately later <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="1"><dt>short ton</dt><dd>2,000 lb, used by US soybean meal, about 10 percent lighter than a metric tonne <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="11"><dt>shrink</dt><dd>weight lost when grain is dried to a safe keeping moisture, deducted as a percentage and a real cost to whoever owns the grain <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="5"><dt>soft red winter (SRW)</dt><dd>the low-protein soft wheat the Chicago contract delivers, used for cakes biscuits and crackers <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="12"><dt>soluble solids</dt><dd>the share of the coffee bean that dissolves in water, higher in robusta, which is why robusta dominates instant coffee <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="2"><dt>space time form</dt><dd>the three transformations a merchant is paid for, geography, storage and processing <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="9"><dt>standing bid</dt><dd>demand that is present regardless of price because it is created by legal obligation rather than by choice <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="4"><dt>statement of facts</dt><dd>the port log of events both sides use to fight laytime claims <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="2"><dt>stocks-to-use</dt><dd>ending stocks divided by total use, the market's tension gauge <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="11"><dt>storage tariff</dt><dd>the published charge for commercial storage, quoted in cents per bushel per month or per day, or in dollars per tonne per month <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="9"><dt>substitution spread</dt><dd>the price gap between two competing vegetable oils, which sets the point at which a refiner reformulates from one to the other <span class="gep">ep 9</span></dd></div><div class="gterm" data-ep="10"><dt>Supramax</dt><dd>a dry bulk vessel of roughly 50,000 to 60,000 dwt, normally carrying its own cranes, working minor bulks and shorter legs <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="11"><dt>temporary storage</dt><dd>ground piles, bunkers and bags used when permanent capacity is full, cheap per bushel to build and expensive per bushel in spoilage and rehandling <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="11"><dt>terminal elevator</dt><dd>large storage at a port, river or rail hub whose business is blending, load-out speed and access rather than farm origination <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="5"><dt>test weight</dt><dd>the density measure telling a miller how much flour comes out of a tonne <span class="gep">ep 5</span></dd></div><div class="gterm" data-ep="11"><dt>throughput</dt><dd>the volume moved through a facility in a period, the number that actually pays for a fixed asset because capacity earns nothing standing still <span class="gep">ep 11</span></dd></div><div class="gterm" data-ep="1"><dt>tick</dt><dd>smallest price increment, a quarter cent per bushel in Chicago grains, worth 12.50 dollars per lot <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="3"><dt>ticker</dt><dd>the short screen code a contract is spoken by, ZW wheat, ZC corn, ZS soybeans, ZM meal, ZL oil, KC coffee, SB sugar, CT cotton <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="10"><dt>time charter</dt><dd>hiring the vessel itself for a period at a price in dollars per day, with the charterer taking speed, weather, port delay and usually fuel <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="10"><dt>time charter equivalent (TCE)</dt><dd>a voyage's economics restated as dollars per day, which is how a shipowner compares one employment against another <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="7"><dt>total supply</dt><dd>carry-in plus production plus imports, the top block of a balance sheet <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="7"><dt>total use</dt><dd>domestic use plus exports, the bottom block of a balance sheet <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="7"><dt>trade average</dt><dd>the published mean of analysts' pre-report estimates, and therefore the expectation already contained in the price <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="6"><dt>trend yield</dt><dd>the yield a crop would produce on normal weather, the baseline against which a weather premium is measured <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="3"><dt>variation margin</dt><dd>the daily cash settlement of a position mark to market, paid the same day <span class="gep">ep 3</span></dd></div><div class="gterm" data-ep="10"><dt>voyage charter</dt><dd>hiring a vessel to move a stated cargo between named ports for a price in dollars per tonne, with the owner carrying the voyage and delay risk <span class="gep">ep 10</span></dd></div><div class="gterm" data-ep="2"><dt>war-risk premium</dt><dd>an insurance surcharge on a vessel's hull value for sailing into a conflict zone, quoted as a percentage <span class="gep">ep 2</span></dd></div><div class="gterm" data-ep="1"><dt>WASDE</dt><dd>the USDA monthly World Agricultural Supply and Demand Estimates report <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>washed out</dt><dd>offsetting trades cancel each other and only the price difference is settled <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="12"><dt>washed process</dt><dd>coffee with the fruit stripped off before drying, giving a cleaner and more consistent cup <span class="gep now">ep 12</span></dd></div><div class="gterm" data-ep="1"><dt>washout</dt><dd>cancelling two offsetting physical contracts by settling the price difference instead of shipping <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="6"><dt>weather premium</dt><dd>the gap between where a crop trades and where it would trade at trend yield, the price of a distribution of outcomes rather than of a forecast <span class="gep">ep 6</span></dd></div><div class="gterm" data-ep="4"><dt>weather working day</dt><dd>a laytime day that counts only when weather permits cargo work <span class="gep">ep 4</span></dd></div><div class="gterm" data-ep="7"><dt>whisper number</dt><dd>the expectation the market is actually trading into a report, which can sit away from the published trade average <span class="gep">ep 7</span></dd></div><div class="gterm" data-ep="1"><dt>work</dt><dd>leave an order resting with a broker <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>work an order</dt><dd>leave an order resting at your price and wait <span class="gep">ep 1</span></dd></div><div class="gterm" data-ep="1"><dt>workable</dt><dd>the quoted price is negotiable <span class="gep">ep 1</span></dd></div></dl><p class="gnone" hidden>No term matches that.</p></div></details></section>
|
|
571
|
+
</main>
|
|
572
|
+
<nav class="epnav" aria-label="Episodes">
|
|
573
|
+
<a class="epprev" href="ep11.html"><span class="dir">← Previous</span><span class="ept">Storage, Elevation and Trade Flows</span><span class="epn">Episode 11</span></a>
|
|
574
|
+
</nav>
|
|
575
|
+
<details class="archive"><summary>All episodes<span class="sl">12 so far</span></summary><ol class="arclist"><li><a href="ep01.html"><b>01</b> The Units and the Language of the Desk</a></li><li><a href="ep02.html"><b>02</b> What a Merchant Does, and Why Basis Is the Whole Game</a></li><li><a href="ep03.html"><b>03</b> Futures Plumbing and the Shape of the Curve</a></li><li><a href="ep04.html"><b>04</b> The Physical Chain, End to End</a></li><li><a href="ep05.html"><b>05</b> Wheat: The Map and the Screens</a></li><li><a href="ep06.html"><b>06</b> Corn, Crop Calendars and Weather Risk</a></li><li><a href="ep07.html"><b>07</b> WASDE and Building a Balance Sheet</a></li><li><a href="ep08.html"><b>08</b> The Soybean Complex and the Crush</a></li><li><a href="ep09.html"><b>09</b> Vegetable oils and biofuels</a></li><li><a href="ep10.html"><b>10</b> Freight: Dry Bulk and Chartering</a></li><li><a href="ep11.html"><b>11</b> Storage, Elevation and Trade Flows</a></li><li class="here" aria-current="page"><a href="ep12.html"><b>12</b> Coffee: The Market</a></li></ol></details>
|
|
576
|
+
<footer>
|
|
577
|
+
<span class="sig"><b>Soft Commodity Trading</b> — a daily briefing on physical commodity trading.</span>
|
|
578
|
+
<span><a href="https://storage.googleapis.com/podcast-audio-2647223968/index.html">All episodes</a> · <a href="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/feed.xml">RSS</a></span>
|
|
579
|
+
</footer>
|
|
580
|
+
</div>
|
|
581
|
+
<script>
|
|
582
|
+
(function(){
|
|
583
|
+
var doc = document.documentElement;
|
|
584
|
+
|
|
585
|
+
/* theme */
|
|
586
|
+
var btn = document.querySelector('.themebtn');
|
|
587
|
+
if(btn) btn.addEventListener('click', function(){
|
|
588
|
+
var next = doc.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
|
|
589
|
+
doc.setAttribute('data-theme', next);
|
|
590
|
+
try{ localStorage.setItem('cdd-theme', next); }catch(e){}
|
|
591
|
+
});
|
|
592
|
+
|
|
593
|
+
/* reading progress */
|
|
594
|
+
var bar = document.getElementById('bar'), ticking = false;
|
|
595
|
+
function progress(){
|
|
596
|
+
var h = doc.scrollHeight - innerHeight;
|
|
597
|
+
bar.style.width = (h > 0 ? Math.min(100, Math.max(0, scrollY / h * 100)) : 0) + '%';
|
|
598
|
+
ticking = false;
|
|
599
|
+
}
|
|
600
|
+
if(bar){
|
|
601
|
+
addEventListener('scroll', function(){
|
|
602
|
+
if(!ticking){ ticking = true; requestAnimationFrame(progress); }
|
|
603
|
+
}, {passive:true});
|
|
604
|
+
addEventListener('resize', progress, {passive:true});
|
|
605
|
+
progress();
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/* contents: mark the section being read */
|
|
609
|
+
var links = [].slice.call(document.querySelectorAll('.toc a'));
|
|
610
|
+
if(links.length && 'IntersectionObserver' in window){
|
|
611
|
+
var map = {};
|
|
612
|
+
links.forEach(function(a){
|
|
613
|
+
var el = document.getElementById(decodeURIComponent(a.hash.slice(1)));
|
|
614
|
+
if(el) map[el.id] = a.parentNode;
|
|
615
|
+
});
|
|
616
|
+
var seen = [];
|
|
617
|
+
var io = new IntersectionObserver(function(entries){
|
|
618
|
+
entries.forEach(function(en){
|
|
619
|
+
var id = en.target.id, at = seen.indexOf(id);
|
|
620
|
+
if(en.isIntersecting){ if(at < 0) seen.push(id); }
|
|
621
|
+
else if(at >= 0){ seen.splice(at, 1); }
|
|
622
|
+
});
|
|
623
|
+
links.forEach(function(a){ a.parentNode.classList.remove('on'); });
|
|
624
|
+
if(seen.length && map[seen[0]]) map[seen[0]].classList.add('on');
|
|
625
|
+
}, {rootMargin:'-64px 0px -70% 0px'});
|
|
626
|
+
Object.keys(map).forEach(function(id){
|
|
627
|
+
var el = document.getElementById(id); if(el) io.observe(el);
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
/* playback speed */
|
|
632
|
+
var audio = document.querySelector('audio');
|
|
633
|
+
[].forEach.call(document.querySelectorAll('.rate'), function(b){
|
|
634
|
+
b.addEventListener('click', function(){
|
|
635
|
+
if(!audio) return;
|
|
636
|
+
audio.playbackRate = parseFloat(b.dataset.rate);
|
|
637
|
+
[].forEach.call(document.querySelectorAll('.rate'), function(o){
|
|
638
|
+
o.setAttribute('aria-pressed', String(o === b));
|
|
639
|
+
});
|
|
640
|
+
});
|
|
641
|
+
});
|
|
642
|
+
|
|
643
|
+
/* solutions: reveal all / hide all */
|
|
644
|
+
[].forEach.call(document.querySelectorAll('[data-solnall]'), function(b){
|
|
645
|
+
b.addEventListener('click', function(){
|
|
646
|
+
var open = b.dataset.solnall === 'open';
|
|
647
|
+
[].forEach.call(document.querySelectorAll('details.soln'), function(d){
|
|
648
|
+
d.open = open;
|
|
649
|
+
});
|
|
650
|
+
});
|
|
651
|
+
});
|
|
652
|
+
|
|
653
|
+
/* an answer linked to directly should already be open */
|
|
654
|
+
function openTarget(){
|
|
655
|
+
var id = location.hash.slice(1);
|
|
656
|
+
if(!id) return;
|
|
657
|
+
var el = document.getElementById(decodeURIComponent(id));
|
|
658
|
+
while(el){
|
|
659
|
+
if(el.tagName === 'DETAILS') el.open = true;
|
|
660
|
+
el = el.parentElement;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
addEventListener('hashchange', openTarget); openTarget();
|
|
664
|
+
|
|
665
|
+
/* glossary: an episode chip and a search box, which compose */
|
|
666
|
+
var gf = document.getElementById('gfilter'), list = document.getElementById('glist');
|
|
667
|
+
if(list){
|
|
668
|
+
var rows = [].slice.call(list.querySelectorAll('.gterm'));
|
|
669
|
+
var chips = [].slice.call(document.querySelectorAll('.gchip'));
|
|
670
|
+
var none = document.querySelector('.gnone');
|
|
671
|
+
var pick = 'all';
|
|
672
|
+
function apply(){
|
|
673
|
+
var q = gf ? gf.value.trim().toLowerCase() : '', hits = 0;
|
|
674
|
+
rows.forEach(function(r){
|
|
675
|
+
var on = (pick === 'all' || r.dataset.ep === pick) &&
|
|
676
|
+
(!q || r.textContent.toLowerCase().indexOf(q) > -1);
|
|
677
|
+
r.hidden = !on; if(on) hits++;
|
|
678
|
+
});
|
|
679
|
+
if(none) none.hidden = hits > 0;
|
|
680
|
+
}
|
|
681
|
+
if(gf) gf.addEventListener('input', apply);
|
|
682
|
+
chips.forEach(function(c){
|
|
683
|
+
c.addEventListener('click', function(){
|
|
684
|
+
pick = c.dataset.gep;
|
|
685
|
+
chips.forEach(function(o){ o.classList.toggle('on', o === c); });
|
|
686
|
+
apply();
|
|
687
|
+
});
|
|
688
|
+
});
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
/* printing: paper has no disclosure triangles */
|
|
692
|
+
var reopen = [];
|
|
693
|
+
addEventListener('beforeprint', function(){
|
|
694
|
+
reopen = [].filter.call(document.querySelectorAll('details'), function(d){
|
|
695
|
+
return !d.open;
|
|
696
|
+
});
|
|
697
|
+
reopen.forEach(function(d){ d.open = true; });
|
|
698
|
+
});
|
|
699
|
+
addEventListener('afterprint', function(){
|
|
700
|
+
reopen.forEach(function(d){ d.open = false; });
|
|
701
|
+
reopen = [];
|
|
702
|
+
});
|
|
703
|
+
})();
|
|
704
|
+
</script>
|
|
705
|
+
</body>
|
|
706
|
+
</html>
|
package/ep12_chart1.png
ADDED
|
Binary file
|
package/ep12_chart2.png
ADDED
|
Binary file
|
package/ep12_chart3.png
ADDED
|
Binary file
|