// 00GRINDER · Coffee Futures Buy-Zone Workflow

GRINDER

Pre-Market Snapshot · 16 Contracts · One Refresh

An autonomous pre-market screen for coffee-futures buyers. Every morning before the bell — today's best buy zone and the optimal time window for the front month plus the next seven contracts of Arabica (KC) and Robusta (RC). Sixteen contracts. One refresh. Honest confidence.

GRINDER is the workbench the desk sits at before the open. Click REFRESH and the agent pulls the KC and RC forward chains, fits a 35th-quantile ATR alpha against 120 sessions of back-adjusted continuous data, intersects each target with a floor-trader pivot guardrail, and reports the densest 60-minute window in which the session low has historically occurred. Each of the sixteen rows carries a target price, a buy band, a bucketed confidence tag (HIGH · MED · LOW — never a fake percentage), and the time window with its observed hit rate. Where Robusta data is proxied from KC, the row says so explicitly — a DATA-PROXIED badge surfaces every inferred input. The model fits in ~6–9 seconds, runs from a desktop browser, and saves an audit-trail snapshot every refresh so any decision can be replayed against the inputs it was made with. Sibling workflow to WARREN — same Lualdi design language, different domain.

// 01Why Coffee Desks Need It

The pre-market screen a quant team would build — for a desk that doesn't have one.

Coffee procurement desks live between two clocks. The roaster's blend calendar runs in weeks. The futures market runs in minutes. Between them sits the question that determines the year's coffee P&L: at what price, on what day, in what window, should we bid? Most desks answer that question with a chart, a hunch, and a phone call to a broker. GRINDER answers it with a fitted alpha, a pivot guardrail, an empirical time-of-day distribution, and an audit trail — every morning, in the time it takes to drink the first espresso.

// REASON 01

Sixteen contracts, every morning, in one screen

Front month plus the next seven for both Arabica (KC) and Robusta (RC). Sixteen rows, sixteen targets, sixteen bands, sixteen time windows. The desk no longer triages which contracts to look at — the workflow looks at all of them, every refresh, before the bell.

KC + RC · Front + 7 Deferreds
// REASON 02

A target with a band — not a single number

Every target is published with a ±0.15·ATR band and an intersection against the [S2, P] pivot guardrail. The output is a range the desk can actually bid into, with a floor that respects yesterday's structural support — not a single point estimate that pretends to a precision the model doesn't have.

ATR-Quantile · Pivot Guardrail
// REASON 03

Honest confidence — buckets, not percentages

HIGH, MED, LOW. Three booleans: quiet volatility, small overnight gap, target inside the pivot guardrail. The desk reads the bucket and knows what it's looking at. We do not display a calibrated probability because we have not earned the right to: with 120 sessions of fit data, a bucket is honest and a percentage is theatre.

HIGH · MED · LOW
// REASON 04

Time-of-day window — when the low has actually printed

An empirical histogram of when the daily low has occurred on 1-minute bars over the last 5–7 sessions, smoothed with a triangular kernel. The densest 60-minute window is reported alongside the observed hit rate. The desk knows when, not just where, to be ready.

Empirical · 60-Min Window
// REASON 05

Every input visible, every refresh replayable

A click on any row opens the dossier drawer — the model inputs, the pivot levels, the ATR, the alpha quantile, the session sample for the time-window histogram, and a Haiku-written desk note that reads the row in plain English. Every refresh is snapshotted; any decision can be replayed against the inputs it was made with.

Audit Trail · Replayable
// REASON 06

Where data is proxied, the row says so

Robusta deferred-history is not yet freely available. RC's alpha is proxied from KC continuous, the time window is proxied from KC=F intraday, and the RC-front ATR is a one-day true range. Every substitution surfaces as a DATA-PROXIED badge on the row. The desk sees exactly which inputs are first-class and which are inferred — no silent fallbacks.

DATA-PROXIED Badges
// 02The Model

Three stages, computed every refresh, under ten seconds end-to-end.

GRINDER is a deterministic engine on top of a small, well-behaved statistical model. Every input is observable. Every step is replayable. The published row is the consequence of the recipe, not the recipe.

01

Data Pull

KC forward chain from Investing.com's server-rendered table (eight contracts). KC daily OHLC history from yfinance — KC=F for the continuous front, KCxxNN.NYB tickers for each deferred. KC intraday 1-minute bars for the time-window histogram. RC front from Investing.com. All cached with a TTL appropriate to the refresh cadence; cache misses surface explicitly.

02

Alpha & Buy Zone

For each contract: α = q35((open − low) / ATR14 | gap_sign) over 120 sessions of back-adjusted continuous data. Target = open_proxy − α · ATR14_contract. Buy zone = [target − 0.15·ATR, target + 0.15·ATR] intersected with [S2, P] — floor-trader pivots from yesterday's H/L/C. The pivot guardrail caps the band so the model never recommends a bid below structural support.

