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 Read probabilities and choose thresholds

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

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 / Use cases

Use case · Finance

Tag financial news for trading signals

Turn each headline or news item into structured fields: is it about this ticker, what kind of event, which direction, and how material, ready for a screener or a model.

The problem

Markets react to news in seconds, but raw headlines aren't usable by a screener, a backtest or a risk system. LLM summaries are too slow and too expensive to run over every item of a news firehose. Typed answers per headline (event type, direction, materiality) turn the stream into features you can filter, alert on and backtest.

How to frame it

Put the ticker and company name in the state together with the headline (and the first paragraph if you have it). Start with a yes/no gate: is this item really about the company, or just mentions it? Then classify the event type with a choice over your taxonomy, the likely direction for the stock, and a materiality score.

Because every answer is a probability, you can keep the full distribution as features (for example P(earnings), P(bearish)) instead of a single label; models trained on those features usually beat hard labels. One request per headline returns everything.

The questions

  • about_company yes_no Is this news primarily about the company named in the state, rather than a passing mention?
  • event_type choice What kind of event is this news about?
  • direction choice How is this news likely to affect the company's stock price?
  • materiality score How material is this news for the company's valuation?

Example request

{
  "model": "ora1",
  "state": {
    "ticker": "NVDA",
    "company": "NVIDIA Corporation",
    "headline": "NVIDIA raises full-year revenue outlook as data center demand beats expectations",
    "body": "NVIDIA said quarterly data center revenue rose 41% and lifted its full-year guidance above analyst estimates, citing strong demand for its latest AI accelerators."
  },
  "questions": {
    "about_company": {
      "type": "yes_no",
      "instructions": "Is this news primarily about the company named in the state, rather than a passing mention?"
    },
    "event_type": {
      "type": "choice",
      "instructions": "What kind of event is this news about?",
      "criteria": {
        "earnings": "Quarterly or annual results",
        "guidance": "Raised, cut or reaffirmed outlook or forecast",
        "m_and_a": "Mergers, acquisitions, divestitures",
        "product": "Product launches or recalls",
        "regulatory_legal": "Regulators, lawsuits, investigations, approvals",
        "management": "Executive or board changes",
        "analyst": "Analyst upgrades, downgrades, price targets",
        "macro": "Economy, rates, sector-wide news",
        "other": "Anything else"
      }
    },
    "direction": {
      "type": "choice",
      "instructions": "How is this news likely to affect the company's stock price?",
      "criteria": {
        "bullish": "Positive for the stock",
        "bearish": "Negative for the stock",
        "neutral": "Little or no expected effect"
      }
    },
    "materiality": {
      "type": "score",
      "instructions": "How material is this news for the company's valuation?",
      "criteria": [
        "Immaterial",
        "Minor",
        "Significant",
        "Major, likely to move the stock sharply"
      ]
    }
  }
}

Turn answers into actions

a = response["answers"]
if a["about_company"]["yes_no"] < 0.6:
    skip()                                   # passing mention, not news about this ticker
direction = a["direction"]["probabilities"]  # keep the distribution as features
features = {
    "p_bullish": direction["bullish"], "p_bearish": direction["bearish"],
    "materiality": a["materiality"]["score"],     # 0..3, can fall between levels
    "event": a["event_type"]["choice"], "event_conf": a["event_type"]["confidence"],
}
if a["materiality"]["score"] >= 2 and a["event_type"]["confidence"] >= 0.6:
    alert(ticker, features)

Tips

  • Include the ticker and company name in the state; it removes most "which company?" confusion.
  • Keep your event taxonomy stable over time so features stay comparable in backtests.
  • Store probabilities, not just labels; they make far better model inputs.
Create an account Open the Playground Everything here also lives in the console, next to your keys and usage.