FutureSearch Logofuturesearch
  • Blog
  • Solutions
  • Research
  • Docs
  • Evals
  • Company
  • Get Researchers
FutureSearch Logo

General inquiry? You can reach us at hello@futuresearch.ai.

Company

Team & CareersPressPrivacy PolicyTerms of Service

Developers

SDK DocsAPI ReferenceCase StudiesGitHub

Follow Us

X (Twitter)@dschwarz26LinkedIn
FutureSearchdocs
Your research team
Installation
  • All install methods
  • Claude.ai
  • Claude Cowork
  • Claude Code
  • Web App
  • Python SDK
  • Skill
  • MCP Server
Reference
  • API Key
  • classify
  • dedupe
  • forecast
  • merge
  • rank
  • agent_map
  • screen
  • Progress Monitoring
  • Chaining Operations
Guides
  • LLM-Powered Data Labeling
  • Add a Column via Web Research
  • Classify and Label Rows
  • Deduplicate Training Data
  • Filter a Dataset Intelligently
  • Join Tables Without Shared Keys
  • Rank Data by External Metrics
  • Resolve Duplicate Entities
  • Scale Deduplication to 20K Rows
Case Studies
  • Deduplicate Contact Lists
  • Deduplicate CRM Records
  • Enrich Contacts with Company Data
  • Fuzzy Match Across Tables
  • Link Records Across Medical Datasets
  • LLM Cost vs. Accuracy
  • Merge Costs and Speed
  • Merge Thousands of Records
  • Multi-Stage Lead Qualification
  • Research and Rank Web Data
  • Run 10,000 LLM Web Research Agents
  • Score Cold Leads via Web Research
  • Score Leads from Fragmented Data
  • Screen 10,000 Rows
  • Screen Job Listings
  • Screen Stocks by Economic Sensitivity
  • Screen Stocks by Investment Thesis
FutureSearchby futuresearch
by futuresearch

Forecast

forecast takes a DataFrame of binary questions and produces a calibrated probability estimate (0–100) and rationale for each row. The approach is validated against FutureSearch's past-casting environment of 1500 hard forecasting questions and 15M research documents. See more at Automating Forecasting Questions and arXiv:2506.21558.

Examples

from pandas import DataFrame
from everyrow.ops import forecast

questions = DataFrame([
    {
        "question": "Will the US Federal Reserve cut rates by at least 25bp before July 1, 2027?",
        "resolution_criteria": "Resolves YES if the Fed announces at least one rate cut of 25bp or more at any FOMC meeting between now and June 30, 2027.",
    },
])

result = await forecast(input=questions)
print(result.data[["question", "probability", "rationale"]])

The output DataFrame contains the original columns plus probability (int, 0–100) and rationale (str).

Batch context

When all rows share common framing, pass it via context instead of repeating it in every row:

result = await forecast(
    input=geopolitics_questions,
    context="Focus on EU regulatory and diplomatic sources. Assume all questions resolve by end of 2027.",
)

Leave context empty when rows are self-contained—a well-specified question with resolution criteria needs no additional instruction.

Input columns

The input DataFrame should contain at minimum a question column. All columns are passed to the research agents and forecasters.

Column Required Purpose
question Yes The binary question to forecast
resolution_criteria Recommended Exactly how YES/NO is determined—the "contract"
resolution_date Optional When the question closes
background Optional Additional context the forecasters should know

Column names are not enforced—research agents infer meaning from content. A column named scenario instead of question works fine.

Parameters

Name Type Description
input DataFrame Rows to forecast, one question per row
context str | None Optional batch-level instructions that apply to every row
session Session Optional, auto-created if omitted

Output

Two columns are added to each input row:

Column Type Description
probability int 0–100, calibrated probability of YES resolution
rationale str Detailed reasoning with citations from web research

Probabilities are clamped to [3, 97]—even near-certain outcomes retain residual uncertainty.

Performance

Rows Time Cost
1 ~5 min ~$0.60
5 ~6 min ~$3
20 ~10 min ~$12

Via MCP

MCP tool: everyrow_forecast

Parameter Type Description
csv_path string Path to CSV with questions (one per row)
context string Optional batch-level context for all questions

Related docs

Blog posts

  • Automating Forecasting Questions
  • arXiv paper: Automated Forecasting