Ora
Example groups Act on answersAsk by symbolActionsWorkflowsFinancialGap fillParaphrase checkQuestion grammar (preview)SimpleMediumAdvanced

Learn more

ActionsWorkflowsGuides

Examples

Ready-to-run requests

Every example is a complete request. Read the JSON, take it to code in eight languages, or open it in the Playground once you've signed in. Action examples show what they would send, from a real dry run.

Actions can go toSlackWebhook (HTTPS)Email · soonWhat each one sends →

Act on answers

Three real dry runs (2026-10-30): the request, the answers and exactly what would be sent. Nothing was delivered.

Slack alert

Drawdown alert to the trading desk (Slack)

A rule on the answers posts to a Slack channel through a connection named trading-desk. Post to the desk's Slack channel when the chance of a 5% drawdown within a month passes 55%, with the upside odds for context. Needs a Slack connection named trading-desk.

drop5 >= 0.55→ Slacktrading-desk

Request

{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-21",
    "context": {
      "return_1d": 0.03414,
      "return_5d": 0.05259,
      "return_20d": 0.01671,
      "return_60d": 0.25706,
      "return_252d": -0.13624,
      "volatility_5d": 0.42207,
      "volatility_20d": 0.34942,
      "volatility_60d": 0.3934,
      "vol_ratio_5_20": 1.20792,
      "volume_ratio": 1.30117,
      "volume_ratio_5d": 1.08622,
      "atr_pct": 0.03188,
      "rsi_14": 59.77,
      "dist_sma_20": 0.04443,
      "dist_sma_50": 0.06706,
      "dist_sma_200": -0.0012,
      "dist_high_252": -0.22525,
      "dist_low_252": 0.29958,
      "gap_1d": 0.02087,
      "range_pct_1d": 0.02156,
      "close_location": 0.71523,
      "dollar_volume_log": 10.112,
      "market_return_5d": 0.00453,
      "market_volatility_20d": 0.08848,
      "dist_high_20": -0.0061,
      "dist_low_20": 0.11735,
      "beta_1y": 2.21228,
      "body_pct": 0.013,
      "upper_wick": 0.28477,
      "lower_wick": 0.12,
      "range_vs_atr": 0.67641,
      "sma50_vs_sma200": -0.06397,
      "earnings_next_5d": 1,
      "days_to_earnings": 1,
      "days_since_earnings": 63,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "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?"
    }
  },
  "actions": [
    {
      "id": "desk_alert",
      "when": "drop5 >= 0.55",
      "do": "slack",
      "connection": "trading-desk",
      "message": "{{symbol}} ({{as_of}}): {{drop5|pct}} chance of a 5% drawdown within a month, {{rally5|pct}} chance of a 5% rally. Two-way risk: consider sizing down."
    }
  ],
  "dry_run": true
}

Answers and what it would send

drop5 0.584 · rally5 0.586

Actions 1 of 1 fired · dry run, nothing sent
desk_alertwould send (dry run)slack → trading-desk
{
  "text": "TSLA (2026-10-21): 58% chance of a 5% drawdown within a month, 59% chance of a 5% rally. Two-way risk: consider sizing down."
}

Signed webhook to an OMS

Gap trade signal to your order system (webhook, else)

Typed values in a JSON body, POSTed to your order system and signed with X-Jev-Signature. On an opening gap: send an intraday fade if the gap should fill today, a 5-day swing if it should fill within the week, and otherwise tell the desk there's no trade. Typed values in the body. Needs a webhook connection named my-oms.

fill_today >= 0.6→ Webhookmy-oms
fill_today < 0.6 and fill_5d >= 0.55→ Webhookmy-oms
else→ Slacktrading-desk

Request

{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-22",
    "context": {
      "gap_pct": -0.03219,
      "gap_dir": -1,
      "gap_atr": -1.00978,
      "gap_vs_typical": 3.76115,
      "gap_outside_range_atr": 0.526,
      "earnings_day": 1,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.00869,
      "gap_vs_market": -0.0235,
      "prior_return_1d": 0.03414,
      "prior_return_5d": 0.05259,
      "prior_return_20d": 0.01671,
      "prior_rsi_14": 59.77,
      "prior_dist_sma_20": 0.04443,
      "prior_dist_sma_50": 0.06706,
      "prior_dist_high_20": -0.0061,
      "prior_dist_low_20": 0.11735,
      "prior_close_location": 0.71523,
      "prior_volume_ratio": 1.30117,
      "volatility_20d": 0.34942,
      "atr_pct": 0.03188,
      "dollar_volume_log": 10.112,
      "beta_1y": 2.21228,
      "market_volatility_20d": 0.08848,
      "sym_gap_fill_rate": 0.44,
      "sym_gap_fill_rate_dir": 0.4,
      "sym_gap_fill_5d_rate": 0.72,
      "sym_gap_go_rate": 0.5,
      "sym_gaps_1y": 107
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    },
    "gap_go": {
      "type": "yes_no",
      "instructions": "Is this a gap-and-go day rather than a fade?"
    }
  },
  "actions": [
    {
      "id": "fade_intraday",
      "when": "fill_today >= 0.6",
      "do": "webhook",
      "connection": "my-oms",
      "body": {
        "symbol": "{{symbol}}",
        "signal": "fade_gap",
        "horizon": "intraday",
        "p_fill": "{{fill_today}}",
        "gap_pct": "{{state.context.gap_pct}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "swing_fill",
      "when": "fill_today < 0.6 and fill_5d >= 0.55",
      "do": "webhook",
      "connection": "my-oms",
      "body": {
        "symbol": "{{symbol}}",
        "signal": "gap_fill_swing",
        "horizon": "5d",
        "p_fill": "{{fill_5d}}",
        "p_gap_and_go": "{{gap_go}}",
        "gap_pct": "{{state.context.gap_pct}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "no_trade",
      "when": "else",
      "do": "slack",
      "connection": "trading-desk",
      "message": "{{symbol}} gap: no trade (fill today {{fill_today|pct}}, within 5 days {{fill_5d|pct}})."
    }
  ],
  "dry_run": true
}

Answers and what it would send

fill_today 0.292 · fill_5d 0.607 · gap_go 0.540

Actions 1 of 3 fired · dry run, nothing sent
fade_intradayrule false: skipped
swing_fillwould send (dry run)webhook → my-oms
{
  "symbol": "TSLA",
  "signal": "gap_fill_swing",
  "horizon": "5d",
  "p_fill": 0.607,
  "p_gap_and_go": 0.54,
  "gap_pct": -0.03219,
  "as_of": "2026-10-22"
}
no_traderule false: skipped

Digest workflow

Pre-open market read

A workflow runs the same questions for every symbol on a watchlist (Weekdays 08:30 ET) and sends one digest per run. Before the open, one Slack message with every index ETF's odds: higher in a week, a 2% move either way, choppier. No per-symbol actions: the digest is the product.

Workflow

{
  "name": "Pre-open market read",
  "symbols": "SPY QQQ IWM DIA",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "08:30",
  "model": "ora1",
  "questions": {
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "move2": {
      "type": "yes_no",
      "instructions": "Will the stock move more than 2% in either direction in 5 trading days?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will price swings get bigger over the next week compared with the past month?"
    }
  },
  "digest": {
    "do": "slack",
    "connection": "trading-desk",
    "when": "always"
  }
}

Per-symbol answers and the digest it would send

SymbolAnswers (as of 2026-10-30)
SPY

up_week 0.598 · move2 0.394 · vol_up 0.510

QQQ

up_week 0.561 · move2 0.360 · vol_up 0.509

IWM

up_week 0.526 · move2 0.322 · vol_up 0.472

DIA

up_week 0.567 · move2 0.367 · vol_up 0.492

Actions 1 of 1 fired · dry run, nothing sent
digestwould send (dry run)slack → trading-desk
{
  "text": "Pre-open market read · data as of 2026-10-30 · 0 of 4 symbols fired:\n• SPY: up_week 60%, move2 39%, vol_up 51%\n• QQQ: up_week 56%, move2 36%, vol_up 51%\n• IWM: up_week 53%, move2 32%, vol_up 47%\n• DIA: up_week 57%, move2 37%, vol_up 49%"
}

Ask by symbol

Send only a symbol: the server fills in its latest completed-session numbers. Covers about 2,000 liquid US stocks and ETFs, refreshed after each close.

NVDA from just the symbol

Send only {"symbol": "NVDA"}: the server fills the latest completed-session numbers (context) and says which date they're from in the response.

ora14 questions
  • up_week Will the stock be higher in a week?
  • drop5 Will it drop at least 5% at some point in the next month?
  • new_high Will it make a new 20-day high in the next week?
  • + 1 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "NVDA"
  },
  "questions": {
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will price swings get bigger over the next week compared with the past month?"
    }
  }
}

SPY: the market's next week

An index ETF by symbol: direction, a 2% move either way, and calmer or choppier.

ora13 questions
  • up_week Will the stock be higher in a week?
  • move2 Will the stock move more than 2% in either direction in 5 trading days?
  • vol_down Will price swings get smaller over the next week compared with the past month?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "move2": {
      "type": "yes_no",
      "instructions": "Will the stock move more than 2% in either direction in 5 trading days?"
    },
    "vol_down": {
      "type": "yes_no",
      "instructions": "Will price swings get smaller over the next week compared with the past month?"
    }
  }
}

TSLA by symbol, with a dry-run alert

Ask by symbol and act on it: the alert's message shows the server-filled date and numbers.

ora12 questions1 action
drop5 >= 0.5 and rally5 >= 0.5→ Slacktrading-desk
  • drop5 Will it drop at least 5% at some point in the next month?
  • rally5 Will it rally at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA"
  },
  "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?"
    }
  },
  "actions": [
    {
      "id": "two_way_risk",
      "when": "drop5 >= 0.5 and rally5 >= 0.5",
      "do": "slack",
      "connection": "trading-desk",
      "message": "{{symbol}} ({{as_of}}): two-way risk, drawdown {{drop5|pct}}, rally {{rally5|pct}}, RSI {{state.context.rsi_14}}."
    }
  ],
  "dry_run": true
}
Would send (dry run)

drop5 0.638 · rally5 0.687

Actions 1 of 1 fired · dry run, nothing sent
two_way_riskwould send (dry run)slack → trading-desk
{
  "text": "TSLA (2026-10-30): two-way risk, drawdown 64%, rally 69%, RSI 60.2."
}

Actions

Decide, then act. Each example answers its questions and runs rules on the answers to send a Slack message, call your webhook or email you.

Drawdown alert to the trading desk (Slack)

Post to the desk's Slack channel when the chance of a 5% drawdown within a month passes 55%, with the upside odds for context. Needs a Slack connection named trading-desk.

ora12 questions1 action
drop5 >= 0.55→ Slacktrading-desk
  • drop5 Will it drop at least 5% at some point in the next month?
  • rally5 Will it rally at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-21",
    "context": {
      "return_1d": 0.03414,
      "return_5d": 0.05259,
      "return_20d": 0.01671,
      "return_60d": 0.25706,
      "return_252d": -0.13624,
      "volatility_5d": 0.42207,
      "volatility_20d": 0.34942,
      "volatility_60d": 0.3934,
      "vol_ratio_5_20": 1.20792,
      "volume_ratio": 1.30117,
      "volume_ratio_5d": 1.08622,
      "atr_pct": 0.03188,
      "rsi_14": 59.77,
      "dist_sma_20": 0.04443,
      "dist_sma_50": 0.06706,
      "dist_sma_200": -0.0012,
      "dist_high_252": -0.22525,
      "dist_low_252": 0.29958,
      "gap_1d": 0.02087,
      "range_pct_1d": 0.02156,
      "close_location": 0.71523,
      "dollar_volume_log": 10.112,
      "market_return_5d": 0.00453,
      "market_volatility_20d": 0.08848,
      "dist_high_20": -0.0061,
      "dist_low_20": 0.11735,
      "beta_1y": 2.21228,
      "body_pct": 0.013,
      "upper_wick": 0.28477,
      "lower_wick": 0.12,
      "range_vs_atr": 0.67641,
      "sma50_vs_sma200": -0.06397,
      "earnings_next_5d": 1,
      "days_to_earnings": 1,
      "days_since_earnings": 63,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "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?"
    }
  },
  "actions": [
    {
      "id": "desk_alert",
      "when": "drop5 >= 0.55",
      "do": "slack",
      "connection": "trading-desk",
      "message": "{{symbol}} ({{as_of}}): {{drop5|pct}} chance of a 5% drawdown within a month, {{rally5|pct}} chance of a 5% rally. Two-way risk: consider sizing down."
    }
  ],
  "dry_run": true
}
Would send (dry run)

drop5 0.584 · rally5 0.586

Actions 1 of 1 fired · dry run, nothing sent
desk_alertwould send (dry run)slack → trading-desk
{
  "text": "TSLA (2026-10-21): 58% chance of a 5% drawdown within a month, 59% chance of a 5% rally. Two-way risk: consider sizing down."
}

Breakout watch: volume confirms or not (Slack + email)

A likely new 20-day high is only half a signal. Email yourself when volume should confirm it; otherwise tell the desk the breakout is unconfirmed. Shows and-rules.

