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.
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-deskRequest
{
"model": "ora-fin-0.1.1",
"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
{
"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-omsfill_today < 0.6 and fill_5d >= 0.55→
Webhookmy-omselse→
Slacktrading-deskRequest
{
"model": "ora-fin-0.1.1",
"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
{
"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"
}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": "ora-fin-0.1.1",
"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
| Symbol | Answers (as of 2026-10-30) |
|---|---|
SPY |
|
QQQ |
|
IWM |
|
DIA |
|
{
"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.
up_weekWill the stock be higher in a week?drop5Will it drop at least 5% at some point in the next month?new_highWill it make a new 20-day high in the next week?- + 1 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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.
up_weekWill the stock be higher in a week?move2Will the stock move more than 2% in either direction in 5 trading days?vol_downWill price swings get smaller over the next week compared with the past month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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.
drop5 >= 0.5 and rally5 >= 0.5→
Slacktrading-deskdrop5Will it drop at least 5% at some point in the next month?rally5Will it rally at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
}Answers and what it would send (dry run, session of 2026-10-30)
drop5 0.638 · rally5 0.687
{
"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.
drop5 >= 0.55→
Slacktrading-deskdrop5Will it drop at least 5% at some point in the next month?rally5Will it rally at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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 (dry run)
drop5 0.584 · rally5 0.586
{
"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.
new_high >= 0.6 and vol_spike >= 0.4→
Emailmenew_high >= 0.6 and vol_spike < 0.4→
Slacktrading-desknew_highWill it make a new 20-day high in the next week?vol_spikeWill volume spike tomorrow?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
}Answers and what it would send (dry run)
new_high 0.615 · vol_spike 0.060
{
"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.
fill_today >= 0.6→
Webhookmy-omsfill_today < 0.6 and fill_5d >= 0.55→
Webhookmy-omselse→
Slacktrading-deskfill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?gap_goIs this a gap-and-go day rather than a fade?
Request JSON
{
"model": "ora-fin-0.1.1",
"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 (dry run)
fill_today 0.292 · fill_5d 0.607 · gap_go 0.540
{
"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"
}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.
drop5 >= 0.65 and big_move >= 0.25→
Webhookmy-omselse→
Slacktrading-deskdrop5Will it drop at least 5% at some point in the next month?big_moveWill the stock move more than 5% in either direction in 5 trading days?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
}Answers and what it would send (dry run)
drop5 0.520 · big_move 0.251
{
"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.
vol_up >= 0.5 or vol50 >= 0.5→
Slackoptions-deskmove5 >= 0.5→
Webhookmy-omsvol_upWill price swings get bigger over the next week compared with the past month?vol50Will annualized volatility over the next 21 sessions exceed 50%?move5Will the stock move more than 5% in either direction in 5 trading days?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
}Answers and what it would send (dry run)
vol_up 0.516 · vol50 0.427 · move5 0.274
{
"text": "TSLA: swings likely to expand (52%); realized vol above 50%: 43%; ±5% within a week: 27%."
}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.
always→
Emailmeup_weekWill the stock be higher in a week?beat_spyWill it beat SPY over the next month?drop5Will it drop at least 5% at some point in the next month?- + 2 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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
}Answers and what it would send (dry run)
up_week 0.555 · beat_spy 0.518 · drop5 0.544 · back_to_50 0.537 · vol_up 0.534
{
"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.
urgent >= 0.7 and department == 'technical'→
Slacksupportfrustration >= 1.5→
Emailmealways→
WebhookhelpdeskurgentThe message needs action within the hourdepartmentWhich team should handle thisfrustrationHow frustrated is the writer
Request JSON
{
"model": "ora-text-0.2.0",
"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
}Answers and what it would send (dry run)
urgent 0.172 · department billing · frustration 2.00
{
"subject": "Escalation: very frustrated customer",
"text": "Frustration 2.0 of 2, department billing."
}{
"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.
drop5 >= 0.6→
Slacktrading-deskdrop5Will it drop at least 5% at some point in the next month?rally5Will it rally at least 5% at some point in the next month?
Symbols: AAPL MSFT NVDA AMZN META GOOGL TSLA AVGO
Rule scan: breakouts and breakdowns
Large caps and sector ETFs after the close: exact rules for a 20-day breakout on volume or a breakdown, plus the one-week forecast, with one Slack digest of the hits.
breakout >= 0.6→
Slacktrading-deskbreakdown >= 0.6→
Slacktrading-deskbreakoutC > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)breakdownC < lowest(C, 20)up_weekWill the stock be higher in a week?
Symbols: AAPL MSFT NVDA AMZN META XLE XLF XLK
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.
new_high >= 0.7→
Webhookmy-omsnew_highWill it make a new 20-day high in the next week?vol_spikeWill 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.
up_weekWill the stock be higher in a week?move2Will the stock move more than 2% in either direction in 5 trading days?vol_upWill price swings get bigger over the next week compared with the past month?
Symbols: SPY QQQ IWM DIA
Digest it would send (dry run)
{
"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%.
vol_up >= 0.55 or vol50 >= 0.6→
Slackoptions-deskvol_upWill price swings get bigger over the next week compared with the past month?vol50Will annualized volatility over the next 21 sessions exceed 50%?
Symbols: TSLA COIN MSTR PLTR SMCI RIVN HOOD
Advanced
Financial requests that use the whole model: exact rules, patterns and forecasts on one symbol; watchlist batches; rules and forecasts chained to actions; risk checks before an order. Facts about earnings, dividends and splits mix freely with technical rules and forecasts. Answers are real responses, captured 2026-10-31. Grammar: Rule language. Information, not investment advice.
Rules, patterns and forecasts on one symbol
NVDA: what is true now, and what is likely next
Two exact rules, a pattern rule, two English "now" questions (compiled to rules) and three forecasts in one request. Answers with a rule field are facts; the rest are forecasts.
trendC > sma(C, 200)below_50dC < sma(C, 50)reversalhammer() or engulfing_bull()- + 5 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 200)"
},
"below_50d": {
"type": "yes_no",
"ask": "C < sma(C, 50)"
},
"reversal": {
"type": "yes_no",
"ask": "hammer() or engulfing_bull()"
},
"oversold_en": {
"type": "yes_no",
"instructions": "Is RSI below 30?"
},
"inside_en": {
"type": "yes_no",
"instructions": "Is today an inside bar?"
},
"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?"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Answers (session of 2026-10-30)
trend 0.545 · below_50d 0.925 · reversal 0.124 · oversold_en 0.214 · inside_en 0.056 · up_week 0.527 · drop5 0.523 · rally5 0.616
TSLA: volatility read before sizing
Is the stock in a wide-range regime now (three volatility rules), and how big could the next month be (three forecasts)? Size from both.
atr_3atr_pct(14) > 3hv_50std(log(C / C[-1]), 20) * sqrt(252) > 0.5wide_daytr() > 1.5 * ref(atr(14), -1)- + 3 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TSLA"
},
"questions": {
"atr_3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"hv_50": {
"type": "yes_no",
"ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.5"
},
"wide_day": {
"type": "yes_no",
"ask": "tr() > 1.5 * ref(atr(14), -1)"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
},
"rally10": {
"type": "yes_no",
"instructions": "Will it rally at least 10% at some point in the next month?"
},
"vol50": {
"type": "yes_no",
"instructions": "Will annualized volatility over the next 21 sessions exceed 50%?"
}
}
}Answers (session of 2026-10-30)
atr_3 0.848 · hv_50 0.104 · wide_day 0.240 · drop10 0.638 · rally10 0.687 · vol50 0.441
Watchlist batches
Index ETFs: trend, stretch and next week
The same four questions for each index ETF, one request per symbol sent in parallel. Rank by up_week, filter by trend.
trendC > sma(C, 200)above_50dC > sma(C, 50)oversoldrsi(C, 14) < 35- + 1 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 200)"
},
"above_50d": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"oversold": {
"type": "yes_no",
"ask": "rsi(C, 14) < 35"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Answers per symbol (session of 2026-10-30)
SPY |
|
QQQ |
|
IWM |
|
DIA |
|
Semiconductors: breakout scan
Which chip names are breaking out on volume or sitting near their 52-week high, and which are likely to rally 5%. One request per symbol.
breakoutC > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)near_highC >= 0.98 * max(H, 252)squeezestd(C, 20) < 0.7 * std(C, 100)- + 1 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"breakout": {
"type": "yes_no",
"ask": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)"
},
"near_high": {
"type": "yes_no",
"ask": "C >= 0.98 * max(H, 252)"
},
"squeeze": {
"type": "yes_no",
"ask": "std(C, 20) < 0.7 * std(C, 100)"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Answers per symbol (session of 2026-10-30)
NVDA |
|
AMD |
|
MU |
|
SMH |
|
Rule + forecast + action chains
XLE: breakout, confirmed or not (webhook or Slack)
A price breakout is checked for volume and for the one-week forecast. All three agree: a signed webhook to the order system. Price only: a Slack note that the breakout is unconfirmed.
price_break >= 0.6 and volume_ok >= 0.6 and up_week >= 0.55→
Webhookmy-omsprice_break >= 0.6→
Slacktrading-deskprice_breakC > highest(C, 20)volume_okV > 1.5 * ref(avg(V, 20), -1)up_weekWill the stock be higher in a week?
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "XLE"
},
"questions": {
"price_break": {
"type": "yes_no",
"ask": "C > highest(C, 20)"
},
"volume_ok": {
"type": "yes_no",
"ask": "V > 1.5 * ref(avg(V, 20), -1)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "confirmed",
"when": "price_break >= 0.6 and volume_ok >= 0.6 and up_week >= 0.55",
"do": "webhook",
"connection": "my-oms",
"body": {
"symbol": "{{symbol}}",
"signal": "breakout_confirmed",
"p_break": "{{price_break}}",
"p_volume": "{{volume_ok}}",
"p_up_week": "{{up_week}}",
"as_of": "{{as_of}}"
}
},
{
"id": "unconfirmed",
"when": "price_break >= 0.6",
"do": "slack",
"connection": "trading-desk",
"message": "{{symbol}} ({{as_of}}): 20-day breakout ({{price_break|pct}}) without volume ({{volume_ok|pct}}); higher in a week {{up_week|pct}}. Watching, not trading."
}
],
"dry_run": true
}Answers and what it would send (dry run, session of 2026-10-30)
price_break 0.646 · volume_ok 0.069 · up_week 0.592
{
"text": "XLE (2026-10-30): 20-day breakout (65%) without volume (7%); higher in a week 59%. Watching, not trading."
}AMZN: buy-the-dip only in an uptrend (Slack, else)
A pullback rule with a trend filter, and the forecasts as the trigger. If the setup is not there, the else branch says so.
pullback >= 0.6 and up_week >= 0.55 and drop5 < 0.6→
Slacktrading-deskelse→
Slacktrading-deskpullbackC > sma(C, 200) and rsi(C, 14) < 40below_bandC < bblower(C, 20, 2)up_weekWill the stock be higher in a week?- + 1 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AMZN"
},
"questions": {
"pullback": {
"type": "yes_no",
"ask": "C > sma(C, 200) and rsi(C, 14) < 40"
},
"below_band": {
"type": "yes_no",
"ask": "C < bblower(C, 20, 2)"
},
"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?"
}
},
"actions": [
{
"id": "buy_dip",
"when": "pullback >= 0.6 and up_week >= 0.55 and drop5 < 0.6",
"do": "slack",
"connection": "trading-desk",
"message": "{{symbol}} ({{as_of}}): pullback in an uptrend ({{pullback|pct}}), higher in a week {{up_week|pct}}, 5% drawdown {{drop5|pct}}."
},
{
"id": "no_setup",
"when": "else",
"do": "slack",
"connection": "trading-desk",
"message": "{{symbol}} ({{as_of}}): no dip setup. Pullback rule {{pullback|pct}}, under the lower band {{below_band|pct}}."
}
],
"dry_run": true
}Answers and what it would send (dry run, session of 2026-10-30)
pullback 0.307 · below_band 0.568 · up_week 0.493 · drop5 0.462
{
"text": "AMZN (2026-10-30): no dip setup. Pullback rule 31%, under the lower band 57%."
}Risk checks before an order
TSLA: pre-trade check (block, reduce or allow)
Before a buy order goes out: block on high drawdown odds with a broken trend, reduce on high odds or wide ranges, otherwise allow. Each branch posts a decision to the order system.
drop5 >= 0.75 or (below_50d >= 0.6 and drop5 >= 0.6)→
Webhookmy-omsdrop5 >= 0.6 or wide >= 0.6→
Webhookmy-omselse→
Webhookmy-omsbelow_50dC < sma(C, 50)wideatr_pct(14) > 4gap_downO < L[-1]- + 2 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TSLA"
},
"questions": {
"below_50d": {
"type": "yes_no",
"ask": "C < sma(C, 50)"
},
"wide": {
"type": "yes_no",
"ask": "atr_pct(14) > 4"
},
"gap_down": {
"type": "yes_no",
"ask": "O < L[-1]"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
},
"down_week": {
"type": "yes_no",
"instructions": "Will the stock be lower in a week?"
}
},
"actions": [
{
"id": "block",
"when": "drop5 >= 0.75 or (below_50d >= 0.6 and drop5 >= 0.6)",
"do": "webhook",
"connection": "my-oms",
"body": {
"symbol": "{{symbol}}",
"decision": "block",
"p_drop5": "{{drop5}}",
"p_below_50d": "{{below_50d}}",
"as_of": "{{as_of}}"
}
},
{
"id": "reduce",
"when": "drop5 >= 0.6 or wide >= 0.6",
"do": "webhook",
"connection": "my-oms",
"body": {
"symbol": "{{symbol}}",
"decision": "reduce_size",
"max_fraction": 0.5,
"p_drop5": "{{drop5}}",
"p_wide": "{{wide}}",
"as_of": "{{as_of}}"
}
},
{
"id": "allow",
"when": "else",
"do": "webhook",
"connection": "my-oms",
"body": {
"symbol": "{{symbol}}",
"decision": "allow",
"as_of": "{{as_of}}"
}
}
],
"dry_run": true
}Answers and what it would send (dry run, session of 2026-10-30)
below_50d 0.104 · wide 0.077 · gap_down 0.866 · drop5 0.638 · down_week 0.455
{
"symbol": "TSLA",
"decision": "reduce_size",
"max_fraction": 0.5,
"p_drop5": 0.638,
"p_wide": 0.0771,
"as_of": "2026-10-30"
}NVDA: is the stop hit on an open long?
A chandelier stop (3 ATR under the 22-day high) and a 20-day low break as exact rules, plus the 10% drawdown forecast. Exit on the stop; warn the desk when only the forecast is high.
stop_hit >= 0.6→
Webhookmy-omsdrop10 >= 0.4→
Slacktrading-deskstop_hitC < highest(H, 22) - 3 * atr(22)low_breakC < lowest(L, 20)drop10Will it drop at least 10% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"stop_hit": {
"type": "yes_no",
"ask": "C < highest(H, 22) - 3 * atr(22)"
},
"low_break": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "exit",
"when": "stop_hit >= 0.6",
"do": "webhook",
"connection": "my-oms",
"body": {
"symbol": "{{symbol}}",
"decision": "exit_long",
"p_stop": "{{stop_hit}}",
"p_low_break": "{{low_break}}",
"as_of": "{{as_of}}"
}
},
{
"id": "warn",
"when": "drop10 >= 0.4",
"do": "slack",
"connection": "trading-desk",
"message": "{{symbol}} ({{as_of}}): stop not hit ({{stop_hit|pct}}) but 10% drawdown odds are {{drop10|pct}}."
}
],
"dry_run": true
}Answers and what it would send (dry run, session of 2026-10-30)
stop_hit 0.927 · low_break 0.755 · drop10 0.523
{
"symbol": "NVDA",
"decision": "exit_long",
"p_stop": 0.9272,
"p_low_break": 0.7554,
"as_of": "2026-10-30"
}{
"text": "NVDA (2026-10-30): stop not hit (93%) but 10% drawdown odds are 52%."
}Facts, rules and forecasts together
NVDA: pre-earnings check (Slack, dry run)
Earnings within 10 days AND above the 50-day: tell the desk who goes into the print strong, and flag names whose last reaction was over 5%. Otherwise say when the report is not close.
earn_soon >= 0.6 and trend >= 0.6→
Slacktrading-deskearn_soon >= 0.6 and big_mover >= 0.6→
Slacktrading-deskelse→
Slacktrading-deskearn_soondays_to_earnings <= 10trendC > sma(C, 50)big_moverabs(last_earnings_move) > 5- + 2 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"earn_soon": {
"type": "yes_no",
"ask": "days_to_earnings <= 10"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"big_mover": {
"type": "yes_no",
"ask": "abs(last_earnings_move) > 5"
},
"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": "strong_into_print",
"when": "earn_soon >= 0.6 and trend >= 0.6",
"do": "slack",
"connection": "trading-desk",
"message": "{{symbol}} ({{as_of}}): earnings within 10 days and above the 50-day. Rally 5% {{rally5|pct}}, drop 5% {{drop5|pct}}."
},
{
"id": "big_reactor",
"when": "earn_soon >= 0.6 and big_mover >= 0.6",
"do": "slack",
"connection": "trading-desk",
"message": "{{symbol}} ({{as_of}}): reports within 10 days; the last reaction was over 5%. Size down into the print."
},
{
"id": "not_close",
"when": "else",
"do": "slack",
"connection": "trading-desk",
"message": "{{symbol}} ({{as_of}}): no report in the next 10 days ({{earn_soon|pct}}); trend {{trend|pct}}."
}
],
"dry_run": true
}Answers and what it would send (dry run, session of 2026-10-30)
earn_soon 0.056 · trend 0.075 · big_mover 0.946 · drop5 0.523 · rally5 0.616
{
"text": "NVDA (2026-10-30): no report in the next 10 days (6%); trend 7%."
}Dividend payers: yield, growth, trend and drawdown
Four dividend payers, one request each: yield and growth record (facts), trend (a rule) and the odds of a 5% drawdown (a forecast).
yield_25div_yield_ttm > 2.5groweryears_of_growth >= 10trendC > sma(C, 200)- + 1 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "KO"
},
"questions": {
"yield_25": {
"type": "yes_no",
"ask": "div_yield_ttm > 2.5"
},
"grower": {
"type": "yes_no",
"ask": "years_of_growth >= 10"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 200)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Answers per symbol (session of 2026-10-30)
KO |
|
JNJ |
|
PG |
|
PEP |
|
AAPL: post-earnings drift to your OMS (webhook, dry run)
Beat on both lines, still above the pre-earnings close and above the last swing high, and leaning up for the week: send a signed signal to the order system.
beat_both >= 0.6 and holding >= 0.6 and up_week >= 0.55→
Webhookmy-omsbeat_bothbeat_eps_last > 0.5 and beat_revenue_last > 0.5holdingC > pre_earnings_closeover_swingC > swinghigh(5)- + 1 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"beat_both": {
"type": "yes_no",
"ask": "beat_eps_last > 0.5 and beat_revenue_last > 0.5"
},
"holding": {
"type": "yes_no",
"ask": "C > pre_earnings_close"
},
"over_swing": {
"type": "yes_no",
"ask": "C > swinghigh(5)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "drift_long",
"when": "beat_both >= 0.6 and holding >= 0.6 and up_week >= 0.55",
"do": "webhook",
"connection": "my-oms",
"body": {
"symbol": "{{symbol}}",
"signal": "post_earnings_drift",
"p_beat": "{{beat_both}}",
"p_holding": "{{holding}}",
"p_swing": "{{over_swing}}",
"p_up_week": "{{up_week}}",
"as_of": "{{as_of}}"
}
}
],
"dry_run": true
}Answers and what it would send (dry run, session of 2026-10-30)
beat_both 0.859 · holding 0.831 · over_swing 0.289 · up_week 0.590
{
"symbol": "AAPL",
"signal": "post_earnings_drift",
"p_beat": 0.8591,
"p_holding": 0.831,
"p_swing": 0.2893,
"p_up_week": 0.59,
"as_of": "2026-10-30"
}Events & price action
Exact facts about the last and next earnings report, dividends and splits, plus swing-based price action and pre-trade checks. Each example also asks a forecast, to show which questions are facts (with a rule) and which are predictions (no rule). Answers are real responses, captured 2026-10-31. Grammar: Rule language.
Earnings
NVDA: last quarter, next report, and a forecast
Did it beat, when does it report, how long is the streak (facts), and will it beat next time (a forecast, answered with no rule).
beat_epsDid NVDA beat EPS estimates last quarter?beat_revDid revenue beat estimates last quarter?earn_30dIs earnings in the next 30 days?- + 3 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"beat_eps": {
"type": "yes_no",
"instructions": "Did NVDA beat EPS estimates last quarter?"
},
"beat_rev": {
"type": "yes_no",
"instructions": "Did revenue beat estimates last quarter?"
},
"earn_30d": {
"type": "yes_no",
"instructions": "Is earnings in the next 30 days?"
},
"streak": {
"type": "yes_no",
"instructions": "Has it beaten estimates 4 quarters in a row?"
},
"reaction": {
"type": "yes_no",
"ask": "abs(last_earnings_move) > 5 and last_earnings_gap > 0"
},
"beat_next": {
"type": "yes_no",
"instructions": "Will NVDA beat earnings next quarter?"
}
}
}Answers (session of 2026-10-30)
beat_eps 0.859 · beat_rev 0.859 · earn_30d 0.946 · streak 0.946 · reaction 0.946 · beat_next 0.488
Dividends
KO: dividend income checks
Pays, yields, grows, goes ex soon (facts), in an uptrend (a rule), and will it raise next year (a forecast).
paysDoes KO pay a dividend?yield_3Is the dividend yield above 3%?grown_10Has the dividend grown 10 years in a row?- + 3 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "KO"
},
"questions": {
"pays": {
"type": "yes_no",
"instructions": "Does KO pay a dividend?"
},
"yield_3": {
"type": "yes_no",
"instructions": "Is the dividend yield above 3%?"
},
"grown_10": {
"type": "yes_no",
"instructions": "Has the dividend grown 10 years in a row?"
},
"ex_40d": {
"type": "yes_no",
"instructions": "Is the ex-dividend date within 40 days?"
},
"income_trend": {
"type": "yes_no",
"ask": "div_yield_ttm > 2 and C > sma(C, 200)"
},
"raise_next": {
"type": "yes_no",
"instructions": "Will KO raise its dividend next year?"
}
}
}Answers (session of 2026-10-30)
pays 0.859 · yield_3 0.054 · grown_10 0.946 · ex_40d 0.944 · income_trend 0.946 · raise_next 0.463
Splits
NVDA: split history
When it last split, how big, forward or reverse, and anything announced (facts); will it split again (a forecast).
split_3yHas the stock split in the past three years?reverseWas the last split a reverse split?comingIs a stock split coming up?- + 2 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"split_3y": {
"type": "yes_no",
"instructions": "Has the stock split in the past three years?"
},
"reverse": {
"type": "yes_no",
"instructions": "Was the last split a reverse split?"
},
"coming": {
"type": "yes_no",
"instructions": "Is a stock split coming up?"
},
"big_recent": {
"type": "yes_no",
"ask": "days_since_split <= 1095 and last_split_ratio >= 4"
},
"split_again": {
"type": "yes_no",
"instructions": "Will NVDA split its stock again?"
}
}
}Answers (session of 2026-10-30)
split_3y 0.946 · reverse 0.141 · coming 0.054 · big_recent 0.946 · split_again 0.480
Price action
TSLA: swings, ranges and gaps
Swing structure, distance to resistance, the 20-day range and today's gap, as exact rules; whether it breaks resistance this week is a forecast.
hh_hlIs the stock making higher swing highs and higher swing lows?pullbackHas it pulled back at least 5% from its 20-day high?gap_fillDid today's gap up fill?- + 3 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TSLA"
},
"questions": {
"hh_hl": {
"type": "yes_no",
"instructions": "Is the stock making higher swing highs and higher swing lows?"
},
"pullback": {
"type": "yes_no",
"instructions": "Has it pulled back at least 5% from its 20-day high?"
},
"gap_fill": {
"type": "yes_no",
"instructions": "Did today's gap up fill?"
},
"near_resistance": {
"type": "yes_no",
"ask": "C > swinghigh(5) * 0.97 and C <= swinghigh(5)"
},
"above_vwap20": {
"type": "yes_no",
"ask": "C > sum(hlc3() * V, 20) / sum(V, 20)"
},
"break_week": {
"type": "yes_no",
"instructions": "Will it break above resistance this week?"
}
}
}Answers (session of 2026-10-30)
hh_hl 0.544 · pullback 0.243 · gap_fill 0.071 · near_resistance 0.326 · above_vwap20 0.920 · break_week 0.469
Trading actions
AAPL: checks before an entry
Stop distance, extension, entry zone, risk/reward and liquidity as exact checks on today's data; whether the stop gets hit is a forecast.
stop_closeIs a stop below yesterday's low less than 1.5 ATR away?extendedIs price extended more than 2 ATR above its 20-day average?entry_zoneIs the stock in an uptrend with a pullback to the 20-day?- + 3 more
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"stop_close": {
"type": "yes_no",
"instructions": "Is a stop below yesterday's low less than 1.5 ATR away?"
},
"extended": {
"type": "yes_no",
"instructions": "Is price extended more than 2 ATR above its 20-day average?"
},
"entry_zone": {
"type": "yes_no",
"instructions": "Is the stock in an uptrend with a pullback to the 20-day?"
},
"reward_2to1": {
"type": "yes_no",
"ask": "C > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))"
},
"liquid": {
"type": "yes_no",
"ask": "avg(C * V, 20) > 100000000"
},
"stop_hit": {
"type": "yes_no",
"instructions": "Will my stop below yesterday's low get hit?"
}
}
}Answers (session of 2026-10-30)
stop_close 0.230 · extended 0.114 · entry_zone 0.671 · reward_2to1 0.406 · liquid 0.946 · stop_hit 0.372
Strategies (rule language)
Classic trading setups written as rules: an entry and an exit, each a yes_no ask on one symbol, answered by the rule engine on the latest completed session. Answers are real responses, captured 2026-10-31. Grammar: Rule language.
Breakouts & Momentum
20-Bar High Break
Enter when the close clears the highest close of the 20 sessions before it; leave when it closes under the lowest of the previous 10.
entryC > highest(C,20)exitC < lowest(C,10)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "XLE"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > highest(C,20)"
},
"exit": {
"type": "yes_no",
"ask": "C < lowest(C,10)"
}
}
}Answers (session of 2026-10-30)
entry 0.646 · exit 0.111
Gap Up Continuation
Opens more than 1% above yesterday's high and keeps going, closing above its own open. Out on a close under the 5-day average.
entryO > H[-1] * 1.01 AND C > OexitC < avg(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "O > H[-1] * 1.01 AND C > O"
},
"exit": {
"type": "yes_no",
"ask": "C < avg(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.060 · exit 0.926
3-Bar Momentum Long
Two higher closes in a row while above the 20-day average. Out when the close slips under the 10-day average.
entryC > C[-1] AND C[-1] > C[-2] AND C > avg(C,20)exitC < avg(C,10)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > C[-1] AND C[-1] > C[-2] AND C > avg(C,20)"
},
"exit": {
"type": "yes_no",
"ask": "C < avg(C,10)"
}
}
}Answers (session of 2026-10-30)
entry 0.127 · exit 0.559
Range Break + Volume Confirmation
A 20-session closing high on at least 1.5 times average volume, so the break has participation behind it.
entryC > highest(C,20) AND V > 1.5 * avg(V,20)exitC < avg(C,10)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "XLE"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > highest(C,20) AND V > 1.5 * avg(V,20)"
},
"exit": {
"type": "yes_no",
"ask": "C < avg(C,10)"
}
}
}Answers (session of 2026-10-30)
entry 0.065 · exit 0.134
10-Bar Range Breakout
A faster breakout: the close beats the prior 10 sessions. Out on a close under the 5-day average.
entryC > highest(C,10)exitC < avg(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IWM"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > highest(C,10)"
},
"exit": {
"type": "yes_no",
"ask": "C < avg(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.119 · exit 0.727
20-Bar Low Break
The short-side mirror of the 20-bar high break: a close under the prior 20-session low; cover above the prior 10-session high.
entryC < lowest(C,20)exitC > highest(C,10)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AMZN"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C < lowest(C,20)"
},
"exit": {
"type": "yes_no",
"ask": "C > highest(C,10)"
}
}
}Answers (session of 2026-10-30)
entry 0.637 · exit 0.054
10-Bar Range Breakdown
A close under the prior 10-session low. Cover when it closes back above the 5-day average.
entryC < lowest(C,10)exitC > avg(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "MSFT"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C < lowest(C,10)"
},
"exit": {
"type": "yes_no",
"ask": "C > avg(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.478 · exit 0.116
Bottom-20% Range + Break
Price sits in the bottom fifth of its 10-day range, closes under yesterday's low, on above-average volume.
entry((C - min(C,10)) / (max(C,10) - min(C,10)) < 0.2) AND (C < L[-1]) AND (V > 1.2 * avg(V,10))exitC > highest(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AMZN"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "((C - min(C,10)) / (max(C,10) - min(C,10)) < 0.2) AND (C < L[-1]) AND (V > 1.2 * avg(V,10))"
},
"exit": {
"type": "yes_no",
"ask": "C > highest(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.627 · exit 0.057
Mean Reversion
RSI Oversold Bounce
Buy weakness when the 14-day RSI is under 30; take it off once RSI is back over 50.
entryrsi(C,14) < 30exitrsi(C,14) > 50
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AMZN"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "rsi(C,14) < 30"
},
"exit": {
"type": "yes_no",
"ask": "rsi(C,14) > 50"
}
}
}Answers (session of 2026-10-30)
entry 0.100 · exit 0.070
Bollinger Band Reversion
A close more than two standard deviations under the 20-day mean, held until it closes back above the mean.
entryC < (avg(C,20) - 2 * std(C,20))exitC > avg(C,20)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "MSFT"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C < (avg(C,20) - 2 * std(C,20))"
},
"exit": {
"type": "yes_no",
"ask": "C > avg(C,20)"
}
}
}Answers (session of 2026-10-30)
entry 0.458 · exit 0.257
Dip Below 20-Bar Mean
A 3% dip under the 20-day average, without the volatility scaling of a band. Out back above the average.
entryC < avg(C,20) * 0.97exitC > avg(C,20)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C < avg(C,20) * 0.97"
},
"exit": {
"type": "yes_no",
"ask": "C > avg(C,20)"
}
}
}Answers (session of 2026-10-30)
entry 0.148 · exit 0.082
Patterns
Inside-Bar Breakout Long
Yesterday was an inside bar (range inside the day before); today closes above its high.
entryH[-1] < H[-2] AND L[-1] > L[-2] AND C > H[-1]exitC < avg(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "QQQ"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "H[-1] < H[-2] AND L[-1] > L[-2] AND C > H[-1]"
},
"exit": {
"type": "yes_no",
"ask": "C < avg(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.054 · exit 0.943
Hammer Reversal
A hammer candle after a short decline, while price still holds the 20-day average. Out under yesterday's low.
entryhammer() AND C > avg(C,20)exitC < L[-1]
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "hammer() AND C > avg(C,20)"
},
"exit": {
"type": "yes_no",
"ask": "C < L[-1]"
}
}
}Answers (session of 2026-10-30)
entry 0.071 · exit 0.910
Bearish Engulfing Short
Today's red body swallows yesterday's green one. Cover on a close above yesterday's high.
entryengulfing_bear()exitC > H[-1]
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TSLA"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "engulfing_bear()"
},
"exit": {
"type": "yes_no",
"ask": "C > H[-1]"
}
}
}Answers (session of 2026-10-30)
entry 0.071 · exit 0.187
Inside-Bar Breakdown Short
Yesterday was an inside bar; today closes under its low. Cover back above the 5-day average.
entryH[-1] < H[-2] AND L[-1] > L[-2] AND C < L[-1]exitC > avg(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IWM"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "H[-1] < H[-2] AND L[-1] > L[-2] AND C < L[-1]"
},
"exit": {
"type": "yes_no",
"ask": "C > avg(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.075 · exit 0.273
Reversal
Overextension + First Weak Close
More than 8% over the 20-day average and the first lower close: a fade candidate. The exit rule here is written from the long side of the average.
entryC > avg(C,20) * 1.08 AND C < C[-1]exitC > avg(C,20)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AMD"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > avg(C,20) * 1.08 AND C < C[-1]"
},
"exit": {
"type": "yes_no",
"ask": "C > avg(C,20)"
}
}
}Answers (session of 2026-10-30)
entry 0.065 · exit 0.106
Gap Down Reversal
Opens more than 1% under yesterday's low, then closes above its open: sellers did not follow through.
entryO < L[-1] * 0.99 AND C > OexitC < avg(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TSLA"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "O < L[-1] * 0.99 AND C > O"
},
"exit": {
"type": "yes_no",
"ask": "C < avg(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.739 · exit 0.613
Trend Following
Above 200-Bar Trend
The simplest trend filter: in while the close is above the 200-day average, out below it.
entryC > sma(C,200)exitC < sma(C,200)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > sma(C,200)"
},
"exit": {
"type": "yes_no",
"ask": "C < sma(C,200)"
}
}
}Answers (session of 2026-10-30)
entry 0.945 · exit 0.055
Dual MA Crossover
In while the 20-day average is above the 50-day; out when it falls below.
entrysma(C,20) > sma(C,50)exitsma(C,20) < sma(C,50)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "QQQ"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "sma(C,20) > sma(C,50)"
},
"exit": {
"type": "yes_no",
"ask": "sma(C,20) < sma(C,50)"
}
}
}Answers (session of 2026-10-30)
entry 0.714 · exit 0.286
Pullback in Uptrend 10/50
Above the 50-day trend but under the 10-day: a pullback inside an uptrend. Out on a new 5-session closing high.
entryC > avg(C,50) AND C < avg(C,10)exitC > highest(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > avg(C,50) AND C < avg(C,10)"
},
"exit": {
"type": "yes_no",
"ask": "C > highest(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.559 · exit 0.157
100-Bar Trend + Shallow Pullback
Above the 100- and 20-day averages, dipping just under the 5-day: a shallow pause in a strong trend.
entryC > avg(C,100) AND C > avg(C,20) AND C < avg(C,5)exitC > highest(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "MSFT"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > avg(C,100) AND C > avg(C,20) AND C < avg(C,5)"
},
"exit": {
"type": "yes_no",
"ask": "C > highest(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.257 · exit 0.112
3-Bar Pullback in Uptrend
Three lower closes in a row while still above the 50-day average.
entryC > avg(C,50) AND C < C[-1] AND C[-1] < C[-2] AND C[-2] < C[-3]exitC > highest(C,5)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "XLE"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "C > avg(C,50) AND C < C[-1] AND C[-1] < C[-2] AND C[-2] < C[-3]"
},
"exit": {
"type": "yes_no",
"ask": "C > highest(C,5)"
}
}
}Answers (session of 2026-10-30)
entry 0.091 · exit 0.685
5/20 MA Crossover
A faster crossover: the 5-day average over the 20-day.
entryavg(C,5) > avg(C,20)exitavg(C,5) < avg(C,20)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "avg(C,5) > avg(C,20)"
},
"exit": {
"type": "yes_no",
"ask": "avg(C,5) < avg(C,20)"
}
}
}Answers (session of 2026-10-30)
entry 0.120 · exit 0.880
Volatility
Volatility Compression Breakout
Recent swings are less than half their longer-run size: a coiled market. Out under the 20-day average.
entrystd(C,20) < 0.5 * std(C,50)exitC < avg(C,20)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "std(C,20) < 0.5 * std(C,50)"
},
"exit": {
"type": "yes_no",
"ask": "C < avg(C,20)"
}
}
}Answers (session of 2026-10-30)
entry 0.151 · exit 0.918
Low-Vol Base + Breakout
A 10-day range under 5% of price, then a close above the prior 10-session high.
entry(max(H,10) - min(L,10)) / avg(C,10) < 0.05 AND C > highest(C,10)exitC < avg(C,10)
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "DIA"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "(max(H,10) - min(L,10)) / avg(C,10) < 0.05 AND C > highest(C,10)"
},
"exit": {
"type": "yes_no",
"ask": "C < avg(C,10)"
}
}
}Answers (session of 2026-10-30)
entry 0.070 · exit 0.894
Volume
Volume Dry-Up Reversal
Below the 50-day average, a green day on half the usual volume: selling pressure drying up.
entryV < 0.5 * avg(V,20) AND C > O AND C < avg(C,50)exitC < L[-1]
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AMZN"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "V < 0.5 * avg(V,20) AND C > O AND C < avg(C,50)"
},
"exit": {
"type": "yes_no",
"ask": "C < L[-1]"
}
}
}Answers (session of 2026-10-30)
entry 0.054 · exit 0.627
Volume Spike Breakout
Volume more than double the 20-day average. Out on a close under yesterday's low.
entryV > 2 * avg(V,20)exitC < L[-1]
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "V > 2 * avg(V,20)"
},
"exit": {
"type": "yes_no",
"ask": "C < L[-1]"
}
}
}Answers (session of 2026-10-30)
entry 0.186 · exit 0.770
Financial
Everyday trader questions about one stock, answered from its current numbers.
Momentum burst on heavy volume
vol_upWill volatility rise over the next 5 days?dip_5pctWill it drop at least 5% at some point in the next month?volume_spikeWill volume spike tomorrow?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
new_highWill it make a new 20-day high in the next week?vol_upWill volatility rise over the next 5 days?dip_5pctWill it drop at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
rally_5pctWill it rally at least 5% at some point in the next month?new_lowWill it make a new 20-day low in the next week?vol_downWill volatility calm down over the next 5 days?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
vol_downWill volatility calm down over the next 5 days?gap_upWill it gap up tomorrow?volume_spikeWill volume spike tomorrow?- + 1 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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
vol_downWill volatility calm down over the next 5 days?new_lowWill it make a new 20-day low in the next week?rally_5pctWill it rally at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
vol_upWill volatility rise over the next 5 days?big_moveWill there be a big move in either direction in the next 5 days?new_highWill it make a new 20-day high in the next week?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
dip_5pctWill it drop at least 5% at some point in the next month?vol_downWill volatility calm down over the next 5 days?gap_downWill it gap down tomorrow?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
new_lowWill it make a new 20-day low in the next week?beat_spyWill it beat SPY over the next month?rally_5pctWill it rally at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
new_highWill it make a new 20-day high in the next week?dip_5pctWill it drop at least 5% at some point in the next month?up_5dWill the stock be higher in a week?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
beat_spyWill it beat SPY over the next month?vol_upWill volatility rise over the next 5 days?dip_5pctWill it drop at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
big_moveWill there be a big move in either direction in the next 5 days?dip_5pctWill it drop at least 5% at some point in the next month?rally_5pctWill it rally at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
volume_spikeWill volume spike tomorrow?new_highWill it make a new 20-day high in the next week?dip_5pctWill it drop at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
up_1dWill the stock be up tomorrow?gap_downWill it gap down tomorrow?new_lowWill it make a new 20-day low in the next week?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
up_1dWill the stock be up tomorrow?gap_upWill it gap up tomorrow?rally_5pctWill it rally at least 5% at some point in the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
dip_5pctWill it drop at least 5% at some point in the next month?beat_spyWill it beat SPY over the next month?vol_up_20Will volatility be higher over the next month?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
new_lowWill it make a new 20-day low in the next week?rally_5pctWill it rally at least 5% at some point in the next month?big_moveWill there be a big move in either direction in the next 5 days?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
vol_downWill volatility calm down over the next 5 days?vol_up_20Will volatility be higher over the next month?big_moveWill there be a big move in either direction in the next 5 days?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
big_moveWill there be a big move in either direction in the next 5 days?gap_upWill it gap up tomorrow?gap_downWill it gap down tomorrow?
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
rally_5pctWill it rally at least 5% at some point in the next month?dip_5pctWill it drop at least 5% at some point in the next month?new_lowWill it make a new 20-day low in the next week?
Request JSON
{
"model": "ora-fin-0.1.1",
"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
vol_upWill volatility rise over the next 5 days?up_5dWill the stock be higher in a week?new_highWill it make a new 20-day high in the next week?- + 1 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?gap_and_goIs this a gap-and-go day rather than a fade?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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%
fill_todayWill the gap fill today?fill_5dWill the gap fill within 5 sessions?
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
new_highWill it make a new 20-day high in the next week?new_high_alt1Is it going to print a fresh 20 day peak inside the next 5 sessions?new_high_alt2Any chance it tags a new 4-week high over the coming week?- + 5 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
rally5Will it rally at least 5% at some point in the next month?rally5_alt1Could it pop 5% or more at any point over the next 21 sessions?rally5_alt2Any chance of a 5 percent jump sometime in the coming month?- + 5 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
atr_downWill the low reach today's close minus 1 ATR during the next session?atr_down_alt1Will tomorrow's low tag 1 ATR under today's close?atr_down_alt2Does it dip a full ATR below the close tomorrow?- + 3 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
touch_50Will it trade back to its 50-day moving average in the next month?touch_50_alt1Will it revisit the 50 DMA within the next 4 weeks?touch_50_alt2Does it tag the 50-day SMA sometime in the coming month?- + 3 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
up_weekWill the stock be higher in a week?up_week_alt1Will it close higher in 5 days?up_week_alt2Does it finish the next 5 sessions above where it closed today?- + 10 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
beat_spyWill it beat SPY over the next month?beat_spy_alt1Will it outperform the S&P over the coming four weeks?beat_spy_alt2Does it beat the index over the next 21 sessions?- + 3 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
move3Will the stock move more than 3% in either direction in 2 trading days?move3_alt1Will it swing over 3% either way in the next two sessions?move3_alt2Is a 3%+ move, up or down, coming within 2 days?- + 9 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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)
hi_gtWill the high during the next session exceed today's high?hi_gt_alt1Will it take out today's high tomorrow?hi_gt_alt2Does tomorrow trade above today's high at any point?- + 15 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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
rally_5pct_monthWill it rally at least 5% within a month?drop_3pct_2wWill it drop at least 3% within two weeks?stop_1_5atrWould a stop 1.5 ATR below today's close be hit within 5 sessions?- + 9 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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
rally_5pct_monthWill it rally at least 5% within a month?drop_3pct_2wWill it drop at least 3% within two weeks?stop_1_5atrWould a stop 1.5 ATR below today's close be hit within 5 sessions?- + 9 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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
rally_5pct_monthWill it rally at least 5% within a month?drop_3pct_2wWill it drop at least 3% within two weeks?stop_1_5atrWould a stop 1.5 ATR below today's close be hit within 5 sessions?- + 9 more
Request JSON
{
"model": "ora-fin-0.1.1",
"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?"
}
}
}Text (general)
General-purpose questions about text and records, from one question to structured state: the same request shape, answered by the text engine.
Simple
Is this about billing? (yes_no)
billingIs this message about billing, a charge or a refund?
Request JSON
{
"model": "ora-text-0.2.0",
"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)
sentimentOverall sentiment of the message
Request JSON
{
"model": "ora-text-0.2.0",
"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)
is_spamIs this message spam or a scam (unsolicited prize, urgent click, free money)?
Request JSON
{
"model": "ora-text-0.2.0",
"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)
urgencyHow urgent is this?
Request JSON
{
"model": "ora-text-0.2.0",
"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
Support ticket triage
departmentWhich team should handle thisfrustrationHow frustrated the customer appearsis_urgentThe message conveys urgency: orders blocked, errors on every request, needs fixing now
Request JSON
{
"model": "ora-text-0.2.0",
"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
overallOverall verdict of the reviewproduct_qualityHow the reviewer rates the product itself (sound, battery)shipping_issueMentions a problem with shipping, delivery or packaging (late, crushed box)- + 1 more
Request JSON
{
"model": "ora-text-0.2.0",
"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
toxicContains insults, harassment or abusive languagethreatContains a threat of violence or harmactionModeration action to take
Request JSON
{
"model": "ora-text-0.2.0",
"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
intentWhat the sender wantscompany_sizeSize of the sender's companydecision_makerThe sender runs a team or department and can likely decide on a purchase
Request JSON
{
"model": "ora-text-0.2.0",
"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
Refund decision on an order record (JSON state)
next_actionWhat should support do nexteligibleThe order is eligible for a refund under the policyconfidence_neededHow much human review this decision needs
Request JSON
{
"model": "ora-text-0.2.0",
"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)
riskCredit risk of this applicationdecisionUnderwriting decisionaffordableThe requested amount is affordable relative to income
Request JSON
{
"model": "ora-text-0.2.0",
"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)
intentThe customer's main intent in the latest messageneeds_humanThis needs a human agent (billing changes, exceptions, angry customer)sentimentCustomer mood
Request JSON
{
"model": "ora-text-0.2.0",
"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
severitycategoryRoot cause categoryprevented_by_ciA CI check could plausibly have caught this before production
Request JSON
{
"model": "ora-text-0.2.0",
"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"
}
}
}Tool calling
A query in plain English plus your tool definitions; ora-automation returns the calls to make. Coming soon: the requests are final, answers arrive when the model goes live. Reference: POST /v1/automate.
Lights and lock
Dim the bedroom lights to 30% and lock the front door
set_lightsTurn the lights in a room on or off and set brightness.lock_doorLock or unlock a named door.control_deviceSwitch or toggle any named smart-home device.get_weatherWeather forecast for a city on a day.
Request JSON
{
"model": "ora-automation",
"query": "Dim the bedroom lights to 30% and lock the front door",
"tools": [
{
"name": "set_lights",
"description": "Turn the lights in a room on or off and set brightness.",
"parameters": {
"type": "object",
"properties": {
"room": {
"type": "string"
},
"on": {
"type": "boolean"
},
"brightness": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"room"
]
}
},
{
"name": "lock_door",
"description": "Lock or unlock a named door.",
"parameters": {
"type": "object",
"properties": {
"door": {
"type": "string"
},
"locked": {
"type": "boolean"
}
},
"required": [
"door",
"locked"
]
}
},
{
"name": "control_device",
"description": "Switch or toggle any named smart-home device.",
"parameters": {
"type": "object",
"properties": {
"device": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"on",
"off",
"toggle"
]
}
},
"required": [
"device",
"action"
]
}
},
{
"name": "get_weather",
"description": "Weather forecast for a city on a day.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"day": {
"type": "string",
"description": "today, tomorrow or a date"
}
},
"required": [
"city"
]
}
}
]
}Toggle a device
toggle the garage door
set_lightsTurn the lights in a room on or off and set brightness.lock_doorLock or unlock a named door.control_deviceSwitch or toggle any named smart-home device.get_weatherWeather forecast for a city on a day.
Request JSON
{
"model": "ora-automation",
"query": "toggle the garage door",
"tools": [
{
"name": "set_lights",
"description": "Turn the lights in a room on or off and set brightness.",
"parameters": {
"type": "object",
"properties": {
"room": {
"type": "string"
},
"on": {
"type": "boolean"
},
"brightness": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"room"
]
}
},
{
"name": "lock_door",
"description": "Lock or unlock a named door.",
"parameters": {
"type": "object",
"properties": {
"door": {
"type": "string"
},
"locked": {
"type": "boolean"
}
},
"required": [
"door",
"locked"
]
}
},
{
"name": "control_device",
"description": "Switch or toggle any named smart-home device.",
"parameters": {
"type": "object",
"properties": {
"device": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"on",
"off",
"toggle"
]
}
},
"required": [
"device",
"action"
]
}
},
{
"name": "get_weather",
"description": "Weather forecast for a city on a day.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"day": {
"type": "string",
"description": "today, tomorrow or a date"
}
},
"required": [
"city"
]
}
}
]
}Weather check
What's the weather in Chicago tomorrow?
set_lightsTurn the lights in a room on or off and set brightness.lock_doorLock or unlock a named door.control_deviceSwitch or toggle any named smart-home device.get_weatherWeather forecast for a city on a day.
Request JSON
{
"model": "ora-automation",
"query": "What's the weather in Chicago tomorrow?",
"tools": [
{
"name": "set_lights",
"description": "Turn the lights in a room on or off and set brightness.",
"parameters": {
"type": "object",
"properties": {
"room": {
"type": "string"
},
"on": {
"type": "boolean"
},
"brightness": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"room"
]
}
},
{
"name": "lock_door",
"description": "Lock or unlock a named door.",
"parameters": {
"type": "object",
"properties": {
"door": {
"type": "string"
},
"locked": {
"type": "boolean"
}
},
"required": [
"door",
"locked"
]
}
},
{
"name": "control_device",
"description": "Switch or toggle any named smart-home device.",
"parameters": {
"type": "object",
"properties": {
"device": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"on",
"off",
"toggle"
]
}
},
"required": [
"device",
"action"
]
}
},
{
"name": "get_weather",
"description": "Weather forecast for a city on a day.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"day": {
"type": "string",
"description": "today, tomorrow or a date"
}
},
"required": [
"city"
]
}
}
]
}No tool fits
Tell me a joke about bonds
set_lightsTurn the lights in a room on or off and set brightness.lock_doorLock or unlock a named door.control_deviceSwitch or toggle any named smart-home device.get_weatherWeather forecast for a city on a day.
Request JSON
{
"model": "ora-automation",
"query": "Tell me a joke about bonds",
"tools": [
{
"name": "set_lights",
"description": "Turn the lights in a room on or off and set brightness.",
"parameters": {
"type": "object",
"properties": {
"room": {
"type": "string"
},
"on": {
"type": "boolean"
},
"brightness": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"room"
]
}
},
{
"name": "lock_door",
"description": "Lock or unlock a named door.",
"parameters": {
"type": "object",
"properties": {
"door": {
"type": "string"
},
"locked": {
"type": "boolean"
}
},
"required": [
"door",
"locked"
]
}
},
{
"name": "control_device",
"description": "Switch or toggle any named smart-home device.",
"parameters": {
"type": "object",
"properties": {
"device": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"on",
"off",
"toggle"
]
}
},
"required": [
"device",
"action"
]
}
},
{
"name": "get_weather",
"description": "Weather forecast for a city on a day.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"day": {
"type": "string",
"description": "today, tomorrow or a date"
}
},
"required": [
"city"
]
}
}
]
}Alert on a price
Alert me on Slack if NVDA closes above 150
get_quoteLatest price for a stock or ETF symbol.place_orderPlace a buy or sell order.create_alertCreate a price alert that notifies a channel.
Request JSON
{
"model": "ora-automation",
"query": "Alert me on Slack if NVDA closes above 150",
"tools": [
{
"name": "get_quote",
"description": "Latest price for a stock or ETF symbol.",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
}
},
"required": [
"symbol"
]
}
},
{
"name": "place_order",
"description": "Place a buy or sell order.",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"side": {
"type": "string",
"enum": [
"buy",
"sell"
]
},
"quantity": {
"type": "integer",
"minimum": 1
},
"type": {
"type": "string",
"enum": [
"market",
"limit"
]
},
"limit_price": {
"type": "number"
}
},
"required": [
"symbol",
"side",
"quantity",
"type"
]
}
},
{
"name": "create_alert",
"description": "Create a price alert that notifies a channel.",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"condition": {
"type": "string",
"enum": [
"closes_above",
"closes_below",
"crosses_above",
"crosses_below"
]
},
"price": {
"type": "number"
},
"channel": {
"type": "string",
"enum": [
"slack",
"email",
"webhook"
]
}
},
"required": [
"symbol",
"condition",
"price"
]
}
}
]
}Quote then order
Get a quote for AAPL and buy 10 shares at market
get_quoteLatest price for a stock or ETF symbol.place_orderPlace a buy or sell order.create_alertCreate a price alert that notifies a channel.
Request JSON
{
"model": "ora-automation",
"query": "Get a quote for AAPL and buy 10 shares at market",
"tools": [
{
"name": "get_quote",
"description": "Latest price for a stock or ETF symbol.",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
}
},
"required": [
"symbol"
]
}
},
{
"name": "place_order",
"description": "Place a buy or sell order.",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"side": {
"type": "string",
"enum": [
"buy",
"sell"
]
},
"quantity": {
"type": "integer",
"minimum": 1
},
"type": {
"type": "string",
"enum": [
"market",
"limit"
]
},
"limit_price": {
"type": "number"
}
},
"required": [
"symbol",
"side",
"quantity",
"type"
]
}
},
{
"name": "create_alert",
"description": "Create a price alert that notifies a channel.",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"condition": {
"type": "string",
"enum": [
"closes_above",
"closes_below",
"crosses_above",
"crosses_below"
]
},
"price": {
"type": "number"
},
"channel": {
"type": "string",
"enum": [
"slack",
"email",
"webhook"
]
}
},
"required": [
"symbol",
"condition",
"price"
]
}
}
]
}Calendar and email
Book a 30 minute call with Sam on Friday at 3pm and email him the invite
create_eventCreate a calendar event.send_emailSend an email.log_expenseRecord an expense.
Request JSON
{
"model": "ora-automation",
"query": "Book a 30 minute call with Sam on Friday at 3pm and email him the invite",
"tools": [
{
"name": "create_event",
"description": "Create a calendar event.",
"parameters": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"attendee": {
"type": "string"
},
"day": {
"type": "string"
},
"time": {
"type": "string"
},
"minutes": {
"type": "integer"
}
},
"required": [
"title",
"day",
"time"
]
}
},
{
"name": "send_email",
"description": "Send an email.",
"parameters": {
"type": "object",
"properties": {
"to": {
"type": "string"
},
"subject": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"to",
"subject"
]
}
},
{
"name": "log_expense",
"description": "Record an expense.",
"parameters": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"merchant": {
"type": "string"
},
"category": {
"type": "string",
"enum": [
"meals",
"travel",
"software",
"office",
"other"
]
},
"date": {
"type": "string"
}
},
"required": [
"amount",
"merchant",
"category"
]
}
}
]
}Expense from a receipt
Log a $42.50 lunch at Blue Bottle yesterday as a meals expense
create_eventCreate a calendar event.send_emailSend an email.log_expenseRecord an expense.
Request JSON
{
"model": "ora-automation",
"query": "Log a $42.50 lunch at Blue Bottle yesterday as a meals expense",
"tools": [
{
"name": "create_event",
"description": "Create a calendar event.",
"parameters": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"attendee": {
"type": "string"
},
"day": {
"type": "string"
},
"time": {
"type": "string"
},
"minutes": {
"type": "integer"
}
},
"required": [
"title",
"day",
"time"
]
}
},
{
"name": "send_email",
"description": "Send an email.",
"parameters": {
"type": "object",
"properties": {
"to": {
"type": "string"
},
"subject": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"to",
"subject"
]
}
},
{
"name": "log_expense",
"description": "Record an expense.",
"parameters": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"merchant": {
"type": "string"
},
"category": {
"type": "string",
"enum": [
"meals",
"travel",
"software",
"office",
"other"
]
},
"date": {
"type": "string"
}
},
"required": [
"amount",
"merchant",
"category"
]
}
}
]
}Text and alarm
Text Maria that I'm running 10 minutes late and set an alarm for 6:30am
send_messageSend a text message to a contact.set_alarmSet an alarm.call_contactStart a phone call.
Request JSON
{
"model": "ora-automation",
"query": "Text Maria that I'm running 10 minutes late and set an alarm for 6:30am",
"tools": [
{
"name": "send_message",
"description": "Send a text message to a contact.",
"parameters": {
"type": "object",
"properties": {
"to": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"to",
"text"
]
}
},
{
"name": "set_alarm",
"description": "Set an alarm.",
"parameters": {
"type": "object",
"properties": {
"time": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"time"
]
}
},
{
"name": "call_contact",
"description": "Start a phone call.",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
}
}
]
}Drive somewhere
Take me to the airport avoiding tolls and set the temperature to 21 degrees
navigate_toStart navigation to a destination.set_climateSet the cabin temperature and fan.play_mediaPlay music, a podcast or the radio.
Request JSON
{
"model": "ora-automation",
"query": "Take me to the airport avoiding tolls and set the temperature to 21 degrees",
"tools": [
{
"name": "navigate_to",
"description": "Start navigation to a destination.",
"parameters": {
"type": "object",
"properties": {
"destination": {
"type": "string"
},
"avoid": {
"type": "string",
"enum": [
"tolls",
"highways",
"none"
]
}
},
"required": [
"destination"
]
}
},
{
"name": "set_climate",
"description": "Set the cabin temperature and fan.",
"parameters": {
"type": "object",
"properties": {
"temperature_c": {
"type": "number"
},
"zone": {
"type": "string",
"enum": [
"driver",
"passenger",
"all"
]
}
},
"required": [
"temperature_c"
]
}
},
{
"name": "play_media",
"description": "Play music, a podcast or the radio.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string"
},
"source": {
"type": "string",
"enum": [
"music",
"podcast",
"radio"
]
}
},
"required": [
"query"
]
}
}
]
}CRM after a call
Move the Acme deal to negotiation at $48,000 and remind me to follow up with Dana next Tuesday
create_leadCreate a sales lead.update_dealMove a deal to a new stage or change its value.schedule_followupSchedule a follow-up task.
Request JSON
{
"model": "ora-automation",
"query": "Move the Acme deal to negotiation at $48,000 and remind me to follow up with Dana next Tuesday",
"tools": [
{
"name": "create_lead",
"description": "Create a sales lead.",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"company": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"name",
"company"
]
}
},
{
"name": "update_deal",
"description": "Move a deal to a new stage or change its value.",
"parameters": {
"type": "object",
"properties": {
"deal": {
"type": "string"
},
"stage": {
"type": "string",
"enum": [
"qualified",
"proposal",
"negotiation",
"won",
"lost"
]
},
"amount": {
"type": "number"
}
},
"required": [
"deal"
]
}
},
{
"name": "schedule_followup",
"description": "Schedule a follow-up task.",
"parameters": {
"type": "object",
"properties": {
"contact": {
"type": "string"
},
"when": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"contact",
"when"
]
}
}
]
}Trip planning
Find business class flights from Dubai to London on March 3 and book a hotel in London for 4 nights from March 3
search_flightsSearch flights.book_hotelBook a hotel.
Request JSON
{
"model": "ora-automation",
"query": "Find business class flights from Dubai to London on March 3 and book a hotel in London for 4 nights from March 3",
"tools": [
{
"name": "search_flights",
"description": "Search flights.",
"parameters": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"date": {
"type": "string"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium",
"business",
"first"
]
}
},
"required": [
"from",
"to",
"date"
]
}
},
{
"name": "book_hotel",
"description": "Book a hotel.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"check_in": {
"type": "string"
},
"nights": {
"type": "integer",
"minimum": 1
}
},
"required": [
"city",
"check_in",
"nights"
]
}
}
]
}Shopping
Find running shoes under $120 in size 10
search_productsSearch the catalog.add_to_cartAdd a product to the cart.track_orderTrack an order.
Request JSON
{
"model": "ora-automation",
"query": "Find running shoes under $120 in size 10",
"tools": [
{
"name": "search_products",
"description": "Search the catalog.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string"
},
"max_price": {
"type": "number"
},
"size": {
"type": "string"
}
},
"required": [
"query"
]
}
},
{
"name": "add_to_cart",
"description": "Add a product to the cart.",
"parameters": {
"type": "object",
"properties": {
"product": {
"type": "string"
},
"quantity": {
"type": "integer",
"minimum": 1
}
},
"required": [
"product"
]
}
},
{
"name": "track_order",
"description": "Track an order.",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
}
},
"required": [
"order_id"
]
}
}
]
}Where is my order
Where is my order 88-1932?
search_productsSearch the catalog.add_to_cartAdd a product to the cart.track_orderTrack an order.
Request JSON
{
"model": "ora-automation",
"query": "Where is my order 88-1932?",
"tools": [
{
"name": "search_products",
"description": "Search the catalog.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string"
},
"max_price": {
"type": "number"
},
"size": {
"type": "string"
}
},
"required": [
"query"
]
}
},
{
"name": "add_to_cart",
"description": "Add a product to the cart.",
"parameters": {
"type": "object",
"properties": {
"product": {
"type": "string"
},
"quantity": {
"type": "integer",
"minimum": 1
}
},
"required": [
"product"
]
}
},
{
"name": "track_order",
"description": "Track an order.",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
}
},
"required": [
"order_id"
]
}
}
]
}