Methodology
Measure · Seasonal shape · Not measured · Revisions · Volume derivations · Weekly ethanol · Monthly BBD · Feedstocks · D4 Balances · Expiry ladder · Scenario · Retirements · Components · Balance history · Open interest · Releases · Price references · Structures · Sources · Refresh
Measure
Gross D4 (biomass-based diesel) RIN generation from EPA's EMTS public data:
the monthly RIN-generation CSV, RIN_QUANTITY summed by production month,
filtered to FUEL_CODE D4 and sliced by RIN_YEAR, so each
vintage's RINs are tracked against that year's standard.
The benchmark is the D4 applicable volume for the tracked vintage year in EPA's final rule for 2026 and 2027 — 9.07B RINs for 2026, 9.20B for 2027 — RIN-denominated, not physical gallons; no gallon-equivalence factor applies. Straight-line pace is the applicable volume divided by 12 (≈756M RINs/mo for 2026, ≈767M for 2027). EPA sets no monthly obligation: every pace figure is an analytical benchmark.
Seasonal shape
Figure 5 overlays the same gross D4 monthly series by vintage year over a longer lookback (current plus up to five prior vintages), so a print can be read against the same calendar month in earlier years. It is the identical measure and vintage basis as the pace table — only the window differs.
The pipeline applies a lower plausibility floor to this series than to the pace series and caps the lookback — headroom for widening the window later into years when D4 ran structurally smaller, rather than something the present window needs. The strict floor still guards the years the benchmark arithmetic uses, and a failure in the overlay omits the figure rather than blocking the pace series it decorates. The dashed mean line averages only complete prior vintages. Levels are not comparable across years as a standard: each vintage ran against its own applicable volume, and the 45Z credit change (Jan 2025) and the OBBBA feedstock-origin restriction (Jan 2026) both fall inside the window. The figure shows shape, not a norm.
Not measured
Issuance, not net supply — exports, invalid RINs, and retirements are not netted out. Not a market balance, not a compliance forecast, not a price signal. No RIN or LCFS prices appear, and nothing here is investment advice.
Revisions
EPA republishes history (remedial actions, resubmissions), so past months can move. The full series is recomputed at every refresh; figures are EPA-reported as of the pull date shown in the app's status line.
Volume derivations
The RFS standards nest rather than stack: a D4 RIN can also satisfy the advanced-biofuel and total-renewable-fuel obligations, and D3/D5 nest within advanced, which nests within total. The final rule sets no standalone D6 volume — the non-advanced residual (total minus advanced) is arithmetic, not a rule.
| Category | 2026 | 2027 | Basis |
|---|---|---|---|
| Total renewable fuel | 26.81 | 27.02 | final rule |
| Advanced biofuel | 11.10 | 11.32 | final rule |
| D3 | 1.36 | 1.43 | final rule |
| D4 | 9.07 | 9.20 | final rule |
| D5 | — | — | nested in the advanced total; no standalone volume |
| D6 | 15.71 | 15.70 | implied non-advanced residual (total − advanced); not a standalone D6 RVO |
Weekly ethanol series
Three weekly series give supply context: oxygenate-plant fuel ethanol production (thousand b/d), fuel ethanol ending stocks (thousand barrels), and refiner/blender net input of fuel ethanol (thousand b/d), pulled from the EIA API v2. All three come from the Weekly Petroleum Status Report, released Wednesdays 10:30 ET with a ~5-day lag. Ethanol is D6 supply context only: no weekly biomass-based diesel series exists — biodiesel and renewable diesel are reported monthly.
Monthly BBD supply
Two production series from EIA's Petroleum Supply Monthly supply-and-disposition
data (petroleum/sum/snd): biofuels-plant net production of biodiesel
(M_EPOORDB_YNP_NUS_MBBL) and of renewable diesel
(M_EPOORDO_YNP_NUS_MBBL). Native units are thousand barrels per month
(MBBL); gallons are derived as MBBL × 1,000 × 42. These are
physical volumes — not RIN counts — and no gallon-to-RIN equivalence factor is
applied or implied; they are not comparable to the issuance figures elsewhere in
the app.
Capacity comes from EIA's Monthly Biofuels Capacity and Feedstocks Update
(petroleum/pnp/capbio), in million gallons per year of annualized
nameplate: biodiesel (M_EPOORDB_8BDPC_NUS_MMGL) and "renewable diesel
and other biofuels" (M_EPOOROO_8BDPC_NUS_MMGL). The second is a blended
bucket — renewable jet, heating oil, and naphtha capacity are folded in — so implied
utilization (latest month annualized ×12 ÷ nameplate) is computed for biodiesel
only; a renewable-diesel ratio against the blended bucket would mislead.
Both reports release the same day, monthly with a ~2-month lag (EIA Petroleum Supply Monthly). PSM figures are preliminary until the annual Petroleum Supply Annual, so the full history is refetched at every refresh; the view flags itself overdue once ~100 days pass from the end of the latest reported month.
Feedstocks
Monthly feedstock consumed at US biofuel plants, from EIA's Monthly Biofuels
Capacity and Feedstocks Update (petroleum/pnp/feedbiofuel), in MMLB —
million pounds consumed in the month. Six categories report every month and are
tabled and charted individually: soybean oil (M_EPOOBDSO_YIFBP_NUS_MMLB),
corn oil (M_EPOOBDCNO_YIFBP_NUS_MMLB), canola oil
(M_EPOOBDCO_YIFBP_NUS_MMLB), tallow
(M_EPOOBDFSTL_YIFBP_NUS_MMLB), yellow grease
(M_EPOOBDFSYG_YIFBP_NUS_MMLB) and white grease
(M_EPOOBDFSWG_YIFBP_NUS_MMLB). Four minor oils-and-fats categories —
other vegetable oil, poultry fat, other waste oil/fat/grease, and algae oil — are
reported too rarely to chart and are shown as one "other" row — which carries a level
and a share but no change figure, since its own composition is what moves.
The two subtotal rows — vegetable oils (soybean, corn, canola) and waste fats and greases (tallow, yellow grease, white grease) — are sums of those six, so they carry the same monthly completeness and are directly comparable across months.
Scope, and what "total" does not mean. The route EIA publishes these on covers every biofuel plant, not only biomass-based diesel: corn for ethanol appears on it and runs about seven times the entire oils-and-fats pool. Corn, grain sorghum and the recycled and other-biofuel categories are excluded by name. What remains is the oils, fats and greases pool — which is not the same as a biomass-based diesel pool. EIA also publishes biodiesel-plant and renewable-diesel-plant splits, but they are withheld in most months and round independently of the totals, so they are not used and nothing here is filtered by plant type; oils consumed by renewable jet and other non-BBD units fall into these same categories. EIA's published category totals are used as published.
Withheld figures, and like-for-like change. EIA returns a month with no value where a figure is withheld. Those are carried as no value and never as zero, so the level shown for the total is the sum of what was actually reported, not an estimate of the pool, and each month's withheld list is recorded alongside its total. The total's month-on-month and year-on-year changes are computed like-for-like — over only the categories EIA reported in both of the two months being compared — rather than by dividing two differently-composed totals. Where those two bases differ, the change is marked, because the change and the printed level then do not divide into each other. The six named feedstocks and the two subtotals report every month, so their own changes are straight comparisons.
Origin is not in this data. No series on this route carries a domestic/imported split, so a move in tallow or yellow grease says nothing on its own about where the material came from, and nothing here speaks to the 2026 45Z feedstock-origin restriction.
Relationship to the other views. Feedstock consumed feeds fuel produced, which feeds D4 RIN generation. That is stated as a relationship and nothing more: yields differ by feedstock and by process, and D4 is a mixed-equivalence-value category, so no figure on this view is multiplied through to gallons of fuel or to RINs. Nothing here is a supply forecast.
Naming. Labels follow EIA's categories rather than desk shorthand. EIA publishes no "used cooking oil" category — yellow grease is its rendered-UCO category, and white grease is a separate, much smaller one — and EIA does not disaggregate "corn oil" further.
This release lands the same day as the Petroleum Supply Monthly data behind
Monthly BBD supply above, monthly with a ~2-month lag, and is revisable on the
same terms, so the full history is refetched at every refresh. The view flags itself
overdue once ~100 days pass from the end of the latest reported month. Series ids,
coverage and gotchas were fetch-verified against the live API
(docs/feedstock-research.md).
D4 Balances
EPA's available-RINs file reports cumulative RIN balances by vintage, D code, and assignment status. "Available" is the unlocked balance, per the identity Generated = Retired + Locked + Available (EPA definitions).
No coverage ratio is published. Dividing available RINs by an applicable volume overstates what these balances can say: at most 20% of a year's obligation may be met with prior-vintage RINs (40 CFR 80.1427); prior-vintage availability falls as pending compliance retirements post; the balance mixes assigned and separated RINs; and D4 RINs also serve the nested advanced and total-renewable obligations. Any single ratio built on these balances would mislead, so the app reports the balances and stops there. For the same reason the all-vintage available balance is not comparable to a modeled year-end carryout (such as farmdoc daily's 0.20B-RIN 2026 D4 estimate): a carryout nets out exports, invalidations, and compliance retirements before they post, while these balances reflect them only once posted — the two figures answer different questions and neither is derived from the other.
Expiry ladder
Table 16 reads Table 7's reported balances against the two-year vintage window: a vintage-N RIN is valid for compliance in year N and year N+1 (40 CFR 80.1427(a)(6)), so each vintage row lists the compliance years it can still serve and the date its window ends. It is bookkeeping on reported figures — no model, no forecast, no projection.
Deadlines are cited, never derived. The report dates shown — December 1, 2025 for the 2024 compliance year and September 1, 2026 for 2025 (both extensions), March 31, 2027 for 2026 — are the ones EPA has published. For 2027 EPA publishes a formula ("next quarterly reporting deadline after the 2028 standards are effective"), not a date, so that row says "deadline not yet published" rather than resolving it, and the countdowns move when EPA moves. EPA's reporting-deadlines page is refetched on the weekly refresh and any edit to its RFS table posts to the change-alerts feed; the cited dates themselves stay hand-verified. The window end is keyed to the annual compliance report, not the later attest engagement, because that report is the filing whose retirements post under EPA's own "Demonstrate Annual Compliance" reason — the taxonomy the Retirements view already uses.
What the table refuses: the vintages are never summed. A total across mixed-window vintages reads as coverage of the applicable volume, and both the 20% prior-vintage cap (§80.1427(a)(5)) and balances gross of retirements not yet posted break that reading. No headroom against the cap is computed either — that would put a derived usable-RIN figure beside the balances, the coverage construct this page refuses. Expired is also not worthless: vintages past the window stay on EPA's books and remain retirable for reasons other than annual compliance.
Scenario
The Scenario view is arithmetic on assumptions you set, not a forecast. Two bases are offered and both stay visible:
Run-rate — year-end = YTD + an assumed monthly rate × remaining months. Transparent and checkable in your head; it is the default and the thing any other estimate has to beat.
Seasonal shape — D4 issuance is not flat across the year, it back-loads. Each complete prior vintage is expressed as twelve shares of its own total; the mean of those shares projects the year from the share of it already reported (year-end = YTD ÷ the shares of the months so far). Nothing is fitted beyond the shape, which is a normalised copy of history.
The margin assumption scales the remaining months by a percentage you choose. It is deliberately not a fitted relationship between production margin (BOHO) and issuance. Any such coefficient would have to be estimated across the January 2025 45Z credit change and the January 2026 feedstock-origin restriction, each of which re-priced the economics of running a marginal gallon; the result would carry an error wide enough to be meaningless while looking authoritative. A stated assumption is honest about being one. Capacity utilisation is not a lever for a related reason — capacity is roughly flat, utilisation is not the binding constraint, and EIA's renewable diesel capacity series is a blended bucket that cannot yield a clean ratio.
Table 14 reports the shape's out-of-sample error: each complete vintage
is held out and projected from a shape built on all the others, never on itself. The
year-end figure is stated to ±0.5B rather than to the backtest's percentages, because
that backtest spans few vintages and measures error across one structural break as a
guide to a projection running across another. The band is wider than the spread between
the bases — the measured spread across bases is comparable to the band itself — which
is the point: the ordering of the scenarios carries more information than any single
level. Full method and derivation:
docs/generation-model-design.md.
Throughout, the comparison to the applicable volume is gross issuance against a volume — an issuance gap. It is not a compliance balance, not a market balance, and EPA sets no monthly obligation.
Retirements
EPA's retirement file breaks D4 retirements down by RIN vintage and by
retirement reason, summing RIN_QUANTITY. The reason column is the
useful axis: "Demonstrate Annual Compliance" is the RVO-retirement line, and the rest —
reported spills, contaminated fuel, volume-error corrections, invalid-RIN remediation,
enforcement obligations, non-road and heating-oil uses — are different events entirely.
A single retirement total blends them, so the view keeps compliance separate and itemises
everything else beneath it.
Who retires is not published anywhere. The file carries no retiring-party column: no name, no party type, no identifier. EPA treats party identity as confidential business information. Category-level totals (aggregated refiner/importer/exporter, annual) exist only inside EPA's Annual Compliance Data dashboard, which serves no fetchable file and is not redistributable as data, so the view links out to it rather than reproducing it. What/when/why is answerable; who is not.
The figures are cumulative since each vintage opened, not monthly. Monthly flow is derived, by differencing consecutive published snapshots over the vintages present in both — EPA publishes no monthly retirement figure. Negative flow is an EPA revision, not an un-retirement. As with the balance history, flow history begins with the first snapshot this tool pulled and cannot be back-filled.
One caveat is recorded rather than hidden: the file's cumulative-to-date structure is taken from source research and had not been byte-confirmed when the pipeline was written. Each run checks it — a material fall in cumulative totals is what a per-month file would look like, and that fails closed rather than publishing a flow series computed the wrong way. Two limits on that check, both stated in the data file itself: it can only run once a second month has been pulled and only over vintages present in both snapshots, so the payload records what it actually compared on each run rather than asserting a guard ran; and it detects a fall past a tolerance that absorbs ordinary EPA revisions, not any fall at all. The Retirements view prints that record.
Raw balance components
Table 15 publishes the components — cumulative gross generation, cumulative retirements, locked, and available — as separate figures, each carrying its own source and as-of date, so they can be differenced deliberately rather than implicitly.
One accounting spine. The first four rows come from a single EPA file and satisfy a single EPA identity: Generated = Retired + Locked + Available. The retirement reason split comes from a different file with its own as-of date and vintage coverage, so it is presented as a breakdown of the retired total, never as a further deduction from it. Netting both sources would subtract the same retirements twice — the available balance has already removed them.
No surplus or deficit is computed, here or anywhere. Differencing these components into a single bank figure, or charting that figure against an applicable volume over time, would assert a market balance. The chart's shape makes that claim whatever a footnote says, and this page is explicitly not a market balance: generation is gross, exports and invalidations are not netted, prior-vintage use is capped at 20% of an obligation (40 CFR 80.1427), and D4 RINs also serve the nested advanced and total obligations. The components are published; the arithmetic between them stays the reader's.
Balance history
Figure 6 is the reported layer, reconstructed from this tool's own published snapshots: every version of the balances file the site has ever served is in its git history, so walking that history yields one point per EPA as-of month, each being exactly what EPA reported when it was pulled. Nothing is modeled, interpolated, or back-filled.
History therefore begins with the first snapshot the tool published and grows one point per month; the figure states that start month from the data rather than this page naming it. It cannot be extended backwards — EPA publishes only the current cumulative snapshot, so months before this tool started pulling were never captured.
Implied retirement flow is the change in cumulative retired RINs between consecutive snapshots, computed only over the vintages present in both: the snapshot keeps a rolling detail window, and differencing across a roll would read the dropped vintage as a retirement. Negative values are EPA revisions, not un-retirements. Retired and locked totals cover the detail vintages only, because EPA's older-vintage rollup publishes an available figure alone.
What this figure deliberately does not draw: a bank-versus-obligation line, or a surplus/deficit series over time. The shape of such a chart asserts a market balance, which is exactly what this page is not. The raw components are published as separate stamped series so they can be differenced deliberately rather than implicitly.
Open interest
Source is the CFTC's Commitments of Traders, disaggregated, in both published formats: futures-only and futures-and-options-combined. Positions are as of Tuesday's close and publish the following Friday at 15:30 ET. The report date is a Tuesday except when that Tuesday is a holiday, in which case CFTC moves the snapshot to the Monday — four such weeks in these contracts' history.
These are ICE contracts, and that is the whole slate. Exactly two RIN
contracts have ever appeared in the report: D4 Biodiesel RINs OPIS current-year
(0063DG) and D6 RINs OPIS current-year (0063CW), both on ICE
Futures Energy Division, both 50,000 RINs per contract. No CME contract appears in any
week, so nothing on this page describes CME's RIN slate; its settlements, volume and open
interest live on CME's own
product pages. The pipeline discovers the contracts each run rather than hardcoding
them, and parses the RIN size out of CFTC's units string, so a relisting stops the run
instead of silently rescaling the notional figures.
Why open interest can be republished here at all. Exchange open interest is licensed market data — CME's data terms name open interest explicitly, and ICE forbids redistributing ICE information. The figures on this page are not the exchanges': the CFTC compiles them from its own large-trader reports and publishes them as a US government work, in the public domain. The publisher, not the exchange, is what makes the difference, which is why every figure here is attributed to the Commitments of Traders.
The contract references the current-year vintage, and that vintage steps over each January. CFTC's contract names say so — "CURR YR" and "CURRENT YEAR" — and the data shows what it costs: the two largest weekly open-interest falls in each contract's whole history are early-January weeks (D4 −39.0% and −20.7%; D6 −49.9% and −22.6%), an order of magnitude beyond anything a market move has produced. Those are two different vintages' books, not positions that moved. The figures therefore break the line at each turn and mark it with a vertical rule rather than drawing through it, and the positioning table names the vintage it is describing. A week-over-week change across a turn is not comparable, and nothing on the page computes one.
That step is not liquidation. ICE lists a separate Previous Year
contract for each of these (D4 symbol RIL, against RIK and
RIN for the current-year D4 and D6), and the Previous Year contract does not
appear in the Commitments of Traders at all — only the two current-year contracts do. So
exposure to the outgoing vintage can carry on in a product this page does not cover. What
falls away in January is the boundary of what is being counted, not evidence that
positions were closed. ICE's published specification documents no roll or transfer
mechanic at the year turn, and the December contract month expires in the same week the
designation moves, so the page states the boundary and does not explain it further.
The series is intermittent by design. A contract appears in the COT only in weeks it has 20 or more traders holding reportable positions. The D4 contract has been absent for 13 weeks since it first appeared in February 2023, including a twelve-week gap in spring 2023. A missing week is a trader count falling below a threshold, not positions going to zero, and the figures count reported weeks rather than drawing a line across the hole. The tables state weeks reported and weeks absent for each contract.
Trader categories are CFTC's classification of the reporting trader, not a reading of intent. In CFTC's words: a producer/merchant/processor/user "predominantly engages in the production, processing, packing or handling of a physical commodity and uses the futures markets to manage or hedge risks associated with those activities"; a swap dealer "deals primarily in swaps for a commodity and uses the futures markets to manage or hedge the risk associated with those swaps transactions", whose counterparties "may be speculative traders, like hedge funds, or traditional commercial clients"; a money manager is a registered CTA or CPO, or an unregistered fund identified by CFTC; other reportables is every remaining reportable trader. Spreading is a computed amount of offsetting long and short positions held by one trader, and producer/merchant positions are reported by long or short only, with no spreading column.
Each leg carries its own week-over-week change rather than a single net delta. The legs move separately and often by similar amounts in the same week — a net change of −3,176 that is really −1,687 of long coming off against +1,489 of short going on reads as one large directional move when it is two, and seeing which leg moved is the reason to read a disaggregated report at all.
The futures-and-options-combined report gets its own table, and only where it changes the answer. A contract earns it when options add at least 5% of combined open interest. D6 clears that easily — roughly 40% of its combined book is options, and they move the read materially: in the week ending 2026-07-21, managed money was net +2,460 on futures and +960 combined. D4's options book is under 1% of combined, so a combined column there would restate the futures column six times to make the point that there is nothing in it; the contract table's options share carries that fact in one cell instead.
Net positions are printed without the above/below colouring used elsewhere on the site. There it marks a figure against a pace benchmark, a genuine two-sided comparison. A hedger being net short is the ordinary state of this market, not an outcome, and tinting it red while tinting a fund's net long green would put a directional read on the one view most easily mistaken for one. The sign is already in the number.
Because spreading counts on both sides, the four categories plus non-reportables plus spreading sum to open interest on each side. CFTC publishes these columns with small rounding: across the full history of both contracts the worst discrepancy is two contracts, so the pipeline validates the identity to a tolerance rather than to equality. Week-over-week changes are CFTC's own figures, not differences computed here — in a week with no comparable prior report CFTC omits every change column, and the tables show an em-dash rather than a fabricated move.
What this is not. Open interest is a stock of open positions in one listed futures contract; it is not RIN issuance, not RINs outstanding, and not a market balance. Notional RINs are simply contracts times 50,000, stated so the figure is RIN-denominated like the rest of the tool, and it is stated once, in the contract table, because it is a unit conversion and not a finding. It is not compared against the applicable volume, because dividing a stock of open positions by an annual flow produces a coverage-style ratio that means nothing. No price appears: the contracts settle against OPIS assessments, which are proprietary, and the COT carries positions only.
Release calendar
Two classes of date appear, and nothing else. Computed recurring weekdays: EIA's WPSR on Wednesdays, and EPA's EMTS on the 3rd Thursday of the month following the data month. The EMTS date is an observed cadence — EPA has posted prior-month data on the 3rd Thursday 8-for-8 over the trailing year but publishes no committed schedule, so it is labeled expected and worth verifying on release. The pipeline never relies on it: it discovers the real file each run and fails closed if it is not there.
Curated USDA dates come from site/data/releases.json, the
one hand-authored file under site/data/. USDA publishes these dates a year
ahead, so they are transcribed from the official calendars rather than scraped; each
report carries its own source link and the file carries its curation date. Three rows
(Crop Production, its Annual Summary, and Acreage) cite CME's published 2026 USDA report
calendar because the NASS pages were unreachable at curation time. The list covers the reports that move D4
feedstock markets and needs a hand refresh once USDA posts the next year.
Crush reports (Oilseed Crushings, Grain Crushings) describe data roughly two months older than their release date, so the calendar labels the data period as well as the date. No date anywhere on this calendar is estimated or interpolated.
Price references
No figure anywhere in this tool is a price, a spread, or a mark. Table 21 on the Releases view lists where prices are published and nothing else; none of it is fetched, stored or derived here.
Every free RIN price in circulation runs into one of three walls. EPA's RIN Trades and Price Information — volume-weighted averages of separated RIN transfers by D code, weekly by transfer date, back to 2010 — is public domain as a US government work, but lives inside an embedded Qlik Sense application whose export is a client-side button, with no file URL, API or bulk dataset behind it. Exchange figures are enumerated proprietary market data even where a site displays them without charge, and the contracts settle against assessments carrying their own rights on top. Everything else free is licensed from OPIS or Argus underneath, or a repackaging of EPA's series.
Nodal Exchange lists physically delivered D3–D6 RIN futures and belongs in that second
group; it has no row in Table 21 only because no link to it has been verified here.
Option by option, the research is docs/pricing-feasibility.md; the parallel
finding for exchange open interest — why CFTC's Commitments of Traders can be republished
where an exchange's own screen cannot — is in docs/oi-research.md and stated
under Open interest.
Structures view
The view lists recurring structural relationships in the RFS program — nesting substitution between D codes, the two-year vintage window and 20% prior-vintage allowance, production-margin linkage to feedstock and distillate markets, deadline-driven compliance demand, and step-wise regulatory repricing — as defined in regulation or documented in the public record; the production-margin and event-repricing framings are market convention, not rule. Each structure's mechanism and its dated, cited episodes sit behind that row's Details control.
The visible cell for each structure is the current value of the drivers behind it, with source and as-of — descriptive state, not a signal. Nothing is scored, ranked, or marked active: there is deliberately no condition light or status chip, since a light beside a named structure is a directional call however it is labeled.
| Structure | Driver shown | Source |
|---|---|---|
| D4–D6 nesting | Each code's YTD gross issuance as a share of its own applicable volume, and the difference in percentage points. This is issuance pace, not a price spread — the tool carries no RIN prices, and the D6 figure divides by the implied non-advanced residual, not a standalone RVO. | EPA EMTS |
| Vintage carry | EPA-reported available (unlocked) D4 balance, all vintages and the two vintages eligible toward the current year. Gross, not net: before the 20% prior-vintage cap and before pending compliance retirements post. Whether the usable bank is thin needs a net figure EPA does not publish, so no tightness reading is derived from this number. | EPA available RINs |
| BOHO / production margin | Monthly physical BBD production. The margin itself is absent: neither leg of the bean-oil-over-heating-oil spread has a free redistributable series, so no BOHO value is published. Production is a volume, not a margin. | EIA PSM |
| Compliance-window seasonality | Days to the next EPA compliance deadline — a date on a calendar. The clock runs only on deadlines EPA has already published and that are cited in the episode list; it runs dry rather than projecting the next one. | EPA |
| Regulatory-event repricing | Days to the next expected EPA EMTS release (computed 3rd Thursday, verify on release). Set 3 rulemaking, SRE adjudications and court rulings have no published dates and none is projected. | computed |
The view states no directional views, recommends no positions, and carries no price levels. Historical episodes are dated events cited to their public sources; entries marked "modeled" are analyst projections (e.g. farmdoc daily's balance-sheet model), not EPA figures. Nothing in that view — or anywhere in this app — is investment advice.
Sources
EPA RFS public data hub — EMTS RIN-generation CSV, published monthly: prior-month data on the 3rd Thursday of the following month (~16–21 days after month-end).
EPA Final Renewable Fuel Standards for 2026 and 2027 — applicable volumes.
Refresh
Weekly automated check; the app updates when EPA posts a new month. A staleness flag appears when more than 75 days have passed since the start of the last publication month.