Methodology
IranPeaceDeal.com publishes one number every day: an estimate of the probability that Iran, Israel, and the United States reach a meaningful ceasefire, peace deal, or negotiated settlement within the next 30 days. This page explains how that number is produced, what the chart's price lines are, and where to get the underlying data.
How the daily probability is generated
Every morning at 06:07 UTC an automated job runs:
- It queries Google News for coverage from the last 24 hours of the Iran conflict: war, peace, ceasefire, nuclear talks, and Strait of Hormuz developments.
- The resulting headlines are passed to a large language model, Anthropic's Claude, with a single task: estimate, as an integer from 0 to 100, the probability of a meaningful Iran peace deal or ceasefire within the next 30 days.
- The model also returns a one-line headline for the day, a trend label (rising, falling, or stable), a short written analysis, and the key factors it weighed.
- That result is appended to a running history, and the site is regenerated as static pages.
The estimate is the model's reading of public news, and nothing more. There is no proprietary data, no private channel, and no model of the actual negotiations behind it.
The oil and gas overlay
The chart on the home page draws two price lines alongside the probability: Brent crude oil and RBOB gasoline. These come from a separate source, the daily settlement prices published by Yahoo Finance.
The prices are not given to the model and are not an input to the probability. They are shown purely as a cross-check. Energy markets price in conflict risk continuously, so when the model's read of the news and the market's read diverge, that gap is interesting on its own.
Open data
Everything the site shows is available as plain JSON, refreshed once per day. It is free to use; if you build on it, a link back is appreciated.
Probability history — /data/history.json
An array of daily objects, oldest first. Each object has:
- date — the date, as YYYY-MM-DD.
- probability — the estimate, an integer from 0 to 100.
- trend — "rising", "falling", or "stable", versus recent days.
- headline — a one-line summary of the day.
- summary — the written analysis; paragraphs are separated by blank lines.
- keyFactors — an array of objects, each with a factor (text) and an impact of either "positive" or "negative".
- articles — the news items the estimate was based on, each with a title and a link.
Oil and gas prices — /data/energy.json
A single object with:
- fetchedAt — an ISO timestamp of the most recent refresh.
- series.brent — an array of { date, close } points; Brent crude in US dollars per barrel.
- series.gasoline — an array of { date, close } points; RBOB gasoline in US dollars per gallon.
Limitations
This is an experiment, not a forecast to rely on. Some honest caveats:
- The estimate is a language model's interpretation of headlines. It inherits whatever is noisy, incomplete, or skewed in a given day's news coverage.
- The probability is not calibrated. It has not been scored against how often events at a given percentage actually happen.
- The 30-day window and the definition of a "meaningful peace deal" are deliberately loose.
- Running the generator more than once in a day overwrites that day's entry, so the history holds one estimate per day.
Treat the number as a conversation piece, not advice. See the About page for the full disclaimer.