ENSO Monitor
Oceanic Niño Index (ONI), 1950–present
3-month running mean Niño 3.4 SST anomaly. Red bands = El Niño events, blue bands = La Niña events. Dashed thresholds at ±0.5°C (event definition) and +2.0°C (very strong).
ENSO events since 1950 (click headers to sort)
2026–27 forecast — projected ONI paths vs analog rises
Commodities
Price history
El Niño composite response (indexed to 100 at event start; window −12 to +32 months)
Event Studies
Indexed price paths around event start (= 100 at offset 0)
Documented impacts (sourced event studies)
Macro & FX
FAO Food Price Index
US CPI — food vs headline
Quote conventions: AUD/USD is quoted USD per AUD; BRL, INR, IDR and JPY are quoted local currency per USD (a rising line = weaker local currency).
2026 Simulator
Methodology (how the projections are built)
Projection summary
Trading
Current prices (static snapshot — every source URL is the exact API call used)
El Niño playbook — trading strategies
Trading simulator — from the current price
Projected price path
Projection summary
NoFA — rules-based paper-trading agent
Portfolio status
Daily report
Equity curve
Decision timeline
One row per daily agent run: what the signal picked, which actions were taken (open / close / rebalance) and the resulting paper NAV.
Open positions
Trade log
Methodology & sources
Onchain execution — Ostium (Arbitrum)
Platform
ENSO coverage matrix
Not listed on Ostium
Execution agent status
Intended trades (paper plan)
Executed live trades & open positions
Agent daily log
Sources
Growing-Region Weather
El Niño confirmation board
Precipitation anomaly by growing region
Region detail
Root-zone soil wetness (NASA POWER GWETROOT)
Ocean
Live physical-state imagery of the equatorial Pacific from NOAA CPC and NOAA PMEL/TAO. All maps, cross-sections and animations below are loaded directly from operational NOAA products — no simulated or placeholder data. If an image fails to load, the exact source URL is shown so you can inspect it at NOAA.
Sea surface temperature (SST)
Subsurface temperature — equatorial Pacific cross-section
Depth–longitude slices along the equator show the warm-water reservoir and thermocline displacement that drive El Niño. The animation cycles through the latest weekly analyses.
Atmosphere–ocean coupling
850 hPa zonal wind anomalies reveal weakening trade winds; OLR anomalies show the eastward shift of convection; PMEL TAO buoys give direct equatorial wind and SST observations.
Time-longitude evolution
Hovmöller-style summaries show how SST and upper-ocean heat anomalies have propagated eastward over the past year.
Data & Sources
Every dataset on this site is listed below with its exact source. The derived aggregates in
site-data/ are computed by
tools/build_site_data.py
from the World Bank
Commodity Price Data ("Pink Sheet") monthly file
and the other raw series in data/; current prices are fetched by
tools/fetch_current_prices.py.
Full repository: github.com/operalag/enso.
Machine-paid API (x402)
Endpoints deployment origin https://trading-perps.vercel.app · live in the x402 Bazaar catalog
How payment works
- Call an endpoint → server answers
402 Payment Requiredwith aPAYMENT-REQUIREDheader (base64 JSON: price, network, asset, payTo). - The buyer signs a gasless EIP-3009
transferWithAuthorizationfor the exact USDC amount — no ETH, no onchain transaction from the buyer. - The client retries with a
PAYMENT-SIGNATUREheader; the server verifies and settles via the CDP facilitator (~2 s), then returns200+ the JSON payload with aPAYMENT-RESPONSEreceipt header.
Payments settle directly to
0xbD356968846829e32983Bb4aBE2d0DD29F2c2F7B (USDC, Base
eip155:8453). The facilitator is non-custodial and sponsors Base gas.
Protocol: x402 v2
(Linux Foundation); facilitator:
Coinbase CDP.
Quickstart for an agent (TypeScript)
import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount("0x…"); // wallet holding USDC on Base
const client = new x402Client()
.register("eip155:8453", new ExactEvmScheme(account));
const pay = wrapFetchWithPayment(fetch, client);
// Today's NoFA LONG/SHORT signal — $0.25 USDC, settled in ~2s
const res = await pay("https://trading-perps.vercel.app/api/nofa/signal");
console.log(res.status, await res.json());
Python: pip install "x402[evm]" and use
x402HttpxClient — see the
buyer quickstart.
MCP agents: discover and pay via the
Bazaar MCP server.
Discovery (x402 Bazaar)
All four endpoints are cataloged in the
x402 Bazaar
— the discovery layer AI agents search. Listings stay active while they see settlement
within 30 days (our own warmth agent calls one endpoint weekly on rotation). Merchant
lookup: listX402DiscoveryMerchant({ payTo: "0xbD35…c2F7B" }) via the CDP SDK.
Service name in the catalog: El Nino Market Watch.
Terms & notes
- Fixed prices per call (see table); failed payments are never settled — settlement happens only on a successful 200 response.
- Scheduled refreshes currently cover prices every three hours and the NoFA report daily
around 23:37 UTC. ENSO indices, COT, weather and monthly benchmarks are refreshed
manually or on demand and may be older. Freshness metadata varies by artifact: use
generatedwhere present together with each series' observation date and source URL; the composites payload does not currently carry a generated timestamp. - NoFA signal is a deterministic rules-based paper-trading simulation — not investment advice.
- The same underlying artifacts remain public as static files for auditability (Data & Sources).