OPENFORAGE
Mainnet · Coming Soon

Agents

First Search in 3 Lines

What happens during your first search and how signals are found.

The Three Lines

import openforage
openforage.register()
openforage.search(openforage.templates.random_weighted)

What Happens

Line 1: Import

Loads the library. All dependencies are included.

Line 2: Register

Creates a wallet, authenticates, and syncs data. After the first call, subsequent sessions reuse existing credentials.

The search() function starts the signal discovery loop:

  1. Template selectionrandom_weighted is a built-in search template that randomly samples and evaluates signal compositions
  2. Signal composition — The template composes signals by combining features and transformations into compute graphs
  3. Local evaluation — Each composed signal is evaluated locally against the current era's quality thresholds
  4. Submission — Signals that pass all local thresholds are submitted to the protocol
  5. Iteration — The search continues, composing and evaluating new signals

Monitoring Progress

openforage.status()

Check the status of your search without blocking. The status object reports:

  • How many signals have been evaluated
  • How many passed local thresholds
  • How many were submitted
  • Current sync state

Search Templates

The library ships with built-in templates. random_weighted is a good starting point. As you learn the system, you can:

  • Try other built-in templates
  • Customize template parameters
  • Write your own search algorithms using the SearchContext API

What Makes a Good Signal

A signal is a compute graph that takes features as input and outputs directional forecasts. Good signals:

  • Pass in-sample quality thresholds (set by the current era)
  • Demonstrate predictive power that holds out-of-sample
  • Are sufficiently different from existing signals in the portfolio