ora12 questions2 actions
new_high >= 0.6 and vol_spike >= 0.4→ Emailme
new_high >= 0.6 and vol_spike < 0.4→ Slacktrading-desk
  • new_high Will it make a new 20-day high in the next week?
  • vol_spike Will volume spike tomorrow?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-21",
    "context": {
      "return_1d": 0.03414,
      "return_5d": 0.05259,
      "return_20d": 0.01671,
      "return_60d": 0.25706,
      "return_252d": -0.13624,
      "volatility_5d": 0.42207,
      "volatility_20d": 0.34942,
      "volatility_60d": 0.3934,
      "vol_ratio_5_20": 1.20792,
      "volume_ratio": 1.30117,
      "volume_ratio_5d": 1.08622,
      "atr_pct": 0.03188,
      "rsi_14": 59.77,
      "dist_sma_20": 0.04443,
      "dist_sma_50": 0.06706,
      "dist_sma_200": -0.0012,
      "dist_high_252": -0.22525,
      "dist_low_252": 0.29958,
      "gap_1d": 0.02087,
      "range_pct_1d": 0.02156,
      "close_location": 0.71523,
      "dollar_volume_log": 10.112,
      "market_return_5d": 0.00453,
      "market_volatility_20d": 0.08848,
      "dist_high_20": -0.0061,
      "dist_low_20": 0.11735,
      "beta_1y": 2.21228,
      "body_pct": 0.013,
      "upper_wick": 0.28477,
      "lower_wick": 0.12,
      "range_vs_atr": 0.67641,
      "sma50_vs_sma200": -0.06397,
      "earnings_next_5d": 1,
      "days_to_earnings": 1,
      "days_since_earnings": 63,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "questions": {
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    },
    "vol_spike": {
      "type": "yes_no",
      "instructions": "Will volume spike tomorrow?"
    }
  },
  "actions": [
    {
      "id": "confirmed_breakout",
      "when": "new_high >= 0.6 and vol_spike >= 0.4",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}}: breakout with volume",
      "message": "New 20-day high within a week: {{new_high|pct}}. Volume spike tomorrow: {{vol_spike|pct}}."
    },
    {
      "id": "unconfirmed_breakout",
      "when": "new_high >= 0.6 and vol_spike < 0.4",
      "do": "slack",
      "connection": "trading-desk",
      "message": "{{symbol}}: likely new 20-day high ({{new_high|pct}}) but volume isn't expected to confirm ({{vol_spike|pct}})."
    }
  ],
  "dry_run": true
}
Would send (dry run)

new_high 0.615 · vol_spike 0.060

Actions 1 of 2 fired · dry run, nothing sent
confirmed_breakoutrule false: skipped
unconfirmed_breakoutwould send (dry run)slack → trading-desk
{
  "text": "TSLA: likely new 20-day high (62%) but volume isn't expected to confirm (6%)."
}

Gap trade signal to your order system (webhook, else)

On an opening gap: send an intraday fade if the gap should fill today, a 5-day swing if it should fill within the week, and otherwise tell the desk there's no trade. Typed values in the body. Needs a webhook connection named my-oms.

ora13 questions3 actions
fill_today >= 0.6→ Webhookmy-oms
fill_today < 0.6 and fill_5d >= 0.55→ Webhookmy-oms
else→ Slacktrading-desk
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
  • gap_go Is this a gap-and-go day rather than a fade?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-22",
    "context": {
      "gap_pct": -0.03219,
      "gap_dir": -1,
      "gap_atr": -1.00978,
      "gap_vs_typical": 3.76115,
      "gap_outside_range_atr": 0.526,
      "earnings_day": 1,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.00869,
      "gap_vs_market": -0.0235,
      "prior_return_1d": 0.03414,
      "prior_return_5d": 0.05259,
      "prior_return_20d": 0.01671,
      "prior_rsi_14": 59.77,
      "prior_dist_sma_20": 0.04443,
      "prior_dist_sma_50": 0.06706,
      "prior_dist_high_20": -0.0061,
      "prior_dist_low_20": 0.11735,
      "prior_close_location": 0.71523,
      "prior_volume_ratio": 1.30117,
      "volatility_20d": 0.34942,
      "atr_pct": 0.03188,
      "dollar_volume_log": 10.112,
      "beta_1y": 2.21228,
      "market_volatility_20d": 0.08848,
      "sym_gap_fill_rate": 0.44,
      "sym_gap_fill_rate_dir": 0.4,
      "sym_gap_fill_5d_rate": 0.72,
      "sym_gap_go_rate": 0.5,
      "sym_gaps_1y": 107
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    },
    "gap_go": {
      "type": "yes_no",
      "instructions": "Is this a gap-and-go day rather than a fade?"
    }
  },
  "actions": [
    {
      "id": "fade_intraday",
      "when": "fill_today >= 0.6",
      "do": "webhook",
      "connection": "my-oms",
      "body": {
        "symbol": "{{symbol}}",
        "signal": "fade_gap",
        "horizon": "intraday",
        "p_fill": "{{fill_today}}",
        "gap_pct": "{{state.context.gap_pct}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "swing_fill",
      "when": "fill_today < 0.6 and fill_5d >= 0.55",
      "do": "webhook",
      "connection": "my-oms",
      "body": {
        "symbol": "{{symbol}}",
        "signal": "gap_fill_swing",
        "horizon": "5d",
        "p_fill": "{{fill_5d}}",
        "p_gap_and_go": "{{gap_go}}",
        "gap_pct": "{{state.context.gap_pct}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "no_trade",
      "when": "else",
      "do": "slack",
      "connection": "trading-desk",
      "message": "{{symbol}} gap: no trade (fill today {{fill_today|pct}}, within 5 days {{fill_5d|pct}})."
    }
  ],
  "dry_run": true
}
Would send (dry run)

fill_today 0.292 · fill_5d 0.607 · gap_go 0.540

Actions 1 of 3 fired · dry run, nothing sent
fade_intradayrule false: skipped
swing_fillwould send (dry run)webhook → my-oms
{
  "symbol": "TSLA",
  "signal": "gap_fill_swing",
  "horizon": "5d",
  "p_fill": 0.607,
  "p_gap_and_go": 0.54,
  "gap_pct": -0.03219,
  "as_of": "2026-10-22"
}
no_traderule false: skipped

Hedge or all-clear (webhook, else to Slack)

Ask your order system for a protective put when drawdown odds are high and a big move is plausible; otherwise post an all-clear. Exactly one of the two always fires.

ora12 questions2 actions
drop5 >= 0.65 and big_move >= 0.25→ Webhookmy-oms
else→ Slacktrading-desk
  • drop5 Will it drop at least 5% at some point in the next month?
  • big_move Will the stock move more than 5% in either direction in 5 trading days?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-09-29",
    "context": {
      "return_1d": -0.0129,
      "return_5d": -0.06878,
      "return_20d": -0.04107,
      "return_60d": -0.15944,
      "return_252d": -0.19882,
      "volatility_5d": 0.25764,
      "volatility_20d": 0.41763,
      "volatility_60d": 0.51215,
      "vol_ratio_5_20": 0.61691,
      "volume_ratio": 0.79738,
      "volume_ratio_5d": 0.90354,
      "atr_pct": 0.03532,
      "rsi_14": 44.8,
      "dist_sma_20": -0.03428,
      "dist_sma_50": 0.01552,
      "dist_sma_200": -0.10603,
      "dist_high_252": -0.29266,
      "dist_low_252": 0.1865,
      "gap_1d": 0.00271,
      "range_pct_1d": 0.02001,
      "close_location": 0.16431,
      "dollar_volume_log": 10.145,
      "market_return_5d": -0.01187,
      "market_volatility_20d": 0.11404,
      "dist_high_20": -0.08787,
      "dist_low_20": 0.00832,
      "beta_1y": 2.21702,
      "body_pct": -0.01557,
      "upper_wick": 0.04533,
      "lower_wick": 0.16431,
      "range_vs_atr": 0.56658,
      "sma50_vs_sma200": -0.1197,
      "days_to_earnings": 17,
      "days_since_earnings": 47,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "questions": {
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "big_move": {
      "type": "yes_no",
      "instructions": "Will the stock move more than 5% in either direction in 5 trading days?"
    }
  },
  "actions": [
    {
      "id": "hedge",
      "when": "drop5 >= 0.65 and big_move >= 0.25",
      "do": "webhook",
      "connection": "my-oms",
      "body": {
        "symbol": "{{symbol}}",
        "action": "buy_put",
        "target_delta": -0.25,
        "tenor_days": 30,
        "p_drawdown": "{{drop5}}",
        "p_big_move": "{{big_move}}"
      }
    },
    {
      "id": "all_clear",
      "when": "else",
      "do": "slack",
      "connection": "trading-desk",
      "message": "{{symbol}}: no hedge needed (drawdown {{drop5|pct}}, 5-day ±5% move {{big_move|pct}})."
    }
  ],
  "dry_run": true
}
Would send (dry run)

drop5 0.520 · big_move 0.251

Actions 1 of 2 fired · dry run, nothing sent
hedgerule false: skipped
all_clearwould send (dry run)slack → trading-desk
{
  "text": "TSLA: no hedge needed (drawdown 52%, 5-day ±5% move 25%)."
}

Volatility desk alert (Slack, or-rules)

Tell the options desk when price swings are likely to expand or realized vol may top 50%; propose a straddle only when a 5% move inside a week is more likely than not.

ora13 questions2 actions
vol_up >= 0.5 or vol50 >= 0.5→ Slackoptions-desk
move5 >= 0.5→ Webhookmy-oms
  • vol_up Will price swings get bigger over the next week compared with the past month?
  • vol50 Will annualized volatility over the next 21 sessions exceed 50%?
  • move5 Will the stock move more than 5% in either direction in 5 trading days?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-21",
    "context": {
      "return_1d": 0.03414,
      "return_5d": 0.05259,
      "return_20d": 0.01671,
      "return_60d": 0.25706,
      "return_252d": -0.13624,
      "volatility_5d": 0.42207,
      "volatility_20d": 0.34942,
      "volatility_60d": 0.3934,
      "vol_ratio_5_20": 1.20792,
      "volume_ratio": 1.30117,
      "volume_ratio_5d": 1.08622,
      "atr_pct": 0.03188,
      "rsi_14": 59.77,
      "dist_sma_20": 0.04443,
      "dist_sma_50": 0.06706,
      "dist_sma_200": -0.0012,
      "dist_high_252": -0.22525,
      "dist_low_252": 0.29958,
      "gap_1d": 0.02087,
      "range_pct_1d": 0.02156,
      "close_location": 0.71523,
      "dollar_volume_log": 10.112,
      "market_return_5d": 0.00453,
      "market_volatility_20d": 0.08848,
      "dist_high_20": -0.0061,
      "dist_low_20": 0.11735,
      "beta_1y": 2.21228,
      "body_pct": 0.013,
      "upper_wick": 0.28477,
      "lower_wick": 0.12,
      "range_vs_atr": 0.67641,
      "sma50_vs_sma200": -0.06397,
      "earnings_next_5d": 1,
      "days_to_earnings": 1,
      "days_since_earnings": 63,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "questions": {
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will price swings get bigger over the next week compared with the past month?"
    },
    "vol50": {
      "type": "yes_no",
      "instructions": "Will annualized volatility over the next 21 sessions exceed 50%?"
    },
    "move5": {
      "type": "yes_no",
      "instructions": "Will the stock move more than 5% in either direction in 5 trading days?"
    }
  },
  "actions": [
    {
      "id": "vol_alert",
      "when": "vol_up >= 0.5 or vol50 >= 0.5",
      "do": "slack",
      "connection": "options-desk",
      "message": "{{symbol}}: swings likely to expand ({{vol_up|pct}}); realized vol above 50%: {{vol50|pct}}; ±5% within a week: {{move5|pct}}."
    },
    {
      "id": "straddle_idea",
      "when": "move5 >= 0.5",
      "do": "webhook",
      "connection": "my-oms",
      "body": {
        "symbol": "{{symbol}}",
        "idea": "long_straddle",
        "tenor_days": 7,
        "p_move": "{{move5}}"
      }
    }
  ],
  "dry_run": true
}
Would send (dry run)

vol_up 0.516 · vol50 0.427 · move5 0.274

Actions 1 of 2 fired · dry run, nothing sent
vol_alertwould send (dry run)slack → options-desk
{
  "text": "TSLA: swings likely to expand (52%); realized vol above 50%: 43%; ±5% within a week: 27%."
}
straddle_idearule false: skipped

Daily read by email (always)

A short daily note to yourself with five answers, every time it runs. Pair it with a scheduler on your side (cron) until scheduled workflows arrive.

ora15 questions1 action
always→ Emailme
  • up_week Will the stock be higher in a week?
  • beat_spy Will it beat SPY over the next month?
  • drop5 Will it drop at least 5% at some point in the next month?
  • + 2 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-09-30",
    "context": {
      "return_1d": 0.00774,
      "return_5d": 0.02459,
      "return_20d": 0.02371,
      "return_60d": 0.32153,
      "return_252d": 0.0049,
      "volatility_5d": 0.30205,
      "volatility_20d": 0.24151,
      "volatility_60d": 0.38583,
      "vol_ratio_5_20": 1.25066,
      "volume_ratio": 1.3048,
      "volume_ratio_5d": 0.82073,
      "atr_pct": 0.02301,
      "rsi_14": 60.38,
      "dist_sma_20": 0.02477,
      "dist_sma_50": 0.06368,
      "dist_sma_200": 0.18991,
      "dist_high_252": -0.06609,
      "dist_low_252": 0.47154,
      "gap_1d": 0.00362,
      "range_pct_1d": 0.01852,
      "close_location": 0.27053,
      "dollar_volume_log": 10.025,
      "market_return_5d": -0.00675,
      "market_volatility_20d": 0.11145,
      "dist_high_20": -0.01333,
      "dist_low_20": 0.05535,
      "beta_1y": 0.95214,
      "body_pct": 0.00411,
      "upper_wick": 0.72947,
      "lower_wick": 0.04948,
      "range_vs_atr": 0.80503,
      "sma50_vs_sma200": 0.11867,
      "days_to_earnings": 21,
      "days_since_earnings": 43,
      "earn_usual_move": 0.05001,
      "last_earn_reaction": 0.15505
    }
  },
  "questions": {
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "back_to_50": {
      "type": "yes_no",
      "instructions": "Will it trade back to its 50-day moving average in the next month?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will price swings get bigger over the next week compared with the past month?"
    }
  },
  "actions": [
    {
      "id": "daily_read",
      "when": "always",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}} daily read · {{as_of}}",
      "message": "{{symbol}} as of {{as_of}}\n\nHigher in a week: {{up_week|pct}}\nBeats SPY over a month: {{beat_spy|pct}}\n5% drawdown within a month: {{drop5|pct}}\nBack to the 50-day average within a month: {{back_to_50|pct}}\nSwings expanding next week: {{vol_up|pct}}"
    }
  ],
  "dry_run": true
}
Would send (dry run)

up_week 0.555 · beat_spy 0.518 · drop5 0.544 · back_to_50 0.537 · vol_up 0.534

Actions 1 of 1 fired · dry run, nothing sent
daily_readwould send (dry run)email → me
{
  "subject": "MSFT daily read · 2026-09-30",
  "text": "MSFT as of 2026-09-30\n\nHigher in a week: 56%\nBeats SPY over a month: 52%\n5% drawdown within a month: 54%\nBack to the 50-day average within a month: 54%\nSwings expanding next week: 53%"
}

