@sdelsad/commodity-desk-daily 1.0.28 → 1.0.29

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 CHANGED
@@ -10,4 +10,4 @@ Running log. Read before writing a new episode: avoid repeating material, and on
10
10
  - **Ep 6** (Mon) — *Corn, Crop Calendars and Weather Risk*: Corn as a demand story (feed ~2/5, ethanol grind and its margin switch, exports 3.275bn bu, stepped demand curve); corn-wheat feed substitution priced both ways - Dec corn 477.5 = 188 USD/t vs Dec SRW 679 = 249.5 USD/t, 4 percent feeding credit gives a 195 USD/t switch level, 54.50 USD/t gap = 148 c/bu, wheat would need 531; 654k a month on a 20kt mill at 60 percent inclusion; reverse ceiling corn at 240 USD/t = 609 c/bu; BROKER/FEEDER dialogue quoting flat-to-corn rather than a wheat price. Crop calendar table US/Ukraine/Brazil full-season/safrinha/Argentina, US and Ukraine share a hemisphere so not diversified, safrinha is 3/4 of Brazilian corn and its risk is the soybean harvest date in front of it (wet October to May pollination in the dry season). Anatomy of a weather premium: price of a distribution vs trend yield, builds 10-14 days before the window, decays on the calendar not the forecast; Aug WASDE case - yield cut 183 to 180.7 removed 204m bu on 88.6m harvested acres but 2.8m acres found lifted production to 16.013bn, second largest ever; planted vs harvested acres as two denominators, ~8m acres never cut for grain. Pulse: Fri 14 Aug closes higher across the board with wheat up 4 percent on the week (Sep corn 459 +11, Sep beans 1177.75 +11.75, Sep meal 310.20, Sep oil 69.44, Sep Chi wheat 674.75 +22, Dec SRW 679, Dec KC 747.25, Dec corn 477.5, Matif spot 228.25 EUR); GEO escalation - all three Novorossiysk grain terminals suspended by Ukrainian drone strikes, Russian August loadings ~2.5 Mt = under half the five-year pace and weakest August since 2016/17, Ukraine MTD 201.7 kt -76 percent y/y, deepwater corridor shut since 22 July, Russia rejected partial ceasefire for civilian shipping - flow substitution moved from threat to actual buying, which is why this week the price moved and last week it did not
11
11
  - **Ep 7** (Tue) — *WASDE and Building a Balance Sheet*: How a grain balance sheet is built line by line, and why ending stocks — the line nobody measures — moves about ten times faster than the crop itself. Plus feed and residual, the line that hides the sins, and why two competent analysts agree on supply and fight about demand.
12
12
  - **Ep 8** (Wed) — *The Soybean Complex and the Crush*: One seed, three markets: beans, meal and oil, and the processing margin that runs the industry. Board crush arithmetic step by step, why the plant never earns the screen number, and where a crusher's real optionality sits.
