SoftSignal Research
Can you see a coffee grower about to cut fertilizer?
Four tests, three dead ends, one live thread
Coffee · production cost · open research note · August 22, 2026 · CONAB cost data through October 2025
A grower's husbandry decisions follow margin, not price. When a bag of coffee sells for less than it costs to grow, fertilizer gets skipped — and because coffee is a perennial, the consequence arrives two seasons later. We built 22 years of Brazilian coffee cost structure to test that. Three tests failed, and the reason turned out to be the instrument rather than the idea: a cost share is mostly a fertilizer price index in disguise. One test still stands.

This is a progress report on an experiment that mostly did not work, and on the one part of it that still might. We are publishing it in that state deliberately. The sharpest corrections below came from circulating an earlier draft, and none of them required us to have been right the first time.

41.3%
Fertilizer share, 2021 peak
▼ 21.4% by 2025
−0.29
Margin signal, price removed
no positive grower signal left
29
Underwater panel-vintages
of 344 with a reading
+0.41
Margin → yield, 2yr
the one live thread

What we built Method

Brazil's CONAB runs a production-cost survey at a rotating panel of coffee municipalities. Its consolidated public export carries three aggregates per panel — variable cost, fixed cost, and renda de fatores, the imputed return on land and family labor. That is enough to ask whether a crop is paying for itself, and not enough to ask what it is paying for.

The full detail sits in CONAB's per-crop historical workbooks, which publish the entire planilha: roughly 35 line items per panel, with values per hectare and per 60kg bag, back to 2003 for arabica and 2007 for conilon. We parsed those into cost coverage (the farmgate price divided by cost, 347 panel-vintages) and cost structure (each line item as a share of its tier, 6,808 item-shares across 209 planilhas).

Those shares are ours, derived from the per-hectare column. We checked them against CONAB's own printed participação column where the sheets carry one: they agree on 1,995 of 1,997 comparable line items. Both exceptions sit in a single municipality that publishes two parallel planilhas in the same round — a limitation of our check, not a disagreement about the data.

We publish shares and ratios, never CONAB's cost levels. CONAB sits outside Brazil's open-data decree, so a transformative statistic is what we can responsibly put out. A share is also the more useful object: "fertilizer is 21% of this farm's variable cost" is a complete statement, and "R$4,625 per hectare" is not.

Three things we found in CONAB's own files

What the measurement shows Descriptive

This part is solid, and it is the part we would defend. Within CONAB's current arabica panel, fertilizer ran 31.9% of variable cost in 2020, peaked at 41.3% in 2021, and has fallen back to 21.4% in 2025. The earlier panel, 2003–2013, ran between 18.8% and 26.7% — but on a different set of farms, which is why the line below breaks rather than bridging the gap.

Right now Brazilian coffee growers are flush. The most recent reading at all 17 surveyed panels sits between 162% and 432% of total economic cost — price covering not only cash costs and depreciation but the imputed return on land and family labor. Underwater episodes are real but rare: of 344 panel-vintages with a coverage reading, 29 fall below 100% of variable cost, clustered in 2009, 2010–11 and 2013–14.

Test 1: does going underwater precede a fertilizer cut? Mis-specified

If growers respond to a broken margin by cutting the fertilizer program, fertilizer's share of variable cost should fall at the panel's next survey. It does not: 19 underwater episodes give a median change of +1.1 pp, against −0.9 pp for the 117 pairs that were not underwater. Small, and the wrong sign.

We first wrote that up as a null. On review, two objections said it was a badly built test, and both were right. The decision is made months before the margin is known — fertilizer in Brazil is routinely bought on barter, six to twelve months ahead of the harvest it serves, so the grower commits against expected earnings. We regressed against realized coverage at the survey date, a variable the decision could not have used.

And biennial bearing contaminates both sides. Coffee bears on the previous season's growth, so a heavy crop depletes the reserves that would carry the next one. That is a fact about a tree, and it does not automatically scale to a farm or a country: a grower can stagger pruning and renovation across blocks so part of the property is bearing while part recovers, and rotational pruning is ordinary Brazilian practice.