Support ticket routing (general model: choice + score)

Not financial: route a message with a choice and a score. Rules compare the chosen option (department == 'technical') and the score level. Needs Slack connection support and webhook helpdesk.

ora13 questions3 actions
urgent >= 0.7 and department == 'technical'→ Slacksupport
frustration >= 1.5→ Emailme
always→ Webhookhelpdesk
  • urgent The message needs action within the hour
  • department Which team should handle this
  • frustration How frustrated is the writer
Request JSON
{
  "model": "ora1",
  "state": "Our checkout API has returned 500 errors for 20 minutes and customers can't pay. This is the third outage this month and I'm furious. Please call me.",
  "questions": {
    "urgent": {
      "type": "yes_no",
      "instructions": "The message needs action within the hour"
    },
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this",
      "criteria": {
        "billing": "Payment or subscription issues",
        "technical": "Bugs, outages or integration problems",
        "sales": "Pricing or account questions"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "How frustrated is the writer",
      "criteria": [
        "Calm",
        "Annoyed but civil",
        "Very angry"
      ]
    }
  },
  "actions": [
    {
      "id": "page_oncall",
      "when": "urgent >= 0.7 and department == 'technical'",
      "do": "slack",
      "connection": "support",
      "message": "Urgent technical ticket ({{urgent|pct}}), frustration {{frustration|round}}/2. Paging on-call."
    },
    {
      "id": "escalate",
      "when": "frustration >= 1.5",
      "do": "email",
      "connection": "me",
      "subject": "Escalation: very frustrated customer",
      "message": "Frustration {{frustration|round}} of 2, department {{department}}."
    },
    {
      "id": "ticket",
      "when": "always",
      "do": "webhook",
      "connection": "helpdesk",
      "body": {
        "queue": "{{department}}",
        "urgent": "{{urgent}}",
        "frustration": "{{frustration}}",
        "answers": "{{answers}}"
      }
    }
  ],
  "dry_run": true
}
Would send (dry run)

urgent 0.172 · department billing · frustration 2.00

Actions 2 of 3 fired · dry run, nothing sent
page_oncallrule false: skipped
escalatewould send (dry run)email → me
{
  "subject": "Escalation: very frustrated customer",
  "text": "Frustration 2.0 of 2, department billing."
}
ticketwould send (dry run)webhook → helpdesk
{
  "queue": "billing",
  "urgent": 0.172,
  "frustration": 1.999,
  "answers": {
    "urgent": {
      "type": "yes_no",
      "yes_no": 0.172
    },
    "department": {
      "type": "choice",
      "choice": "billing",
      "confidence": 0.391,
      "probabilities": {
        "billing": 0.594,
        "technical": 0.376,
        "sales": 0.03
      }
    },
    "frustration": {
      "type": "score",
      "score": 1.999,
      "confidence": 0.999,
      "legend": {
        "0": "Calm",
        "1": "Annoyed but civil",
        "2": "Very angry"
      },
      "probabilities": {
        "0": 0,
        "1": 0.001,
        "2": 0.999
      }
    }
  }
}

Workflows

Scheduled watchlist runs: the same questions and actions for every symbol, after the close or before the open, with one digest message per run.

Daily drawdown watch

Mega caps after every close: alert the desk on any stock with a 60%+ chance of a 5% drawdown within a month, plus one email listing them.

ora18 symbolsWeekdays 16:45 ETdigest → Email
drop5 >= 0.6→ Slacktrading-desk
  • drop5 Will it drop at least 5% at some point in the next month?
  • rally5 Will it rally at least 5% at some point in the next month?

Symbols: AAPL MSFT NVDA AMZN META GOOGL TSLA AVGO

Breakout watch with volume

Semiconductors after the close: flag likely new 20-day highs and whether volume should confirm them; one Slack digest of the hits.

ora19 symbolsWeekdays 16:50 ETdigest → Slack
new_high >= 0.7→ Webhookmy-oms
  • new_high Will it make a new 20-day high in the next week?
  • vol_spike Will volume spike tomorrow?

Symbols: NVDA AMD AVGO MU QCOM ARM INTC TXN SMH

Pre-open market read

Before the open, one Slack message with every index ETF's odds: higher in a week, a 2% move either way, choppier. No per-symbol actions: the digest is the product.

ora14 symbolsWeekdays 08:30 ETdigest → Slack
  • up_week Will the stock be higher in a week?
  • move2 Will the stock move more than 2% in either direction in 5 trading days?
  • vol_up Will price swings get bigger over the next week compared with the past month?

Symbols: SPY QQQ IWM DIA

Digest it would send (dry run)
Actions 1 of 1 fired · dry run, nothing sent
digestwould send (dry run)slack → trading-desk
{
  "text": "Pre-open market read · data as of 2026-10-30 · 0 of 4 symbols fired:\n• SPY: up_week 60%, move2 39%, vol_up 51%\n• QQQ: up_week 56%, move2 36%, vol_up 51%\n• IWM: up_week 53%, move2 32%, vol_up 47%\n• DIA: up_week 57%, move2 37%, vol_up 49%"
}

Volatility desk scan

High-beta names after the close: tell the options desk where swings are likely to expand or realized vol may top 50%.

ora17 symbolsWeekdays 17:00 ET
vol_up >= 0.55 or vol50 >= 0.6→ Slackoptions-desk
  • vol_up Will price swings get bigger over the next week compared with the past month?
  • vol50 Will annualized volatility over the next 21 sessions exceed 50%?

Symbols: TSLA COIN MSTR PLTR SMCI RIVN HOOD

Financial

Everyday trader questions about one stock, answered from its current numbers.

Momentum burst on heavy volume

ora13 questions
  • vol_up Will volatility rise over the next 5 days?
  • dip_5pct Will it drop at least 5% at some point in the next month?
  • volume_spike Will volume spike tomorrow?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_5d": 0.08,
      "volume_ratio": 2.1,
      "volatility_20d": 0.32
    }
  },
  "questions": {
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    },
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "volume_spike": {
      "type": "yes_no",
      "instructions": "Will volume spike tomorrow?"
    }
  }
}

Quiet large cap near its highs

ora13 questions
  • new_high Will it make a new 20-day high in the next week?
  • vol_up Will volatility rise over the next 5 days?
  • dip_5pct Will it drop at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_5d": 0.006,
      "return_20d": 0.021,
      "volatility_20d": 0.14,
      "dist_high_252": -0.012,
      "rsi_14": 61,
      "dollar_volume_log": 9.4
    }
  },
  "questions": {
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    },
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}

Oversold after a selloff

ora13 questions
  • rally_5pct Will it rally at least 5% at some point in the next month?
  • new_low Will it make a new 20-day low in the next week?
  • vol_down Will volatility calm down over the next 5 days?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_5d": -0.11,
      "return_20d": -0.18,
      "rsi_14": 24,
      "dist_sma_50": -0.15,
      "volatility_20d": 0.48,
      "volume_ratio": 1.7
    }
  },
  "questions": {
    "rally_5pct": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    },
    "new_low": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day low in the next week?"
    },
    "vol_down": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    }
  }
}

Gap up on earnings

ora14 questions
  • vol_down Will volatility calm down over the next 5 days?
  • gap_up Will it gap up tomorrow?
  • volume_spike Will volume spike tomorrow?
  • + 1 more
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "gap_1d": 0.065,
      "return_1d": 0.082,
      "volume_ratio": 4.3,
      "range_pct_1d": 0.071,
      "close_location": 0.88,
      "volatility_20d": 0.29
    }
  },
  "questions": {
    "vol_down": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    },
    "gap_up": {
      "type": "yes_no",
      "instructions": "Will it gap up tomorrow?"
    },
    "volume_spike": {
      "type": "yes_no",
      "instructions": "Will volume spike tomorrow?"
    },
    "up_5d": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}

Gap down on a guidance cut

ora13 questions
  • vol_down Will volatility calm down over the next 5 days?
  • new_low Will it make a new 20-day low in the next week?
  • rally_5pct Will it rally at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "gap_1d": -0.09,
      "return_1d": -0.12,
      "volume_ratio": 5.2,
      "range_pct_1d": 0.08,
      "close_location": 0.15,
      "volatility_5d": 0.95
    }
  },
  "questions": {
    "vol_down": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    },
    "new_low": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day low in the next week?"
    },
    "rally_5pct": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}

Volatility squeeze (tight range)

ora13 questions
  • vol_up Will volatility rise over the next 5 days?
  • big_move Will there be a big move in either direction in the next 5 days?
  • new_high Will it make a new 20-day high in the next week?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "volatility_5d": 0.09,
      "volatility_20d": 0.21,
      "vol_ratio_5_20": 0.43,
      "atr_pct": 0.014,
      "range_pct_1d": 0.008,
      "volume_ratio_5d": 0.7
    }
  },
  "questions": {
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    },
    "big_move": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    },
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    }
  }
}

Small cap meme spike

ora13 questions
  • dip_5pct Will it drop at least 5% at some point in the next month?
  • vol_down Will volatility calm down over the next 5 days?
  • gap_down Will it gap down tomorrow?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_1d": 0.27,
      "return_5d": 0.61,
      "volume_ratio": 9.5,
      "volatility_20d": 1.35,
      "rsi_14": 88,
      "dollar_volume_log": 6.8
    }
  },
  "questions": {
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "vol_down": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    },
    "gap_down": {
      "type": "yes_no",
      "instructions": "Will it gap down tomorrow?"
    }
  }
}

Long-term downtrend, lower lows

ora13 questions
  • new_low Will it make a new 20-day low in the next week?
  • beat_spy Will it beat SPY over the next month?
  • rally_5pct Will it rally at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_60d": -0.22,
      "return_252d": -0.41,
      "dist_sma_200": -0.27,
      "dist_high_252": -0.48,
      "rsi_14": 38,
      "volatility_60d": 0.44
    }
  },
  "questions": {
    "new_low": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day low in the next week?"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    },
    "rally_5pct": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}

Breakout to a 52-week high

ora13 questions
  • new_high Will it make a new 20-day high in the next week?
  • dip_5pct Will it drop at least 5% at some point in the next month?
  • up_5d Will the stock be higher in a week?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "dist_high_252": 0,
      "return_20d": 0.12,
      "volume_ratio": 2.4,
      "rsi_14": 72,
      "dist_sma_50": 0.09,
      "close_location": 0.95
    }
  },
  "questions": {
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    },
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "up_5d": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}

Market selloff, stock holds up

ora13 questions
  • beat_spy Will it beat SPY over the next month?
  • vol_up Will volatility rise over the next 5 days?
  • dip_5pct Will it drop at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "market_return_5d": -0.045,
      "market_volatility_20d": 0.27,
      "return_5d": 0.004,
      "volatility_20d": 0.22,
      "dist_sma_200": 0.06
    }
  },
  "questions": {
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    },
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}

Calm market, defensive stock

ora13 questions
  • big_move Will there be a big move in either direction in the next 5 days?
  • dip_5pct Will it drop at least 5% at some point in the next month?
  • rally_5pct Will it rally at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "market_return_5d": 0.008,
      "market_volatility_20d": 0.11,
      "volatility_20d": 0.12,
      "atr_pct": 0.011,
      "return_20d": 0.01,
      "dollar_volume_log": 8.9
    }
  },
  "questions": {
    "big_move": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    },
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "rally_5pct": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}

Volume drying up after a run

ora13 questions
  • volume_spike Will volume spike tomorrow?
  • new_high Will it make a new 20-day high in the next week?
  • dip_5pct Will it drop at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_20d": 0.15,
      "volume_ratio": 0.45,
      "volume_ratio_5d": 0.6,
      "rsi_14": 66,
      "dist_sma_20": 0.05
    }
  },
  "questions": {
    "volume_spike": {
      "type": "yes_no",
      "instructions": "Will volume spike tomorrow?"
    },
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    },
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}

Reversal day: closed at the low

ora13 questions
  • up_1d Will the stock be up tomorrow?
  • gap_down Will it gap down tomorrow?
  • new_low Will it make a new 20-day low in the next week?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_1d": -0.031,
      "range_pct_1d": 0.052,
      "close_location": 0.04,
      "volume_ratio": 1.9,
      "rsi_14": 55,
      "dist_sma_20": 0.01
    }
  },
  "questions": {
    "up_1d": {
      "type": "yes_no",
      "instructions": "Will the stock be up tomorrow?"
    },
    "gap_down": {
      "type": "yes_no",
      "instructions": "Will it gap down tomorrow?"
    },
    "new_low": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day low in the next week?"
    }
  }
}

Hammer: closed at the high after a dip

ora13 questions
  • up_1d Will the stock be up tomorrow?
  • gap_up Will it gap up tomorrow?
  • rally_5pct Will it rally at least 5% at some point in the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_1d": 0.012,
      "range_pct_1d": 0.047,
      "close_location": 0.93,
      "return_5d": -0.06,
      "rsi_14": 33,
      "volume_ratio": 1.6
    }
  },
  "questions": {
    "up_1d": {
      "type": "yes_no",
      "instructions": "Will the stock be up tomorrow?"
    },
    "gap_up": {
      "type": "yes_no",
      "instructions": "Will it gap up tomorrow?"
    },
    "rally_5pct": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}

Extended far above the 200-day

ora13 questions
  • dip_5pct Will it drop at least 5% at some point in the next month?
  • beat_spy Will it beat SPY over the next month?
  • vol_up_20 Will volatility be higher over the next month?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "dist_sma_200": 0.42,
      "dist_sma_50": 0.18,
      "return_60d": 0.38,
      "rsi_14": 79,
      "volatility_20d": 0.36
    }
  },
  "questions": {
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    },
    "vol_up_20": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    }
  }
}

At a 52-week low and still falling

ora13 questions
  • new_low Will it make a new 20-day low in the next week?
  • rally_5pct Will it rally at least 5% at some point in the next month?
  • big_move Will there be a big move in either direction in the next 5 days?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "dist_low_252": 0,
      "return_5d": -0.07,
      "return_20d": -0.21,
      "rsi_14": 21,
      "volatility_20d": 0.62,
      "volume_ratio_5d": 1.8
    }
  },
  "questions": {
    "new_low": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day low in the next week?"
    },
    "rally_5pct": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    },
    "big_move": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  }
}

