Zum Inhalt springen
← All coverage

Coverage note · Corporate Finance · Upstream Energy · Honest ML · Agentic AI

ERDA — Upstream Capital-Allocation Intelligence

Can public data alone tell you whether an offshore block is worth drilling? Three layers — market terminal, exploration record, agent committee — and a pre-registered falsification gate that the ML model honestly failed.

Personal projectHugging Face SpacesDemo live · live from Hugging Face

Key metrics

Wildcat outcomes harmonized32,595 · 5 regulators (US GoM, NO, UK, NL, AU) · 50+ years · oil/gas/dry
Falsification gatefailed ×2 → honest stop · 0.618 vs 0.635 pooled PR-AUC under leave-one-province-out spatial CV; no heatmap ships
Memo citation coverage100% · all 5 showcase memos; quant-hash identical across narrators (LLM never touches a number)

1. Deterministic core (economics engine + raster math) is pure Python — no network, no unseeded randomness, no LLM; the golden-case DCF/EMV tests were written before the engine. Every persisted number carries {source_id, retrieved_at, source_url, transform_version}. The model faced a pre-registered bar (beat the distance-to-discovery baseline under LOPO spatial CV with a 50 km leakage buffer, on both label sets) and the bar never moved: attempt 2 was a pre-stated calibrated-pooling refinement, applied identically to model and baseline. It lifted the model and flipped the clean subset to a win — and still failed on primary, so the stop stands.

The problem

An oil major's "where do we drill?" decision fuses three things that rarely live in one system: what a barrel is worth (market), where exploration has historically worked (the well record), and whether a specific block pencils economically (the memo). ERDA rebuilds that chain from free public data only — EIA, OPEC, futures strips, five governments' well registries, global geophysical grids.

The trap in "AI for exploration" is confident cartography: a neural net colors the ocean and calls it prospectivity. Under spatial cross-validation most such maps have no skill beyond "drill next to old wells" — they memorize geography. ERDA makes that test the architecture: a pre-registered falsification gate sits between the model and the map, and losing it means no map ships.

Architecture

  1. 01

    Market terminal (Layer 1)

    15 public sources reconciled through pandera contracts; futures curve → DCF price deck; inventories, OPEC+ compliance, a Discovery Monitor. Every panel number renders a provenance chip {source_id, retrieved_at, source_url, transform_version}.

  2. 02

    Exploration record (Layer 2)

    32,595 wildcat outcomes harmonized from 5 regulators (BOEM/BSEE, SODIR, NSTA, NLOG, NOPIMS) with an excluded-class policy and per-source label maps, joined to a 14-channel 0.05° geophysical raster stack (gravity, magnetics, sediment, heat flow) in Zarr.

  3. 03

    Falsification gate (§9.8)

    LightGBM under leave-one-province-out spatial CV with a 50 km leakage buffer, judged against a distance-to-discovery logit baseline on pooled PR-AUC — a bar stated in code before the run. Failed twice (0.618 vs 0.635 on attempt 2); the negative result renders as a first-class table on /validation and the map ships wells + 7,673 GEM global fields instead of a fake heatmap.

  4. 04

    Deterministic economics engine

    Test-first DCF/EMV/fiscal engine with seeded 10k-run Monte Carlo — pure Python, import-pure, golden-case fixture written before the implementation; property tests enforce monotonicity (price↑→NPV↑, Pg↑→EMV↑).

  5. 05

    Nine-agent committee (Layer 3)

    LangGraph: six parallel section agents (geoscience, engineering, fiscal, governance…) → economist → red team → chair. Agents call typed tools; tools return numbers; the memo template interpolates them. Streams node-by-node over SSE from a map click.

  6. 06

    Demo that cannot break

    The public app boots from a frozen, content-hashed snapshot (SNAPSHOT badge tells the truth); web on one HF Space proxying server-side to the API Space — no client keys, no CORS, LLM key server-side only.

Key tradeoffs

LLM narrates, code calculates — no model call ever performs arithmetic.

WhyThe memo's quant-hash is identical whether prose comes from an LLM or a labelled template: proof the numbers cannot be touched by the narrator.

Ship the failed gate as a feature, not a footnote.

WhyA prospectivity map with no demonstrated skill is a liability in front of energy-finance professionals. The two-attempt negative result — with the bar never moving — is the credibility story.

Pg is user-supplied and every memo says so.

WhyThe model never earned the right to supply it. Honest inputs beat manufactured confidence in a screening tool.

Frozen snapshot mode for the public demo.

WhyFree public APIs flake; a demo that dies mid-scroll costs more than stale-but-honest data. A LIVE/SNAPSHOT badge states which mode is running.

Eval results

0.618 vs 0.635
Spatial-CV gate (primary)

Pooled PR-AUC, GBM vs distance-logit baseline, 14 LOPO folds, 50 km buffer, within-fold rank-calibrated pooling (pre-stated refinement, applied identically to both). Baseline wins → gate failed.

0.418 vs 0.397
Spatial-CV gate (clean ex-BOEM subset)

Same protocol on true per-well outcomes only: the model wins the clean subset — but the gate requires both sets, so the stop stands. Moving the bar post-hoc would be the exact dishonesty the gate exists to prevent.

100% citations · identical quant-hash
Memo integrity

All five showcase memos (3 GO / 1 CONDITIONAL / 1 NO_GO) at full citation coverage; deterministic re-runs reproduce the quant-hash bit-for-bit across different narrators.

425 passing
Test suite

Golden-case engine fixtures, property tests, spatial-CV harness, label harmonization, map endpoints, memo determinism — plus 8 Playwright E2E specs including map-interactive-under-2s.

Production proof

The artifact that keeps the numbers honest: the eval harness and monitoring gates that run in CI, not a one-off notebook result.

The gate is real — it was allowed to fail

CI · PASSING
Model beats baseline (spatial CV)FAILED ×2 → no heatmap
Memo citation coverage1.00
Deterministic re-runidentical
Engine golden cases425 tests passing

The pre-registered bar never moved: attempt 2 was a pre-stated metric refinement that lifted the model and still lost. ERDA ships the wells, the fields, the economics, and the committee — and publishes the map it refused to draw.

Compresses an upstream screening decision — market context, drilling history, block economics — into one auditable surface, and demonstrates the discipline that regulated capital allocation actually requires: provenance on every number, determinism under the prose, and a model that must earn its place on the map.

Request coverage

I am focused on finance AI: credit risk, RegTech, AML, and agentic investment research. Open to roles, mentorship, and collaborators in fintech, quant, and bank AI.