Ora
All guides All guides

Getting started

Your first decision in the Playground Call the API from your code Save, share and reuse queries

Financial decisions

Decide on a stock with just its symbol Write your own rule Read probabilities and choose thresholds

Rule playground

From English to rule Combining conditions Offsets and windows Reading beliefs Rules plus forecasts in one request Turning a rule into an alert or workflow

Automation

Send a Slack alert when a rule fires Send decisions to your own system Run a watchlist every day after the close

Production

Handle errors, rate limits and retries

Cookbooks

All cookbooks Rank a watchlist by probability Send a pre-open digest Trend filter plus entry trigger Breakout confirmation with volume RSI and Bollinger mean-reversion checks Gap-fill playbook to your order system Confidence-gated actions Detect two-way risk Size positions by volatility regime Risk guardrail before an order Ask many questions in one request Self-consistency: three wordings Route support tickets Is a headline relevant to a symbol?

Use cases

Tag financial news for trading signalsGuardrails for LLM appsSupport ticket triage and routingFilter retrieved passages before your LLM answersVerify claims and citations against a source

Guides / Rule playground

Rule playground · about 8 min

From English to rule

Ask about what is true now in plain English, see the rule Ora compiled it to, and learn when to write the rule yourself.

  1. Ask in English

    Eleven questions about TSLA: ten about now, one about next week.

    {
      "model": "ora-fin1",
      "state": {
        "symbol": "TSLA"
      },
      "questions": {
        "above_200d": {
          "type": "yes_no",
          "instructions": "Is it above its 200-day moving average?"
        },
        "rsi_70": {
          "type": "yes_no",
          "instructions": "Is RSI above 70?"
        },
        "over_prior_high": {
          "type": "yes_no",
          "instructions": "Did it close above yesterday's high?"
        },
        "golden": {
          "type": "yes_no",
          "instructions": "Is the 50-day moving average above the 200-day?"
        },
        "off_high": {
          "type": "yes_no",
          "instructions": "Is it down more than 10% from its 52-week high?"
        },
        "three_down": {
          "type": "yes_no",
          "instructions": "Did it close lower three days in a row?"
        },
        "busy": {
          "type": "yes_no",
          "instructions": "Is volume above its 20-day average?"
        },
        "inside": {
          "type": "yes_no",
          "instructions": "Is today an inside bar?"
        },
        "engulf": {
          "type": "yes_no",
          "instructions": "Is today a bullish engulfing candle?"
        },
        "at_high": {
          "type": "yes_no",
          "instructions": "Is it at a 52-week high?"
        },
        "up_week": {
          "type": "yes_no",
          "instructions": "Will the stock be higher in a week?"
        }
      }
    }
    Open this in the Playground
  2. See what each one became

    Session of 2026-10-30. A rule means the rule engine answered; none means the forecast model did:

    QuestionRule it ranBeliefbasis
    above_200dC > sma(C, 200)0.777comparison
    rsi_70rsi(C, 14) > 700.0873comparison
    over_prior_highC > H[-1]0.1868comparison
    goldensma(C, 50) > sma(C, 200)0.0768comparison
    off_highC < 0.9 * max(H, 252)0.9438pattern
    three_down(C < C[-1]) and (C[-1] < C[-2]) and (C[-2] < C[-3])0.5667pattern
    busyV > 1 * ref(avg(V, 20), -1)0.7212pattern
    insideinside_bar()0.0795pattern
    engulfengulfing_bull()0.2167pattern
    at_highnone: forecast0.533forecast
    up_weeknone: forecast0.487forecast
  3. Read the basis

    comparison is a compiled comparison (it adds an explain, here today's close > sma200); pattern is a compiled shape such as (C < C[-1]) and (C[-1] < C[-2]) and (C[-2] < C[-3]). Compiled rules are ordinary rules: copy one into ask to pin it.

  4. Spot the one that did not compile

    "Is it at a 52-week high?" came back as a forecast (0.533), not a fact. When you mean the fact, write it. Three ways to write it are three different questions; on XLE, which trades near its highs:

    QuestionRuleBelief
    at_highH >= max(H, 252)0.5
    near_highC >= 0.98 * max(H, 252)0.8442
    new_highH > highest(H, 252)0.6196

    H >= max(H, 252) can at best tie (0.50); the 2% band and the excluding form say what you mean.

    Open this in the Playground
  5. Rule of thumb

    English for exploring and for forecasts; ask for anything a decision depends on, so the rule cannot change underneath you. The language: Rule language.

Information, not investment advice. Every number on this page is a real response for the session shown; answers change with each session.

What's next

Create an account Open the Playground Everything here also lives in the console, next to your keys and usage.