High-volatility regime cooling down

ora13 questions
  • vol_down Will volatility calm down over the next 5 days?
  • vol_up_20 Will volatility be higher over the next month?
  • big_move Will there be a big move in either direction in the next 5 days?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "volatility_5d": 0.31,
      "volatility_20d": 0.58,
      "vol_ratio_5_20": 0.53,
      "market_volatility_20d": 0.24,
      "atr_pct": 0.035
    }
  },
  "questions": {
    "vol_down": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    },
    "vol_up_20": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    },
    "big_move": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  }
}

Illiquid name, wide daily ranges

ora13 questions
  • big_move Will there be a big move in either direction in the next 5 days?
  • gap_up Will it gap up tomorrow?
  • gap_down Will it gap down tomorrow?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "dollar_volume_log": 5.9,
      "atr_pct": 0.072,
      "range_pct_1d": 0.09,
      "volatility_20d": 0.85,
      "volume_ratio": 0.8
    }
  },
  "questions": {
    "big_move": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    },
    "gap_up": {
      "type": "yes_no",
      "instructions": "Will it gap up tomorrow?"
    },
    "gap_down": {
      "type": "yes_no",
      "instructions": "Will it gap down tomorrow?"
    }
  }
}

Minimal context (three numbers)

ora13 questions
  • rally_5pct Will it rally at least 5% at some point in the next month?
  • dip_5pct Will it drop at least 5% at some point in the next month?
  • new_low Will it make a new 20-day low in the next week?
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_20d": -0.05,
      "rsi_14": 41,
      "volatility_20d": 0.27
    }
  },
  "questions": {
    "rally_5pct": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    },
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "new_low": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day low in the next week?"
    }
  }
}

Full 24-field snapshot

ora14 questions
  • vol_up Will volatility rise over the next 5 days?
  • up_5d Will the stock be higher in a week?
  • new_high Will it make a new 20-day high in the next week?
  • + 1 more
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_1d": 0.014,
      "return_5d": 0.032,
      "return_20d": 0.058,
      "return_60d": 0.11,
      "return_252d": 0.27,
      "volatility_5d": 0.24,
      "volatility_20d": 0.27,
      "volatility_60d": 0.29,
      "vol_ratio_5_20": 0.89,
      "volume_ratio": 1.3,
      "volume_ratio_5d": 1.1,
      "atr_pct": 0.021,
      "rsi_14": 63,
      "dist_sma_20": 0.028,
      "dist_sma_50": 0.061,
      "dist_sma_200": 0.14,
      "dist_high_252": -0.03,
      "dist_low_252": 0.46,
      "gap_1d": 0.004,
      "range_pct_1d": 0.024,
      "close_location": 0.78,
      "dollar_volume_log": 8.6,
      "market_return_5d": 0.011,
      "market_volatility_20d": 0.15
    }
  },
  "questions": {
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    },
    "up_5d": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    },
    "dip_5pct": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}

Gap fill

Real opening gaps, with what actually happened. Run it and compare the answers to the outcome.

TSLA earnings gap: TSLA 2026-10-22 -3.2% + no-signal control

ora13 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
  • gap_and_go Is this a gap-and-go day rather than a fade?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-22",
    "context": {
      "gap_pct": -0.03219,
      "gap_dir": -1,
      "gap_atr": -1.00978,
      "gap_vs_typical": 3.76115,
      "gap_outside_range_atr": 0.526,
      "earnings_day": 1,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.00869,
      "gap_vs_market": -0.0235,
      "prior_return_1d": 0.03414,
      "prior_return_5d": 0.05259,
      "prior_return_20d": 0.01671,
      "prior_rsi_14": 59.77,
      "prior_dist_sma_20": 0.04443,
      "prior_dist_sma_50": 0.06706,
      "prior_dist_high_20": -0.0061,
      "prior_dist_low_20": 0.11735,
      "prior_close_location": 0.71523,
      "prior_volume_ratio": 1.30117,
      "volatility_20d": 0.34942,
      "atr_pct": 0.03188,
      "dollar_volume_log": 10.112,
      "beta_1y": 2.21228,
      "market_volatility_20d": 0.08848,
      "sym_gap_fill_rate": 0.44,
      "sym_gap_fill_rate_dir": 0.4,
      "sym_gap_fill_5d_rate": 0.72,
      "sym_gap_go_rate": 0.5,
      "sym_gaps_1y": 107
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    },
    "gap_and_go": {
      "type": "yes_no",
      "instructions": "Is this a gap-and-go day rather than a fade?"
    }
  }
}