In aggregate it scales anyway. USDA's Coffee: World Markets and Trade puts Brazil at "between 40 and 50 percent" of world arabica "depending on the biennial crop production cycle," and CONAB's record shows a clean even-ON / odd-off alternation from 2002 to 2021, with national arabica production running 1.33 times higher in ON years than off. A sum of smoothed farms cannot produce a jagged country, so whatever staggering growers do, it is not enough to smooth the belt. The likeliest reason it stays synchronized is that frost and drought reset the phase everywhere at once — and the alternation duly breaks after the 2021 frost, with 2022 through 2024 failing to alternate at all.

Our coverage series inherits the cycle — through price, not yield: in ON (heavy crop) years median coverage is 137.9% with 16.1% of panels underwater, against 149.3% and 9.8% in off years. Big crop, weaker price, thinner margin. So underwater episodes are disproportionately ON-year events — and the year after an ON year is an off year with a better price.

What the cost survey does not do is track the cycle at all. No CONAB panel's assumed yield swings with it: every panel sits within ±1.4 bags per hectare across the two phases, pooled −0.37, and several print exactly 30.0 bags per hectare in every vintage they appear in. A round number repeated exactly is a budgeting convention, not a measurement.

We read that as a fact about the instrument rather than about Brazilian farms. It means the mechanical channel we would have blamed first — an off-year yield inflating cost per bag — never enters our numbers, so the phase effect above runs entirely through price. It is not evidence that real farms are smooth, and an earlier draft of this note came close to presenting it that way.

One more thing on the record. The first version of this test appeared to support the hypothesis, at −1.6 pp against −0.9 pp. It reversed when we found the test was adding two Guaxupé planilhas together, because that municipality publishes separate mechanized and semi-mechanized panels in the same round. We would not have caught it if a labor share had not come back at an impossible 118% of variable cost.

Test 2: rebuild it around the margin the grower could see Inconclusive

The barter objection is fixable, so we fixed it. For each budget we computed an ex-ante margin — the farmgate price observable some months before that budget, over the previous budget's cost per bag. Both terms were knowable when the input was being bought, which is the whole point.

If the barter story is right, the six- to twelve-month lag should carry more signal than the contemporaneous one. It carries less. Against the fertilizer share, the price at budget time gives r = +0.26 (t = 3.46); six months before, +0.14; nine months before, +0.13; twelve months before, +0.22. The profile runs backwards from what the hypothesis predicts.

We do not read that as refuting the barter story — Brazilian coffee prices are persistent enough that these lags are heavily correlated, so this design cannot cleanly separate when the decision was made. It does mean the timing objection is not what was hiding the signal. Something else was.

Test 3: the share is mostly a fertilizer price index The finding

The rival explanation is that fertilizer's share of cost has little to do with what a grower decided and a great deal to do with what fertilizer cost that year. Testing that properly took two corrections, and both mattered.

Currency. CONAB's costs are in reais and the world urea-potash blend is quoted in dollars, and the real went from roughly 0.84 to the dollar in 1995 to 5.24 today. Comparing them unconverted is comparing a Brazilian farm's budget against a number that moves for reasons the farm never experienced. Pooling. CONAB's panels sit at very different levels — irrigated cerrado spends a different share on fertilizer than a hand-picked mountain plot — so pooling lets between-farm variation drown the year-to-year signal inside each farm.

The chart is the argument. Converted to reais, the two eras occupy almost disjoint stretches of the axis — the early panel between roughly 360 and 1,000 BRL per tonne, the current one from 950 to 4,700 — so a single line drawn through both is mostly fitting the gap between them rather than the slope within either.

Corrected on both counts, the relationship is one of the strongest things in this note. Across all 197 panel-vintages the blend in reais gives a pooled r of +0.53, and the within-panel estimator +0.64 (t = 11.46); for the current era alone, within-panel +0.73 (t = 10.38).

And it is fatal to Tests 1 and 2. Correctly specified, the fertilizer price explains the share at r = +0.69, and the margin's own relationship to the share turns slightly negative at −0.29. There is no positive grower-margin signal left in this measurement at all.

We would not read that negative number as "good margins make growers buy less fertilizer." A share has a denominator: when coffee is dear a farm spends more on everything, and fertilizer becomes a smaller slice of a bigger budget without a single kilogram changing hands. That is the second reason this instrument cannot answer the question, and it is the same reason as the first — a cost share is price × quantity over a total, and we have neither the quantity nor a stable denominator.

