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 / Cookbooks

Cookbooks · Risk and execution · Intermediate · about 8 min

Detect two-way risk

Find names where both a 5% drop and a 5% rally are likely within a month, which means a wide range rather than a direction.

You'll need
  • A Slack connection named trading-desk.
  1. When to use it

    A directional screen misses names that are likely to move a lot either way. Those matter for sizing, for stops, and for options: a wide expected range is what a long straddle or strangle needs, and what a premium seller is exposed to.

  2. The request

    Two forecasts, a direction check and an ATR rule as a cross-check on how wide the daily bars already are.

    {
      "model": "ora-fin1",
      "state": {
        "symbol": "AMD"
      },
      "questions": {
        "drop5": {
          "type": "yes_no",
          "instructions": "Will it drop at least 5% at some point in the next month?"
        },
        "rally5": {
          "type": "yes_no",
          "instructions": "Will it rally at least 5% at some point in the next month?"
        },
        "up_week": {
          "type": "yes_no",
          "instructions": "Will the stock be higher in a week?"
        },
        "wide_atr": {
          "type": "yes_no",
          "ask": "atr_pct(14) > 3"
        }
      },
      "actions": [
        {
          "id": "two_way",
          "when": "drop5 >= 0.6 and rally5 >= 0.6",
          "do": "slack",
          "connection": "trading-desk",
          "message": "{{symbol}} ({{as_of}}): two-way risk. 5% drop {{drop5|pct}}, 5% rally {{rally5|pct}}, higher in a week {{up_week|pct}}. Compare with the implied move before selling premium."
        }
      ],
      "dry_run": true
    }
    Open this in the Playground
  3. The real response

    AMD:

    {
      "model": "ora-fin1",
      "answers": {
        "drop5": {
          "type": "yes_no",
          "yes_no": 0.763
        },
        "rally5": {
          "type": "yes_no",
          "yes_no": 0.836
        },
        "up_week": {
          "type": "yes_no",
          "yes_no": 0.577
        },
        "wide_atr": {
          "type": "yes_no",
          "yes_no": 0.9441,
          "rule": "atr_pct(14) > 3",
          "basis": "rule"
        }
      },
      "usage": {
        "input_tokens": 394,
        "output_tokens": 16
      },
      "context": {
        "source": "server",
        "symbol": "AMD",
        "as_of": "2026-10-30"
      },
      "version": "ora-fin-0.1.1",
      "actions": [
        {
          "id": "two_way",
          "fired": true,
          "status": "dry_run",
          "do": "slack",
          "connection": "trading-desk",
          "preview": {
            "text": "AMD (2026-10-30): two-way risk. 5% drop 76%, 5% rally 84%, higher in a week 58%. Compare with the implied move before selling premium."
          }
        }
      ]
    }

    Both moves are likely (0.763 and 0.836), the 14-day ATR is above 3% of price (0.9441), and the week has only a mild lean (0.577). The alert fired. The same request for SPY gives 0.203 and 0.229, ATR rule 0.0537: narrow both ways, and the action was skipped.

  4. The code

    Requires curl 7.76+. Save as run.sh, then: bash run.sh
    curl -sS https://oramodel.com/v1/systemone \
      -H "Authorization: Bearer $JEV_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "model": "ora-fin1",
      "state": {
        "symbol": "AMD"
      },
      "questions": {
        "drop5": {
          "type": "yes_no",
          "instructions": "Will it drop at least 5% at some point in the next month?"
        },
        "rally5": {
          "type": "yes_no",
          "instructions": "Will it rally at least 5% at some point in the next month?"
        },
        "up_week": {
          "type": "yes_no",
          "instructions": "Will the stock be higher in a week?"
        },
        "wide_atr": {
          "type": "yes_no",
          "ask": "atr_pct(14) > 3"
        }
      },
      "actions": [
        {
          "id": "two_way",
          "when": "drop5 >= 0.6 and rally5 >= 0.6",
          "do": "slack",
          "connection": "trading-desk",
          "message": "{{symbol}} ({{as_of}}): two-way risk. 5% drop {{drop5|pct}}, 5% rally {{rally5|pct}}, higher in a week {{up_week|pct}}. Compare with the implied move before selling premium."
        }
      ],
      "dry_run": true
    }'
  5. Act on it

    • Size: a wide two-way range argues for a smaller position and wider stops (Size positions by volatility regime).
    • Options: compare the answers with the move the options market already prices (for example the at-the-money straddle as a share of spot). If the implied move is already large, the range is priced in; if it is small, owning the range is worth a look and selling premium deserves caution.
    • Direction: don't infer one. up_week near 0.5 says the forecast has no strong lean.
  6. Variations

    • Stricter: drop5 >= 0.7 and rally5 >= 0.7; or require the ATR rule too: and wide_atr >= 0.6.
    • Which way does the range lean? Compare rally5 − drop5 across names (Rank a watchlist).
    • Run it on the whole book every evening as a workflow with a digest set to fired.

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.