Use cases · Buy side
Wealth manager: 20 ways to use Ora
Model portfolios across many households: drift, concentration, income and risk alerts. Each example is a complete, runnable request with the real answers it returned (46 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 (53)
sma 16offset 9max 5atr 4log 4sqrt 4std 4pays_dividend 3rsi 2ref 2cut_last 2div_count_ttm 2div_yield_ttm 2ema 2roc 2abs 2lowest 2avg 1lowestbars 1sum 1beat_eps_last 1beat_revenue_last 1eps_growth_yoy 1raised_last 1years_of_growth 1cum 1adx 1diminus 1diplus 1beat_streak 1days_to_earnings 1last_earnings_move 1next_report_bmo 1macd 1macdsignal 1dark_cloud 1engulfing_bear 1evening_star 1hanging_man 1tweezer_top 1zscore 1highest 1rma 1bbupper 1dragonfly_doji 1inverted_hammer 1stochd 1stochk 1beats_last4 1revenue_growth_yoy 1willr 1atr_pct 1three_white_soldiers 1
Examples 11–20 of 20 · page 2 of 2
Wealth manager · example 11
REIT sleeve check: VNQ and O income and trend
Rates-sensitive real estate holdings: check yield, payout record and trend before adding.
- State2 symbols
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"VNQ"} then O, one request each. The server fills in the latest completed session.
Questions
yield3 | rule | div_yield_ttm > 3Yield above 3% |
monthly | English → rule | Does the stock pay a monthly dividend? |
no_cut | rule | cut_last < 0.5Did not cut its last dividend |
trend | English → rule | Is the stock above its 200-day moving average? |
macd | rule | macd(C) > macdsignal(C)MACD above its signal line |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | yield3rule | monthlyrule | no_cutrule | trendrule | macdrule | drop5forecast |
|---|---|---|---|---|---|---|
VNQ | 0.8893 | 0.0537 | 0.1409 | 0.6285 | 0.9087 | 0.218 |
O | 0.9463 | 0.9317 | 0.8591 | 0.1427 | 0.8856 | 0.313 |
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: Yield above 3%: true for VNQ, O of 2. Does the stock pay a monthly dividend: true for O of 2. Did not cut its last dividend: true for O of 2. Is the stock above its 200-day moving average: true for VNQ of 2. Highest odds for “A 5% drawdown within a month”: O at 31%.
Income facts and trend together show whether the sleeve is paying and holding up; monthly payers suit clients who draw income.
Request JSON (VNQ; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VNQ"
},
"questions": {
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"monthly": {
"type": "yes_no",
"instructions": "Does the stock pay a monthly dividend?"
},
"no_cut": {
"type": "yes_no",
"ask": "cut_last < 0.5"
},
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"macd": {
"type": "yes_no",
"ask": "macd(C) > macdsignal(C)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (VNQ, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"yield3": {
"yes_no": 0.8893,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"monthly": {
"yes_no": 0.0537,
"rule": "div_count_ttm >= 11",
"basis": "pattern"
},
"no_cut": {
"yes_no": 0.1409,
"rule": "cut_last < 0.5",
"basis": "rule"
},
"trend": {
"yes_no": 0.6285,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"macd": {
"yes_no": 0.9087,
"rule": "macd(C) > macdsignal(C)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.218
}
},
"context": {
"symbol": "VNQ",
"as_of": "2026-10-30"
}
}Wealth manager · example 12
Bearish reversal candles on QQQ after a run
After a strong stretch, check the growth sleeve for topping candles before adding new client money.
- StateQQQ
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"QQQ"} The server fills in the latest completed session.
Questions
evening | rule | evening_star()evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first. |
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). |
engulf_bear | rule | engulfing_bear()engulfing bear candle: A red body that engulfs yesterday's green body. |
hanging | rule | hanging_man()hanging man candle: Hammer shape, closing above the close five bars back. |
tweezer_top | rule | tweezer_top()tweezer top candle: Green then red, with highs within 0.1%. |
down_week | forecast | Will the stock be lower in a week? Lower in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
eveningevening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first. | 0.0863 | 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.0537 | false |
engulf_bearengulfing bear candle: A red body that engulfs yesterday's green body. | 0.0537 | false |
hanginghanging man candle: Hammer shape, closing above the close five bars back. | 0.1466 | false |
tweezer_toptweezer top candle: Green then red, with highs within 0.1%. | 0.0537 | false |
down_weekLower in a week | 0.534 | 53% · close to even |
What it means
For QQQ on the session of 2026-10-30: Not true: evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.; dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).; engulfing bear candle: A red body that engulfs yesterday's green body.; hanging man candle: Hammer shape, closing above the close five bars back.; tweezer top candle: Green then red, with highs within 0.1%.. Forecasts: Lower in a week 53%.
Topping candles are a reason to stage new money rather than invest it all at once; none printing removes that concern.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "QQQ"
},
"questions": {
"evening": {
"type": "yes_no",
"ask": "evening_star()"
},
"dark": {
"type": "yes_no",
"ask": "dark_cloud()"
},
"engulf_bear": {
"type": "yes_no",
"ask": "engulfing_bear()"
},
"hanging": {
"type": "yes_no",
"ask": "hanging_man()"
},
"tweezer_top": {
"type": "yes_no",
"ask": "tweezer_top()"
},
"down_week": {
"type": "yes_no",
"instructions": "Will the stock be lower in a week?"
}
}
}Response JSON (QQQ, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"evening": {
"yes_no": 0.0863,
"rule": "evening_star()",
"basis": "rule"
},
"dark": {
"yes_no": 0.0537,
"rule": "dark_cloud()",
"basis": "rule"
},
"engulf_bear": {
"yes_no": 0.0537,
"rule": "engulfing_bear()",
"basis": "rule"
},
"hanging": {
"yes_no": 0.1466,
"rule": "hanging_man()",
"basis": "rule"
},
"tweezer_top": {
"yes_no": 0.0537,
"rule": "tweezer_top()",
"basis": "rule"
},
"down_week": {
"yes_no": 0.534
}
},
"context": {
"symbol": "QQQ",
"as_of": "2026-10-30"
}
}dark_cloud engulfing_bear evening_star hanging_man tweezer_top
Wealth manager · example 13
Daily drawdown escalation for client-held funds
After every close, escalate to the CIO by email any core fund down more than 5% in a month.
- ScheduleMon–Fri at 17:00 ET
- State4 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"VOO"} then VEA, BND, VNQ, one request each. The server fills in the latest completed session.
Questions
down_month | English → rule | Is the stock down more than 5% over the last month? |
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
z | rule | zscore(C, 60) < -2Price more than 2 standard deviations under its 60-day mean |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | down_monthrule | drawdownrule | zrule | drop5forecast | Fired |
|---|---|---|---|---|---|
VOO | 0.0649 | 0.0537 | 0.3785 | 0.194 | none |
VEA | 0.1123 | 0.0537 | 0.2947 | 0.223 | none |
BND | 0.0537 | 0.0537 | 0.0619 | 0.007 | none |
VNQ | 0.0537 | 0.0537 | 0.0696 | 0.218 | none |
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.
down_month >= 0.6 or z >= 0.6→EmailcioWhat it means
Session of 2026-10-30, 4 symbols: Is the stock down more than 5% over the last month: true for none of 4. More than 20% off the 52-week high: true for none of 4. Price more than 2 standard deviations under its 60-day mean: true for none of 4. Highest odds for “A 5% drawdown within a month”: VEA at 22%. escalate fired for none.
The CIO hears about a real drawdown the day it happens; on ordinary days the workflow runs and sends nothing.
As a scheduled workflow (Mon–Fri at 17:00 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": "Daily drawdown escalation for client-held funds",
"symbols": "VOO VEA BND VNQ",
"days": [
1,
2,
3,
4,
5
],
"at_time": "17:00",
"model": "ora-fin-0.1.1",
"questions": {
"down_month": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"z": {
"type": "yes_no",
"ask": "zscore(C, 60) < -2"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "escalate",
"when": "down_month >= 0.6 or z >= 0.6",
"do": "email",
"connection": "cio",
"subject": "Drawdown escalation: {{symbol}} ({{as_of}})",
"message": "{{symbol}} is down over 5% in a month ({{down_month|pct}}) or 2 sd under its 60-day mean ({{z|pct}}). 20% drawdown {{drawdown|pct}}. Further 5% drop odds {{drop5|pct}}."
}
]
}Request JSON (VOO; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VOO"
},
"questions": {
"down_month": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"z": {
"type": "yes_no",
"ask": "zscore(C, 60) < -2"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "escalate",
"when": "down_month >= 0.6 or z >= 0.6",
"do": "email",
"connection": "cio",
"subject": "Drawdown escalation: {{symbol}} ({{as_of}})",
"message": "{{symbol}} is down over 5% in a month ({{down_month|pct}}) or 2 sd under its 60-day mean ({{z|pct}}). 20% drawdown {{drawdown|pct}}. Further 5% drop odds {{drop5|pct}}."
}
],
"dry_run": true
}Response JSON (VOO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"down_month": {
"yes_no": 0.0649,
"rule": "C / C[-21] - 1 < -0.05",
"basis": "pattern"
},
"drawdown": {
"yes_no": 0.0537,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"z": {
"yes_no": 0.3785,
"rule": "zscore(C, 60) < -2",
"basis": "rule"
},
"drop5": {
"yes_no": 0.194
}
},
"context": {
"symbol": "VOO",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "escalate",
"fired": false,
"status": "skipped"
}
]
}Wealth manager · example 14
Inflation sleeve: is DBC trending for real-asset clients?
Check whether the broad commodity fund in the inflation-protection sleeve is trending before rebalancing into it.
- StateDBC
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"DBC"} The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
donchian | rule | C > highest(C, 55)55-day closing breakout |
rma | rule | C > rma(C, 50)Above the 50-day Wilder average |
hv | English → rule | Is 20-day historical volatility below 20%? |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
trendIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.9463 | true |
donchian55-day closing breakout | 0.1724 | false |
rmaAbove the 50-day Wilder average | 0.9463 | true |
hvIs 20-day historical volatility below 20% compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2 | 0.9289 | true |
up_weekHigher in a week | 0.659 | 66% · likely |
What it means
For DBC on the session of 2026-10-30: True now: Is the stock above its 200-day moving average; Above the 50-day Wilder average; Is 20-day historical volatility below 20%. Not true: 55-day closing breakout. Forecasts: Higher in a week 66%.
Trend and breakout rules say whether commodities are moving the sleeve's way; the forecast frames the week ahead.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "DBC"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"donchian": {
"type": "yes_no",
"ask": "C > highest(C, 55)"
},
"rma": {
"type": "yes_no",
"ask": "C > rma(C, 50)"
},
"hv": {
"type": "yes_no",
"instructions": "Is 20-day historical volatility below 20%?"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (DBC, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"donchian": {
"yes_no": 0.1724,
"rule": "C > highest(C, 55)",
"basis": "rule"
},
"rma": {
"yes_no": 0.9463,
"rule": "C > rma(C, 50)",
"basis": "rule"
},
"hv": {
"yes_no": 0.9289,
"rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
"basis": "pattern"
},
"up_week": {
"yes_no": 0.659
}
},
"context": {
"symbol": "DBC",
"as_of": "2026-10-30"
}
}Wealth manager · example 15
Pacing new client money into SPY: lump sum or stages?
When a new client funds the account, decide between investing at once and staging in over weeks, based on stretch and volatility.
- StateSPY
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"SPY"} The server fills in the latest completed session.
Questions
stretched | rule | C > sma(C, 20) + 2 * atr(14)Stretched: more than 2 ATR above the 20-day |
rsi70 | English → rule | Is the stock overbought on RSI, above 70? |
bb_up | English → rule | Did the stock close above the upper Bollinger Band? |
vol5 | English → rule | Is 5-day volatility higher than 20-day volatility? |
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 |
|---|---|---|
stretchedStretched: more than 2 ATR above the 20-day | 0.0537 | false |
rsi70Is the stock overbought on RSI, above 70 compiled to rsi(C, 14) > 70 | 0.0537 | false |
bb_upDid the stock close above the upper Bollinger Band compiled to C > bbupper(C, 20) | 0.0537 | false |
vol5Is 5-day volatility higher than 20-day volatility compiled to std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19) | 0.8872 | true |
drop5A 5% drawdown within a month | 0.203 | 20% · unlikely |
Actions
Rules on the answers decide what to send.
stretched >= 0.6 or rsi70 >= 0.6 or drop5 >= 0.5→Webhookrebalance-engineelse→Webhookrebalance-engine{
"action": "invest_now",
"symbol": "SPY",
"as_of": "2026-10-30"
}What it means
For SPY on the session of 2026-10-30: True now: Is 5-day volatility higher than 20-day volatility. Not true: Stretched: more than 2 ATR above the 20-day; Is the stock overbought on RSI, above 70; Did the stock close above the upper Bollinger Band. Forecasts: A 5% drawdown within a month 20%. Fired: lump (Webhook → rebalance-engine).
A stretched market sends a staged plan to the engine; otherwise the money goes in at once. Either way the advisor sees the reason.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"stretched": {
"type": "yes_no",
"ask": "C > sma(C, 20) + 2 * atr(14)"
},
"rsi70": {
"type": "yes_no",
"instructions": "Is the stock overbought on RSI, above 70?"
},
"bb_up": {
"type": "yes_no",
"instructions": "Did the stock close above the upper Bollinger Band?"
},
"vol5": {
"type": "yes_no",
"instructions": "Is 5-day volatility higher than 20-day volatility?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "stage",
"when": "stretched >= 0.6 or rsi70 >= 0.6 or drop5 >= 0.5",
"do": "webhook",
"connection": "rebalance-engine",
"body": {
"action": "stage_entry",
"symbol": "{{symbol}}",
"tranches": 4,
"interval_days": 7,
"p_stretched": "{{stretched}}",
"p_drop5": "{{drop5}}",
"as_of": "{{as_of}}"
}
},
{
"id": "lump",
"when": "else",
"do": "webhook",
"connection": "rebalance-engine",
"body": {
"action": "invest_now",
"symbol": "{{symbol}}",
"as_of": "{{as_of}}"
}
}
],
"dry_run": true
}Response JSON (SPY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"stretched": {
"yes_no": 0.0537,
"rule": "C > sma(C, 20) + 2 * atr(14)",
"basis": "rule"
},
"rsi70": {
"yes_no": 0.0537,
"rule": "rsi(C, 14) > 70",
"basis": "pattern"
},
"bb_up": {
"yes_no": 0.0537,
"rule": "C > bbupper(C, 20)",
"basis": "comparison"
},
"vol5": {
"yes_no": 0.8872,
"rule": "std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)",
"basis": "pattern"
},
"drop5": {
"yes_no": 0.203
}
},
"context": {
"symbol": "SPY",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "stage",
"fired": false,
"status": "skipped"
},
{
"id": "lump",
"fired": true,
"status": "dry_run",
"do": "webhook",
"connection": "rebalance-engine",
"preview": {
"body": {
"action": "invest_now",
"symbol": "SPY",
"as_of": "2026-10-30"
}
}
}
]
}Wealth manager · example 16
Rebalancing into lagging small caps (IWM): any sign of a turn?
Models are underweight small caps after a lag; look for reversal evidence before the rebalance tops the sleeve back up.
- StateIWM
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"IWM"} The server fills in the latest completed session.
Questions
inv_hammer | rule | inverted_hammer()inverted hammer candle: Shooting-star shape after a five-bar decline. |
dragonfly | rule | dragonfly_doji()dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick. |
key_rev | rule | L < lowest(L, 10) and C > C[-1]New 10-day low, but closed up on the day |
failed_bd | rule | L < lowest(L, 20) and C > lowest(L, 20)Undercut the 20-day low and closed back above it |
stoch | rule | stochk(14) > stochd(14) and stochk(14) < 30Stochastic %K above %D while still under 30 |
rally5 | forecast | Will it rally at least 5% at some point in the next month? A 5% rally within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
inv_hammerinverted hammer candle: Shooting-star shape after a five-bar decline. | 0.0542 | false |
dragonflydragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick. | 0.0698 | false |
key_revNew 10-day low, but closed up on the day | 0.0707 | false |
failed_bdUndercut the 20-day low and closed back above it | 0.1016 | false |
stochStochastic %K above %D while still under 30 | 0.0708 | false |
rally5A 5% rally within a month | 0.285 | 28% · unlikely |
What it means
For IWM on the session of 2026-10-30: Not true: inverted hammer candle: Shooting-star shape after a five-bar decline.; dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.; New 10-day low, but closed up on the day; Undercut the 20-day low and closed back above it; Stochastic %K above %D while still under 30. Forecasts: A 5% rally within a month 28%.
Reversal candles and a failed breakdown are evidence that sellers are tiring; the rebalance goes ahead on schedule either way, this only informs the pace.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IWM"
},
"questions": {
"inv_hammer": {
"type": "yes_no",
"ask": "inverted_hammer()"
},
"dragonfly": {
"type": "yes_no",
"ask": "dragonfly_doji()"
},
"key_rev": {
"type": "yes_no",
"ask": "L < lowest(L, 10) and C > C[-1]"
},
"failed_bd": {
"type": "yes_no",
"ask": "L < lowest(L, 20) and C > lowest(L, 20)"
},
"stoch": {
"type": "yes_no",
"ask": "stochk(14) > stochd(14) and stochk(14) < 30"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Response JSON (IWM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"inv_hammer": {
"yes_no": 0.0542,
"rule": "inverted_hammer()",
"basis": "rule"
},
"dragonfly": {
"yes_no": 0.0698,
"rule": "dragonfly_doji()",
"basis": "rule"
},
"key_rev": {
"yes_no": 0.0707,
"rule": "L < lowest(L, 10) and C > C[-1]",
"basis": "rule"
},
"failed_bd": {
"yes_no": 0.1016,
"rule": "L < lowest(L, 20) and C > lowest(L, 20)",
"basis": "rule"
},
"stoch": {
"yes_no": 0.0708,
"rule": "stochk(14) > stochd(14) and stochk(14) < 30",
"basis": "rule"
},
"rally5": {
"yes_no": 0.285
}
},
"context": {
"symbol": "IWM",
"as_of": "2026-10-30"
}
}Wealth manager · example 17
Defensive healthcare: LLY, ABBV, MRK and JNJ compared
Rank defensive healthcare holdings by trend and earnings quality before trimming one to fund another.
- State4 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"LLY"} then ABBV, MRK, JNJ, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
beats | English → rule | Has the stock beaten EPS estimates in at least 3 of the last 4 quarters? |
rev_g | English → rule | Did revenue grow more than 5% year over year? |
pays | rule | pays_dividend > 0.5Pays a dividend |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | trendrule | beatsrule | rev_grule | paysrule | drop5forecast |
|---|---|---|---|---|---|
LLY | 0.9463 | 0.8591 | 0.9463 | 0.8591 | 0.583 |
ABBV | 0.9463 | 0.8591 | 0.9463 | 0.8591 | 0.509 |
MRK | 0.9463 | 0.8591 | 0.0537 | 0.8591 | 0.543 |
JNJ | 0.9454 | 0.55 | 0.9463 | 0.8591 | 0.461 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 4 symbols: Is the stock above its 200-day moving average: true for LLY, ABBV, MRK, JNJ of 4. Has the stock beaten EPS estimates in at least 3 of the last 4 quarters: true for LLY, ABBV, MRK of 4. Did revenue grow more than 5% year over year: true for LLY, ABBV, JNJ of 4. Pays a dividend: true for LLY, ABBV, MRK, JNJ of 4. Highest odds for “A 5% drawdown within a month”: LLY at 58%.
The same questions for each name make the comparison fair; weaker trend and earnings quality point to the one to trim.
Request JSON (LLY; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "LLY"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"beats": {
"type": "yes_no",
"instructions": "Has the stock beaten EPS estimates in at least 3 of the last 4 quarters?"
},
"rev_g": {
"type": "yes_no",
"instructions": "Did revenue grow more than 5% year over year?"
},
"pays": {
"type": "yes_no",
"ask": "pays_dividend > 0.5"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (LLY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"beats": {
"yes_no": 0.8591,
"rule": "beats_last4 >= 3",
"basis": "pattern"
},
"rev_g": {
"yes_no": 0.9463,
"rule": "revenue_growth_yoy > 5",
"basis": "pattern"
},
"pays": {
"yes_no": 0.8591,
"rule": "pays_dividend > 0.5",
"basis": "rule"
},
"drop5": {
"yes_no": 0.583
}
},
"context": {
"symbol": "LLY",
"as_of": "2026-10-30"
}
}Wealth manager · example 18
Credit check for balanced models: HYG vs LQD
Use high-yield and investment-grade bond ETFs as a credit-stress read before adding risk to balanced models.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"HYG"} then LQD, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
breakdown | rule | C < lowest(L, 20)Closed under the 20-day low |
willr | rule | willr(14) < -80Williams %R under -80 (near the bottom of its 14-day range) |
atr | rule | atr(14) > 1.2 * ref(atr(14), -10)ATR up 20% in two weeks |
down_week | forecast | Will the stock be lower in a week? Lower in a week |
Answers
| Symbol | trendrule | breakdownrule | willrrule | atrrule | down_weekforecast |
|---|---|---|---|---|---|
HYG | 0.1914 | 0.0811 | 0.0855 | 0.0777 | 0.425 |
LQD | 0.6552 | 0.0537 | 0.0635 | 0.0607 | 0.476 |
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: Above the 50-day average: true for LQD of 2. Closed under the 20-day low: true for none of 2. Williams %R under -80 (near the bottom of its 14-day range): true for none of 2. ATR up 20% in two weeks: true for none of 2. Highest odds for “Lower in a week”: LQD at 48%.
High yield breaking down while investment grade holds is the classic credit-stress sign; both calm means no change to risk.
Request JSON (HYG; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "HYG"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"breakdown": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"willr": {
"type": "yes_no",
"ask": "willr(14) < -80"
},
"atr": {
"type": "yes_no",
"ask": "atr(14) > 1.2 * ref(atr(14), -10)"
},
"down_week": {
"type": "yes_no",
"instructions": "Will the stock be lower in a week?"
}
}
}Response JSON (HYG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.1914,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"breakdown": {
"yes_no": 0.0811,
"rule": "C < lowest(L, 20)",
"basis": "rule"
},
"willr": {
"yes_no": 0.0855,
"rule": "willr(14) < -80",
"basis": "rule"
},
"atr": {
"yes_no": 0.0777,
"rule": "atr(14) > 1.2 * ref(atr(14), -10)",
"basis": "rule"
},
"down_week": {
"yes_no": 0.425
}
},
"context": {
"symbol": "HYG",
"as_of": "2026-10-30"
}
}Wealth manager · example 19
A client asks about gold miners: GDX volatility and trend
Give the advisor quick facts on the miners ETF before discussing a small satellite position.
- StateGDX
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GDX"} The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
atr3 | rule | atr_pct(14) > 3A typical day moves more than 3% |
near_high | rule | C >= 0.98 * max(H, 252)Within 2% of the 52-week high |
soldiers | rule | three_white_soldiers()three white soldiers candle: Three green bars, each closing higher and opening inside the previous body. |
rally10 | forecast | Will it rally at least 10% at some point in the next month? A 10% rally within a month |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
trendIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.0729 | false |
atr3A typical day moves more than 3% | 0.9463 | true |
near_highWithin 2% of the 52-week high | 0.0537 | false |
soldiersthree white soldiers candle: Three green bars, each closing higher and opening inside the previous body. | 0.0859 | false |
rally10A 10% rally within a month | 0.649 | 65% · likely |
drop10A 10% drawdown within a month | 0.577 | 58% · close to even |
What it means
For GDX on the session of 2026-10-30: True now: A typical day moves more than 3%. Not true: Is the stock above its 200-day moving average; Within 2% of the 52-week high; three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.. Forecasts: A 10% rally within a month 65%; A 10% drawdown within a month 58%.
Miners move far more than gold itself; the volatility rule and both ten-percent forecasts make that clear for sizing.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GDX"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"atr3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"near_high": {
"type": "yes_no",
"ask": "C >= 0.98 * max(H, 252)"
},
"soldiers": {
"type": "yes_no",
"ask": "three_white_soldiers()"
},
"rally10": {
"type": "yes_no",
"instructions": "Will it rally at least 10% at some point in the next month?"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
}
}Response JSON (GDX, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.0729,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"atr3": {
"yes_no": 0.9463,
"rule": "atr_pct(14) > 3",
"basis": "rule"
},
"near_high": {
"yes_no": 0.0537,
"rule": "C >= 0.98 * max(H, 252)",
"basis": "rule"
},
"soldiers": {
"yes_no": 0.0859,
"rule": "three_white_soldiers()",
"basis": "rule"
},
"rally10": {
"yes_no": 0.649
},
"drop10": {
"yes_no": 0.577
}
},
"context": {
"symbol": "GDX",
"as_of": "2026-10-30"
}
}Wealth manager · example 20
Quarterly review pack: one request per core holding
Produce the market-status lines for a client's quarterly report across their core holdings.
- State4 symbols
- Questions5 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"AAPL"} then COST, JNJ, XOM, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
three_month | rule | C > C[-63]Higher than three months ago |
near_high | English → rule | Is the stock within 5% of its 52-week high? |
pays | rule | pays_dividend > 0.5Pays a dividend |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Symbol | trendrule | three_monthrule | near_highrule | paysrule | up_weekforecast | Fired |
|---|---|---|---|---|---|---|
AAPL | 0.9463 | 0.9442 | 0.831 | 0.8591 | 0.59 | report_line |
COST | 0.9022 | 0.8708 | 0.1824 | 0.8591 | 0.519 | report_line |
JNJ | 0.9454 | 0.8751 | 0.8046 | 0.8591 | 0.525 | report_line |
XOM | 0.9463 | 0.9463 | 0.9017 | 0.8591 | 0.577 | report_line |
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.
trend >= 0→Webhookreport-builder{
"section": "holdings_status",
"symbol": "AAPL",
"above_200d": 0.9463,
"up_3m": 0.9442,
"near_52w_high": 0.831,
"pays_dividend": 0.8591,
"as_of": "2026-10-30"
}{
"section": "holdings_status",
"symbol": "COST",
"above_200d": 0.9022,
"up_3m": 0.8708,
"near_52w_high": 0.1824,
"pays_dividend": 0.8591,
"as_of": "2026-10-30"
}{
"section": "holdings_status",
"symbol": "JNJ",
"above_200d": 0.9454,
"up_3m": 0.8751,
"near_52w_high": 0.8046,
"pays_dividend": 0.8591,
"as_of": "2026-10-30"
}{
"section": "holdings_status",
"symbol": "XOM",
"above_200d": 0.9463,
"up_3m": 0.9463,
"near_52w_high": 0.9017,
"pays_dividend": 0.8591,
"as_of": "2026-10-30"
}What it means
Session of 2026-10-30, 4 symbols: Is the stock above its 200-day moving average: true for AAPL, COST, JNJ, XOM of 4. Higher than three months ago: true for AAPL, COST, JNJ, XOM of 4. Is the stock within 5% of its 52-week high: true for AAPL, JNJ, XOM of 4. Pays a dividend: true for AAPL, COST, JNJ, XOM of 4. Highest odds for “Higher in a week”: AAPL at 59%. report_line fired for AAPL, COST, JNJ, XOM.
Every holding sends its status line to the report builder, so the quarterly pack is filled from the same checks for every client.
Request JSON (AAPL; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"three_month": {
"type": "yes_no",
"ask": "C > C[-63]"
},
"near_high": {
"type": "yes_no",
"instructions": "Is the stock within 5% of its 52-week high?"
},
"pays": {
"type": "yes_no",
"ask": "pays_dividend > 0.5"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "report_line",
"when": "trend >= 0",
"do": "webhook",
"connection": "report-builder",
"body": {
"section": "holdings_status",
"symbol": "{{symbol}}",
"above_200d": "{{trend}}",
"up_3m": "{{three_month}}",
"near_52w_high": "{{near_high}}",
"pays_dividend": "{{pays}}",
"as_of": "{{as_of}}"
}
}
],
"dry_run": true
}Response JSON (AAPL, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"three_month": {
"yes_no": 0.9442,
"rule": "C > C[-63]",
"basis": "rule"
},
"near_high": {
"yes_no": 0.831,
"rule": "abs(C / max(H, 252) - 1) <= 0.05",
"basis": "comparison"
},
"pays": {
"yes_no": 0.8591,
"rule": "pays_dividend > 0.5",
"basis": "rule"
},
"up_week": {
"yes_no": 0.59
}
},
"context": {
"symbol": "AAPL",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "report_line",
"fired": true,
"status": "dry_run",
"do": "webhook",
"connection": "report-builder",
"preview": {
"body": {
"section": "holdings_status",
"symbol": "AAPL",
"above_200d": 0.9463,
"up_3m": 0.9442,
"near_52w_high": 0.831,
"pays_dividend": 0.8591,
"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 Buy side: Financial advisor / RIA, Family office, Hedge fund PM, Quant researcher, Portfolio manager (long-only), Risk manager, Private equity, VC / growth investor, Fund-of-funds allocator.