TSLA ordinary gap down: TSLA 2026-10-15 -1.8%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-15",
    "context": {
      "gap_pct": -0.01792,
      "gap_dir": -1,
      "gap_atr": -0.59541,
      "gap_vs_typical": 2.09405,
      "gap_outside_range_atr": 0.29318,
      "earnings_day": 0,
      "earnings_next_5d": 1,
      "market_gap_pct": -0.00435,
      "gap_vs_market": -0.01357,
      "prior_return_1d": -0.02151,
      "prior_return_5d": -0.02819,
      "prior_return_20d": 0.02536,
      "prior_rsi_14": 49.27,
      "prior_dist_sma_20": -0.01035,
      "prior_dist_sma_50": 0.02576,
      "prior_dist_high_20": -0.05508,
      "prior_dist_low_20": 0.06152,
      "prior_close_location": 0.44122,
      "prior_volume_ratio": 0.89872,
      "volatility_20d": 0.31237,
      "atr_pct": 0.0301,
      "dollar_volume_log": 10.104,
      "beta_1y": 2.20743,
      "market_volatility_20d": 0.10666,
      "sym_gap_fill_rate": 0.44,
      "sym_gap_fill_rate_dir": 0.42,
      "sym_gap_fill_5d_rate": 0.72,
      "sym_gap_go_rate": 0.52,
      "sym_gaps_1y": 107
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

MSFT small gap up: MSFT 2026-10-09 +1.1%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-10-09",
    "context": {
      "gap_pct": 0.01076,
      "gap_dir": 1,
      "gap_atr": 0.49067,
      "gap_vs_typical": 1.79177,
      "gap_outside_range_atr": -0.46014,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00298,
      "gap_vs_market": 0.00778,
      "prior_return_1d": -0.0135,
      "prior_return_5d": 0.01913,
      "prior_return_20d": 0.06127,
      "prior_rsi_14": 61.76,
      "prior_dist_sma_20": 0.0285,
      "prior_dist_sma_50": 0.04838,
      "prior_dist_high_20": -0.02442,
      "prior_dist_low_20": 0.07261,
      "prior_close_location": 0.13078,
      "prior_volume_ratio": 0.90468,
      "volatility_20d": 0.21365,
      "atr_pct": 0.02194,
      "dollar_volume_log": 10.045,
      "beta_1y": 0.95433,
      "market_volatility_20d": 0.10523,
      "sym_gap_fill_rate": 0.26,
      "sym_gap_fill_rate_dir": 0.32,
      "sym_gap_fill_5d_rate": 0.68,
      "sym_gap_go_rate": 0.48,
      "sym_gaps_1y": 74
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

MSFT earnings gap: MSFT 2026-07-30 +12.1%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-07-30",
    "context": {
      "gap_pct": 0.12125,
      "gap_dir": 1,
      "gap_atr": 3.98592,
      "gap_vs_typical": 22.93164,
      "gap_outside_range_atr": 3.08442,
      "earnings_day": 1,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00903,
      "gap_vs_market": 0.11222,
      "prior_return_1d": -0.00713,
      "prior_return_5d": 0.00051,
      "prior_return_20d": 0.04698,
      "prior_rsi_14": 50.04,
      "prior_dist_sma_20": 0.00187,
      "prior_dist_sma_50": -0.01837,
      "prior_dist_high_20": -0.03805,
      "prior_dist_low_20": 0.04605,
      "prior_close_location": 0.14388,
      "prior_volume_ratio": 1.47088,
      "volatility_20d": 0.26035,
      "atr_pct": 0.03042,
      "dollar_volume_log": 10.098,
      "beta_1y": 0.7652,
      "market_volatility_20d": 0.10703,
      "sym_gap_fill_rate": 0.34,
      "sym_gap_fill_rate_dir": 0.36,
      "sym_gap_fill_5d_rate": 0.74,
      "sym_gap_go_rate": 0.48,
      "sym_gaps_1y": 62
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

NVDA large gap down (>4%): NVDA 2025-11-25 -4.2%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "NVDA",
    "as_of": "2025-11-25",
    "context": {
      "gap_pct": -0.04181,
      "gap_dir": -1,
      "gap_atr": -0.92523,
      "gap_vs_typical": 4.10669,
      "gap_outside_range_atr": 0.18932,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.00016,
      "gap_vs_market": -0.04164,
      "prior_return_1d": 0.02051,
      "prior_return_5d": -0.0217,
      "prior_return_20d": -0.04669,
      "prior_rsi_14": 45.14,
      "prior_dist_sma_20": -0.05172,
      "prior_dist_sma_50": -0.0215,
      "prior_dist_high_20": -0.13972,
      "prior_dist_low_20": 0.05562,
      "prior_close_location": 0.86467,
      "prior_volume_ratio": 1.16733,
      "volatility_20d": 0.46826,
      "atr_pct": 0.04518,
      "dollar_volume_log": 10.634,
      "beta_1y": 1.84137,
      "market_volatility_20d": 0.14714,
      "sym_gap_fill_rate": 0.34,
      "sym_gap_fill_rate_dir": 0.34,
      "sym_gap_fill_5d_rate": 0.68,
      "sym_gap_go_rate": 0.44,
      "sym_gaps_1y": 128
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

NVDA gap up, no earnings: NVDA 2026-10-21 +2.1%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "NVDA",
    "as_of": "2026-10-21",
    "context": {
      "gap_pct": 0.02074,
      "gap_dir": 1,
      "gap_atr": 0.76612,
      "gap_vs_typical": 2.39032,
      "gap_outside_range_atr": 0.42657,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00276,
      "gap_vs_market": 0.01799,
      "prior_return_1d": -0.00286,
      "prior_return_5d": -0.05273,
      "prior_return_20d": -0.05418,
      "prior_rsi_14": 40.93,
      "prior_dist_sma_20": -0.04657,
      "prior_dist_sma_50": -0.02847,
      "prior_dist_high_20": -0.11053,
      "prior_dist_low_20": 0.01739,
      "prior_close_location": 0.65026,
      "prior_volume_ratio": 0.74971,
      "volatility_20d": 0.23582,
      "atr_pct": 0.02707,
      "dollar_volume_log": 10.367,
      "beta_1y": 1.89868,
      "market_volatility_20d": 0.09037,
      "sym_gap_fill_rate": 0.24,
      "sym_gap_fill_rate_dir": 0.3,
      "sym_gap_fill_5d_rate": 0.66,
      "sym_gap_go_rate": 0.54,
      "sym_gaps_1y": 113
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

AAPL gaps with the whole market: AAPL 2026-07-23 -1.3%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "AAPL",
    "as_of": "2026-07-23",
    "context": {
      "gap_pct": -0.01278,
      "gap_dir": -1,
      "gap_atr": -0.51892,
      "gap_vs_typical": 3.66191,
      "gap_outside_range_atr": 0.20111,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.01076,
      "gap_vs_market": -0.00202,
      "prior_return_1d": -0.00565,
      "prior_return_5d": -0.00492,
      "prior_return_20d": 0.10733,
      "prior_rsi_14": 62.55,
      "prior_dist_sma_20": 0.05104,
      "prior_dist_sma_50": 0.06889,
      "prior_dist_high_20": -0.02716,
      "prior_dist_low_20": 0.19048,
      "prior_close_location": 0.45053,
      "prior_volume_ratio": 0.59052,
      "volatility_20d": 0.37453,
      "atr_pct": 0.02462,
      "dollar_volume_log": 10.295,
      "beta_1y": 0.84395,
      "market_volatility_20d": 0.10645,
      "sym_gap_fill_rate": 0.24,
      "sym_gap_fill_rate_dir": 0.26,
      "sym_gap_fill_5d_rate": 0.58,
      "sym_gap_go_rate": 0.48,
      "sym_gaps_1y": 34
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

AMD gaps against the market: AMD 2026-08-05 -6.6%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "AMD",
    "as_of": "2026-08-05",
    "context": {
      "gap_pct": -0.06573,
      "gap_dir": -1,
      "gap_atr": -0.84462,
      "gap_vs_typical": 4.8597,
      "gap_outside_range_atr": 0.43873,
      "earnings_day": 1,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00586,
      "gap_vs_market": -0.07159,
      "prior_return_1d": 0.07003,
      "prior_return_5d": 0.14069,
      "prior_return_20d": 0.00479,
      "prior_rsi_14": 52.32,
      "prior_dist_sma_20": 0.01322,
      "prior_dist_sma_50": 0.00827,
      "prior_dist_high_20": -0.09687,
      "prior_dist_low_20": 0.22297,
      "prior_close_location": 0.58647,
      "prior_volume_ratio": 1.37084,
      "volatility_20d": 0.83003,
      "atr_pct": 0.07782,
      "dollar_volume_log": 10.147,
      "beta_1y": 3.1136,
      "market_volatility_20d": 0.14514,
      "sym_gap_fill_rate": 0.42,
      "sym_gap_fill_rate_dir": 0.56,
      "sym_gap_fill_5d_rate": 0.74,
      "sym_gap_go_rate": 0.5,
      "sym_gaps_1y": 150
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

SPY gap down (index ETF): SPY 2026-07-23 -1.1%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "SPY",
    "as_of": "2026-07-23",
    "context": {
      "gap_pct": -0.01076,
      "gap_dir": -1,
      "gap_atr": -1.00517,
      "gap_vs_typical": 3.7872,
      "gap_outside_range_atr": 0.87514,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.01076,
      "gap_vs_market": 0,
      "prior_return_1d": -0.00116,
      "prior_return_5d": -0.0098,
      "prior_return_20d": 0.01885,
      "prior_rsi_14": 52.01,
      "prior_dist_sma_20": 0.00233,
      "prior_dist_sma_50": 0.00453,
      "prior_dist_high_20": -0.01081,
      "prior_dist_low_20": 0.04302,
      "prior_close_location": 0.28493,
      "prior_volume_ratio": 0.6526,
      "volatility_20d": 0.10645,
      "atr_pct": 0.0107,
      "dollar_volume_log": 10.559,
      "beta_1y": 1,
      "market_volatility_20d": 0.10645,
      "sym_gap_fill_rate": 0.28,
      "sym_gap_fill_rate_dir": 0.32,
      "sym_gap_fill_5d_rate": 0.6,
      "sym_gap_go_rate": 0.46,
      "sym_gaps_1y": 17
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

QQQ gap up (index ETF): QQQ 2026-10-19 +1.4%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "QQQ",
    "as_of": "2026-10-19",
    "context": {
      "gap_pct": 0.01383,
      "gap_dir": 1,
      "gap_atr": 0.94748,
      "gap_vs_typical": 2.61732,
      "gap_outside_range_atr": -0.61058,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00521,
      "gap_vs_market": 0.00861,
      "prior_return_1d": -0.025,
      "prior_return_5d": -0.0552,
      "prior_return_20d": -0.01615,
      "prior_rsi_14": 35.01,
      "prior_dist_sma_20": -0.04406,
      "prior_dist_sma_50": -0.02335,
      "prior_dist_high_20": -0.06955,
      "prior_dist_low_20": 0.00243,
      "prior_close_location": 0.0963,
      "prior_volume_ratio": 1.92931,
      "volatility_20d": 0.18344,
      "atr_pct": 0.01459,
      "dollar_volume_log": 10.421,
      "beta_1y": 1.43609,
      "market_volatility_20d": 0.10459,
      "sym_gap_fill_rate": 0.18,
      "sym_gap_fill_rate_dir": 0.22,
      "sym_gap_fill_5d_rate": 0.62,
      "sym_gap_go_rate": 0.48,
      "sym_gaps_1y": 50
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Huge gap (>8%), high-volatility name: KORU 2026-10-22 -9.3%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "KORU",
    "as_of": "2026-10-22",
    "context": {
      "gap_pct": -0.09296,
      "gap_dir": -1,
      "gap_atr": -0.60185,
      "gap_vs_typical": 1.77902,
      "gap_outside_range_atr": 0.24399,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.00869,
      "gap_vs_market": -0.08427,
      "prior_return_1d": 0.05291,
      "prior_return_5d": -0.07657,
      "prior_return_20d": -0.43865,
      "prior_rsi_14": 34.76,
      "prior_dist_sma_20": -0.31427,
      "prior_dist_sma_50": -0.38775,
      "prior_dist_high_20": -0.48755,
      "prior_dist_low_20": 0.14258,
      "prior_close_location": 0.6055,
      "prior_volume_ratio": 1.48897,
      "volatility_20d": 1.21975,
      "atr_pct": 0.15447,
      "dollar_volume_log": 8.634,
      "beta_1y": 8.78172,
      "market_volatility_20d": 0.08848,
      "sym_gap_fill_rate": 0.28,
      "sym_gap_fill_rate_dir": 0.28,
      "sym_gap_fill_5d_rate": 0.64,
      "sym_gap_go_rate": 0.56,
      "sym_gaps_1y": 229
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Gap up after a 5-day rally: CIEN 2026-10-09 +2.4%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "CIEN",
    "as_of": "2026-10-09",
    "context": {
      "gap_pct": 0.02364,
      "gap_dir": 1,
      "gap_atr": 0.41552,
      "gap_vs_typical": 1.6136,
      "gap_outside_range_atr": -0.32969,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00298,
      "gap_vs_market": 0.02066,
      "prior_return_1d": -0.04596,
      "prior_return_5d": 0.12341,
      "prior_return_20d": 0.2731,
      "prior_rsi_14": 62.74,
      "prior_dist_sma_20": 0.15585,
      "prior_dist_sma_50": 0.12363,
      "prior_dist_high_20": -0.04926,
      "prior_dist_low_20": 0.33759,
      "prior_close_location": 0.21066,
      "prior_volume_ratio": 1.31866,
      "volatility_20d": 0.74022,
      "atr_pct": 0.0569,
      "dollar_volume_log": 9.03,
      "beta_1y": 2.50558,
      "market_volatility_20d": 0.10523,
      "sym_gap_fill_rate": 0.5,
      "sym_gap_fill_rate_dir": 0.52,
      "sym_gap_fill_5d_rate": 0.84,
      "sym_gap_go_rate": 0.52,
      "sym_gaps_1y": 152
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Gap down into oversold (RSI < 30): INTU 2026-09-28 -2.0%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "INTU",
    "as_of": "2026-09-28",
    "context": {
      "gap_pct": -0.02045,
      "gap_dir": -1,
      "gap_atr": -0.41928,
      "gap_vs_typical": 3.24707,
      "gap_outside_range_atr": 0.09513,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.00389,
      "gap_vs_market": -0.01656,
      "prior_return_1d": -0.00482,
      "prior_return_5d": -0.09036,
      "prior_return_20d": -0.20749,
      "prior_rsi_14": 29.58,
      "prior_dist_sma_20": -0.1366,
      "prior_dist_sma_50": -0.1505,
      "prior_dist_high_20": -0.246,
      "prior_dist_low_20": 0.01606,
      "prior_close_location": 0.73154,
      "prior_volume_ratio": 0.92454,
      "volatility_20d": 0.41765,
      "atr_pct": 0.04877,
      "dollar_volume_log": 9.057,
      "beta_1y": 0.29575,
      "market_volatility_20d": 0.11137,
      "sym_gap_fill_rate": 0.46,
      "sym_gap_fill_rate_dir": 0.32,
      "sym_gap_fill_5d_rate": 0.78,
      "sym_gap_go_rate": 0.48,
      "sym_gaps_1y": 100
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Gap opens beyond yesterday's range: AMAT 2026-10-22 -6.1%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "AMAT",
    "as_of": "2026-10-22",
    "context": {
      "gap_pct": -0.06082,
      "gap_dir": -1,
      "gap_atr": -1.28329,
      "gap_vs_typical": 4.38964,
      "gap_outside_range_atr": 1.14113,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.00869,
      "gap_vs_market": -0.05212,
      "prior_return_1d": 0.00978,
      "prior_return_5d": -0.08439,
      "prior_return_20d": -0.13795,
      "prior_rsi_14": 31.02,
      "prior_dist_sma_20": -0.1501,
      "prior_dist_sma_50": -0.13898,
      "prior_dist_high_20": -0.25274,
      "prior_dist_low_20": 0.02485,
      "prior_close_location": 0.35253,
      "prior_volume_ratio": 0.98715,
      "volatility_20d": 0.46076,
      "atr_pct": 0.04739,
      "dollar_volume_log": 9.481,
      "beta_1y": 2.702,
      "market_volatility_20d": 0.08848,
      "sym_gap_fill_rate": 0.32,
      "sym_gap_fill_rate_dir": 0.4,
      "sym_gap_fill_5d_rate": 0.7,
      "sym_gap_go_rate": 0.44,
      "sym_gaps_1y": 157
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Small gap inside yesterday's range: SMH 2026-10-16 -1.4%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "SMH",
    "as_of": "2026-10-16",
    "context": {
      "gap_pct": -0.01403,
      "gap_dir": -1,
      "gap_atr": -0.49003,
      "gap_vs_typical": 1.28861,
      "gap_outside_range_atr": -0.65067,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00188,
      "gap_vs_market": -0.01591,
      "prior_return_1d": -0.01045,
      "prior_return_5d": -0.07975,
      "prior_return_20d": -0.00316,
      "prior_rsi_14": 36.46,
      "prior_dist_sma_20": -0.07277,
      "prior_dist_sma_50": -0.03592,
      "prior_dist_high_20": -0.12609,
      "prior_dist_low_20": 0.03376,
      "prior_close_location": 0.91068,
      "prior_volume_ratio": 2.2578,
      "volatility_20d": 0.29883,
      "atr_pct": 0.02863,
      "dollar_volume_log": 9.622,
      "beta_1y": 2.36641,
      "market_volatility_20d": 0.09604,
      "sym_gap_fill_rate": 0.26,
      "sym_gap_fill_rate_dir": 0.3,
      "sym_gap_fill_5d_rate": 0.68,
      "sym_gap_go_rate": 0.4,
      "sym_gaps_1y": 137
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Earnings gap down, large cap: LRCX 2026-10-22 -10.0%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "LRCX",
    "as_of": "2026-10-22",
    "context": {
      "gap_pct": -0.1004,
      "gap_dir": -1,
      "gap_atr": -1.85473,
      "gap_vs_typical": 5.92306,
      "gap_outside_range_atr": 1.73077,
      "earnings_day": 1,
      "earnings_next_5d": 0,
      "market_gap_pct": -0.00869,
      "gap_vs_market": -0.09171,
      "prior_return_1d": -0.01002,
      "prior_return_5d": -0.091,
      "prior_return_20d": -0.15123,
      "prior_rsi_14": 31.8,
      "prior_dist_sma_20": -0.15334,
      "prior_dist_sma_50": -0.1484,
      "prior_dist_high_20": -0.26024,
      "prior_dist_low_20": 0.00676,
      "prior_close_location": 0.1478,
      "prior_volume_ratio": 1.83819,
      "volatility_20d": 0.43061,
      "atr_pct": 0.05413,
      "dollar_volume_log": 9.416,
      "beta_1y": 3.17786,
      "market_volatility_20d": 0.08848,
      "sym_gap_fill_rate": 0.42,
      "sym_gap_fill_rate_dir": 0.42,
      "sym_gap_fill_5d_rate": 0.68,
      "sym_gap_go_rate": 0.38,
      "sym_gaps_1y": 173
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Same gap, different stock: TSLA 2025-11-26 +1.1%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2025-11-26",
    "context": {
      "gap_pct": 0.01085,
      "gap_dir": 1,
      "gap_atr": 0.20983,
      "gap_vs_typical": 0.92622,
      "gap_outside_range_atr": 0.16003,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00388,
      "gap_vs_market": 0.00697,
      "prior_return_1d": 0.00388,
      "prior_return_5d": 0.04523,
      "prior_return_20d": -0.08935,
      "prior_rsi_14": 48.82,
      "prior_dist_sma_20": -0.02098,
      "prior_dist_sma_50": -0.0329,
      "prior_dist_high_20": -0.11532,
      "prior_dist_low_20": 0.09567,
      "prior_close_location": 0.92567,
      "prior_volume_ratio": 0.81696,
      "volatility_20d": 0.55194,
      "atr_pct": 0.0517,
      "dollar_volume_log": 10.572,
      "beta_1y": 2.25248,
      "market_volatility_20d": 0.15133,
      "sym_gap_fill_rate": 0.42,
      "sym_gap_fill_rate_dir": 0.44,
      "sym_gap_fill_5d_rate": 0.72,
      "sym_gap_go_rate": 0.56,
      "sym_gaps_1y": 145
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Same gap, different stock: MSFT 2026-04-17 +1.1%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-04-17",
    "context": {
      "gap_pct": 0.01085,
      "gap_dir": 1,
      "gap_atr": 0.46494,
      "gap_vs_typical": 2.68078,
      "gap_outside_range_atr": 0.40784,
      "earnings_day": 0,
      "earnings_next_5d": 0,
      "market_gap_pct": 0.00639,
      "gap_vs_market": 0.00446,
      "prior_return_1d": 0.02197,
      "prior_return_5d": 0.12649,
      "prior_return_20d": 0.07265,
      "prior_rsi_14": 70.78,
      "prior_dist_sma_20": 0.11109,
      "prior_dist_sma_50": 0.07233,
      "prior_dist_high_20": -0.00133,
      "prior_dist_low_20": 0.17957,
      "prior_close_location": 0.93548,
      "prior_volume_ratio": 1.24067,
      "volatility_20d": 0.30961,
      "atr_pct": 0.02334,
      "dollar_volume_log": 10.113,
      "beta_1y": 0.98579,
      "market_volatility_20d": 0.18865,
      "sym_gap_fill_rate": 0.34,
      "sym_gap_fill_rate_dir": 0.38,
      "sym_gap_fill_5d_rate": 0.64,
      "sym_gap_go_rate": 0.42,
      "sym_gaps_1y": 41
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Minimal context, hand-typed: TSLA 2026-10-22 -3.2%

ora12 questionsreal outcome
  • fill_today Will the gap fill today?
  • fill_5d Will the gap fill within 5 sessions?
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-22",
    "context": {
      "gap_pct": -0.03219,
      "gap_dir": -1,
      "gap_atr": -1.00978,
      "earnings_day": 1,
      "market_gap_pct": -0.00869,
      "sym_gap_fill_rate_dir": 0.4
    }
  },
  "questions": {
    "fill_today": {
      "type": "yes_no",
      "instructions": "Will the gap fill today?"
    },
    "fill_5d": {
      "type": "yes_no",
      "instructions": "Will the gap fill within 5 sessions?"
    }
  }
}

Paraphrase check

The same question in 3–4 wordings, with the real outcome. A model that understands the question gives each wording the same answer.

New highs and lows: TSLA 2026-10-21 (2 questions, each in 3–4 wordings)

ora18 questionsreal outcome
  • new_high Will it make a new 20-day high in the next week?
  • new_high_alt1 Is it going to print a fresh 20 day peak inside the next 5 sessions?
  • new_high_alt2 Any chance it tags a new 4-week high over the coming week?
  • + 5 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-21",
    "context": {
      "return_1d": 0.03414,
      "return_5d": 0.05259,
      "return_20d": 0.01671,
      "return_60d": 0.25706,
      "return_252d": -0.13624,
      "volatility_5d": 0.42207,
      "volatility_20d": 0.34942,
      "volatility_60d": 0.3934,
      "vol_ratio_5_20": 1.20792,
      "volume_ratio": 1.30117,
      "volume_ratio_5d": 1.08622,
      "atr_pct": 0.03188,
      "rsi_14": 59.77,
      "dist_sma_20": 0.04443,
      "dist_sma_50": 0.06706,
      "dist_sma_200": -0.0012,
      "dist_high_252": -0.22525,
      "dist_low_252": 0.29958,
      "gap_1d": 0.02087,
      "range_pct_1d": 0.02156,
      "close_location": 0.71523,
      "dollar_volume_log": 10.112,
      "market_return_5d": 0.00453,
      "market_volatility_20d": 0.08848,
      "dist_high_20": -0.0061,
      "dist_low_20": 0.11735,
      "beta_1y": 2.21228,
      "body_pct": 0.013,
      "upper_wick": 0.28477,
      "lower_wick": 0.12,
      "range_vs_atr": 0.67641,
      "sma50_vs_sma200": -0.06397,
      "earnings_next_5d": 1,
      "days_to_earnings": 1,
      "days_since_earnings": 63,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "questions": {
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    },
    "new_high_alt1": {
      "type": "yes_no",
      "instructions": "Is it going to print a fresh 20 day peak inside the next 5 sessions?"
    },
    "new_high_alt2": {
      "type": "yes_no",
      "instructions": "Any chance it tags a new 4-week high over the coming week?"
    },
    "new_high_alt3": {
      "type": "yes_no",
      "instructions": "Does it take out the 20-day top within 5 trading days?"
    },
    "new_low": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day low in the next week?"
    },
    "new_low_alt1": {
      "type": "yes_no",
      "instructions": "Will it set a fresh 20-session trough within five days?"
    },
    "new_low_alt2": {
      "type": "yes_no",
      "instructions": "Could it break to a new one-month low this coming week?"
    },
    "new_low_alt3": {
      "type": "yes_no",
      "instructions": "Does it undercut the 20d bottom in the next 5 sessions?"
    }
  }
}

5% moves at any point in a month: MSFT 2026-09-30 (2 questions, each in 3–4 wordings)

ora18 questionsreal outcome
  • rally5 Will it rally at least 5% at some point in the next month?
  • rally5_alt1 Could it pop 5% or more at any point over the next 21 sessions?
  • rally5_alt2 Any chance of a 5 percent jump sometime in the coming month?
  • + 5 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-09-30",
    "context": {
      "return_1d": 0.00774,
      "return_5d": 0.02459,
      "return_20d": 0.02371,
      "return_60d": 0.32153,
      "return_252d": 0.0049,
      "volatility_5d": 0.30205,
      "volatility_20d": 0.24151,
      "volatility_60d": 0.38583,
      "vol_ratio_5_20": 1.25066,
      "volume_ratio": 1.3048,
      "volume_ratio_5d": 0.82073,
      "atr_pct": 0.02301,
      "rsi_14": 60.38,
      "dist_sma_20": 0.02477,
      "dist_sma_50": 0.06368,
      "dist_sma_200": 0.18991,
      "dist_high_252": -0.06609,
      "dist_low_252": 0.47154,
      "gap_1d": 0.00362,
      "range_pct_1d": 0.01852,
      "close_location": 0.27053,
      "dollar_volume_log": 10.025,
      "market_return_5d": -0.00675,
      "market_volatility_20d": 0.11145,
      "dist_high_20": -0.01333,
      "dist_low_20": 0.05535,
      "beta_1y": 0.95214,
      "body_pct": 0.00411,
      "upper_wick": 0.72947,
      "lower_wick": 0.04948,
      "range_vs_atr": 0.80503,
      "sma50_vs_sma200": 0.11867,
      "days_to_earnings": 21,
      "days_since_earnings": 43,
      "earn_usual_move": 0.05001,
      "last_earn_reaction": 0.15505
    }
  },
  "questions": {
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    },
    "rally5_alt1": {
      "type": "yes_no",
      "instructions": "Could it pop 5% or more at any point over the next 21 sessions?"
    },
    "rally5_alt2": {
      "type": "yes_no",
      "instructions": "Any chance of a 5 percent jump sometime in the coming month?"
    },
    "rally5_alt3": {
      "type": "yes_no",
      "instructions": "Will it surge 5%+ intraday within the next four weeks?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "drop5_alt1": {
      "type": "yes_no",
      "instructions": "Could we see a 5% or bigger decline at any point over the next 20 sessions?"
    },
    "drop5_alt2": {
      "type": "yes_no",
      "instructions": "Will it slide 5 percent or more at some stage in the coming month?"
    },
    "drop5_alt3": {
      "type": "yes_no",
      "instructions": "Is a 5% pullback likely sometime in the next four weeks?"
    }
  }
}

1 ATR moves tomorrow: TSLA 2026-10-27 (2 questions, each in 3–4 wordings)

ora16 questionsreal outcome
  • atr_down Will the low reach today's close minus 1 ATR during the next session?
  • atr_down_alt1 Will tomorrow's low tag 1 ATR under today's close?
  • atr_down_alt2 Does it dip a full ATR below the close tomorrow?
  • + 3 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-10-27",
    "context": {
      "return_1d": 0.04045,
      "return_5d": 0.09031,
      "return_20d": 0.1548,
      "return_60d": 0.26509,
      "return_252d": -0.06055,
      "volatility_5d": 0.55003,
      "volatility_20d": 0.38705,
      "volatility_60d": 0.40292,
      "vol_ratio_5_20": 1.42109,
      "volume_ratio": 1.23504,
      "volume_ratio_5d": 1.28101,
      "atr_pct": 0.03345,
      "rsi_14": 65.48,
      "dist_sma_20": 0.08857,
      "dist_sma_50": 0.11292,
      "dist_sma_200": 0.05576,
      "dist_high_252": -0.18317,
      "dist_low_252": 0.37017,
      "gap_1d": 0.01578,
      "range_pct_1d": 0.03235,
      "close_location": 0.9264,
      "dollar_volume_log": 10.143,
      "market_return_5d": 0.00079,
      "market_volatility_20d": 0.09978,
      "dist_high_20": -0.00237,
      "dist_low_20": 0.17804,
      "beta_1y": 2.25779,
      "body_pct": 0.02428,
      "upper_wick": 0.0736,
      "lower_wick": 0.19347,
      "range_vs_atr": 0.96708,
      "sma50_vs_sma200": -0.05136,
      "days_since_earnings": 3,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.03077
    }
  },
  "questions": {
    "atr_down": {
      "type": "yes_no",
      "instructions": "Will the low reach today's close minus 1 ATR during the next session?"
    },
    "atr_down_alt1": {
      "type": "yes_no",
      "instructions": "Will tomorrow's low tag 1 ATR under today's close?"
    },
    "atr_down_alt2": {
      "type": "yes_no",
      "instructions": "Does it dip a full ATR below the close tomorrow?"
    },
    "atr_up": {
      "type": "yes_no",
      "instructions": "Will the high reach today's close plus 1 ATR during the next session?"
    },
    "atr_up_alt1": {
      "type": "yes_no",
      "instructions": "Will tomorrow's high hit 1 ATR over today's close?"
    },
    "atr_up_alt2": {
      "type": "yes_no",
      "instructions": "Can it spike one ATR above the close tomorrow?"
    }
  }
}

Moving averages: MSFT 2026-09-29 (2 questions, each in 3–4 wordings)

ora16 questionsreal outcome
  • touch_50 Will it trade back to its 50-day moving average in the next month?
  • touch_50_alt1 Will it revisit the 50 DMA within the next 4 weeks?
  • touch_50_alt2 Does it tag the 50-day SMA sometime in the coming month?
  • + 3 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-09-29",
    "context": {
      "return_1d": -0.00051,
      "return_5d": 0.02201,
      "return_20d": 0.00329,
      "return_60d": 0.31852,
      "return_252d": 0.00331,
      "volatility_5d": 0.30108,
      "volatility_20d": 0.24484,
      "volatility_60d": 0.38578,
      "vol_ratio_5_20": 1.22968,
      "volume_ratio": 0.95177,
      "volume_ratio_5d": 0.75496,
      "atr_pct": 0.02333,
      "rsi_14": 58.46,
      "dist_sma_20": 0.01811,
      "dist_sma_50": 0.06061,
      "dist_sma_200": 0.18122,
      "dist_high_252": -0.07326,
      "dist_low_252": 0.46023,
      "gap_1d": -0.00214,
      "range_pct_1d": 0.02208,
      "close_location": 0.58363,
      "dollar_volume_log": 10.016,
      "market_return_5d": -0.01187,
      "market_volatility_20d": 0.11404,
      "dist_high_20": -0.0201,
      "dist_low_20": 0.04724,
      "beta_1y": 0.95428,
      "body_pct": 0.00163,
      "upper_wick": 0.41637,
      "lower_wick": 0.50979,
      "range_vs_atr": 0.94677,
      "sma50_vs_sma200": 0.11372,
      "days_to_earnings": 22,
      "days_since_earnings": 42,
      "earn_usual_move": 0.05001,
      "last_earn_reaction": 0.15505
    }
  },
  "questions": {
    "touch_50": {
      "type": "yes_no",
      "instructions": "Will it trade back to its 50-day moving average in the next month?"
    },
    "touch_50_alt1": {
      "type": "yes_no",
      "instructions": "Will it revisit the 50 DMA within the next 4 weeks?"
    },
    "touch_50_alt2": {
      "type": "yes_no",
      "instructions": "Does it tag the 50-day SMA sometime in the coming month?"
    },
    "hold_200": {
      "type": "yes_no",
      "instructions": "Will it stay above its 200-day moving average for the next 7 sessions?"
    },
    "hold_200_alt1": {
      "type": "yes_no",
      "instructions": "Will it hold over the 200 DMA for the next 7 trading days?"
    },
    "hold_200_alt2": {
      "type": "yes_no",
      "instructions": "Does every close for the next seven days stay above the 200-day MA?"
    }
  }
}

Where it closes: TSLA 2026-09-16 (4 questions, each in 3–4 wordings)

ora113 questionsreal outcome
  • up_week Will the stock be higher in a week?
  • up_week_alt1 Will it close higher in 5 days?
  • up_week_alt2 Does it finish the next 5 sessions above where it closed today?
  • + 10 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-09-16",
    "context": {
      "return_1d": 0.00421,
      "return_5d": -0.02645,
      "return_20d": 0.06296,
      "return_60d": -0.11596,
      "return_252d": -0.12672,
      "volatility_5d": 0.1586,
      "volatility_20d": 0.50888,
      "volatility_60d": 0.58256,
      "vol_ratio_5_20": 0.31166,
      "volume_ratio": 0.82525,
      "volume_ratio_5d": 0.76528,
      "atr_pct": 0.03678,
      "rsi_14": 51.11,
      "dist_sma_20": 0.00053,
      "dist_sma_50": 0.01829,
      "dist_sma_200": -0.10024,
      "dist_high_252": -0.28216,
      "dist_low_252": 0.20412,
      "gap_1d": 0.00317,
      "range_pct_1d": 0.02837,
      "close_location": 0.31389,
      "dollar_volume_log": 10.147,
      "market_return_5d": -0.01095,
      "market_volatility_20d": 0.08581,
      "dist_high_20": -0.0676,
      "dist_low_20": 0.06667,
      "beta_1y": 2.23361,
      "body_pct": 0.00103,
      "upper_wick": 0.68611,
      "lower_wick": 0.27747,
      "range_vs_atr": 0.77141,
      "sma50_vs_sma200": -0.11641,
      "days_to_earnings": 26,
      "days_since_earnings": 38,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "questions": {
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "up_week_alt1": {
      "type": "yes_no",
      "instructions": "Will it close higher in 5 days?"
    },
    "up_week_alt2": {
      "type": "yes_no",
      "instructions": "Does it finish the next 5 sessions above where it closed today?"
    },
    "up_week_alt3": {
      "type": "yes_no",
      "instructions": "Is it up a week from now, close to close?"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the price be down in a week?"
    },
    "down_week_alt1": {
      "type": "yes_no",
      "instructions": "Will it close lower five sessions from now?"
    },
    "down_week_alt2": {
      "type": "yes_no",
      "instructions": "Is it in the red a week out versus today's close?"
    },
    "up3_30d": {
      "type": "yes_no",
      "instructions": "Will it close at least 3% higher in 30 trading days?"
    },
    "up3_30d_alt1": {
      "type": "yes_no",
      "instructions": "Six weeks out, will it be up 3% or more on a closing basis?"
    },
    "up3_30d_alt2": {
      "type": "yes_no",
      "instructions": "Will it finish 30 sessions from now with a 3%+ gain?"
    },
    "down3_15d": {
      "type": "yes_no",
      "instructions": "Will it close at least 3% lower in 15 trading days?"
    },
    "down3_15d_alt1": {
      "type": "yes_no",
      "instructions": "Three weeks from now, is it down 3% or more at the close?"
    },
    "down3_15d_alt2": {
      "type": "yes_no",
      "instructions": "Will it finish 15 days out at least 3 percent below today's close?"
    }
  }
}

Versus the market: MSFT 2026-07-30 (2 questions, each in 3–4 wordings)

ora16 questionsreal outcome
  • beat_spy Will it beat SPY over the next month?
  • beat_spy_alt1 Will it outperform the S&P over the coming four weeks?
  • beat_spy_alt2 Does it beat the index over the next 21 sessions?
  • + 3 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-07-30",
    "context": {
      "return_1d": 0.15505,
      "return_5d": 0.18219,
      "return_20d": 0.17387,
      "return_60d": 0.09297,
      "return_252d": -0.1129,
      "volatility_5d": 0.99495,
      "volatility_20d": 0.56212,
      "volatility_60d": 0.44284,
      "vol_ratio_5_20": 1.76999,
      "volume_ratio": 3.4202,
      "volume_ratio_5d": 1.24403,
      "atr_pct": 0.03525,
      "rsi_14": 71.83,
      "dist_sma_20": 0.14738,
      "dist_sma_50": 0.13221,
      "dist_sma_200": 0.04304,
      "dist_high_252": -0.18139,
      "dist_low_252": 0.29179,
      "gap_1d": 0.12125,
      "range_pct_1d": 0.05819,
      "close_location": 0.71086,
      "dollar_volume_log": 10.149,
      "market_return_5d": 0.00475,
      "market_volatility_20d": 0.12427,
      "dist_high_20": -0.01655,
      "dist_low_20": 0.20824,
      "beta_1y": 0.89433,
      "body_pct": 0.03014,
      "upper_wick": 0.28914,
      "lower_wick": 0.208,
      "range_vs_atr": 1.65103,
      "sma50_vs_sma200": -0.07876,
      "days_since_earnings": 0,
      "earn_usual_move": 0.05001,
      "last_earn_reaction": 0.15505
    }
  },
  "questions": {
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    },
    "beat_spy_alt1": {
      "type": "yes_no",
      "instructions": "Will it outperform the S&P over the coming four weeks?"
    },
    "beat_spy_alt2": {
      "type": "yes_no",
      "instructions": "Does it beat the index over the next 21 sessions?"
    },
    "lag_spy": {
      "type": "yes_no",
      "instructions": "Will it underperform SPY by more than 2% in three months?"
    },
    "lag_spy_alt1": {
      "type": "yes_no",
      "instructions": "Will it lag the S&P 500 by over 2% across the next quarter?"
    },
    "lag_spy_alt2": {
      "type": "yes_no",
      "instructions": "Does it trail the market by 2%+ over the next 63 sessions?"
    }
  }
}

Volatility and range: TSLA 2026-09-29 (4 questions, each in 3–4 wordings)

ora112 questionsreal outcome
  • move3 Will the stock move more than 3% in either direction in 2 trading days?
  • move3_alt1 Will it swing over 3% either way in the next two sessions?
  • move3_alt2 Is a 3%+ move, up or down, coming within 2 days?
  • + 9 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-09-29",
    "context": {
      "return_1d": -0.0129,
      "return_5d": -0.06878,
      "return_20d": -0.04107,
      "return_60d": -0.15944,
      "return_252d": -0.19882,
      "volatility_5d": 0.25764,
      "volatility_20d": 0.41763,
      "volatility_60d": 0.51215,
      "vol_ratio_5_20": 0.61691,
      "volume_ratio": 0.79738,
      "volume_ratio_5d": 0.90354,
      "atr_pct": 0.03532,
      "rsi_14": 44.8,
      "dist_sma_20": -0.03428,
      "dist_sma_50": 0.01552,
      "dist_sma_200": -0.10603,
      "dist_high_252": -0.29266,
      "dist_low_252": 0.1865,
      "gap_1d": 0.00271,
      "range_pct_1d": 0.02001,
      "close_location": 0.16431,
      "dollar_volume_log": 10.145,
      "market_return_5d": -0.01187,
      "market_volatility_20d": 0.11404,
      "dist_high_20": -0.08787,
      "dist_low_20": 0.00832,
      "beta_1y": 2.21702,
      "body_pct": -0.01557,
      "upper_wick": 0.04533,
      "lower_wick": 0.16431,
      "range_vs_atr": 0.56658,
      "sma50_vs_sma200": -0.1197,
      "days_to_earnings": 17,
      "days_since_earnings": 47,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "questions": {
    "move3": {
      "type": "yes_no",
      "instructions": "Will the stock move more than 3% in either direction in 2 trading days?"
    },
    "move3_alt1": {
      "type": "yes_no",
      "instructions": "Will it swing over 3% either way in the next two sessions?"
    },
    "move3_alt2": {
      "type": "yes_no",
      "instructions": "Is a 3%+ move, up or down, coming within 2 days?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will price swings get bigger over the next week compared with the past month?"
    },
    "vol_up_alt1": {
      "type": "yes_no",
      "instructions": "Is volatility going to pick up next week versus the last month?"
    },
    "vol_up_alt2": {
      "type": "yes_no",
      "instructions": "Will the next 5 sessions be choppier than the past 20?"
    },
    "vol_down": {
      "type": "yes_no",
      "instructions": "Will price swings get smaller over the next week compared with the past month?"
    },
    "vol_down_alt1": {
      "type": "yes_no",
      "instructions": "Is volatility going to settle down next week versus the last month?"
    },
    "vol_down_alt2": {
      "type": "yes_no",
      "instructions": "Will the next 5 sessions be quieter than the past 20?"
    },
    "vol30": {
      "type": "yes_no",
      "instructions": "Will annualized volatility over the next 21 sessions exceed 30%?"
    },
    "vol30_alt1": {
      "type": "yes_no",
      "instructions": "Will realized vol over the next month run above 30% annualized?"
    },
    "vol30_alt2": {
      "type": "yes_no",
      "instructions": "Does the coming month's annualised volatility top 30%?"
    }
  }
}

Tomorrow's bar: MSFT 2026-10-27 (6 questions, each in 3–4 wordings)

ora118 questionsreal outcome
  • hi_gt Will the high during the next session exceed today's high?
  • hi_gt_alt1 Will it take out today's high tomorrow?
  • hi_gt_alt2 Does tomorrow trade above today's high at any point?
  • + 15 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-10-27",
    "context": {
      "return_1d": -0.00238,
      "return_5d": -0.00102,
      "return_20d": 0.04395,
      "return_60d": 0.09163,
      "return_252d": 0.02311,
      "volatility_5d": 0.22369,
      "volatility_20d": 0.19647,
      "volatility_60d": 0.21707,
      "vol_ratio_5_20": 1.13858,
      "volume_ratio": 0.97895,
      "volume_ratio_5d": 0.66048,
      "atr_pct": 0.02037,
      "rsi_14": 56.33,
      "dist_sma_20": 0.00442,
      "dist_sma_50": 0.04151,
      "dist_sma_200": 0.21884,
      "dist_high_252": -0.03596,
      "dist_low_252": 0.52442,
      "gap_1d": -0.00047,
      "range_pct_1d": 0.01199,
      "close_location": 0.47087,
      "dollar_volume_log": 10.02,
      "market_return_5d": 0.00079,
      "market_volatility_20d": 0.09978,
      "dist_high_20": -0.03596,
      "dist_low_20": 0.04115,
      "beta_1y": 1.00358,
      "body_pct": -0.00192,
      "upper_wick": 0.36897,
      "lower_wick": 0.47087,
      "range_vs_atr": 0.58852,
      "sma50_vs_sma200": 0.17027,
      "earnings_next_5d": 1,
      "days_to_earnings": 2,
      "days_since_earnings": 62,
      "earn_usual_move": 0.05001,
      "last_earn_reaction": 0.15505
    }
  },
  "questions": {
    "hi_gt": {
      "type": "yes_no",
      "instructions": "Will the high during the next session exceed today's high?"
    },
    "hi_gt_alt1": {
      "type": "yes_no",
      "instructions": "Will it take out today's high tomorrow?"
    },
    "hi_gt_alt2": {
      "type": "yes_no",
      "instructions": "Does tomorrow trade above today's high at any point?"
    },
    "lo_lt": {
      "type": "yes_no",
      "instructions": "Will the low during the next session undercut today's low?"
    },
    "lo_lt_alt1": {
      "type": "yes_no",
      "instructions": "Will it break today's low tomorrow?"
    },
    "lo_lt_alt2": {
      "type": "yes_no",
      "instructions": "Does tomorrow trade under today's low at some point?"
    },
    "inside": {
      "type": "yes_no",
      "instructions": "Will tomorrow be an inside day, inside today's high and low?"
    },
    "inside_alt1": {
      "type": "yes_no",
      "instructions": "Will tomorrow's whole range stay within today's high-low?"
    },
    "inside_alt2": {
      "type": "yes_no",
      "instructions": "Is tomorrow an inside bar?"
    },
    "green": {
      "type": "yes_no",
      "instructions": "Will tomorrow's candle be green, closing above its open?"
    },
    "green_alt1": {
      "type": "yes_no",
      "instructions": "Will tomorrow close above its open?"
    },
    "green_alt2": {
      "type": "yes_no",
      "instructions": "Is tomorrow a green day, open to close?"
    },
    "gap_up": {
      "type": "yes_no",
      "instructions": "Will it gap up tomorrow?"
    },
    "gap_up_alt1": {
      "type": "yes_no",
      "instructions": "Will it open more than 1% higher tomorrow?"
    },
    "gap_up_alt2": {
      "type": "yes_no",
      "instructions": "Is a gap higher of 1%+ likely at tomorrow's open?"
    },
    "vol_spike": {
      "type": "yes_no",
      "instructions": "Will volume spike tomorrow?"
    },
    "vol_spike_alt1": {
      "type": "yes_no",
      "instructions": "Will tomorrow's volume come in at more than 2x the 20-day average?"
    },
    "vol_spike_alt2": {
      "type": "yes_no",
      "instructions": "Is a big volume day coming tomorrow, double the usual?"
    }
  }
}

Question grammar (preview)

Many question families on one stock and date.

TSLA 2026-09-18: 12 questions across families

ora112 questions
  • rally_5pct_month Will it rally at least 5% within a month?
  • drop_3pct_2w Will it drop at least 3% within two weeks?
  • stop_1_5atr Would a stop 1.5 ATR below today's close be hit within 5 sessions?
  • + 9 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "TSLA",
    "as_of": "2026-09-18",
    "context": {
      "return_1d": -0.00527,
      "return_5d": -0.0032,
      "return_20d": 0.05546,
      "return_60d": -0.02998,
      "return_252d": -0.14462,
      "volatility_5d": 0.23944,
      "volatility_20d": 0.48974,
      "volatility_60d": 0.5713,
      "vol_ratio_5_20": 0.48891,
      "volume_ratio": 1.3231,
      "volume_ratio_5d": 0.92901,
      "atr_pct": 0.03608,
      "rsi_14": 53.77,
      "dist_sma_20": 0.01299,
      "dist_sma_50": 0.04004,
      "dist_sma_200": -0.0832,
      "dist_high_252": -0.26975,
      "dist_low_252": 0.22493,
      "gap_1d": 0.00841,
      "range_pct_1d": 0.02786,
      "close_location": 0.34673,
      "dollar_volume_log": 10.163,
      "market_return_5d": -0.00093,
      "market_volatility_20d": 0.09598,
      "dist_high_20": -0.05148,
      "dist_low_20": 0.06347,
      "beta_1y": 2.2341,
      "body_pct": -0.01357,
      "upper_wick": 0.15962,
      "lower_wick": 0.34673,
      "range_vs_atr": 0.77216,
      "sma50_vs_sma200": -0.11849,
      "days_to_earnings": 24,
      "days_since_earnings": 40,
      "earn_usual_move": 0.04462,
      "last_earn_reaction": -0.14524
    }
  },
  "questions": {
    "rally_5pct_month": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% within a month?"
    },
    "drop_3pct_2w": {
      "type": "yes_no",
      "instructions": "Will it drop at least 3% within two weeks?"
    },
    "stop_1_5atr": {
      "type": "yes_no",
      "instructions": "Would a stop 1.5 ATR below today's close be hit within 5 sessions?"
    },
    "fall_before_rise": {
      "type": "yes_no",
      "instructions": "Will it fall 5% before it rises 5% within a month?"
    },
    "new_20d_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high within a week?"
    },
    "back_to_50dma": {
      "type": "yes_no",
      "instructions": "Will it trade back to its 50-day moving average within a month?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will realized volatility over the next 21 sessions be more than 1.25x the last 20 sessions?"
    },
    "above_todays_high": {
      "type": "yes_no",
      "instructions": "Will it trade above today's high by tomorrow's close?"
    },
    "volume_2x": {
      "type": "yes_no",
      "instructions": "Will tomorrow's volume be more than twice its 20-day average?"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it outperform SPY by more than 2% in a month?"
    },
    "gap_up_1pct": {
      "type": "yes_no",
      "instructions": "Will it gap up more than 1% tomorrow?"
    },
    "control_up_week": {
      "type": "yes_no",
      "instructions": "Will the stock close higher in a week?"
    }
  }
}

