Use cases / Forecasting and research
Event forecasting against an evidence bundle
Will it happen? One probability per market, from the evidence you collected.
- Unit
- One market: criterion, date, evidence bundle
- Ask
- Met by the date? Which kind of evidence decides it?
- Get
- A review queue with p(yes) next to the market price
Files · 1 reducers · 2 questions · updated Sep 21, 2026
The flow
Evidence is the volume. Markets are the unit. One request reads the whole bundle. 310 requests for 2,140 items. 92 in the review queue. 218 excluded, kept for calibration.
Follow one record
- evidence
- Group by market
- Attach criterion and price
- Judge the proposition
- Keep conviction ≥ 0.70
- Review queue
Six items collected for M-2031
snapshot 2026-09-20, items E-1 to E-6
- E-1 Sep 12Council agenda for Oct 7 lists the transit levy ordinance for final vote.
- E-2 Sep 14Local paper: two of nine members undecided, three publicly opposed.
- E-3 Sep 16Mayor's office statement supporting the levy and urging passage before the fiscal deadline.
- E-4 Sep 17Budget office memo: the levy closes a projected shortfall; no alternative funding identified.
- E-5 Sep 17Opposition petition reaches 4,200 signatures; organisers plan to speak at the hearing.
- E-6 Sep 18Finance committee advances the ordinance 5 to 2.
Grouped on market_id
deterministic, no model call
- key
- M-2031
- members
- E-1, E-2, E-3, E-4, E-5, E-6
- newest item
- 2026-09-18
The market record
left key input.key, right key id
- question
- Will the city council approve the transit levy before October 15, 2026?
- resolution criterion
- Resolves YES if the council votes to approve the transit levy ordinance on or before 2026-10-14 (local time).
- resolution date
- 2026-10-14
- price at snapshot
- 0.58, not shown to the model
Request 118 of 310
model jev-1.13.0, attempt 1, succeeded
- true0.74
conditioned on the six items and nothing else
- primary document0.61
- official statement0.27
- reporting0.09
- market data0.02
- none0.01
confidence 0.55, provider reported
{
"model": "jev-1.13.0",
"state": {
"market": {
"id": "M-2031",
"question": "Will the city council approve the transit levy before October 15, 2026?",
"resolution_criterion": "Resolves YES if the council votes to approve the transit levy ordinance on or before 2026-10-14 (local time).",
"resolution_date": "2026-10-14"
},
"evidence": [
{ "id": "E-1", "date": "2026-09-12", "kind": "primary_document", "text": "Council agenda for Oct 7 lists the transit levy ordinance for final vote." },
{ "id": "E-2", "date": "2026-09-14", "kind": "reporting", "text": "Two of nine members undecided, three publicly opposed." },
{ "id": "E-3", "date": "2026-09-16", "kind": "official_statement", "text": "Mayor's office supports the levy and urges passage before the fiscal deadline." },
{ "id": "E-4", "date": "2026-09-17", "kind": "primary_document", "text": "Budget office memo: the levy closes a projected shortfall; no alternative identified." },
{ "id": "E-5", "date": "2026-09-17", "kind": "reporting", "text": "Opposition petition reaches 4,200 signatures." },
{ "id": "E-6", "date": "2026-09-18", "kind": "primary_document", "text": "Finance committee advances the ordinance 5 to 2." }
]
},
"questions": {
"outcome": { "type": "noul",
"instructions": "Based only on `evidence`, will the criterion in `market.resolution_criterion` be met on or before `market.resolution_date`?" },
"decisive_kind": { "type": "choice",
"instructions": "Which kind of item in `evidence` most determines the answer to the previous proposition?",
"criteria": { "primary_document": "An official record, filing, agenda, ruling or vote tally",
"official_statement": "A statement by a party with authority over the outcome",
"reporting": "Journalism or analysis about the outcome",
"market_data": "Prices, polls or other measured indicators",
"none": "No item is decisive" } }
}
}
{
"model": "jev-1.13.0",
"answers": {
"outcome": { "probability": 0.74 },
"decisive_kind": { "choice": "primary_document",
"probabilities": { "primary_document": 0.61, "official_statement": 0.27,
"reporting": 0.09, "market_data": 0.02, "none": 0.01 },
"confidence": 0.55 }
}
}
0.74 is at or above 0.70, kept
into the review queue
- field
- answers.outcome.probability
- comparison
- gte 0.70
- value
- 0.74
- result
- matched collection
One row for a human to read
p and price side by side; the difference is computed from the export
- market
- M-2031, transit levy before Oct 15
- p(yes)
- 0.74
- price at snapshot
- 0.58
- decisive evidence
- primary document (0.61), E-6 committee vote
- resolves
- 2026-10-14
- trace
- 6 nodes, 1 attempt, 6 evidence items in the request
What comes out
| Market | p(yes) | Price | Decisive kind | Resolves | Items |
|---|---|---|---|---|---|
| M-2044 Vendor ships v2 before Q4 | 0.88 | 0.81 | primary document | 2026-09-30 | 9 |
| M-2031 Council approves transit levy | 0.74 | 0.58 | primary document | 2026-10-14 | 6 |
| M-2019 Injunction ruling before Oct 1 | 0.72 | 0.70 | official statement | 2026-09-30 | 11 |
| M-2052 Merger review completes by Nov 30 | 0.71 | 0.44 | reporting | 2026-11-30 | 14 |
| M-2007 Stadium bond passes at referendum | 0.70 | 0.66 | market data | 2026-11-03 | 8 |
Synthetic rows in the app's Outputs layout. The model never sees the price; it is joined from the markets file so the reviewer can see the disagreement.
Details, if you want them
whyWhy this shape
Why this shape
- The bundle is the state. Every item read together, once.
- The criterion is the question. Verbatim, date included.
- The price stays out of the request. Joined for the reviewer only.
- Disagreement is the queue. p(yes) next to price, sorted.
How it gets scored
- Run weekly on fresh snapshots.
- Add resolutions as markets settle. Join on
market_id. - Bucket by p(yes). Read the resolved share per bucket.
- Replay with another model or wording. Compare the tables.
Nothing here trades.
questionsThe 2 questions, verbatim
- Judge the proposition
outcomebinary, noul
Based only on `evidence`, will the criterion in `market.resolution_criterion` be met on or before `market.resolution_date`?
- Judge the proposition
decisive_kindcategorical, choice
Which kind of item in `evidence` most determines the answer to the previous proposition?
primary documentofficial statementreportingmarket datanone
buildHow each stage is built, as JSON
1 group Group by market
market_id. Each group is the bundle the model will read for that market, and only that market. Nothing outside the bundle reaches the request.stage definition
{
"id": "by_market",
"input": "source:evidence",
"key": [
"market_id"
],
"kind": "group",
"name": "Group by market"
}2 join Attach criterion and price
stage definition
{
"id": "with_market",
"input": "by_market",
"kind": "join",
"left_key": [
"input",
"key"
],
"name": "Attach criterion and price",
"right": "source:markets",
"right_key": [
"id"
]
}3 reducer Judge the proposition
outcome is a probability for the exact criterion text with the date written into it. decisive_kind says which kind of item carried the answer, so a reviewer knows whether to trust a primary document or a news report. The instructions say “based only on evidence” because Jev fetches nothing.stage definition
{
"id": "judge",
"input": "with_market",
"kind": "evaluate",
"model": "jev",
"name": "Judge the proposition",
"questions": {
"decisive_kind": {
"criteria": {
"market_data": "Prices, polls or other measured indicators",
"none": "No item is decisive",
"official_statement": "A statement by a party with authority over the outcome",
"primary_document": "An official record, filing, agenda, ruling or vote tally",
"reporting": "Journalism or analysis about the outcome"
},
"instructions": "Which kind of item in `evidence` most determines the answer to the previous proposition?",
"type": "choice"
},
"outcome": {
"instructions": "Based only on `evidence`, will the criterion in `market.resolution_criterion` be met on or before `market.resolution_date`?",
"type": "noul"
}
},
"state_path": []
}4 filter Keep conviction ≥ 0.70
stage definition
{
"comparison": "gte",
"field": [
"answers",
"outcome",
"probability"
],
"id": "conviction",
"input": "judge",
"kind": "filter",
"name": "Keep conviction ≥ 0.70",
"value": 0.7
}5 definition The whole workflow, as saved
Saving publishes an immutable version. A run freezes this definition, the snapshot IDs and each reducer’s model profile, so the trace can always show exactly what ran. Edits create a new version; old runs keep theirs.
jevreduce.local.v1
{
"name": "Event forecasting against an evidence bundle",
"schema_version": "jevreduce.local.v1",
"sources": {
"evidence": "snap_evidence_2026-09-20",
"markets": "snap_markets_2026-09-20"
},
"stages": [
{
"id": "by_market",
"input": "source:evidence",
"key": [
"market_id"
],
"kind": "group",
"name": "Group by market"
},
{
"id": "with_market",
"input": "by_market",
"kind": "join",
"left_key": [
"input",
"key"
],
"name": "Attach criterion and price",
"right": "source:markets",
"right_key": [
"id"
]
},
{
"id": "judge",
"input": "with_market",
"kind": "evaluate",
"model": "jev",
"name": "Judge the proposition",
"questions": {
"decisive_kind": {
"criteria": {
"market_data": "Prices, polls or other measured indicators",
"none": "No item is decisive",
"official_statement": "A statement by a party with authority over the outcome",
"primary_document": "An official record, filing, agenda, ruling or vote tally",
"reporting": "Journalism or analysis about the outcome"
},
"instructions": "Which kind of item in `evidence` most determines the answer to the previous proposition?",
"type": "choice"
},
"outcome": {
"instructions": "Based only on `evidence`, will the criterion in `market.resolution_criterion` be met on or before `market.resolution_date`?",
"type": "noul"
}
},
"state_path": []
},
{
"comparison": "gte",
"field": [
"answers",
"outcome",
"probability"
],
"id": "conviction",
"input": "judge",
"kind": "filter",
"name": "Keep conviction ≥ 0.70",
"value": 0.7
}
]
}limitsWhat it will not do
- Conditioned on your bundle. Missing evidence, missing signal.
- Dates are a documented Jev weak spot. Put the date in the criterion text.
- Calibration is measured against resolutions, not assumed.
- A research desk tool. No orders, no investment advice.
- Text only. Extract charts and PDFs first.