The era gap is the part we cannot explain. Converting to reais and estimating within panels lifts every era, but it does not close the distance between them: the early era reaches +0.15 where the current one reaches +0.73, a gap of much the same size as before either correction. Domestic pass-through, contract structure and import parity have all changed over twenty years and we cannot separate them.

Three ways to bury a real relationship. Each of these is enough on its own to turn a strong result into a null, and our first pass at this test had all three running at once. Aggregating to annual medians cut 197 panel-vintages to 17 points. Mismatching currency compared a dollar-quoted price against a budget written in reais, importing exchange-rate movement the farm never experienced. Pooling farms whose fertilizer shares sit at structurally different levels let between-farm variation swallow the year-to-year movement inside each one. Together they produced a pooled +0.45 that reversed to −0.37 in the early era — a result we reported as a null, against the +0.64 in the table above. None of the three is exotic, and none of them announces itself.

Test 4: does margin show up in the crop two years out? Live thread

This test never touches the cost share, which is why it survives everything above. Skip the input side and ask directly: after a good margin, was the crop better?

Coverage in year t against arabica yield gives r = +0.33 at t+1, +0.37 at t+2, and +0.41 against the mean of both. Consistently positive, consistent across horizons, and in the direction the mechanism predicts. Two-year windows matter for a specific reason: averaging over two years is what neutralizes a two-year oscillation, so the biennial cycle is not doing the work.

The obvious objection is mean reversion — a bad crop lifts the price, which lifts coverage, and the crop recovers on its own. It is not. Yield in one year barely predicts yield in the next at all (r = −0.08), and controlling for the prior year's yield leaves the relationship essentially untouched at a partial r = +0.34.

What it is not, yet, is significant: n = 18, t = 1.38. CONAB's arabica yield series starts in 2008, so there is no more history to add. And a caveat against ourselves: coverage is dominated by price variation, so this may reduce to "price predicts future yield" — ordinary supply response, and much less interesting than a cost-driven investment channel. The test that would earn the stronger claim is whether the cost side adds anything beyond price alone. We have not run it, and after what Test 3 did to Tests 1 and 2, we are not inclined to assume the answer.

What we cannot see at all Limits

Input quantities. This is now the binding constraint, and Test 3 is what makes it precise. Kilograms of N, P and K per hectare per vintage would separate "bought less" from "paid more" in a way no cost ratio can.

Contract restructuring. If barter contracts are renegotiated when margins collapse, the severe consequence is absorbed and the input program is never actually cut. That predicts exactly what Test 1 found — and a damped response and an absent response look identical from here. The terms are private; the nearest public proxies are Banco Central rural credit renegotiation series and Plano Safra terms, both national and coarse.

What a bad year actually costs a household. Does an underwater season stop reinvestment, or stop school fees? CONAB's renda de fatores is an imputed opportunity cost on land and family labor — an accounting construct, not household cash flow. It cannot distinguish a grower who deferred fertilizer from one who deferred something that matters more. We are not able to speak to that, and would rather say so than let a cost ratio imply we can.

Whether consequences bite harder in some places. Testable in principle, not with what we hold: we have national yield outturns and municipality-level costs. CONAB's per-panel yield is a budget assumption, not a measured outturn, so there is no municipality-level realized yield to test heterogeneity against.

Open questions, genuinely open Over to you

We would rather have these argued with than agreed with.

If you work with this data and think we have misread it, we would like to hear it. Nothing here is a position we need to defend — it is a measurement we would like to make correct.

Transparency note. This article is a joint effort between people and AI. We use AI tools throughout our work — to gather and cross-check data, to help shape the analysis, and to draft and edit the writing. Every number, claim, and conclusion is reviewed by a person before publication.

The Data Behind the Analysis

Brazilian coffee cost structure, cost coverage and the weather, positioning and balance-sheet series we track across origins are queryable directly and through our MCP layer for AI-assisted analysis. If you would rather test the margin-and-fertilizer question yourself than take our dead ends for it, that is exactly what the data is for.

Explore the Data