MSFT 2026-10-07: 12 questions across families

ora112 questions
  • rally_5pct_month Will it rally at least 5% within a month?
  • drop_3pct_2w Will it drop at least 3% within two weeks?
  • stop_1_5atr Would a stop 1.5 ATR below today's close be hit within 5 sessions?
  • + 9 more
Request JSON
{
  "model": "ora1",
  "state": {
    "symbol": "MSFT",
    "as_of": "2026-10-07",
    "context": {
      "return_1d": 0.00087,
      "return_5d": 0.03287,
      "return_20d": 0.07751,
      "return_60d": 0.37883,
      "return_252d": 0.01051,
      "volatility_5d": 0.09794,
      "volatility_20d": 0.20464,
      "volatility_60d": 0.38166,
      "vol_ratio_5_20": 0.47858,
      "volume_ratio": 0.74627,
      "volume_ratio_5d": 0.70802,
      "atr_pct": 0.02148,
      "rsi_14": 68.21,
      "dist_sma_20": 0.04568,
      "dist_sma_50": 0.06842,
      "dist_sma_200": 0.22562,
      "dist_high_252": -0.03539,
      "dist_low_252": 0.51991,
      "gap_1d": 0.00269,
      "range_pct_1d": 0.01329,
      "close_location": 0.72017,
      "dollar_volume_log": 10.041,
      "market_return_5d": 0.01913,
      "market_volatility_20d": 0.10662,
      "dist_high_20": -0.01107,
      "dist_low_20": 0.09004,
      "beta_1y": 0.95293,
      "body_pct": -0.00182,
      "upper_wick": 0.14276,
      "lower_wick": 0.72017,
      "range_vs_atr": 0.61857,
      "sma50_vs_sma200": 0.14713,
      "days_since_earnings": 48,
      "earn_usual_move": 0.05001,
      "last_earn_reaction": 0.15505
    }
  },
  "questions": {
    "rally_5pct_month": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% within a month?"
    },
    "drop_3pct_2w": {
      "type": "yes_no",
      "instructions": "Will it drop at least 3% within two weeks?"
    },
    "stop_1_5atr": {
      "type": "yes_no",
      "instructions": "Would a stop 1.5 ATR below today's close be hit within 5 sessions?"
    },
    "fall_before_rise": {
      "type": "yes_no",
      "instructions": "Will it fall 5% before it rises 5% within a month?"
    },
    "new_20d_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high within a week?"
    },
    "back_to_50dma": {
      "type": "yes_no",
      "instructions": "Will it trade back to its 50-day moving average within a month?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will realized volatility over the next 21 sessions be more than 1.25x the last 20 sessions?"
    },
    "above_todays_high": {
      "type": "yes_no",
      "instructions": "Will it trade above today's high by tomorrow's close?"
    },
    "volume_2x": {
      "type": "yes_no",
      "instructions": "Will tomorrow's volume be more than twice its 20-day average?"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it outperform SPY by more than 2% in a month?"
    },
    "gap_up_1pct": {
      "type": "yes_no",
      "instructions": "Will it gap up more than 1% tomorrow?"
    },
    "control_up_week": {
      "type": "yes_no",
      "instructions": "Will the stock close higher in a week?"
    }
  }
}