13
- - **Ep 9** (Thu) — *Vegetable oils and biofuels*: Vegetable oil complex as one substitutable system; palm as volume leader and the FCPO unit moment (25 t lots, ringgit per tonne, currency exposure created by the hedge); 1 c/lb = 22.05 USD/t as the bridge between Chicago and Kuala Lumpur; palm-soyoil substitution spread computed at 382 USD/t (palm 1139 vs soyoil 1521); reading the palm forward curve as a front-loaded carry (RM 312 Sep-Dec, spreads 139/101/72); mandate as a standing bid that does not respond to price; Indonesia B50 worked example 16.75 m kL to 14.74 Mt FAME to 15.2 Mt CPO; the export-levy funding loop that shrinks its own tax base; US RFS 2026 volumes and the RIN-gallon vs physical-gallon trap (1.5 RINs per gallon of biodiesel); the joint-product trap worked at 1 bn lb oil = 91 m bu crush = 4.0 bn lb = 2.0 m short tons of unwanted meal, and why the oil-share trade beats buying the crush; discretionary blending and the energy term in a vegoil balance sheet, live when gasoil is above the oils and gone when crude falls. REFINER/BROKER dialogue on switching on the spread rather than the level. Pulse: Wed 19 Aug rally across the board on Pro Farmer crop tour early results described as less than stellar (Dec corn 498 +10c, Nov beans 1237 3/4 +20.5c, Chi Sep wheat 680 1/4 +15.75c, KC Sep 762 +18.25c), USDA corn yield 180.7 questioned, eastern belt flooding, ethanol production at a one-month low of 1.089 m bbl/day with stocks +1 percent, meal +2 percent vs oil +0.25 percent so the board crush fell on an all-green day; GEOPOLITICS as fuel policy rather than war - Indonesia B50 in full effect since July with a 16.75 m kL 2026 allocation and the CPO export levy raised from 10 to 12.5 percent, self-inflicted export capacity withdrawal landing first on the palm-soyoil spread; BMD palm Sep 4648 +32 with the Sep-Dec curve in carry
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.
package/ep09.html ADDED
@@ -0,0 +1,722 @@
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 9 — Vegetable oils and biofuels · Soft Commodity Trading</title>
7
+ <meta name="description" content="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.">
8
+ <meta name="author" content="Sébastien Delsad">
9
+ <link rel="canonical" href="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep09.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 9 — Vegetable oils and biofuels">
13
+ <meta property="og:description" content="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
+ <meta property="og:url" content="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep09.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/ep09.mp3">
18
+ <meta property="og:audio:type" content="audio/mpeg">
19
+ <meta property="article:published_time" content="2026-08-20">
20
+ <meta name="twitter:card" content="summary_large_image">
21
+ <meta name="twitter:title" content="Ep 9 — Vegetable oils and biofuels">
22
+ <meta name="twitter:description" content="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.">
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/ep09.html",
33
+ "name": "Ep 9 — Vegetable oils and biofuels",
34
+ "episodeNumber": 9,
35
+ "duration": "PT11M59S",
36
+ "description": "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.",
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/ep09.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-20"
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 09</span>
397
+ </div>
398
+ <h1>Vegetable oils and biofuels</h1>
399
+ <p class="dek">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.</p>
400
+ <div class="meta">Thursday 20 August 2026 · <b>11 min 59</b></div>
401
+ <div class="listen">
402
+ <audio controls preload="none" src="https://storage.googleapis.com/podcast-audio-2647223968/commodity-desk-daily/ep09.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/ep09.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="#market-pulse">Market pulse</a></li><li class="t2"><a href="#key-takeaways">Key takeaways</a></li><li class="t2"><a href="#vocabulary">Vocabulary</a></li><li class="t2"><a href="#quiz">Quiz</a></li><li class="t2"><a href="#solutions">Solutions</a></li><li class="t2"><a href="#written-edition">Written edition</a></li><li class="t3"><a href="#one-market-with-four-tickers">One market with four tickers</a></li><li class="t3"><a href="#reading-the-palm-curve">Reading the palm curve</a></li><li class="t3"><a href="#a-mandate-is-a-standing-bid">A mandate is a standing bid</a></li><li class="t3"><a href="#the-american-version-and-the-trap-in-it">The American version, and the trap in it</a></li><li class="t3"><a href="#why-balance-sheets-now-have-an-energy-term">Why balance sheets now have an energy term</a></li><li class="t2"><a href="#glossary">Glossary</a></li></ol></nav>
414
+ </header>
415
+ <main>
416
+ <h2 id="market-pulse">Market pulse<a class="anchor" href="#market-pulse" aria-label="Link to this section">#</a></h2>
417
+ <p><strong>Everything in Chicago rallied, and the crusher still had a worse day than the day before.</strong></p>
418
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Commodity</th><th>Contract</th><th>Price</th><th class="num">Change</th></tr></thead><tbody><tr><td>Corn</td><td>Sep (CBOT)</td><td>473 c/bu</td><td class="num"><span class="mv up">+9¾¢</span></td></tr><tr><td>Corn</td><td>Dec (CBOT)</td><td>498 c/bu</td><td class="num"><span class="mv up">+10¢</span></td></tr><tr><td>Soybeans</td><td>Sep (CBOT)</td><td>1222¼ c/bu</td><td class="num"><span class="mv up">+21½¢</span></td></tr><tr><td>Soybeans</td><td>Nov (CBOT)</td><td>1237¾ c/bu</td><td class="num"><span class="mv up">+20½¢</span></td></tr><tr><td>Soymeal</td><td>Sep (CBOT)</td><td>—</td><td class="num"><span class="mv up">+2.0%</span></td></tr><tr><td>Soyoil</td><td>Sep (CBOT)</td><td>—</td><td class="num"><span class="mv up">+0.25%</span></td></tr><tr><td>Wheat SRW</td><td>Sep (CBOT)</td><td>680¼ c/bu</td><td class="num"><span class="mv up">+15¾¢</span></td></tr><tr><td>Wheat HRW</td><td>Sep (KC)</td><td>762 c/bu</td><td class="num"><span class="mv up">+18¼¢</span></td></tr><tr><td>Crude palm oil</td><td>Sep (BMD)</td><td>RM 4,648/t</td><td class="num"><span class="mv up">+RM 32</span></td></tr></tbody></table></div>
419
+ <p>Wednesday was a broad buying day, and the trigger was boots in fields. The Pro Farmer crop tour is walking the belt this week and the early scouting was reported as less than stellar. USDA still carries a corn yield of 180.7 bu/ac. After two days of the tour the trade has started to ask whether that is generous. Flooding in the eastern belt and positioning ahead of the weekly export sales report did the rest. Corn added ten cents in December, beans twenty and a half in November, and wheat took the largest percentage move of the three.</p>
420
+ <p>The move worth reading was inside the bean complex, and it is the mirror image of Tuesday. Meal led, up about 2%. Oil managed a quarter of a percent. Beans rose more than either product in percentage terms. A day on which every price on the screen is green can still be a losing day for a plant, because the crush is a difference, not a level.</p>
421
+ <p><strong>The geopolitical read: this morning the policy risk is a fuel rule, not a war.</strong> Indonesia&#x27;s B50 blending programme came into full effect in July, with the 2026 biodiesel allocation set at 16.75 million kilolitres. To fund the subsidy, Jakarta raised the crude palm oil export levy from 10% to 12.5%. The transmission is export capacity, but self-inflicted: the oil exists and the mills are running, and it is simply made expensive to leave. That is a supply withdrawal decided in a ministry, and it lands first on the palm–soyoil spread, then on every vegetable oil that competes with either.</p>
422
+ <figure class="chartfig">
423
+ <figcaption class="charttitle">Palm pays you to wait</figcaption>
424
+ <svg class="chart" viewBox="0 0 640 330" width="100%" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">
425
+ <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>
426
+ <line class="grid" x1="56" y1="286.0" x2="622" y2="286.0" opacity=".45"/>
427
+ <text class="axis" x="46" y="290.0" text-anchor="end">4,600</text>
428
+ <line class="grid" x1="56" y1="221.0" x2="622" y2="221.0" opacity=".45"/>
429
+ <text class="axis" x="46" y="225.0" text-anchor="end">4,700</text>
430
+ <line class="grid" x1="56" y1="156.0" x2="622" y2="156.0" opacity=".45"/>
431
+ <text class="axis" x="46" y="160.0" text-anchor="end">4,800</text>
432
+ <line class="grid" x1="56" y1="91.0" x2="622" y2="91.0" opacity=".45"/>
433
+ <text class="axis" x="46" y="95.0" text-anchor="end">4,900</text>
434
+ <line class="grid" x1="56" y1="26.0" x2="622" y2="26.0" opacity=".45"/>
435
+ <text class="axis" x="46" y="30.0" text-anchor="end">5,000</text>
436
+ <text class="unit" x="622" y="16" text-anchor="end">RM per tonne</text>
437
+ <text class="axis" x="56.0" y="306" text-anchor="middle">Sep 26</text>
438
+ <text class="axis" x="244.7" y="306" text-anchor="middle">Oct 26</text>
439
+ <text class="axis" x="433.3" y="306" text-anchor="middle">Nov 26</text>
440
+ <text class="axis" x="622.0" y="306" text-anchor="end">Dec 26</text>
441
+ <path class="ln" d="M56.0 254.8 L244.7 164.4 L433.3 98.8 L622.0 52.0" stroke="var(--c-a)"/>
442
+ <circle cx="622.0" cy="52.0" r="3.4" fill="var(--c-a)"/>
443
+ </svg>
444
+ <figcaption class="chartcap">The curve rises 312 ringgit from September to December, about 76 dollars a tonne. Palm is in carry, and the market is paying to hold oil into the low-production quarter rather than sell it now. <span class="chartsrc">MDEX crude palm oil futures, Wednesday 19 August 2026, closing quotes.</span></figcaption>
445
+ </figure>
446
+ <h2 id="key-takeaways">Key takeaways<a class="anchor" href="#key-takeaways" aria-label="Link to this section">#</a></h2>
447
+ <ul><li>The four vegetable oils are one market with four tickers. A refiner buys a melting point and a price, not a crop, so the spread between the oils is the switch that rations demand between them.</li><li>Palm is the volume leader because the yield per hectare is several times an oilseed&#x27;s, and it is the only major vegetable oil with a futures contract denominated in neither dollars nor euros.</li><li>One cent per pound is $22.05 per tonne. That single factor is what lets a soyoil price in Chicago be compared with a palm price in Kuala Lumpur.</li><li>A mandate creates demand that does not respond to price. A food buyer walks away when oil gets expensive; a blender under a legal obligation pays.</li><li>Indonesia&#x27;s 16.75 million kilolitre allocation is roughly 15 million tonnes of palm oil consumed at home — on the order of India&#x27;s entire annual import demand, decided by one cabinet.</li><li>Never multiply a renewable volume by a feedstock factor without checking whether it is stated in physical gallons or RIN gallons. Biodiesel earns 1.5 RINs per physical gallon, so the wrong basis overstates demand by half.</li><li>Oil demand and meal demand are joined at the bushel. A billion pounds of incremental oil demand drags in four billion pounds of meal that no fuel policy asked for, which is why the crush captures far less of an oil rally than the oil chart implies.</li><li>Vegetable oil balance sheets now contain an energy term. Discretionary blending is live when gasoil trades above the oils and vanishes when crude falls, and no crop model forecasts it.</li><li>Indonesia funds the blending subsidy from the export levy, and the mandate&#x27;s purpose is to shrink the exports the levy is collected on. The levy rate is the honest indicator of whether the programme is still affordable.</li></ul>
448
+ <h2 id="vocabulary">Vocabulary<a class="anchor" href="#vocabulary" aria-label="Link to this section">#</a></h2>
449
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Term</th><th>Meaning</th></tr></thead><tbody><tr><td><strong>CPO</strong></td><td>Crude palm oil, the unrefined oil pressed from the fruit of the oil palm and the benchmark grade traded internationally</td></tr><tr><td><strong>FCPO</strong></td><td>The Bursa Malaysia Derivatives crude palm oil futures contract, 25 tonnes per lot, quoted in Malaysian ringgit per tonne</td></tr><tr><td><strong>Olein and stearin</strong></td><td>The liquid and solid fractions palm separates into when refined, sold into cooking oil and into fats respectively</td></tr><tr><td><strong>Kilolitre</strong></td><td>One thousand litres, the volume unit Asian governments state biofuel mandates in, converted to tonnes using the fuel&#x27;s density</td></tr><tr><td><strong>FAME</strong></td><td>Fatty acid methyl ester, the chemical name for conventional biodiesel made by reacting a vegetable oil with methanol</td></tr><tr><td><strong>B50</strong></td><td>A blending mandate requiring 50% biodiesel in the diesel pool, the level Indonesia moved to in 2026</td></tr><tr><td><strong>Export levy</strong></td><td>A tax charged on a commodity leaving the country, used in Indonesia both to discourage exports and to fund the domestic blending subsidy</td></tr><tr><td><strong>RFS</strong></td><td>The US Renewable Fuel Standard, the rule that sets annual minimum volumes of renewable fuel that must be blended into American transport fuel</td></tr><tr><td><strong>RVO</strong></td><td>Renewable volume obligation, the share of the national mandate assigned to an individual refiner or importer</td></tr><tr><td><strong>RIN</strong></td><td>Renewable identification number, the tradable compliance certificate generated with each gallon of renewable fuel, at 1.5 per gallon of biodiesel</td></tr><tr><td><strong>Biomass-based diesel</strong></td><td>The RFS category covering biodiesel and renewable diesel made from fats and vegetable oils</td></tr><tr><td><strong>Renewable diesel (HVO)</strong></td><td>Hydrotreated vegetable oil, a drop-in diesel chemically identical to fossil diesel and unconstrained by blend walls, unlike FAME</td></tr><tr><td><strong>Discretionary blending</strong></td><td>Blending vegetable oil into the fuel pool purely because it is cheaper than gasoil, with no mandate and no subsidy behind it</td></tr><tr><td><strong>Gasoil</strong></td><td>The traded middle distillate that diesel prices off, and the reference against which discretionary blending economics are judged</td></tr><tr><td><strong>Blend wall</strong></td><td>The physical or warranty limit on how much conventional biodiesel an engine or fuel system will tolerate</td></tr><tr><td><strong>Substitution spread</strong></td><td>The price gap between two competing vegetable oils, which sets the point at which a refiner reformulates from one to the other</td></tr><tr><td><strong>Standing bid</strong></td><td>Demand that is present regardless of price because it is created by obligation rather than by choice</td></tr></tbody></table></div>
450
+ <h2 id="quiz">Quiz<a class="anchor" href="#quiz" aria-label="Link to this section">#</a></h2>
451
+ <p id="q1" class="qq"><strong>Q1.</strong> September palm settled at RM 4,648/t with the ringgit near 4.08 to the dollar, and Chicago soybean oil was quoted near 69 c/lb in mid-August. Express both in dollars per tonne and give the substitution spread. A European refiner uses 40,000 t of soybean oil a year and can reformulate up to 30% of that volume into palm. Compute the annual saving at today&#x27;s spread, then name the two new exposures the switch creates that the refiner did not have while buying soyoil.</p>
452
+ <p id="q2" class="qq"><strong>Q2.</strong> A rule change is expected to add 1.4 billion pounds of annual US soybean oil demand. Compute the incremental crush in bushels and the incremental soybean meal in short tons. Then explain why a trader who buys the board crush on that headline is likely to be disappointed, and say which single leg he should be positioned against instead.</p>
453
+ <p id="q3" class="qq"><strong>Q3.</strong> Gasoil rallies 25% and moves above both palm and soybean oil on an energy-equivalent basis. Describe what happens to the palm–soyoil spread, to Indonesia&#x27;s subsidy bill, and to the reliability of a soyoil balance sheet whose demand side contains only food and mandated volumes. Then say what happens to all three if crude subsequently falls 30%.</p>
454
+ <p id="q4" class="qq"><strong>Q4.</strong> <em>(Ep 8)</em> Take the board crush formula from ep 8 and start from meal at $325.00/short ton, oil at 69.00 c/lb and November beans at 1217¼. Apply Wednesday&#x27;s moves: meal +2.0%, oil +0.25%, beans +20½¢. Compute the change in the board crush in cents per bushel, and state whether Wednesday was a good or a bad day for a plant. Then say what this tells you about reading a complex from a screen of green numbers.</p>
455
+ <p id="q5" class="qq"><strong>Q5.</strong> <em>(Ep 8)</em> Ep 8 established that the plant crush is the board crush adjusted for three separate bases, minus conversion cost, and that the bean basis at the gate is the line that moves most. Suppose a sustained fuel-driven bid pushes the oil share from 52% to 58% and lifts the board crush to a two-year high. Explain the mechanism by which the plant crush can stay flat throughout, and name the one number you would watch to confirm it is happening.</p>
456
+ <p id="q6" class="qq"><strong>Q6.</strong> <em>(Ep 6)</em> Ep 6 established that corn is a demand story, and that ethanol is one of the two buyers that walks away at a price. On Wednesday ethanol production fell to a one-month low of 1.089 m barrels a day and ethanol stocks rose 1%, and December corn still rallied ten cents. Reconcile those facts. Then state what would have to be true for that divergence to persist for a month rather than a day.</p>
457
+ <p id="q7" class="qq"><strong>Q7.</strong> <em>(Ep 6)</em> Ep 6 argued that a weather premium decays on the calendar rather than on the forecast. Wednesday&#x27;s rally was driven by early Pro Farmer tour results rather than by a forecast. Explain what is structurally different about tour-driven buying compared with forecast-driven buying, and what that difference implies for how long the move should be expected to hold.</p>
458
+ <p id="q8" class="qq"><strong>Q8 — Conversion drill.</strong> A Mato Grosso soybean field yields 3.72 t/ha. An Illinois field is quoted at 58.5 bu/ac. Convert each into the other&#x27;s unit and say which is the higher yield. Then take the 91 million bushels of incremental crush from today&#x27;s worked example and compute how many hectares of Brazilian beans, at 3.72 t/ha, would be needed to supply it. Give the answer in hectares and in acres.</p>
459
+ <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>
460
+ <details class="soln" id="a1"><summary><span class="qn">Q1</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>Both sides first, in dollars per tonne.</p>
461
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Oil</th><th>Quote</th><th>Conversion</th><th class="num">$/t</th></tr></thead><tbody><tr><td>Palm, Sep BMD</td><td>RM 4,648/t</td><td>÷ 4.08 RM per $</td><td class="num">$1,139</td></tr><tr><td>Soybean oil, CBOT</td><td>69.00 c/lb</td><td>× 22.0462</td><td class="num">$1,521</td></tr><tr><td><strong>Substitution spread</strong></td><td></td><td></td><td class="num"><strong>$382/t</strong></td></tr></tbody></table></div>
462
+ <p>Thirty percent of 40,000 t is 12,000 t. At $382/t that is <strong>about $4.6 m a year</strong>, which is why formulation teams exist.</p>
463
+ <p>The two new exposures. The first is <strong>currency</strong>. FCPO settles in ringgit, so a refiner hedging palm on the board is short ringgit-denominated futures against a dollar or euro cost base, and the hedge itself creates an FX position of roughly RM 55 m on that volume. Nothing in the physical trade asked for that. The second is <strong>policy</strong>. Palm&#x27;s FOB price contains an Indonesian export levy that a ministry can change by decree, as it just did from 10% to 12.5%. Soybean oil is exposed to US policy too, but the refiner buying soyoil in Rotterdam is not paying a tax that moves on a fortnight&#x27;s notice.</p>
464
+ <p>Two further answers deserve half credit because they are real: <strong>basis risk</strong>, since Rotterdam CIF palm does not track BMD futures perfectly, and <strong>specification risk</strong>, since palm and soyoil have different melting points and oxidative stability, so &quot;reformulate&quot; is not a switch you can flip and unflip weekly.</p>
465
+ <p class="backq"><a href="#q1">↑ Back to question 1</a></p></div></details>
466
+ <details class="soln" id="a2"><summary><span class="qn">Q2</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>The arithmetic runs through the bushel.</p>
467
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Step</th><th>Working</th><th>Result</th></tr></thead><tbody><tr><td>Incremental oil demand</td><td>given</td><td>1,400 m lb</td></tr><tr><td>Oil per bushel</td><td>÷ 11 lb</td><td><strong>127.3 m bu of crush</strong></td></tr><tr><td>Meal produced</td><td>× 44 lb</td><td>5,601 m lb</td></tr><tr><td>In short tons</td><td>÷ 2,000</td><td><strong>2.80 m short tons of meal</strong></td></tr></tbody></table></div>
468
+ <p>Why the crush buyer is disappointed. The board crush is meal × 0.022 plus oil × 0.11 minus the bean price. The headline lifts one of those three terms. But 127 million bushels of extra crush has to be sourced, so crushers bid the bean, which raises the term being subtracted. And it produces 2.8 million short tons of meal into a market that has no incremental demand for protein, so the meal term falls. Two of the three legs move against the position that the headline appears to justify.</p>
469
+ <p>The clean expression of the view is not the crush. It is <strong>short meal against long oil</strong> — the oil share trade. That isolates the thing the policy actually changes, which is the relative value of the two products, and it does not require you to also be right about the bean basis. A trader who buys the whole crush is expressing a view on the oil rule and an unintended view on the bean market at the same time.</p>
470
+ <p>The deeper point: any demand shock that arrives through only one joint product has to be released through the other. Fixed proportions mean the by-product is always the shock absorber, and the by-product market is where the price damage shows up.</p>
471
+ <p class="backq"><a href="#q2">↑ Back to question 2</a></p></div></details>
472
+ <details class="soln" id="a3"><summary><span class="qn">Q3</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>Take them in order.</p>
473
+ <p><strong>The palm–soyoil spread narrows.</strong> Discretionary blending is not fussy about which oil it burns — it buys the cheapest tonne of fat that meets spec. So the marginal energy bid lands on palm, which is the cheaper of the two, and pulls it toward soyoil. The spread compresses from the bottom.</p>
474
+ <p><strong>Indonesia&#x27;s subsidy bill falls.</strong> The blending subsidy exists to cover the gap between the palm-based biodiesel price and the diesel it replaces. If gasoil is above palm, that gap is negative and the mandate becomes self-financing. This is the quiet condition under which aggressive mandates get announced: they are cheapest to promise when energy is expensive.</p>
475
+ <p><strong>The balance sheet becomes unreliable in the direction of understating demand.</strong> A demand side built from food use plus mandated volumes has no line for the tonnes that a fuel trader buys purely on arbitrage. In a high-gasoil regime those tonnes are real and can be large, and they will show up as an unexplained stock draw that the analyst books to &quot;residual&quot;.</p>
476
+ <p>If crude then falls 30%, all three reverse, and not symmetrically. Discretionary blending switches off essentially overnight, because it is a per-cargo economic decision rather than a contracted programme, so the palm–soyoil spread widens again quickly. The subsidy bill reappears immediately, and now has to be paid out of an export levy pot that the mandate itself has shrunk — which is the loop that forces levy increases. The balance sheet swings from understating demand to overstating it, because the analyst who finally added an energy line will carry it forward. The failure mode is the same in both directions: an energy term added at the top of a cycle is a crop analyst&#x27;s most expensive habit.</p>
477
+ <p class="backq"><a href="#q3">↑ Back to question 3</a></p></div></details>
478
+ <details class="soln" id="a4"><summary><span class="qn">Q4</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>Build the change leg by leg. Only the changes matter, not the levels.</p>
479
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Leg</th><th class="num">Move</th><th class="num">Multiplier</th><th class="num">¢/bu effect</th></tr></thead><tbody><tr><td>Meal</td><td class="num"><span class="mv up">+2.0% of $325.00 = +$6.50/st</span></td><td class="num">× 0.022</td><td class="num">+14.3</td></tr><tr><td>Oil</td><td class="num"><span class="mv up">+0.25% of 69.00 = +0.1725 c/lb</span></td><td class="num">× 0.11</td><td class="num">+1.9</td></tr><tr><td>Beans</td><td class="num"><span class="mv up">+20.5 c/bu</span></td><td class="num">−1</td><td class="num">−20.5</td></tr><tr><td><strong>Board crush</strong></td><td class="num"></td><td class="num"></td><td class="num"><strong>−4.3</strong></td></tr></tbody></table></div>
480
+ <p>So the board crush fell about <strong>4.3 c/bu on a day when all three prices rose</strong>. Wednesday was a bad day for a plant.</p>
481
+ <p>What it tells you: the crush is a <em>difference between large numbers</em>, so its sign is set by relative moves, not by direction. Meal was the strongest product in percentage terms and still could not carry the bean move, because meal&#x27;s contribution is scaled by 0.022 and the bean&#x27;s by one. A 2% meal rally is worth 14 cents of crush; a 20-cent bean rally costs 20. The screen of green tells you nothing about the margin, and a trader who reads a complex by looking at how many contracts are up is not reading the complex at all.</p>
482
+ <p class="backq"><a href="#q4">↑ Back to question 4</a></p></div></details>
483
+ <details class="soln" id="a5"><summary><span class="qn">Q5</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>The mechanism is competition for beans, and it runs through the gate.</p>
484
+ <p>A wide board crush is a public number. Every plant in the country sees it at the same moment, and every plant responds the same way: raise the run rate and buy more beans. Crush capacity cannot be added inside a marketing year, so the only variable that clears the increased demand for beans is the <strong>bean basis at the gate</strong>. Plants bid against each other and against the export elevator, and the basis rises until the marginal plant is indifferent again.</p>
485
+ <p>That is the whole answer. The board crush went to a two-year high and the bean basis absorbed it. The plant crush — board crush, minus bean basis, minus the meal and oil basis effects, minus conversion cost — is flat because the second line rose by as much as the first.</p>
486
+ <p>There is a second-order piece worth noting here. The rising oil share means the extra product value arrives disproportionately in oil, but the extra <em>volume</em> arrives in both products in the fixed 44-to-11 ratio. So higher run rates push meal basis down as well, which subtracts a second time. The plant crush can in fact end up lower than before the fuel-driven rally.</p>
487
+ <p>The number to watch is the <strong>bean basis at the plant gate relative to the export elevator&#x27;s bid</strong> in the same draw area. If the crusher is winning that contest, he is paying up for beans and the board crush is being competed away in exactly the place ep 8 said it would be. Watching the board crush alone tells you the opposite of what is happening.</p>
488
+ <p class="backq"><a href="#q5">↑ Back to question 5</a></p></div></details>
489
+ <details class="soln" id="a6"><summary><span class="qn">Q6</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>They are not in conflict, because they are statements about different weeks.</p>
490
+ <p>The ethanol print is a <em>demand</em> datapoint about last week&#x27;s grind: production at a one-month low of 1.089 m bbl/day with stocks up 1% is a mildly negative corn signal, worth a fraction of a cent. Wednesday&#x27;s rally was a <em>supply</em> datapoint about this year&#x27;s crop: scouts in the field reporting worse-than-expected conditions, against a USDA yield of 180.7 that the trade already suspected. In August, the supply side of the corn balance sheet has a variance many times larger than the demand side, because a two-bushel yield change moves the carryout by roughly 180 million bushels while a week of soft grind moves it by a few million. The market prices the larger variance first.</p>
491
+ <p>For the divergence to persist a month rather than a day, the tour would have to be confirmed by something structural, and ethanol margins would have to hold. Specifically: the tour findings would need to be validated by the September and October USDA reports, so that the yield cut becomes a balance sheet fact rather than a rumour; and ethanol&#x27;s weakness would need to prove seasonal — a maintenance-driven dip — rather than margin-driven. If ethanol grind is falling because the ethanol crush margin is negative at $4.98 corn, then ep 6&#x27;s point bites: that buyer is walking away at a price, and a rally built on supply will be capped by the demand it destroys. The tell is the ethanol margin itself, not the production number.</p>
492
+ <p class="backq"><a href="#q6">↑ Back to question 6</a></p></div></details>
493
+ <details class="soln" id="a7"><summary><span class="qn">Q7</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p>The difference is what kind of information each contains.</p>
494
+ <p>A <strong>forecast</strong> is a probability distribution over an event that has not happened. It is revised twice a day, it can be wrong, and the market discounts it accordingly. Crucially, it decays on the calendar: once pollination is past, a forecast of heat cannot change the ear count, and the premium bleeds out whether or not the weather actually improves.</p>
495
+ <p>A <strong>crop tour</strong> is a measurement of an event that has already happened. Scouts count ears and pods in fields where the yield is largely already set. That information does not decay, because there is no subsequent event that can falsify it — only a better measurement can, and the better measurement is the USDA survey in September.</p>
496
+ <p>So the two moves behave differently. Tour-driven buying should be <em>stickier</em> than forecast-driven buying, because it is not waiting on an outcome. But it is also <em>narrower</em>: a tour samples a route, not a population, and its historical relationship to the final national yield is loose. The honest expectation is that a tour move holds until the next authoritative measurement and then gets marked to it, which makes the September WASDE the event risk that matters, not the weekend forecast.</p>
497
+ <p>The practical implication for positioning: a weather premium is something you sell into strength as the calendar runs out. A tour-driven move is something you carry to the next report and then reassess. Treating the second like the first is how a good supply read turns into a bad trade.</p>
498
+ <p class="backq"><a href="#q7">↑ Back to question 7</a></p></div></details>
499
+ <details class="soln" id="a8"><summary><span class="qn">Q8</span><span class="sl">Reveal the answer</span></summary><div class="solnbody"><p><strong>Conversion drill.</strong> Soybeans convert at 1 bu/ac ≈ 0.0673 t/ha, or divide by 15 as a fast method.</p>
500
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Field</th><th>Given</th><th>Converted</th></tr></thead><tbody><tr><td>Illinois</td><td>58.5 bu/ac</td><td>× 0.0673 = <strong>3.94 t/ha</strong></td></tr><tr><td>Mato Grosso</td><td>3.72 t/ha</td><td>÷ 0.0673 = <strong>55.3 bu/ac</strong></td></tr></tbody></table></div>
501
+ <p><strong>Illinois is the higher yield</strong>, by about 0.22 t/ha or 3.2 bu/ac — roughly 6%. The fast method gets you there too: 58.5 ÷ 15 = 3.9 t/ha, and 3.72 × 15 = 55.8 bu/ac. Close enough to answer the question in a phone call.</p>
502
+ <p>Now the area. First cross bushels into tonnes, at 36.744 bu per tonne of soybeans:</p>
503
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Step</th><th>Working</th><th>Result</th></tr></thead><tbody><tr><td>Incremental crush</td><td>91,000,000 bu ÷ 36.744</td><td>2.476 m t</td></tr><tr><td>Area required</td><td>÷ 3.72 t/ha</td><td><strong>666,000 ha</strong></td></tr><tr><td>In acres</td><td>× 2.471</td><td><strong>1.65 m acres</strong></td></tr></tbody></table></div>
504
+ <p>Two-thirds of a million hectares of Brazilian soybeans, to feed one billion pounds of American oil demand. It is worth holding that picture next to the mandate that created it: a line in a regulation, denominated in gallons, reaching across a hemisphere and asking for an area roughly the size of a small country&#x27;s entire arable base.</p>
505
+ <p class="backq"><a href="#q8">↑ Back to question 8</a></p></div></details><h2 id="written-edition">Written edition<a class="anchor" href="#written-edition" aria-label="Link to this section">#</a></h2>
506
+ <h3 id="one-market-with-four-tickers">One market with four tickers<a class="anchor" href="#one-market-with-four-tickers" aria-label="Link to this section">#</a></h3>
507
+ <p>Palm, soybean oil, rapeseed oil and sunflower oil are grown on different continents, harvested on different calendars and traded on different exchanges. They are nonetheless a single market, and the reason is that almost nobody in the chain wants the crop.</p>
508
+ <p>A refiner in Rotterdam, a bottler in Mumbai, a snack manufacturer in Jakarta — each is buying a liquid with a melting point, an oxidative stability and a price. Within limits, the recipe is a choice. Below a certain spread they reformulate toward the cheaper oil; above it they do not. That switching behaviour is what welds four crops into one system, and it means the <strong>substitution spread</strong> between two oils is more informative than either flat price.</p>
509
+ <p>Palm is the volume leader. An oil palm produces several tonnes of oil per hectare where a soybean produces well under one, which is why a crop grown in a narrow equatorial band supplies more vegetable oil than any other single source. Its benchmark is the <strong>FCPO</strong> contract on Bursa Malaysia Derivatives.</p>
510
+ <p><strong>The unit moment.</strong> One FCPO lot is 25 tonnes of crude palm oil, quoted in Malaysian ringgit per tonne, with a minimum tick of RM 1 — so RM 25 per lot. It is quoted in ringgit because it settles against Malaysian physical delivery. That is a detail with teeth: it is the only major vegetable oil benchmark denominated in neither dollars nor euros, so every non-Malaysian hedger acquires a currency position that no part of the underlying trade asked for.</p>
511
+ <p>Crossing into Chicago requires one number. Soybean oil is quoted in cents per pound, 60,000 lb to a contract, and <strong>1 c/lb = $22.05/t</strong>. Commit that to memory and the two halves of the oil world become comparable in a single multiplication.</p>
512
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Market</th><th>Quote</th><th class="num">In $/t</th></tr></thead><tbody><tr><td>Palm, Sep BMD</td><td>RM 4,648/t at 4.08 RM/$</td><td class="num">$1,139</td></tr><tr><td>Soybean oil, CBOT, mid-August</td><td>69.00 c/lb</td><td class="num">$1,521</td></tr><tr><td><strong>Spread</strong></td><td></td><td class="num"><strong>$382/t</strong></td></tr></tbody></table></div>
513
+ <p>Nearly four hundred dollars a tonne between two liquids that a refiner can, within limits, use interchangeably. That gap is not a mispricing waiting to be arbitraged. It is the price of two different national policies, and the rest of this edition is about how those policies get there.</p>
514
+ <h3 id="reading-the-palm-curve">Reading the palm curve<a class="anchor" href="#reading-the-palm-curve" aria-label="Link to this section">#</a></h3>
515
+ <p>Wednesday&#x27;s palm board also carries a shape worth reading, and it is a chance to apply the curve grammar from ep 3 to a market that behaves nothing like Chicago wheat.</p>
516
+ <figure class="chartfig">
517
+ <figcaption class="charttitle">The carry is front-loaded</figcaption>
518
+ <svg class="chart" viewBox="0 0 640 330" width="100%" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">
519
+ <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>
520
+ <line class="grid" x1="56" y1="286.0" x2="622" y2="286.0"/>
521
+ <text class="axis" x="46" y="290.0" text-anchor="end">0</text>
522
+ <line class="grid" x1="56" y1="199.3" x2="622" y2="199.3" opacity=".45"/>
523
+ <text class="axis" x="46" y="203.3" text-anchor="end">50</text>
524
+ <line class="grid" x1="56" y1="112.7" x2="622" y2="112.7" opacity=".45"/>
525
+ <text class="axis" x="46" y="116.7" text-anchor="end">100</text>
526
+ <line class="grid" x1="56" y1="26.0" x2="622" y2="26.0" opacity=".45"/>
527
+ <text class="axis" x="46" y="30.0" text-anchor="end">150</text>
528
+ <text class="unit" x="622" y="16" text-anchor="end">RM per tonne</text>
529
+ <text class="axis" x="150.3" y="306" text-anchor="middle">Sep to Oct</text>
530
+ <text class="axis" x="339.0" y="306" text-anchor="middle">Oct to Nov</text>
531
+ <text class="axis" x="527.7" y="306" text-anchor="middle">Nov to Dec</text>
532
+ <rect x="130.1" y="45.1" width="40.5" height="240.9" rx="2" fill="var(--c-a)" opacity=".85"/>
533
+ <rect x="318.8" y="110.9" width="40.5" height="175.1" rx="2" fill="var(--c-a)" opacity=".85"/>
534
+ <rect x="507.4" y="161.2" width="40.5" height="124.8" rx="2" fill="var(--c-a)" opacity=".85"/>
535
+ <line class="grid" x1="56" y1="286.0" x2="622" y2="286.0"/>
536
+ </svg>
537
+ <figcaption class="chartcap">Most of the 312-ringgit carry sits in the first spread and it shrinks steadily thereafter. The market is paying hardest to move oil out of September, which is a statement about the next few weeks rather than about the fourth quarter. <span class="chartsrc">Derived from MDEX crude palm oil closing quotes, Wednesday 19 August 2026.</span></figcaption>
538
+ </figure>
539
+ <p>The curve rises RM 312 from September to December, roughly $76/t, or about 6.7% over three months. On the ep 3 framing that is a <strong>carry market</strong>: the board is paying you to hold oil rather than sell it prompt. But the decomposition matters more than the total. The Sep–Oct spread alone is RM 139, and each subsequent spread is smaller. A carry that is front-loaded is not a general statement that oil is abundant. It is a statement that oil is abundant <em>now</em>, and that the market expects the fourth-quarter production decline — palm&#x27;s output falls seasonally into the northern winter — to tighten things later.</p>
540
+ <h3 id="a-mandate-is-a-standing-bid">A mandate is a standing bid<a class="anchor" href="#a-mandate-is-a-standing-bid" aria-label="Link to this section">#</a></h3>
541
+ <p>Ordinary demand curves slope downward. Somebody stops buying when the price rises. This is the assumption underneath every balance sheet: the demand lines are estimates of behaviour, and behaviour responds to price.</p>
542
+ <p>A mandate breaks that. A blender legally required to put 50% biodiesel into the diesel pool does not walk away at a higher palm price. He pays, or he does not sell fuel. That converts a political decision into a <strong>standing bid</strong> — demand that exists regardless of price — and it is the single most important structural fact about vegetable oils today.</p>
543
+ <p>Work the Indonesian number, because the arithmetic is the lesson.</p>
544
+ <div class="tablewrap" tabindex="0" role="region" aria-label="Table, scrolls sideways"><table><thead><tr><th>Step</th><th>Working</th><th>Result</th></tr></thead><tbody><tr><td>2026 biodiesel allocation</td><td>stated by Jakarta</td><td>16.75 m kL</td></tr><tr><td>Volume to mass</td><td>× 0.88 t/m³ (biodiesel density)</td><td>14.74 m t of fuel</td></tr><tr><td>Fuel to feedstock</td><td>× ~1.03 t CPO per t FAME</td><td><strong>≈ 15.2 m t of CPO</strong></td></tr></tbody></table></div>
545
+ <p>Fifteen million tonnes of palm oil, consumed inside the country that produced it. That is on the order of a third of Indonesian output, and it is roughly the size of India&#x27;s entire annual vegetable oil import demand. One cabinet decision, sized like the world&#x27;s largest importer.</p>
546
+ <p>The funding mechanism is where it gets interesting. The blending subsidy is paid out of the <strong>export levy</strong>, which was raised from 10% to 12.5% this year. But the mandate&#x27;s purpose is to reduce the exports on which the levy is collected. The more successful the programme, the smaller the pot that pays for it. That is not a stable arrangement, and it is why the levy rate — not the mandate headline — is the honest indicator of whether the programme is affordable. Watch the rate.</p>
547
+ <h3 id="the-american-version-and-the-trap-in-it">The American version, and the trap in it<a class="anchor" href="#the-american-version-and-the-trap-in-it" aria-label="Link to this section">#</a></h3>
548
+ <p>The United States sets its volumes through the Renewable Fuel Standard. The final rule for 2026 put total renewable fuel at 26.81 bn gallons and biomass-based diesel at 8.86 bn gallons, with an advanced biofuel line of 10.82 bn.</p>
549
+ <p>The temptation is to multiply a volume by a feedstock factor and call it demand. Do not, without first checking the basis. Some RFS volumes are stated in physical gallons and some in <strong>RIN</strong> gallons, and biodiesel generates 1.5 RINs per physical gallon. Read the wrong basis and the resulting feedstock estimate is 50% too large. This mistake is made in public, by people who should know better, and it is the fastest way to be confidently wrong about a soybean oil balance sheet.</p>
550
+ <p>The safe method is to work in the <strong>increment</strong>, where the equivalence factors cancel. Suppose a policy change adds one billion pounds of annual soybean oil demand.</p>
551
+ <figure class="chartfig">
552
+ <figcaption class="charttitle">One billion of oil, four of meal</figcaption>
553
+ <svg class="chart" viewBox="0 0 640 330" width="100%" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">
554
+ <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>
555
+ <line class="grid" x1="56" y1="286.0" x2="622" y2="286.0"/>
556
+ <text class="axis" x="46" y="290.0" text-anchor="end">0</text>
557
+ <line class="grid" x1="56" y1="221.1" x2="622" y2="221.1" opacity=".45"/>
558
+ <text class="axis" x="46" y="225.1" text-anchor="end">1,000</text>
559
+ <line class="grid" x1="56" y1="156.1" x2="622" y2="156.1" opacity=".45"/>
560
+ <text class="axis" x="46" y="160.1" text-anchor="end">2,000</text>
561
+ <line class="grid" x1="56" y1="91.2" x2="622" y2="91.2" opacity=".45"/>
562
+ <text class="axis" x="46" y="95.2" text-anchor="end">3,000</text>
563
+ <line class="grid" x1="56" y1="26.3" x2="622" y2="26.3" opacity=".45"/>
564
+ <text class="axis" x="46" y="30.3" text-anchor="end">4,000</text>
565
+ <text class="unit" x="622" y="16" text-anchor="end">million lb per year</text>
566
+ <text class="axis" x="197.5" y="306" text-anchor="middle">Soybean oil</text>
567
+ <text class="axis" x="480.5" y="306" text-anchor="middle">Soybean meal</text>
568
+ <rect x="177.3" y="221.1" width="40.5" height="64.9" rx="2" fill="var(--c-a)" opacity=".85"/>
569
+ <rect x="460.3" y="26.0" width="40.5" height="260.0" rx="2" fill="var(--c-a)" opacity=".85"/>
570
+ <line class="grid" x1="56" y1="286.0" x2="622" y2="286.0"/>
571
+ </svg>
572
+ <figcaption class="chartcap">The mandate asks for the oil. The bushel delivers four times as much meal alongside it — about two million short tons that no fuel policy requested and no fuel industry can use. <span class="chartsrc">Worked example, episode 9, using the 11 lb oil and 44 lb meal yields per bushel from episode 8.</span></figcaption>
573
+ </figure>
574
+ <p>A bushel of soybeans yields 11 lb of oil and 44 lb of meal, in fixed proportion. One billion pounds of oil therefore requires about <strong>91 million bushels</strong> of additional crush — and that crush produces about <strong>4.0 billion pounds of meal</strong>, or 2.0 million short tons.</p>
575
+ <p>That meal was not requested by anyone. It has to be fed to an animal, somewhere, at some price, and the price is what adjusts. So the chain runs: a fuel rule bids up oil, crushers raise run rates, meal supply floods, and the meal price falls. Ep 8&#x27;s board crush formula makes the consequence arithmetic rather than opinion — meal × 0.022, plus oil × 0.11, minus the bean. An oil-driven demand shock lifts the second term, depresses the first, and raises the third as crushers compete for beans. The crush captures far less of the move than the oil chart suggests.</p>
576
+ <p>The general principle is worth stating cleanly: <strong>any demand shock arriving through one joint product must be released through the other.</strong> Fixed proportions make the by-product the shock absorber, and the by-product market is where the price damage lands. A fuel policy is always, whether it intends to be or not, a protein policy.</p>
577
+ <h3 id="why-balance-sheets-now-have-an-energy-term">Why balance sheets now have an energy term<a class="anchor" href="#why-balance-sheets-now-have-an-energy-term" aria-label="Link to this section">#</a></h3>
578
+ <p>Palm and soybean oil each sit on two bids.</p>
579
+ <p>The first is the mandate: contracted, price-insensitive, known in advance. The second is <strong>discretionary blending</strong> — a refiner buying vegetable oil purely because it is cheaper than gasoil, with no subsidy and no legal obligation. Through the middle of this year that bid was live, because gasoil rallied roughly 30% in a fortnight and inverted above both palm and soybean oil, making the blend profitable on its own economics.</p>
580
+ <p>That second bid is the energy term, and it has three properties that make it dangerous for a crop analyst.</p>
581
+ <p>It is <strong>large</strong>. When it is on, it competes directly with food demand for the same tonnes.</p>
582
+ <p>It is <strong>fast</strong>. Discretionary blending is a per-cargo decision, not a programme. It switches on and off with the gasoil–vegoil relationship, which means it can disappear within a week of a crude sell-off.</p>
583
+ <p>It is <strong>unforecastable from agricultural data</strong>. Nothing in a crop model, a stocks report or a weather forecast tells you where gasoil will trade. An analyst who adds an energy demand line is importing a variable from a market with its own supply, its own politics and its own volatility.</p>
584
+ <p>The failure mode is symmetrical and worth naming. Build a balance sheet with no energy line during a high-gasoil regime and you will systematically understate demand, and book the missing tonnes to residual. Add the line at the top of the cycle, then carry it forward through a 30% crude decline, and you will overstate demand by exactly the amount you were previously missing. Both errors feel like diligence at the time.</p>
585
+ <p>The discipline is to treat the energy term as a <strong>regime</strong>, not a level: state the gasoil condition under which the line is live, size it, and set it to zero the moment the condition fails. That is a harder forecast than a crop, and it is now unavoidable, because a soybean is no longer only a food.</p>
586
+ <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 9. Nothing said in the audio should ever be unrecoverable.</p><details class="gloss"><summary>Open the glossary<span class="sl">149 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">149</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></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="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="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 now">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="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 now">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 now">ep 9</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="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="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&#x27;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="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="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="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 now">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="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="1"><dt>deferred</dt><dd>months or shipment windows further out <span class="gep">ep 1</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="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 now">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="4"><dt>draft survey</dt><dd>weighing a cargo by reading the ship&#x27;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="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 now">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 now">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 now">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&#x27;s option <span class="gep">ep 1</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&#x27;s rail <span class="gep">ep 2</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 now">ep 9</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="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="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&#x27;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&#x27;s density of about 0.88 t per cubic metre for biodiesel <span class="gep now">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="1"><dt>lift the offer</dt><dd>to buy from someone else&#x27;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="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&#x27;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="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&#x27;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&#x27;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 now">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 now">ep 9</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="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="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 now">ep 9</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 now">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 now">ep 9</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 now">ep 9</span></dd></div><div class="gterm" data-ep="6"><dt>safrinha</dt><dd>Brazil&#x27;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="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="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="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 now">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&#x27;s tension gauge <span class="gep">ep 2</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 now">ep 9</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="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="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&#x27; 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="2"><dt>war-risk premium</dt><dd>an insurance surcharge on a vessel&#x27;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="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>
587
+ </main>
588
+ <nav class="epnav" aria-label="Episodes">
589
+ <a class="epprev" href="ep08.html"><span class="dir">← Previous</span><span class="ept">The Soybean Complex and the Crush</span><span class="epn">Episode 8</span></a>
590
+ </nav>
591
+ <details class="archive"><summary>All episodes<span class="sl">9 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 class="here" aria-current="page"><a href="ep09.html"><b>09</b> Vegetable oils and biofuels</a></li></ol></details>
592
+ <footer>
593
+ <span class="sig"><b>Soft Commodity Trading</b> — a daily briefing on physical commodity trading.</span>
594
+ <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>
595
+ </footer>
596
+ </div>
597
+ <script>
598
+ (function(){
599
+ var doc = document.documentElement;
600
+
601
+ /* theme */
602
+ var btn = document.querySelector('.themebtn');
603
+ if(btn) btn.addEventListener('click', function(){
604
+ var next = doc.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
605
+ doc.setAttribute('data-theme', next);
606
+ try{ localStorage.setItem('cdd-theme', next); }catch(e){}
607
+ });
608
+
609
+ /* reading progress */
610
+ var bar = document.getElementById('bar'), ticking = false;
611
+ function progress(){
612
+ var h = doc.scrollHeight - innerHeight;
613
+ bar.style.width = (h > 0 ? Math.min(100, Math.max(0, scrollY / h * 100)) : 0) + '%';
614
+ ticking = false;
615
+ }
616
+ if(bar){
617
+ addEventListener('scroll', function(){
618
+ if(!ticking){ ticking = true; requestAnimationFrame(progress); }
619
+ }, {passive:true});
620
+ addEventListener('resize', progress, {passive:true});
621
+ progress();
622
+ }
623
+
624
+ /* contents: mark the section being read */
625
+ var links = [].slice.call(document.querySelectorAll('.toc a'));
626
+ if(links.length && 'IntersectionObserver' in window){
627
+ var map = {};
628
+ links.forEach(function(a){
629
+ var el = document.getElementById(decodeURIComponent(a.hash.slice(1)));
630
+ if(el) map[el.id] = a.parentNode;
631
+ });
632
+ var seen = [];
633
+ var io = new IntersectionObserver(function(entries){
634
+ entries.forEach(function(en){
635
+ var id = en.target.id, at = seen.indexOf(id);
636
+ if(en.isIntersecting){ if(at < 0) seen.push(id); }
637
+ else if(at >= 0){ seen.splice(at, 1); }
638
+ });
639
+ links.forEach(function(a){ a.parentNode.classList.remove('on'); });
640
+ if(seen.length && map[seen[0]]) map[seen[0]].classList.add('on');
641
+ }, {rootMargin:'-64px 0px -70% 0px'});
642
+ Object.keys(map).forEach(function(id){
643
+ var el = document.getElementById(id); if(el) io.observe(el);
644
+ });
645
+ }
646
+
647
+ /* playback speed */
648
+ var audio = document.querySelector('audio');
649
+ [].forEach.call(document.querySelectorAll('.rate'), function(b){
650
+ b.addEventListener('click', function(){
651
+ if(!audio) return;
652
+ audio.playbackRate = parseFloat(b.dataset.rate);
653
+ [].forEach.call(document.querySelectorAll('.rate'), function(o){
654
+ o.setAttribute('aria-pressed', String(o === b));
655
+ });
656
+ });
657
+ });
658
+
659
+ /* solutions: reveal all / hide all */
660
+ [].forEach.call(document.querySelectorAll('[data-solnall]'), function(b){
661
+ b.addEventListener('click', function(){
662
+ var open = b.dataset.solnall === 'open';
663
+ [].forEach.call(document.querySelectorAll('details.soln'), function(d){
664
+ d.open = open;
665
+ });
666
+ });
667
+ });
668
+
669
+ /* an answer linked to directly should already be open */
670
+ function openTarget(){
671
+ var id = location.hash.slice(1);
672
+ if(!id) return;
673
+ var el = document.getElementById(decodeURIComponent(id));
674
+ while(el){
675
+ if(el.tagName === 'DETAILS') el.open = true;
676
+ el = el.parentElement;
677
+ }
678
+ }
679
+ addEventListener('hashchange', openTarget); openTarget();
680
+
681
+ /* glossary: an episode chip and a search box, which compose */
682
+ var gf = document.getElementById('gfilter'), list = document.getElementById('glist');
683
+ if(list){
684
+ var rows = [].slice.call(list.querySelectorAll('.gterm'));
685
+ var chips = [].slice.call(document.querySelectorAll('.gchip'));
686
+ var none = document.querySelector('.gnone');
687
+ var pick = 'all';
688
+ function apply(){
689
+ var q = gf ? gf.value.trim().toLowerCase() : '', hits = 0;
690
+ rows.forEach(function(r){
691
+ var on = (pick === 'all' || r.dataset.ep === pick) &&
692
+ (!q || r.textContent.toLowerCase().indexOf(q) > -1);
693
+ r.hidden = !on; if(on) hits++;
694
+ });
695
+ if(none) none.hidden = hits > 0;
696
+ }
697
+ if(gf) gf.addEventListener('input', apply);
698
+ chips.forEach(function(c){
699
+ c.addEventListener('click', function(){
700
+ pick = c.dataset.gep;
701
+ chips.forEach(function(o){ o.classList.toggle('on', o === c); });
702
+ apply();
703
+ });
704
+ });
705
+ }
706
+
707
+ /* printing: paper has no disclosure triangles */
708
+ var reopen = [];
709
+ addEventListener('beforeprint', function(){
710
+ reopen = [].filter.call(document.querySelectorAll('details'), function(d){
711
+ return !d.open;
712
+ });
713
+ reopen.forEach(function(d){ d.open = true; });
714
+ });
715
+ addEventListener('afterprint', function(){
716
+ reopen.forEach(function(d){ d.open = false; });
717
+ reopen = [];
718
+ });
719
+ })();
720
+ </script>
721
+ </body>
722
+ </html>
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdelsad/commodity-desk-daily",
3
- "version": "1.0.28",
3
+ "version": "1.0.29",
4
4
  "description": "Soft Commodity Trading - Ep 9: Vegetable oils and biofuels",
5
5
  "license": "CC-BY-4.0",
6
6
  "keywords": [