---
title: "Agriculturals and Softs"
book: "Markets III: Commodities, Energy and Crypto"
subject: quant
language: en
chapter: 9
exercises: 8
source: https://one-course.com/books/quant/3/en/chapter/9-agriculturals-and-softs
---

# Chapter 9 — Agriculturals and Softs

At noon Eastern time on 30 June 2026 the US Department of Agriculture published its estimate of the acreage American farmers had planted that spring: corn down 3% on the year, soybeans up 5%. For the traders watching, the minutes after noon were the most important of the season: the number told them how much corn would exist in the autumn, and the futures repriced it before most farmers had read the release. Agricultural markets run on calendars that nature sets and governments measure. This chapter covers the [crop year](#def-m3-agriculturals-and-softs-cropyear) and its spreads, the reports that move the market, the weather, the daily limits that can lock a trader in, and the weekly report that shows who holds what.

## 9.1 Crop calendars and the old-crop, new-crop spread

**Definition 9.1 (Crop year, old crop, new crop).**

The *crop year* (marketing year) of a crop is the twelve-month period over which one harvest is sold and used; for US corn it runs from 1 September to 31 August. *Old crop* is grain from the harvest already in store; *new crop* is grain from the harvest to come. Futures delivering before the new harvest price old crop, those after it new crop.

![The US corn year, schematic: planting in spring, pollination in July (the weather-sensitive weeks), harvest from autumn; the marketing year begins on 1 September. The acreage report of late June is the season’s first hard number on the size of the new crop.](https://one-course.com/images/onecourse/chapters/quant-3/m3-agriculturals-and-softs/fig-2ee98bd2961a.svg)

***Figure 9.1.** The US corn year, schematic: planting in spring, pollination in July (the weather-sensitive weeks), harvest from autumn; the marketing year begins on 1 September. The acreage report of late June is the season’s first hard number on the size of the [new crop](#def-m3-agriculturals-and-softs-cropyear).*

The spread between the last old-crop contract and the first new-crop contract (for corn, July against December) is a bet on the size of the new harvest against the stocks left from the old. A short [old crop](#def-m3-agriculturals-and-softs-cropyear) and a big new one put the July far above December; a glut of old grain and a failing [new crop](#def-m3-agriculturals-and-softs-cropyear) invert it.

## 9.2 Government reports

**Definition 9.2 (WASDE report, stocks-to-use ratio).**

The *WASDE report* (World Agricultural Supply and Demand Estimates) is the US Department of Agriculture’s monthly balance sheet of supply, use and ending stocks for the major crops, in the United States and the world. The *stocks-to-use ratio* is the ending stocks of a marketing year divided by that year’s total use: the buffer the market will carry into the next harvest.

The price of a storable crop is set by how scarce it will be at the end of the year: a low [stocks-to-use ratio](#def-m3-agriculturals-and-softs-wasde) means a thin buffer and a price that must ration use; a high one means storage must be paid for. Reports that revise the balance sheet move the price immediately.

**As of September 2026 — Report times.**

WASDE is released at 12:00 Eastern time, usually between the 8th and the 12th of each month. The Acreage report of the National Agricultural Statistics Service is released at noon Eastern at the end of June; on 30 June 2026 it put corn planted acreage 3% below 2025 and soybeans 5% above.

**Example 9.3 (A stocks-to-use surprise).**

A balance sheet with 15.0 billion bushels of use and 1.8 billion of ending stocks has a [stocks-to-use ratio](#def-m3-agriculturals-and-softs-wasde) of 12.0%. A report that cuts the crop by 300 million bushels, with use unchanged, cuts ending stocks to 1.5 billion: 10.0%. The price must rise until use falls enough to rebuild the buffer the market wants to hold.

## 9.3 Weather

For a growing crop, weather is the dominant risk, and it is concentrated in a few weeks: for corn, pollination in July, when heat and drought cut yields most. Traders buy that risk ahead of the weeks and sell it afterwards, a pattern called the weather premium; forecasts from the main numerical models move prices during the season as reliably as reports do.

## 9.4 Daily limits

Grain futures have daily price limits: a contract cannot trade more than a set amount above or below the previous settlement. The limit is a price limit of the kind One Quant Book 1, chapter 12, described for shares.

**Definition 9.4 (Limit-locked market, expanded limit).**

A *limit-locked market* is one whose price has reached the daily limit with orders on one side only: no trade can happen at a price beyond it, so positions cannot be closed. An *expanded limit* is the wider limit that applies on the day after a contract settles at its limit.

**As of September 2026 — Grain limits.**

CBOT corn futures: 5 000 bushels, quoted in cents per bushel. Their limits are reset every six months: 7% of the average settlement of a reference contract over 45 trading days, rounded to the nearest 5 cents, with a floor of 20 cents; the [expanded limit](#def-m3-agriculturals-and-softs-limit) is 1.5 times that, rounded up. At an average of $4.50 the limit is 30 cents and the [expanded limit](#def-m3-agriculturals-and-softs-limit) 45 cents. For trade date 8 September 2026 CME Group listed the corn limit at 30 cents (60 cents for calendar spreads).

**Proposition 9.5 (Margin to survive a lock).**

If news moves the fair price of a contract by $\Delta$ beyond its limit $L$, with [expanded limit](#def-m3-agriculturals-and-softs-limit) $L_e$, a holder on the wrong side cannot exit until the price reaches the fair value: it loses $L$ on the first day and $L_e$ on each further locked day, and needs margin for every locked day before it can trade. With $L < |\Delta| \le L + L_e$ the lock lasts two days.

**Proof.** Each locked day the settlement moves by the day’s limit and no trade is possible at the fair price; the lock ends on the first day the remaining gap is within the limit. ∎

![Corn after a report that cuts its fair value from $4.50 to $3.70 a bushel: two locked days at the limit and the expanded limit, then trading at the fair price. Illustrative; limits by the rule of the dated box. Data: the chapter’s tutorial.](https://one-course.com/images/onecourse/chapters/quant-3/m3-agriculturals-and-softs/fig-2da4a7003558.svg)

***Figure 9.2.** Corn after a report that cuts its fair value from $4.50 to $3.70 a bushel: two locked days at the limit and the [expanded limit](#def-m3-agriculturals-and-softs-limit), then trading at the fair price. Illustrative; limits by the rule of the dated box. Data: the chapter’s tutorial.*

## 9.5 Positioning reports

**Definition 9.6 (Commitments of Traders report, managed money).**

The *Commitments of Traders report* (COT) is the weekly publication by the US Commodity Futures Trading Commission of the aggregate long and short positions of large traders in each futures market, by category, as of Tuesday. In its disaggregated form *managed money* is the category of commodity trading advisors, commodity pool operators and funds that trade on behalf of clients, as distinct from producers and merchants, swap dealers and other reportable traders.

**As of September 2026 — The COT schedule.**

The Commission releases the report every Friday at 15:30 Eastern time, with positions as of the previous Tuesday.

![CBOT corn: managed money’s net position as a share of open interest, monthly means of weekly reports, January 2016 to July 2026, against the monthly maize price. Funds are long when prices rise and short when they fall: the two series have a correlation of 0.68. Data: CFTC disaggregated Commitments of Traders (futures only); IMF maize price via FRED.](https://one-course.com/images/onecourse/chapters/quant-3/m3-agriculturals-and-softs/fig-fa07079155d6.svg)

***Figure 9.3.** CBOT corn: [managed money](#def-m3-agriculturals-and-softs-cot)’s net position as a share of open interest, monthly means of weekly reports, January 2016 to July 2026, against the monthly maize price. Funds are long when prices rise and short when they fall: the two series have a correlation of 0.68. Data: CFTC disaggregated Commitments of Traders (futures only); IMF maize price via FRED.*

In the weekly corn data from January 2016 to September 2026, [managed money](#def-m3-agriculturals-and-softs-cot) was net long a record 24.4% of open interest on 22 March 2022 and net short 22.8% on 9 July 2024; it was net short in 300 of 559 weeks, and on 15 September 2026 it was net long 22.5%, 2.26 standard deviations above its average of the previous three years. Traders read the report as a measure of crowding: a market in which funds are already very long has fewer buyers left if the news disappoints.

## 9.6 Softs and the crush

**Definition 9.7 (Softs).**

*Softs* are agricultural commodities that are grown rather than mined and are not grains or livestock: coffee, cocoa, sugar, cotton and orange juice.

[Softs](#def-m3-agriculturals-and-softs-softs) are grown in few countries, often by smallholders, and their supply shocks are concentrated. The IMF’s monthly cocoa price averaged $2 369 a tonne in 2022; it then rose more than fourfold, to a monthly average of $10 710 in January 2025, and was $5 619 in July 2026 ([Figure 9.4](#fig-m3-agriculturals-and-softs-cocoa)). The International Cocoa Organization reported that both the 2022/23 and 2023/24 seasons ended in deficit, the second after weather, diseases and pests cut the crops of the main West African producers.

![Cocoa, monthly average price, January 2000 to July 2026. Data: IMF Primary Commodity Prices (series PCOCOUSDM via FRED).](https://one-course.com/images/onecourse/chapters/quant-3/m3-agriculturals-and-softs/fig-1111aa97935b.svg)

***Figure 9.4.** Cocoa, monthly average price, January 2000 to July 2026. Data: IMF Primary Commodity Prices (series PCOCOUSDM via FRED).*

Processing links crops to their products. A soybean crusher turns beans into meal (animal feed) and oil (food and fuel).

**Definition 9.8 (Crush spread).**

The *crush spread* is the value of the meal and oil from one bushel of soybeans minus the price of the bushel. At the exchange’s conventional yields of 44 pounds of meal and 11 pounds of oil per 60-pound bushel it is, in dollars per bushel, $0.022 \times P_{\mathrm{meal}} + 0.11 \times P_{\mathrm{oil}} - P_{\mathrm{beans}}$, with meal in dollars per short ton and oil in cents per pound.

The crush is to a soybean processor what the crack is to a refiner ([Chapter 3](https://one-course.com/books/quant/3/en/chapter/3-refined-products-and-cracks#ch-m3-refined-products-and-cracks)): its margin, hedged by buying beans and selling meal and oil, in the ratio of ten soybean contracts to eleven of meal and nine of oil.

## 9.7 Tutorial: positioning and limits

**Goal.** Turn the COT files into a positioning measure, and compute the limits and the lock of a report day. **End state:** Figures [9.3](#fig-m3-agriculturals-and-softs-cot) and [9.2](#fig-m3-agriculturals-and-softs-limits) and the margin of the weekend problem.

1. **Positioning.** Net positions, their share of open interest and a trailing z-score. `def net (row: dict [str , int ], category: str ) -> int : return row[f " { category} _long " ] - row[f " { category} _short " ] def net_share (row: dict [str , int ], category: str ) -> float : """Net position of a category as a share of total open interest.""" return net(row, category) / row[" open_interest " ] def zscore (values: list [float ], window: int ) -> list [float | None ]: """Trailing z-score of each value against the previous `window` values (None until enough).""" out: list [float | None ] = [] for i, v in enumerate (values): past = values[max (0 , i - window):i] if len (past) < window: out.append(None ) continue m = sum (past) / window sd = math.sqrt(sum ((x - m) ** 2 for x in past) / (window - 1 )) out.append((v - m) / sd if sd > 0 else 0.0 ) return out` **Listing 9.1.** Net positions and their trailing z-score. code/firm/cot/firm_cot.py
2. **Limits.** The variable-limit rule and the path of a locked market. `def variable_limit (average_price: float ) -> tuple [float , float ]: """(initial, expanded) daily limits in dollars per bushel from an average settlement price.""" initial = max (round (0.07 * average_price / 0.05 ) * 0.05 , 0.20 ) expanded = math.ceil(round (1.5 * initial / 0.05 , 9 )) * 0.05 return round (initial, 2 ), round (expanded, 2 ) @dataclass (frozen=True ) class Day : settle: float locked: bool def limit_path (start: float , fair: float , limit: float , expanded: float , days: int = 5 ) -> list [Day]: """Settlements when news moves the fair price to `fair`: each day the price moves toward it by at most the day's limit; a day that closes at the limit is locked, and the next day uses the expanded limit (the normal limit returns after a day that does not close at the limit).""" out, p, lim = [], start, limit for _ in range (days): gap = fair - p if abs (gap) > lim + 1e-12 : p += math.copysign(lim, gap) out.append(Day(round (p, 4 ), True )) lim = expanded else : p = fair out.append(Day(round (p, 4 ), False )) lim = limit return out` **Listing 9.2.** The limit rule and a limit-locked price path. code/firm/cot/firm_cot.py
3. **Run** `m3_ags.mm_stats()` , `report_day()` and `fig_ags.py` .

**What to change next.** Compute the same measure for soybeans and wheat and see whether funds’ positions in the three move together; test whether extreme positioning predicts the next month’s return, correcting for the overlap of the weekly samples.

## 9.8 Build: the positioning parser and limit state

**Purpose.** The miniature firm trades grains around reports: it needs weekly positioning by category, the current daily limits of each contract, and the state of a [limit-locked market](#def-m3-agriculturals-and-softs-limit) for its risk system and its order router, which must not send orders that cannot trade.

**Interface.** `net(row, category)`, `net_share`, `zscore(values, window)`; `variable_limit(average_price)`; `limit_path(start, fair, limit, expanded)`; `crush_margin(beans, meal, oil_cents)`.

**Rules.** Positions are integers in contracts; z-scores use only past values; the [expanded limit](#def-m3-agriculturals-and-softs-limit) applies only the day after a limit close; limits in dollars per bushel to the cent.

**Acceptance tests.** `code/firm/cot/tests/`: net positions; the z-score window; the limit rule at three price levels including the floor; a two-day lock; the board crush.

**Stretch.** Feed limit states to `firm.calendar` (One Quant Book 1, chapter 22); read the COT files directly from the Commission’s archive format.

Sources and further reading

- US Commodity Futures Trading Commission, *Commitments of Traders* : about the reports, release schedule, disaggregated historical files 2016–2026.
- USDA, *WASDE* ; National Agricultural Statistics Service, *Acreage* , 30 June 2026; ERS feed grains documentation (marketing years).
- CME Group, CBOT rulebook chapter 10 (corn) and grain price-limit reset notices; soybean crush reference guide.
- International Monetary Fund, Primary Commodity Prices (cocoa, maize) via FRED.
- International Cocoa Organization, *Quarterly Bulletin of Cocoa Statistics* , November 2024 (summary).
- CME Group, price limits page for agricultural futures, trade date 8 September 2026 (Internet Archive copy).

## 9.9 Exercises

**Exercise 9.1 ★.**

Ending stocks are 1.2 billion bushels and total use 14.8 billion. Give the [stocks-to-use ratio](#def-m3-agriculturals-and-softs-wasde).

**Solution of Exercise 9.1.**

$1.2/14.8 = 8.1\%$.

**Exercise 9.2 ★.**

Give the initial and [expanded limits](#def-m3-agriculturals-and-softs-limit) for corn averaging $4.00 and $6.00 a bushel.

**Solution of Exercise 9.2.**

At $4.00: 7% is 28 cents, rounded to 30; expanded 45. At $6.00: 42 cents, rounded to 40; expanded 60.

**Exercise 9.3 ★.**

Why is July corn an old-crop contract and December a new-crop one?

**Solution of Exercise 9.3.**

July delivers before the US harvest, so only grain already in store can be delivered: [old crop](#def-m3-agriculturals-and-softs-cropyear). December delivers after the harvest: [new crop](#def-m3-agriculturals-and-softs-cropyear).

**Exercise 9.4 ★★.**

Meal is $300 a short ton, oil 50 cents a pound, beans $10.00 a bushel. Give the board crush.

**Solution of Exercise 9.4.**

$300 \times 0.022 + 50 \times 0.11 - 10.00 = 6.60 + 5.50 - 10.00 = \$2.10$ a bushel.

**Exercise 9.5 ★★.**

A report moves corn’s fair value down $0.60 with limits of 30 and 45 cents. How many days is a long locked, and what does it lose per contract before it can sell?

**Solution of Exercise 9.5.**

One locked day (30 cents), then the remaining 30 cents is within the [expanded limit](#def-m3-agriculturals-and-softs-limit) and the market trades at the fair price on day 2. The loss is 60 cents, $3 000 per contract.

**Exercise 9.6 ★★.**

Funds hold a record net long just before a report that disappoints. Why might the fall be larger than the report alone justifies?

**Solution of Exercise 9.6.**

Crowded longs must sell on the same news, and there are few new buyers left: forced selling adds to the fundamental move, and in a limit market it can lock the price for days.

**Exercise 9.7 ★★★.**

*Coding.* With `mm_series`, give [managed money](#def-m3-agriculturals-and-softs-cot)’s largest net long and net short in corn since 2016, their dates, and the number of weeks net short.

**Solution of Exercise 9.7.**

Net long 24.4% of open interest on 22 March 2022; net short 22.8% on 9 July 2024; net short in 300 of 559 weeks.

**Exercise 9.8 ★★★.**

*Find the flaw.* “[Managed money](#def-m3-agriculturals-and-softs-cot)’s net position and the price move together, so the funds cause the price moves; we will trade ahead of them.”

**Solution of Exercise 9.8.**

Correlation does not give direction: funds that follow trends buy after prices rise, so their positions may follow prices rather than lead them. The report is also published three days after the positions it shows. A strategy needs evidence that positions predict later returns, tested out of sample on data available at the time.

## 9.10 Problem: Report Day

**Problem 9.1.**

Weekend problem — a long locked in by a report

A trader holds 50 corn futures long at $4.50 a bushel. A report cuts the fair price to $3.70. Limits follow the rule of the dated box for an average price of $4.50.

**Part I — The limits.**

1. Give the initial and [expanded limits](#def-m3-agriculturals-and-softs-limit) .
2. What is the contract’s value per bushel move?
3. Where does corn settle on the first day?
4. And on the second?
5. On which day can the trader sell, and at what price?

**Part II — The money.**

6. What variation margin does the trader pay on day 1?
7. And on day 2?
8. What margin must it hold to survive both locked days?
9. What is its total loss when it sells on day 3?
10. What would a stop-loss order at $4.30 have done?

**Part III — Hedges.**

11. Could it have hedged with options during the lock? At what price?
12. Could it have sold a related contract (another month, another exchange)?
13. How does a producer hedging its crop experience the same days?
14. Why do exchanges keep limits despite this?
15. How would you size a position before a report, given the limits?

**Part IV — Judgement.**

16. What does the COT report tell you about the risk of such a report day?
17. Why is a limit not a cap on the loss?
18. How does a lock change the value of liquidity?
19. State the *named result* : the margin needed to survive the lock, per contract and for the position.
20. In one sentence: what is a daily limit?

**Solution of Problem 9.1.**

**1.** 30 and 45 cents. **2.** $50 per cent per contract ($12.50 per quarter-cent tick). **3.** $4.20, locked. **4.** $3.75, locked at the [expanded limit](#def-m3-agriculturals-and-softs-limit). **5.** Day 3, at $3.70. **6.** $50 \times 0.30 \times 5\,000 = \$75\,000$. **7.** $112 500. **8.** $187 500 ($3 750 per contract). **9.** $200 000. **10.** Nothing during the lock: it becomes a market order that fills only when trading resumes, near $3.70. **11.** Options may keep trading and price the fair value, at a premium reflecting it; synthetic futures from options reveal the locked contract’s true price. **12.** Possibly other months or an overseas contract, with [basis risk](https://one-course.com/books/quant/3/en/chapter/1-physical-commodity-markets#def-m3-physical-commodity-markets-basisrisk). **13.** Its short hedge gains margin in cash while its crop loses value: it is paid, not called. **14.** Limits give time to raise margin and slow panics; the cost is illiquidity. **15.** So that the margin for two or three locked days is covered and the loss is tolerable, not by the usual volatility. **16.** How crowded the positioning is: crowded positions add forced selling. **17.** It caps the daily move, not the total one: the price keeps moving on later days. **18.** Liquidity is worth most when you cannot trade: the ability to hedge elsewhere or to fund margin is what survives the lock. **19.** *Named result:* $3 750 per contract, $187 500 for 50 contracts. **20.** A maximum daily move that delays, but does not cancel, a price change.

## 9.11 Interview questions

**Interview question 9.1 ★ trader.**

What is the [stocks-to-use ratio](#def-m3-agriculturals-and-softs-wasde) and why does the price depend on it non-linearly?

**Solution of Interview question 9.1.**

Ending stocks over total use: the buffer carried into the next harvest. When the buffer is thin, only a higher price can ration use, and demand for a staple is inelastic, so the price rises steeply as the ratio falls; when it is ample, price is set by the cost of storage.

*What the interviewer is looking for: inelastic demand and a convex price response.*

**Interview question 9.2 ★ trader, researcher.**

What is a [limit-locked market](#def-m3-agriculturals-and-softs-limit), and how do you manage the risk of one?

**Solution of Interview question 9.2.**

A market at its daily limit with orders on one side only: positions cannot be closed. Manage it by sizing for several locked days, by hedging in instruments that keep trading (options, other contracts), and by holding margin liquidity.

*What the interviewer is looking for: size to the lock, alternatives, funding.*

**Interview question 9.3 ★★ researcher.**

How would you build a signal from the COT report without look-ahead bias?

**Solution of Interview question 9.3.**

Use the release date (Friday), not the report date (Tuesday), as the time the data are known; normalise positions (share of open interest, z-score against the past only); test on out-of-sample years with non-overlapping returns; account for revisions and category changes.

*What the interviewer is looking for: release-date alignment and honest normalisation.*

**Interview question 9.4 ★★ trader.**

Explain the soybean crush and how a processor hedges it.

**Solution of Interview question 9.4.**

Beans in, meal and oil out; its margin is the crush. It hedges by buying soybean futures and selling meal and oil futures in the board ratio, locking the margin on its planned throughput.

*What the interviewer is looking for: the product-input spread and the ratio.*

**Interview question 9.5 ★★ risk.**

How do you compute a VaR-type measure for a position in a market with daily limits?

**Solution of Interview question 9.5.**

Daily returns are truncated at the limit, so a one-day VaR understates risk. Use multi-day scenarios with the remaining move carried forward, or measure over the horizon needed to exit; include [expanded limits](#def-m3-agriculturals-and-softs-limit).

*What the interviewer is looking for: the liquidity horizon, not the one-day truncated distribution.*

**Interview question 9.6 ★★★ developer, trader.**

Design the report-day playbook system: what data, what checks, what automated actions at noon?

**Solution of Interview question 9.6.**

Inputs: consensus and prior estimates, positions and limits, liquidity by contract. Before noon: set risk limits, cancel resting orders that should not fill on news, pre-compute scenarios. At noon: parse the release, compute surprises, route orders with price protection, switch to options or other months if a contract locks; afterwards, reconcile and report.

*What the interviewer is looking for: parsing, surprise computation, protection and fallbacks.*