Minimal context (6 numbers), same questions

ora112 questions
  • rally_5pct_month Will it rally at least 5% within a month?
  • drop_3pct_2w Will it drop at least 3% within two weeks?
  • stop_1_5atr Would a stop 1.5 ATR below today's close be hit within 5 sessions?
  • + 9 more
Request JSON
{
  "model": "ora1",
  "state": {
    "context": {
      "return_5d": -0.0032,
      "return_20d": 0.05546,
      "volatility_20d": 0.48974,
      "rsi_14": 53.77,
      "dist_sma_50": 0.04004,
      "atr_pct": 0.03608
    }
  },
  "questions": {
    "rally_5pct_month": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% within a month?"
    },
    "drop_3pct_2w": {
      "type": "yes_no",
      "instructions": "Will it drop at least 3% within two weeks?"
    },
    "stop_1_5atr": {
      "type": "yes_no",
      "instructions": "Would a stop 1.5 ATR below today's close be hit within 5 sessions?"
    },
    "fall_before_rise": {
      "type": "yes_no",
      "instructions": "Will it fall 5% before it rises 5% within a month?"
    },
    "new_20d_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high within a week?"
    },
    "back_to_50dma": {
      "type": "yes_no",
      "instructions": "Will it trade back to its 50-day moving average within a month?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will realized volatility over the next 21 sessions be more than 1.25x the last 20 sessions?"
    },
    "above_todays_high": {
      "type": "yes_no",
      "instructions": "Will it trade above today's high by tomorrow's close?"
    },
    "volume_2x": {
      "type": "yes_no",
      "instructions": "Will tomorrow's volume be more than twice its 20-day average?"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it outperform SPY by more than 2% in a month?"
    },
    "gap_up_1pct": {
      "type": "yes_no",
      "instructions": "Will it gap up more than 1% tomorrow?"
    },
    "control_up_week": {
      "type": "yes_no",
      "instructions": "Will the stock close higher in a week?"
    }
  }
}

