Use cases · Sell side
Execution trader / desk: 20 ways to use Ora
Works orders: liquidity, volatility, gaps and when to be patient or aggressive. Each example is a complete, runnable request with the real answers it returned (36 requests, captured 2026-10-31), what they mean and, where it fits, the action it would send.
ora-fin-0.1.1. Another model changes the request JSON and the Playground link; run it there to see its answers.Rule functions and facts used by this player (50)
offset 9ref 8atr 7avg 5sma 3std 3min 3hlc3 2sum 2abs 2log 2sqrt 2bbupper 2rsi 2bbmid 2tr 1max 1swinghigh 1willr 1days_since_earnings 1days_to_earnings 1last_earnings_move 1next_report_amc 1bblower 1atr_pct 1swinglow 1ema 1linreg 1rec 1rma 1zscore 1days_since_reverse_split 1days_since_split 1days_to_split 1last_split_ratio 1cci 1stochd 1stochk 1dark_cloud 1engulfing_bear 1gravestone_doji 1hanging_man 1highest 1shooting_star 1median 1obv 1percentrank 1between 1doji 1cum 1
Examples 11–20 of 20 · page 2 of 2
Execution trader / desk · example 11
KO buy: rest bids near swing-low support?
For a patient buy, check whether price sits just above the last two swing lows and whether support is rising.
- StateKO
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"KO"} The server fills in the latest completed session.
Questions
near_sup | rule | C >= swinglow(5) and C <= 1.03 * swinglow(5)Within 3% above the last swing low |
rising_lows | rule | swinglow(5, 1) > swinglow(5, 2)Latest swing low (strength 5) above the one before |
above_low2 | rule | C > swinglow(3, 2)Close above the second-latest swing low (strength 3) |
stop_close | rule | C > swinglow(5) and C - swinglow(5) < 1.5 * atr(14)A stop under the last swing low is within 1.5 ATR |
new_low | forecast | Will it make a new 20-day low in the next week? A new 20-day low next week |
Answers
| Question | Answer | Reading |
|---|---|---|
near_supWithin 3% above the last swing low | 0.0643 | false |
rising_lowsLatest swing low (strength 5) above the one before | 0.1446 | false |
above_low2Close above the second-latest swing low (strength 3) | 0.9458 | true |
stop_closeA stop under the last swing low is within 1.5 ATR | 0.0615 | false |
new_lowA new 20-day low next week | 0.035 | 4% · unlikely |
What it means
For KO on the session of 2026-10-30: True now: Close above the second-latest swing low (strength 3). Not true: Within 3% above the last swing low; Latest swing low (strength 5) above the one before; A stop under the last swing low is within 1.5 ATR. Forecasts: A new 20-day low next week 4%.
Near rising support, resting bids make sense; the new-low forecast warns when support may not hold.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "KO"
},
"questions": {
"near_sup": {
"type": "yes_no",
"ask": "C >= swinglow(5) and C <= 1.03 * swinglow(5)"
},
"rising_lows": {
"type": "yes_no",
"ask": "swinglow(5, 1) > swinglow(5, 2)"
},
"above_low2": {
"type": "yes_no",
"ask": "C > swinglow(3, 2)"
},
"stop_close": {
"type": "yes_no",
"ask": "C > swinglow(5) and C - swinglow(5) < 1.5 * atr(14)"
},
"new_low": {
"type": "yes_no",
"instructions": "Will it make a new 20-day low in the next week?"
}
}
}Response JSON (KO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"near_sup": {
"yes_no": 0.0643,
"rule": "C >= swinglow(5) and C <= 1.03 * swinglow(5)",
"basis": "rule"
},
"rising_lows": {
"yes_no": 0.1446,
"rule": "swinglow(5, 1) > swinglow(5, 2)",
"basis": "rule"
},
"above_low2": {
"yes_no": 0.9458,
"rule": "C > swinglow(3, 2)",
"basis": "rule"
},
"stop_close": {
"yes_no": 0.0615,
"rule": "C > swinglow(5) and C - swinglow(5) < 1.5 * atr(14)",
"basis": "rule"
},
"new_low": {
"yes_no": 0.035
}
},
"context": {
"symbol": "KO",
"as_of": "2026-10-30"
}
}Execution trader / desk · example 12
ORCL: is the short-term trend smooth enough to lean on?
Compare price with exponential and Wilder-smoothed averages to judge whether to front-load the order.
- StateORCL
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"ORCL"} The server fills in the latest completed session.
Questions
ema | rule | C > ema(C, 10)Close above the 10-day EMA |
rma | rule | C > rma(C, 14)Close above the 14-day Wilder average |
rec | rule | C > rec(C, self + 0.1 * (C - self))Close above a custom exponential average (alpha 0.1) |
slope | rule | linreg(C, 10) > ref(linreg(C, 10), -3)10-day regression line rising over three sessions |
up_tom | forecast | Will the stock be up tomorrow? Up tomorrow |
Answers
| Question | Answer | Reading |
|---|---|---|
emaClose above the 10-day EMA | 0.2571 | false |
rmaClose above the 14-day Wilder average | 0.1931 | false |
recClose above a custom exponential average (alpha 0.1) | 0.2388 | false |
slope10-day regression line rising over three sessions | 0.9031 | true |
up_tomUp tomorrow | 0.409 | 41% · close to even |
What it means
For ORCL on the session of 2026-10-30: True now: 10-day regression line rising over three sessions. Not true: Close above the 10-day EMA; Close above the 14-day Wilder average; Close above a custom exponential average (alpha 0.1). Forecasts: Up tomorrow 41%.
When every smoothed average is below price, the trend is with the buyer and front-loading is reasonable.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "ORCL"
},
"questions": {
"ema": {
"type": "yes_no",
"ask": "C > ema(C, 10)"
},
"rma": {
"type": "yes_no",
"ask": "C > rma(C, 14)"
},
"rec": {
"type": "yes_no",
"ask": "C > rec(C, self + 0.1 * (C - self))"
},
"slope": {
"type": "yes_no",
"ask": "linreg(C, 10) > ref(linreg(C, 10), -3)"
},
"up_tom": {
"type": "yes_no",
"instructions": "Will the stock be up tomorrow?"
}
}
}Response JSON (ORCL, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"ema": {
"yes_no": 0.2571,
"rule": "C > ema(C, 10)",
"basis": "rule"
},
"rma": {
"yes_no": 0.1931,
"rule": "C > rma(C, 14)",
"basis": "rule"
},
"rec": {
"yes_no": 0.2388,
"rule": "C > rec(C, self + 0.1 * (C - self))",
"basis": "rule"
},
"slope": {
"yes_no": 0.9031,
"rule": "linreg(C, 10) > ref(linreg(C, 10), -3)",
"basis": "rule"
},
"up_tom": {
"yes_no": 0.409
}
},
"context": {
"symbol": "ORCL",
"as_of": "2026-10-30"
}
}Execution trader / desk · example 13
End-of-day context for TCA: what kind of day was it?
Email the TCA team a description of each traded name's session so slippage is judged against conditions.
- ScheduleMon–Fri at 16:40 ET
- State3 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"AAPL"} then JPM, XOM, one request each. The server fills in the latest completed session.
Questions
wide | rule | (H - L) > 2 * avg(H - L, 20)Range more than twice the 20-day average range |
trend_day | rule | (O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))A trend day up: opened near the low, closed near the high |
vol2x | rule | V > 2 * ref(avg(V, 20), -1)Volume more than twice the previous 20-day average |
shock | rule | zscore(C / C[-1] - 1, 20) < -2A two-sigma down day |
Answers
| Symbol | widerule | trend_dayrule | vol2xrule | shockrule | Fired |
|---|---|---|---|---|---|
AAPL | 0.8653 | 0.0537 | 0.2473 | 0.253 | tca |
JPM | 0.2888 | 0.0537 | 0.0832 | 0.5937 | tca |
XOM | 0.054 | 0.274 | 0.2958 | 0.0537 | tca |
true false not known for rules; forecasts are odds. Hover a column for its question.
Actions
Rules on the answers decide what to send. Each symbol runs its own request, so each one can fire.
wide >= 0→Emailtca-team{
"subject": "Session context AAPL 2026-10-30",
"text": "AAPL: wide range 87%, trend day 5%, volume spike 25%, return shock 25%."
}{
"subject": "Session context JPM 2026-10-30",
"text": "JPM: wide range 29%, trend day 5%, volume spike 8%, return shock 59%."
}{
"subject": "Session context XOM 2026-10-30",
"text": "XOM: wide range 5%, trend day 27%, volume spike 30%, return shock 5%."
}What it means
Session of 2026-10-30, 3 symbols: Range more than twice the 20-day average range: true for AAPL of 3. A trend day up: opened near the low, closed near the high: true for none of 3. Volume more than twice the previous 20-day average: true for none of 3. A two-sigma down day: true for none of 3. tca fired for AAPL, JPM, XOM.
Slippage on a wide or shock day is not the same as slippage on a quiet one; TCA gets the context with every fill report.
As a scheduled workflow (Mon–Fri at 16:40 ET)
Create it under Workflows in the console: it runs these questions for every symbol on the schedule and fires the actions per symbol. The answers above are what one run returned.
{
"name": "End-of-day context for TCA: what kind of day was it?",
"symbols": "AAPL JPM XOM",
"days": [
1,
2,
3,
4,
5
],
"at_time": "16:40",
"model": "ora-fin-0.1.1",
"questions": {
"wide": {
"type": "yes_no",
"ask": "(H - L) > 2 * avg(H - L, 20)"
},
"trend_day": {
"type": "yes_no",
"ask": "(O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))"
},
"vol2x": {
"type": "yes_no",
"ask": "V > 2 * ref(avg(V, 20), -1)"
},
"shock": {
"type": "yes_no",
"ask": "zscore(C / C[-1] - 1, 20) < -2"
}
},
"actions": [
{
"id": "tca",
"when": "wide >= 0",
"do": "email",
"connection": "tca-team",
"subject": "Session context {{symbol}} {{as_of}}",
"message": "{{symbol}}: wide range {{wide|pct}}, trend day {{trend_day|pct}}, volume spike {{vol2x|pct}}, return shock {{shock|pct}}."
}
]
}Request JSON (AAPL; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"wide": {
"type": "yes_no",
"ask": "(H - L) > 2 * avg(H - L, 20)"
},
"trend_day": {
"type": "yes_no",
"ask": "(O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))"
},
"vol2x": {
"type": "yes_no",
"ask": "V > 2 * ref(avg(V, 20), -1)"
},
"shock": {
"type": "yes_no",
"ask": "zscore(C / C[-1] - 1, 20) < -2"
}
},
"actions": [
{
"id": "tca",
"when": "wide >= 0",
"do": "email",
"connection": "tca-team",
"subject": "Session context {{symbol}} {{as_of}}",
"message": "{{symbol}}: wide range {{wide|pct}}, trend day {{trend_day|pct}}, volume spike {{vol2x|pct}}, return shock {{shock|pct}}."
}
],
"dry_run": true
}Response JSON (AAPL, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"wide": {
"yes_no": 0.8653,
"rule": "(H - L) > 2 * avg(H - L, 20)",
"basis": "rule"
},
"trend_day": {
"yes_no": 0.0537,
"rule": "(O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))",
"basis": "rule"
},
"vol2x": {
"yes_no": 0.2473,
"rule": "V > 2 * ref(avg(V, 20), -1)",
"basis": "rule"
},
"shock": {
"yes_no": 0.253,
"rule": "zscore(C / C[-1] - 1, 20) < -2",
"basis": "rule"
}
},
"context": {
"symbol": "AAPL",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "tca",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "tca-team",
"preview": {
"subject": "Session context AAPL 2026-10-30",
"text": "AAPL: wide range 87%, trend day 5%, volume spike 25%, return shock 25%."
}
}
]
}Execution trader / desk · example 14
Corporate-action check before a large order in SMCI
Make sure no split is pending or recent before sizing an order off historical volumes.
- StateSMCI
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SMCI"} The server fills in the latest completed session.
Questions
split3y | rule | days_since_split <= 1095Split in the last three years |
announced | rule | days_to_split <= 365A split is announced |
rev1y | English → rule | Has the stock done a reverse split in the past year? |
ratio | English → rule | Was the last split at least 2-for-1? |
liquid | rule | avg(C * V, 20) > 100000000Trades more than $100 million a day |
Answers
| Question | Answer | Reading |
|---|---|---|
split3ySplit in the last three years | 0.9463 | true |
announcedA split is announced | 0.0537 | false |
rev1yHas the stock done a reverse split in the past year compiled to days_since_reverse_split <= 365 | 0.0537 | false |
ratioWas the last split at least 2-for-1 compiled to last_split_ratio >= 2 | 0.9463 | true |
liquidTrades more than $100 million a day | 0.9463 | true |
What it means
For SMCI on the session of 2026-10-30: True now: Split in the last three years; Was the last split at least 2-for-1; Trades more than $100 million a day. Not true: A split is announced; Has the stock done a reverse split in the past year.
A recent or pending split changes share counts; the desk adjusts volume-based limits when any split fact is true.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SMCI"
},
"questions": {
"split3y": {
"type": "yes_no",
"ask": "days_since_split <= 1095"
},
"announced": {
"type": "yes_no",
"ask": "days_to_split <= 365"
},
"rev1y": {
"type": "yes_no",
"instructions": "Has the stock done a reverse split in the past year?"
},
"ratio": {
"type": "yes_no",
"instructions": "Was the last split at least 2-for-1?"
},
"liquid": {
"type": "yes_no",
"ask": "avg(C * V, 20) > 100000000"
}
}
}Response JSON (SMCI, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"split3y": {
"yes_no": 0.9463,
"rule": "days_since_split <= 1095",
"basis": "rule"
},
"announced": {
"yes_no": 0.0537,
"rule": "days_to_split <= 365",
"basis": "rule"
},
"rev1y": {
"yes_no": 0.0537,
"rule": "days_since_reverse_split <= 365",
"basis": "pattern"
},
"ratio": {
"yes_no": 0.9463,
"rule": "last_split_ratio >= 2",
"basis": "pattern"
},
"liquid": {
"yes_no": 0.9463,
"rule": "avg(C * V, 20) > 100000000",
"basis": "rule"
}
},
"context": {
"symbol": "SMCI",
"as_of": "2026-10-30"
}
}avg days_since_reverse_split days_since_split days_to_split last_split_ratio
Execution trader / desk · example 15
Pairs leg timing: XOM vs CVX relative momentum
Decide which leg of an energy pair to work first from momentum and stochastic readings.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"XOM"} then CVX, one request each. The server fills in the latest completed session.
Questions
stoch_kd | English → rule | Is stochastic %K above %D? |
stoch_d | rule | stochd(14) > 50Stochastic %D above 50 |
cci | rule | cci(20) > 0CCI(20) above zero |
roc | English → rule | Is the 10-day rate of change positive? |
up_tom | forecast | Will the stock be up tomorrow? Up tomorrow |
Answers
| Symbol | stoch_kdrule | stoch_drule | ccirule | rocrule | up_tomforecast |
|---|---|---|---|---|---|
XOM | 0.7101 | 0.9161 | 0.919 | 0.8948 | 0.574 |
CVX | 0.7176 | 0.8958 | 0.8961 | 0.884 | 0.587 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 2 symbols: Is stochastic %K above %D: true for XOM, CVX of 2. Stochastic %D above 50: true for XOM, CVX of 2. CCI(20) above zero: true for XOM, CVX of 2. Is the 10-day rate of change positive: true for XOM, CVX of 2. Highest odds for “Up tomorrow”: CVX at 59%.
Work the leg with weaker short-term momentum first when buying, stronger first when selling.
Request JSON (XOM; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "XOM"
},
"questions": {
"stoch_kd": {
"type": "yes_no",
"instructions": "Is stochastic %K above %D?"
},
"stoch_d": {
"type": "yes_no",
"ask": "stochd(14) > 50"
},
"cci": {
"type": "yes_no",
"ask": "cci(20) > 0"
},
"roc": {
"type": "yes_no",
"instructions": "Is the 10-day rate of change positive?"
},
"up_tom": {
"type": "yes_no",
"instructions": "Will the stock be up tomorrow?"
}
}
}Response JSON (XOM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"stoch_kd": {
"yes_no": 0.7101,
"rule": "stochk(14, 3, 3) > stochd(14, 3, 3)",
"basis": "comparison"
},
"stoch_d": {
"yes_no": 0.9161,
"rule": "stochd(14) > 50",
"basis": "rule"
},
"cci": {
"yes_no": 0.919,
"rule": "cci(20) > 0",
"basis": "rule"
},
"roc": {
"yes_no": 0.8948,
"rule": "C > C[-10]",
"basis": "pattern"
},
"up_tom": {
"yes_no": 0.574
}
},
"context": {
"symbol": "XOM",
"as_of": "2026-10-30"
}
}Execution trader / desk · example 16
COST sell program: bearish candles say finish early
Speed up a sell program if a bearish reversal candle prints at the highs.
- StateCOST
- Questions6 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"COST"} The server fills in the latest completed session.
Questions
eng_bear | rule | engulfing_bear()engulfing bear candle: A red body that engulfs yesterday's green body. |
dark | rule | dark_cloud()dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open). |
grave | rule | gravestone_doji()gravestone doji candle: Doji with a long upper wick and almost no lower wick. |
hang | rule | hanging_man()hanging man candle: Hammer shape, closing above the close five bars back. |
star_high | rule | shooting_star() and H > highest(H, 20)Shooting star at a 20-day high |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
eng_bearengulfing bear candle: A red body that engulfs yesterday's green body. | 0.0912 | false |
darkdark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open). | 0.0812 | false |
gravegravestone doji candle: Doji with a long upper wick and almost no lower wick. | 0.0924 | false |
hanghanging man candle: Hammer shape, closing above the close five bars back. | 0.0612 | false |
star_highShooting star at a 20-day high | 0.0924 | false |
drop5A 5% drawdown within a month | 0.319 | 32% · unlikely |
Actions
Rules on the answers decide what to send.
eng_bear >= 0.6 or dark >= 0.6 or star_high >= 0.6→WebhookemsWhat it means
For COST on the session of 2026-10-30: Not true: engulfing bear candle: A red body that engulfs yesterday's green body.; dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).; gravestone doji candle: Doji with a long upper wick and almost no lower wick.; hanging man candle: Hammer shape, closing above the close five bars back.; Shooting star at a 20-day high. Forecasts: A 5% drawdown within a month 32%. No action fired: every rule was false.
A bearish candle at the highs is a reason to finish selling sooner; with none true the schedule stays as is.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "COST"
},
"questions": {
"eng_bear": {
"type": "yes_no",
"ask": "engulfing_bear()"
},
"dark": {
"type": "yes_no",
"ask": "dark_cloud()"
},
"grave": {
"type": "yes_no",
"ask": "gravestone_doji()"
},
"hang": {
"type": "yes_no",
"ask": "hanging_man()"
},
"star_high": {
"type": "yes_no",
"ask": "shooting_star() and H > highest(H, 20)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "speed_up",
"when": "eng_bear >= 0.6 or dark >= 0.6 or star_high >= 0.6",
"do": "webhook",
"connection": "ems",
"body": {
"symbol": "{{symbol}}",
"side": "sell",
"instruction": "increase_participation",
"participation": 0.2,
"reason": "bearish_reversal_candle",
"as_of": "{{as_of}}"
}
}
],
"dry_run": true
}Response JSON (COST, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"eng_bear": {
"yes_no": 0.0912,
"rule": "engulfing_bear()",
"basis": "rule"
},
"dark": {
"yes_no": 0.0812,
"rule": "dark_cloud()",
"basis": "rule"
},
"grave": {
"yes_no": 0.0924,
"rule": "gravestone_doji()",
"basis": "rule"
},
"hang": {
"yes_no": 0.0612,
"rule": "hanging_man()",
"basis": "rule"
},
"star_high": {
"yes_no": 0.0924,
"rule": "shooting_star() and H > highest(H, 20)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.319
}
},
"context": {
"symbol": "COST",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "speed_up",
"fired": false,
"status": "skipped"
}
]
}dark_cloud engulfing_bear gravestone_doji hanging_man highest shooting_star
Execution trader / desk · example 17
QQQ: open below yesterday's low means wait
Before a buy at the open, check whether the open broke yesterday's low or reclaimed it.
- StateQQQ
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"QQQ"} The server fills in the latest completed session.
Questions
open_below | rule | O < L[-1]Opened below yesterday's low |
reclaim | rule | O < L[-1] and C > C[-1]Opened under yesterday's low, closed up on the day |
open_above | English → rule | Did the stock open above yesterday's close? |
close_hi | rule | C > H[-1]Closed above yesterday's high |
gap_up_tom | forecast | Will it gap up tomorrow? A gap up tomorrow |
Answers
| Question | Answer | Reading |
|---|---|---|
open_belowOpened below yesterday's low | 0.9357 | true |
reclaimOpened under yesterday's low, closed up on the day | 0.0537 | false |
open_aboveDid the stock open above yesterday's close compiled to O > C[-1] | 0.0537 | false |
close_hiClosed above yesterday's high | 0.0537 | false |
gap_up_tomA gap up tomorrow | 0.137 | 14% · unlikely |
What it means
For QQQ on the session of 2026-10-30: True now: Opened below yesterday's low. Not true: Opened under yesterday's low, closed up on the day; Did the stock open above yesterday's close; Closed above yesterday's high. Forecasts: A gap up tomorrow 14%.
An open below the prior low that is not reclaimed tells the desk to stay patient on buys.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "QQQ"
},
"questions": {
"open_below": {
"type": "yes_no",
"ask": "O < L[-1]"
},
"reclaim": {
"type": "yes_no",
"ask": "O < L[-1] and C > C[-1]"
},
"open_above": {
"type": "yes_no",
"instructions": "Did the stock open above yesterday's close?"
},
"close_hi": {
"type": "yes_no",
"ask": "C > H[-1]"
},
"gap_up_tom": {
"type": "yes_no",
"instructions": "Will it gap up tomorrow?"
}
}
}Response JSON (QQQ, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"open_below": {
"yes_no": 0.9357,
"rule": "O < L[-1]",
"basis": "rule"
},
"reclaim": {
"yes_no": 0.0537,
"rule": "O < L[-1] and C > C[-1]",
"basis": "rule"
},
"open_above": {
"yes_no": 0.0537,
"rule": "O > C[-1]",
"basis": "comparison"
},
"close_hi": {
"yes_no": 0.0537,
"rule": "C > H[-1]",
"basis": "rule"
},
"gap_up_tom": {
"yes_no": 0.137
}
},
"context": {
"symbol": "QQQ",
"as_of": "2026-10-30"
}
}Execution trader / desk · example 18
Weekly volume profile: DIA, IWM, EFA, EEM, TLT
Every Monday, record which ETFs saw volume rank highly last week, to plan size limits for the week.
- ScheduleMon at 08:30 ET
- State5 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"DIA"} then IWM, EFA, EEM, TLT, one request each. The server fills in the latest completed session.
Questions
rank | rule | percentrank(V, 50) > 90Volume in the top tenth of 50 sessions |
obv | English → rule | Is on-balance volume higher than 20 sessions ago? |
median | rule | V > median(V, 50)Volume above its 50-day median |
spike | forecast | Will volume spike tomorrow? A volume spike tomorrow |
Answers
| Symbol | rankrule | obvrule | medianrule | spikeforecast |
|---|---|---|---|---|
DIA | 0.4952 | 0.7226 | 0.905 | 0.057 |
IWM | 0.154 | 0.4211 | 0.5935 | 0.018 |
EFA | 0.6419 | 0.512 | 0.9377 | 0.063 |
EEM | 0.6793 | 0.0685 | 0.9456 | 0.103 |
TLT | 0.1599 | 0.9203 | 0.6726 | 0.027 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 5 symbols: Volume in the top tenth of 50 sessions: true for EFA, EEM of 5. Is on-balance volume higher than 20 sessions ago: true for DIA, TLT of 5. Volume above its 50-day median: true for DIA, EFA, EEM, TLT of 5. Highest odds for “A volume spike tomorrow”: EEM at 10%.
High-rank volume weeks allow larger child orders; quiet weeks get smaller ones.
As a scheduled workflow (Mon at 08:30 ET)
Create it under Workflows in the console: it runs these questions for every symbol on the schedule and fires the actions per symbol. The answers above are what one run returned.
{
"name": "Weekly volume profile: DIA, IWM, EFA, EEM, TLT",
"symbols": "DIA IWM EFA EEM TLT",
"days": [
1
],
"at_time": "08:30",
"model": "ora-fin-0.1.1",
"questions": {
"rank": {
"type": "yes_no",
"ask": "percentrank(V, 50) > 90"
},
"obv": {
"type": "yes_no",
"instructions": "Is on-balance volume higher than 20 sessions ago?"
},
"median": {
"type": "yes_no",
"ask": "V > median(V, 50)"
},
"spike": {
"type": "yes_no",
"instructions": "Will volume spike tomorrow?"
}
}
}Request JSON (DIA; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "DIA"
},
"questions": {
"rank": {
"type": "yes_no",
"ask": "percentrank(V, 50) > 90"
},
"obv": {
"type": "yes_no",
"instructions": "Is on-balance volume higher than 20 sessions ago?"
},
"median": {
"type": "yes_no",
"ask": "V > median(V, 50)"
},
"spike": {
"type": "yes_no",
"instructions": "Will volume spike tomorrow?"
}
}
}Response JSON (DIA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"rank": {
"yes_no": 0.4952,
"rule": "percentrank(V, 50) > 90",
"basis": "rule"
},
"obv": {
"yes_no": 0.7226,
"rule": "obv() > ref(obv(), -20)",
"basis": "pattern"
},
"median": {
"yes_no": 0.905,
"rule": "V > median(V, 50)",
"basis": "rule"
},
"spike": {
"yes_no": 0.057
}
},
"context": {
"symbol": "DIA",
"as_of": "2026-10-30"
}
}Execution trader / desk · example 19
PG: neutral RSI and mid-band price, a calm day to execute
Confirm a calm, neutral tape before releasing a large staples order in one go.
- StatePG
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"PG"} The server fills in the latest completed session.
Questions
neutral | rule | between(rsi(C, 14), 40, 60)RSI(14) between 40 and 60 |
mid | English → rule | Is the stock above the middle Bollinger Band? |
atr_lo | English → rule | Is the 14-day ATR less than 2% of the price? |
doji | rule | doji()doji candle: Body at most 10% of the day's range. |
calm | forecast | Will volatility calm down over the next 5 days? Volatility calming over 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
neutralRSI(14) between 40 and 60 | 0.05 | false |
midIs the stock above the middle Bollinger Band compiled to C > bbmid(C, 20) | 0.9171 | true |
atr_loIs the 14-day ATR less than 2% of the price compiled to atr(14) / C < 0.02 | 0.7818 | true |
dojidoji candle: Body at most 10% of the day's range. | 0.0537 | false |
calmVolatility calming over 5 days | 0.701 | 70% · likely |
What it means
For PG on the session of 2026-10-30: True now: Is the stock above the middle Bollinger Band; Is the 14-day ATR less than 2% of the price. Not true: RSI(14) between 40 and 60; doji candle: Body at most 10% of the day's range.. Forecasts: Volatility calming over 5 days 70%.
Neutral momentum and low ATR describe a calm tape where a larger release costs less.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "PG"
},
"questions": {
"neutral": {
"type": "yes_no",
"ask": "between(rsi(C, 14), 40, 60)"
},
"mid": {
"type": "yes_no",
"instructions": "Is the stock above the middle Bollinger Band?"
},
"atr_lo": {
"type": "yes_no",
"instructions": "Is the 14-day ATR less than 2% of the price?"
},
"doji": {
"type": "yes_no",
"ask": "doji()"
},
"calm": {
"type": "yes_no",
"instructions": "Will volatility calm down over the next 5 days?"
}
}
}Response JSON (PG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"neutral": {
"yes_no": 0.05,
"rule": "between(rsi(C, 14), 40, 60)",
"basis": "rule"
},
"mid": {
"yes_no": 0.9171,
"rule": "C > bbmid(C, 20)",
"basis": "comparison"
},
"atr_lo": {
"yes_no": 0.7818,
"rule": "atr(14) / C < 0.02",
"basis": "pattern"
},
"doji": {
"yes_no": 0.0537,
"rule": "doji()",
"basis": "rule"
},
"calm": {
"yes_no": 0.701
}
},
"context": {
"symbol": "PG",
"as_of": "2026-10-30"
}
}Execution trader / desk · example 20
HD: buyers in control over the long run?
Use cumulative up versus down closes and weekly lows to decide whether to rush a buy before the tape lifts.
- StateHD
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"HD"} The server fills in the latest completed session.
Questions
cum | rule | cum(C > C[-1]) > cum(C < C[-1])More up closes than down closes over the full history |
mostly_up | rule | sum(C > C[-1], 10) >= 6Up on at least six of the last ten days |
wk_low | rule | min(L, 5) > ref(min(L, 5), -5)This week's low is above last week's |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
cumMore up closes than down closes over the full history | 0.9463 | true |
mostly_upUp on at least six of the last ten days | 0.1785 | false |
wk_lowThis week's low is above last week's | 0.8545 | true |
up_weekHigher in a week | 0.552 | 55% · close to even |
What it means
For HD on the session of 2026-10-30: True now: More up closes than down closes over the full history; This week's low is above last week's. Not true: Up on at least six of the last ten days. Forecasts: Higher in a week 55%.
Persistent buying argues against waiting too long; a mixed record argues for a slower schedule.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "HD"
},
"questions": {
"cum": {
"type": "yes_no",
"ask": "cum(C > C[-1]) > cum(C < C[-1])"
},
"mostly_up": {
"type": "yes_no",
"ask": "sum(C > C[-1], 10) >= 6"
},
"wk_low": {
"type": "yes_no",
"ask": "min(L, 5) > ref(min(L, 5), -5)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (HD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"cum": {
"yes_no": 0.9463,
"rule": "cum(C > C[-1]) > cum(C < C[-1])",
"basis": "rule"
},
"mostly_up": {
"yes_no": 0.1785,
"rule": "sum(C > C[-1], 10) >= 6",
"basis": "rule"
},
"wk_low": {
"yes_no": 0.8545,
"rule": "min(L, 5) > ref(min(L, 5), -5)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.552
}
},
"context": {
"symbol": "HD",
"as_of": "2026-10-30"
}
}Information, not investment advice. Rules answer from the latest completed daily session; forecasts are probabilities. Actions ran as dry runs: nothing was sent. More in Sell side: Equity research analyst, Sell-side sales trader, Market maker, Prop trading firm, Compliance officer.