03

Confidence & Time Window

Three booleans → bucket: ATR percentile low, |gap|/ATR < 0.4, target inside [S2, P]. 3/3 = HIGH, 2/3 = MED, ≤1/3 = LOW. Time window = empirical histogram of the daily-low timestamp on 1-minute bars over the last 5–7 sessions, smoothed with a triangular kernel. Densest 60-minute window reported with observed hit rate.

// 03Inside the Console

The operator surface — what the desk actually sees.

GRINDER runs in a desktop browser. One screen, one refresh button, three tabs. The dense-grid canvas is a Lualdi design language signature — terminal-grade, instrument-grade, built for an operator who already knows what they're looking for.

// SURFACE 01

The Snapshot Table

Sixteen rows — eight KC, eight RC — keyed by contract month. Per row: target price, buy band, confidence bucket, time window, hit rate, and the badges that flag proxied inputs. Sort by confidence, by month, by contract. Click any row to open the dossier. The whole snapshot is timestamped with UTC, age, and the model version that produced it.

16 Rows · One Refresh
// SURFACE 02

The Dossier Drawer

Click a row, the drawer slides in. Inside: every model input — yesterday's H/L/C, the pivot levels, the ATR(14), the gap, the alpha quantile, the time-window histogram with its session sample — plus a Haiku-written desk note (Claude Haiku 4.5) that reads the row in plain English. Every snapshot is saved to disk; any decision can be replayed against the inputs it was made with.

Inputs · Notes · Replay
// 04Who GRINDER Is For

Desks that buy coffee and want their first opinion before the open.

// PROFILE 01

Roasters & blenders

Speciality and commercial roasters with active hedging programmes against forward sales. GRINDER's row is the morning input the procurement manager reads before any bid is placed — sized against the blend coverage forecast already produced by ORIGINS.

// PROFILE 02

Importers & trading desks

Green-coffee importers and proprietary trading desks running a futures-overlay against physical inventory. GRINDER's deferred coverage matters here — the desk hedges across the curve, not just the front, and reads sixteen rows rather than one.

// PROFILE 03

Family offices & commodity allocators

Single-family offices and macro allocators with coffee exposure as part of a broader softs book. GRINDER's audit trail and bucketed confidence make it auditable for an investment committee that asks "why did we bid there, on that day, in that window?"

// 05FAQ

What desks ask before opening the console.

Is GRINDER a signal or a research tool?
Research, not signal. GRINDER produces a price band and a time-of-day window. It does not place orders, does not size, does not chase. The desk reads the row, decides, and bids through their broker. The workflow carries the model; the operator owns the trade.
Why a 35th-quantile alpha?
The 35th quantile of (open − low) / ATR captures the typical drawdown from open to session low without chasing the tail. The q35 produces a target that is reached on roughly two of every three sessions in the fit window — aggressive enough to matter, conservative enough not to over-promise. The q35 was selected empirically against the back-adjusted continuous series; the sensitivity analysis is in the Phase-0 spike notes.
Why bucketed confidence rather than a probability?
With 120 sessions of fit data and three boolean conditioning variables, a calibrated probability would imply a precision the model does not have. A bucket — HIGH, MED, LOW — communicates the right amount of confidence with the right amount of uncertainty. The desk reads it and acts. We will publish a percentage when the sample size and out-of-sample validation warrant it. Not before.
What about fundamental shocks — Brazil frost, Vietnam typhoon?
Statistical bands break in fundamental shock regimes. The model cannot read the news. The desk must. GRINDER is a pre-market screen — it tells you where the band is given recent volatility and structure. The decision to override or skip on a shock day belongs to the human in the loop.
Why is Robusta partial in v1?
No clean free EOD-history source for RC deferreds has yet been validated. In v1, RC's alpha is proxied from KC continuous, the time window is proxied from KC=F intraday, and the RC-front ATR is a one-day true range. Every substitution surfaces as a DATA-PROXIED badge on the row — the desk sees exactly which inputs are first-class and which are inferred. Real RC-deferred sourcing is on the v2 roadmap.
Does it integrate with ORIGINS?
They sit next to each other in the coffee stack. ORIGINS answers how much to buy — pressure-driven demand, blend coverage against forward demand, supplier scoring, 90-day cashflow. GRINDER answers at what price and in which window. The two outputs compose: ORIGINS sizes, GRINDER prices.
How do I get access?
Currently in private beta with a small set of roasters, blenders, and importers. Access is by introduction or referral — send a brief through the engagement form on the Contact page. For a private deployment configured to a desk's own universe — other softs, hard commodities, FX, energy spreads — the engagement desk handles scoping and onboarding.
//Engagement

Want GRINDER on your morning desk?
Open a conversation about private beta access or a private deployment.

Private beta access by introduction · Private deployments via the engagement desk · Response within two business days

Open a Conversation