Simple

General-purpose questions about a piece of text.

Is this about billing? (yes_no)

ora11 question
  • billing Is this message about billing, a charge or a refund?
Request JSON
{
  "model": "ora1",
  "state": "I was charged twice for my subscription this month. Please refund the extra charge.",
  "questions": {
    "billing": {
      "type": "yes_no",
      "instructions": "Is this message about billing, a charge or a refund?"
    }
  }
}

Sentiment (choice)

ora11 question
  • sentiment Overall sentiment of the message
Request JSON
{
  "model": "ora1",
  "state": "Absolutely love the new dashboard. Setup took two minutes and the charts are gorgeous!",
  "questions": {
    "sentiment": {
      "type": "choice",
      "instructions": "Overall sentiment of the message",
      "criteria": {
        "positive": "Happy, pleased, enthusiastic",
        "neutral": "Factual, no strong feeling",
        "negative": "Unhappy, annoyed, disappointed"
      }
    }
  }
}
Response

sentiment positive

Spam check (yes_no)

ora11 question
  • is_spam Is this message spam or a scam (unsolicited prize, urgent click, free money)?
Request JSON
{
  "model": "ora1",
  "state": "CONGRATULATIONS!!! You have WON a $1000 gift card. Click the link now to claim your free prize before it expires!",
  "questions": {
    "is_spam": {
      "type": "yes_no",
      "instructions": "Is this message spam or a scam (unsolicited prize, urgent click, free money)?"
    }
  }
}

Urgency (score)

ora11 question
  • urgency How urgent is this?
Request JSON
{
  "model": "ora1",
  "state": "The production database is down and every customer is getting errors. We need someone on this immediately.",
  "questions": {
    "urgency": {
      "type": "score",
      "instructions": "How urgent is this?",
      "criteria": [
        "Can wait",
        "Needs attention this week",
        "Needs attention today",
        "Emergency, right now"
      ]
    }
  }
}

Medium

More questions, choices and scores.

Support ticket triage

ora13 questions
  • department Which team should handle this
  • frustration How frustrated the customer appears
  • is_urgent The message conveys urgency: orders blocked, errors on every request, needs fixing now
Request JSON
{
  "model": "ora1",
  "state": "Our API integration started returning 500 errors on every request about 20 minutes ago, and we can't process any customer orders until this is fixed.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this",
      "criteria": {
        "billing": "Payment or subscription issues",
        "technical": "Bugs, errors or integration problems",
        "sales": "Pricing or account questions"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "How frustrated the customer appears",
      "criteria": [
        "Calm, just stating facts",
        "Frustrated but civil",
        "Very angry, strong language"
      ]
    },
    "is_urgent": {
      "type": "yes_no",
      "instructions": "The message conveys urgency: orders blocked, errors on every request, needs fixing now"
    }
  }
}
Response

department technical · frustration 0.63 · is_urgent 0.920

Product review analysis

ora14 questions
  • overall Overall verdict of the review
  • product_quality How the reviewer rates the product itself (sound, battery)
  • shipping_issue Mentions a problem with shipping, delivery or packaging (late, crushed box)
  • + 1 more
Request JSON
{
  "model": "ora1",
  "state": "The headphones sound great and the battery lasts all week, but shipping took three weeks and the box arrived crushed. Customer service never replied to my email.",
  "questions": {
    "overall": {
      "type": "choice",
      "instructions": "Overall verdict of the review",
      "criteria": {
        "recommend": "Would recommend the product",
        "mixed": "Good and bad points, mixed feelings",
        "avoid": "Would not recommend"
      }
    },
    "product_quality": {
      "type": "score",
      "instructions": "How the reviewer rates the product itself (sound, battery)",
      "criteria": [
        "Poor",
        "Average",
        "Good",
        "Excellent"
      ]
    },
    "shipping_issue": {
      "type": "yes_no",
      "instructions": "Mentions a problem with shipping, delivery or packaging (late, crushed box)"
    },
    "service_issue": {
      "type": "yes_no",
      "instructions": "Complains about customer service (no reply, unhelpful)"
    }
  }
}

Content moderation

ora13 questions
  • toxic Contains insults, harassment or abusive language
  • threat Contains a threat of violence or harm
  • action Moderation action to take
Request JSON
{
  "model": "ora1",
  "state": "You're an idiot if you believe that. People like you shouldn't be allowed to post here. Go away.",
  "questions": {
    "toxic": {
      "type": "yes_no",
      "instructions": "Contains insults, harassment or abusive language",
      "criteria": {
        "true": "Name-calling, insults, telling someone to leave",
        "false": "Civil disagreement or neutral text"
      }
    },
    "threat": {
      "type": "yes_no",
      "instructions": "Contains a threat of violence or harm",
      "criteria": {
        "true": "Threatens to hurt, attack or harm someone",
        "false": "No threat of harm"
      }
    },
    "action": {
      "type": "choice",
      "instructions": "Moderation action to take",
      "criteria": {
        "allow": "Fine to publish",
        "warn": "Rude or insulting, warn the author",
        "remove": "Threats or severe abuse, remove the post"
      }
    }
  }
}

Lead qualification

ora13 questions
  • intent What the sender wants
  • company_size Size of the sender's company
  • decision_maker The sender runs a team or department and can likely decide on a purchase
Request JSON
{
  "model": "ora1",
  "state": "Hi, I run engineering at a 400-person fintech. We need structured classification for about 2 million support tickets a month and want to start a pilot next quarter. What does enterprise pricing look like?",
  "questions": {
    "intent": {
      "type": "choice",
      "instructions": "What the sender wants",
      "criteria": {
        "buy": "Ready to buy or start a pilot, asks about pricing",
        "explore": "Researching, early questions",
        "support": "Existing customer with a problem",
        "other": "Anything else"
      }
    },
    "company_size": {
      "type": "score",
      "instructions": "Size of the sender's company",
      "criteria": [
        "Individual or tiny team",
        "Small company",
        "Mid-size company, hundreds of people",
        "Large enterprise, thousands"
      ]
    },
    "decision_maker": {
      "type": "yes_no",
      "instructions": "The sender runs a team or department and can likely decide on a purchase"
    }
  }
}

Advanced

Structured state and criteria.

Refund decision on an order record (JSON state)

ora13 questions
  • next_action What should support do next
  • eligible The order is eligible for a refund under the policy
  • confidence_needed How much human review this decision needs
Request JSON
{
  "model": "ora1",
  "state": {
    "ticket": {
      "subject": "Duplicate charge",
      "messages": [
        {
          "from": "customer",
          "text": "I was charged twice for order A-104. Please refund the duplicate."
        },
        {
          "from": "support",
          "text": "We are checking the charges."
        }
      ]
    },
    "order": {
      "id": "A-104",
      "charges": [
        {
          "amount_usd": 49,
          "status": "captured"
        },
        {
          "amount_usd": 49,
          "status": "captured"
        }
      ]
    },
    "refund_policy": "Duplicate charges are eligible for a refund."
  },
  "questions": {
    "next_action": {
      "type": "choice",
      "instructions": "What should support do next",
      "criteria": {
        "refund": "Refund the duplicate charge",
        "escalate": "Escalate to a human reviewer",
        "ask_info": "Ask the customer for more information",
        "close": "Nothing to do, close the ticket"
      }
    },
    "eligible": {
      "type": "yes_no",
      "instructions": "The order is eligible for a refund under the policy",
      "criteria": {
        "true": "Duplicate captured charge, policy covers duplicates",
        "false": "Single charge or no policy match"
      }
    },
    "confidence_needed": {
      "type": "score",
      "instructions": "How much human review this decision needs",
      "criteria": [
        "None, fully automatic",
        "Quick glance",
        "Careful review",
        "Senior approval"
      ]
    }
  }
}

Loan application screening (JSON state)

ora13 questions
  • risk Credit risk of this application
  • decision Underwriting decision
  • affordable The requested amount is affordable relative to income
Request JSON
{
  "model": "ora1",
  "state": {
    "applicant": {
      "age": 34,
      "employment": "full-time software engineer",
      "years_at_employer": 6,
      "annual_income_usd": 142000
    },
    "request": {
      "amount_usd": 25000,
      "purpose": "debt consolidation",
      "term_months": 36
    },
    "credit": {
      "score": 761,
      "late_payments_24m": 0,
      "utilization_pct": 18,
      "open_accounts": 5
    },
    "notes": "Stable income, long employment history, low utilization."
  },
  "questions": {
    "risk": {
      "type": "score",
      "instructions": "Credit risk of this application",
      "criteria": [
        "Very low risk: high score, no late payments, low utilization",
        "Low risk",
        "Moderate risk",
        "High risk: low score, late payments, high utilization"
      ]
    },
    "decision": {
      "type": "choice",
      "instructions": "Underwriting decision",
      "criteria": {
        "approve": "Strong credit, stable income: approve",
        "review": "Mixed signals: send to an underwriter",
        "decline": "Weak credit or unaffordable: decline"
      }
    },
    "affordable": {
      "type": "yes_no",
      "instructions": "The requested amount is affordable relative to income",
      "criteria": {
        "true": "Amount is small relative to annual income",
        "false": "Amount is large relative to income"
      }
    }
  }
}

Intent routing, 8 intents (conversation JSON)

ora13 questions
  • intent The customer's main intent in the latest message
  • needs_human This needs a human agent (billing changes, exceptions, angry customer)
  • sentiment Customer mood
Request JSON
{
  "model": "ora1",
  "state": {
    "channel": "chat",
    "conversation": [
      {
        "role": "user",
        "text": "hey, my card got declined when I tried to upgrade to the annual plan"
      },
      {
        "role": "agent",
        "text": "Sorry about that! Did you see an error message?"
      },
      {
        "role": "user",
        "text": "it said payment failed, card declined. I checked with my bank and the card is fine. can you just switch me to invoice billing instead?"
      }
    ]
  },
  "questions": {
    "intent": {
      "type": "choice",
      "instructions": "The customer's main intent in the latest message",
      "criteria": {
        "payment_failure": "Card declined, payment failed",
        "change_billing_method": "Switch to invoice, change how they pay",
        "upgrade_plan": "Move to a bigger or annual plan",
        "cancel": "Cancel subscription",
        "refund": "Money back",
        "bug_report": "Something in the product is broken",
        "account_access": "Login or password trouble",
        "other": "Anything else"
      }
    },
    "needs_human": {
      "type": "yes_no",
      "instructions": "This needs a human agent (billing changes, exceptions, angry customer)"
    },
    "sentiment": {
      "type": "score",
      "instructions": "Customer mood",
      "criteria": [
        "Angry",
        "Frustrated",
        "Neutral",
        "Positive"
      ]
    }
  }
}

Incident review with structured instructions

ora13 questions
  • severity
  • category Root cause category
  • prevented_by_ci A CI check could plausibly have caught this before production
Request JSON
{
  "model": "ora1",
  "state": {
    "incident": {
      "id": "INC-2291",
      "service": "payments-api",
      "started": "2026-10-18T02:14Z",
      "resolved": "2026-10-18T04:02Z",
      "customers_affected": 1830
    },
    "timeline": [
      "02:14 error rate spikes to 38%",
      "02:20 on-call paged",
      "02:55 bad deploy identified",
      "03:10 rollback started",
      "04:02 error rate back to normal"
    ],
    "root_cause": "A config change disabled connection pooling, exhausting database connections under load.",
    "follow_ups": [
      "Add config validation in CI",
      "Alert on connection pool saturation"
    ]
  },
  "questions": {
    "severity": {
      "type": "score",
      "instructions": {
        "task": "Rate the incident severity",
        "consider": [
          "customer impact",
          "duration",
          "whether payments failed"
        ]
      },
      "criteria": [
        "SEV4: minor, no customer impact",
        "SEV3: limited impact",
        "SEV2: significant customer impact",
        "SEV1: major outage, money or data at risk"
      ]
    },
    "category": {
      "type": "choice",
      "instructions": "Root cause category",
      "criteria": {
        "deploy_or_config": {
          "description": "A deploy or config change caused it",
          "examples": [
            "bad deploy",
            "config change",
            "rollback"
          ]
        },
        "capacity": "Load or capacity limits",
        "dependency": "A third-party or upstream failure",
        "data": "Bad data or migration"
      }
    },
    "prevented_by_ci": {
      "type": "yes_no",
      "instructions": "A CI check could plausibly have caught this before production"
    }
  }
}
Create an account Open the Playground Everything here also lives in the console, next to your keys and usage.