Use cases · Institutions
Pension fund: 20 ways to use Ora
Policy portfolio, rebalancing ranges and risk-off signals for a long-horizon board. Each example is a complete, runnable request with the real answers it returned (32 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 (42)
sma 14offset 8ref 7max 4roc 3avg 3lowest 3atr 3log 2sqrt 2std 2macd 1macdhist 1macdsignal 1wma 1obv 1three_black_crows 1zscore 1engulfing_bull 1harami_bull 1rsi 1div_count_ttm 1div_yield_ttm 1raised_last 1dark_cloud 1engulfing_bear 1evening_star 1tweezer_top 1min 1cut_last 1marubozu 1pays_dividend 1highest 1percentrank 1beat_eps_last 1days_to_earnings 1lowestbars 1spinning_top 1ema 1linreg 1mean 1rec 1
Examples 11–20 of 20 · page 2 of 2
Pension fund · example 11
Is the market calm enough to rebalance this week?
Large rebalancing trades cost more in turbulent markets. Check SPY's volatility state and forecast before scheduling trades.
- StateSPY
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"SPY"} The server fills in the latest completed session.
Questions
calm | English → rule | Is 20-day historical volatility below 20%? |
atr_low | English → rule | Is the 14-day ATR less than 2% of the price? |
nr7 | rule | (H - L) < lowest(H - L, 6)Narrowest range of the last seven sessions (NR7) |
vol_calm | forecast | Will volatility calm down over the next 5 days? Volatility calming over 5 days |
vol_rise | forecast | Will volatility rise over the next 5 days? Volatility rising over 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
calmIs 20-day historical volatility below 20% compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2 | 0.9463 | true |
atr_lowIs the 14-day ATR less than 2% of the price compiled to atr(14) / C < 0.02 | 0.9463 | true |
nr7Narrowest range of the last seven sessions (NR7) | 0.0547 | false |
vol_calmVolatility calming over 5 days | 0.452 | 45% · close to even |
vol_riseVolatility rising over 5 days | 0.558 | 56% · close to even |
Actions
Rules on the answers decide what to send.
calm >= 0.6 and vol_rise < 0.6→Webhookrebalancing-systemelse→Emailme{
"ticket": "schedule_rebalance_trades",
"underlying": "SPY",
"as_of": "2026-10-30",
"regime": "calm",
"p_calm": 0.9463,
"p_vol_rise": 0.558
}What it means
For SPY on the session of 2026-10-30: True now: Is 20-day historical volatility below 20%; Is the 14-day ATR less than 2% of the price. Not true: Narrowest range of the last seven sessions (NR7). Forecasts: Volatility calming over 5 days 45%; Volatility rising over 5 days 56%. Fired: schedule_trades (Webhook → rebalancing-system).
Calm rules true with no rising-volatility forecast suggests a good week to trade; staff still spread trades over days.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"calm": {
"type": "yes_no",
"instructions": "Is 20-day historical volatility below 20%?"
},
"atr_low": {
"type": "yes_no",
"instructions": "Is the 14-day ATR less than 2% of the price?"
},
"nr7": {
"type": "yes_no",
"ask": "(H - L) < lowest(H - L, 6)"
},
"vol_calm": {
"type": "yes_no",
"instructions": "Will volatility calm down over the next 5 days?"
},
"vol_rise": {
"type": "yes_no",
"instructions": "Will volatility rise over the next 5 days?"
}
},
"actions": [
{
"id": "schedule_trades",
"when": "calm >= 0.6 and vol_rise < 0.6",
"do": "webhook",
"connection": "rebalancing-system",
"body": {
"ticket": "schedule_rebalance_trades",
"underlying": "{{symbol}}",
"as_of": "{{as_of}}",
"regime": "calm",
"p_calm": "{{calm}}",
"p_vol_rise": "{{vol_rise}}"
}
},
{
"id": "defer",
"when": "else",
"do": "email",
"connection": "me",
"subject": "Defer rebalance trades ({{as_of}})",
"message": "{{symbol}} is not calm enough: 20-day volatility under 20% {{calm|pct}}, rising over 5 days {{vol_rise|pct}}."
}
],
"dry_run": true
}Response JSON (SPY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"calm": {
"yes_no": 0.9463,
"rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
"basis": "pattern"
},
"atr_low": {
"yes_no": 0.9463,
"rule": "atr(14) / C < 0.02",
"basis": "pattern"
},
"nr7": {
"yes_no": 0.0547,
"rule": "(H - L) < lowest(H - L, 6)",
"basis": "rule"
},
"vol_calm": {
"yes_no": 0.452
},
"vol_rise": {
"yes_no": 0.558
}
},
"context": {
"symbol": "SPY",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "schedule_trades",
"fired": true,
"status": "dry_run",
"do": "webhook",
"connection": "rebalancing-system",
"preview": {
"body": {
"ticket": "schedule_rebalance_trades",
"underlying": "SPY",
"as_of": "2026-10-30",
"regime": "calm",
"p_calm": 0.9463,
"p_vol_rise": 0.558
}
}
},
{
"id": "defer",
"fired": false,
"status": "skipped"
}
]
}Pension fund · example 12
Dividend income from equity holdings: SCHD
Retiree cash flows lean on equity income. Check yield, payout record and price trend of the income fund.
- StateSCHD
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SCHD"} The server fills in the latest completed session.
Questions
yield3 | English → rule | Is the dividend yield above 3%? |
quarterly | rule | div_count_ttm >= 4Pays at least quarterly |
raised | rule | raised_last > 0.5Raised its last dividend |
trend | rule | div_yield_ttm > 2 and C > sma(C, 200)Yield above 2% and above the 200-day |
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 |
|---|---|---|
yield3Is the dividend yield above 3% compiled to div_yield_ttm > 3 | 0.4287 | on the line (false) |
quarterlyPays at least quarterly | 0.55 | on the line (true) |
raisedRaised its last dividend | 0.8591 | true |
trendYield above 2% and above the 200-day | 0.9463 | true |
drop5A 5% drawdown within a month | 0.207 | 21% · unlikely |
What it means
For SCHD on the session of 2026-10-30: True now: Raised its last dividend; Yield above 2% and above the 200-day. On the line: Is the dividend yield above 3%; Pays at least quarterly. Forecasts: A 5% drawdown within a month 21%.
Income facts come from the distribution history; the trend rule says whether the price under the yield is holding.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SCHD"
},
"questions": {
"yield3": {
"type": "yes_no",
"instructions": "Is the dividend yield above 3%?"
},
"quarterly": {
"type": "yes_no",
"ask": "div_count_ttm >= 4"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
},
"trend": {
"type": "yes_no",
"ask": "div_yield_ttm > 2 and C > sma(C, 200)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (SCHD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"yield3": {
"yes_no": 0.4287,
"rule": "div_yield_ttm > 3",
"basis": "pattern"
},
"quarterly": {
"yes_no": 0.55,
"rule": "div_count_ttm >= 4",
"basis": "rule"
},
"raised": {
"yes_no": 0.8591,
"rule": "raised_last > 0.5",
"basis": "rule"
},
"trend": {
"yes_no": 0.9463,
"rule": "div_yield_ttm > 2 and C > sma(C, 200)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.207
}
},
"context": {
"symbol": "SCHD",
"as_of": "2026-10-30"
}
}Pension fund · example 13
Crash watch: bearish candles on SPY
A board member asks after every sharp day whether a top is forming. Answer with exact candle rules, not opinions.
- StateSPY
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"SPY"} The server fills in the latest completed session.
Questions
engulf_bear | rule | engulfing_bear()engulfing bear candle: A red body that engulfs yesterday's green body. |
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). |
tweezer_top | rule | tweezer_top()tweezer top candle: Green then red, with highs within 0.1%. |
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 |
|---|---|---|
engulf_bearengulfing bear candle: A red body that engulfs yesterday's green body. | 0.0604 | false |
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.1524 | 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.0597 | false |
tweezer_toptweezer top candle: Green then red, with highs within 0.1%. | 0.0537 | false |
drop5A 5% drawdown within a month | 0.203 | 20% · unlikely |
Actions
Rules on the answers decide what to send.
engulf_bear >= 0.6 or evening >= 0.6 or dark >= 0.6→Emailboard-secretaryelse→Slackpension-investments{
"text": "SPY (2026-10-30): no bearish reversal candle."
}What it means
For SPY on the session of 2026-10-30: Not true: engulfing bear candle: A red body that engulfs yesterday's green body.; 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).; tweezer top candle: Green then red, with highs within 0.1%.. Forecasts: A 5% drawdown within a month 20%. Fired: none (Slack → pension-investments).
Candles describe the last few sessions exactly; the drawdown forecast is the better guide to near-term risk.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"engulf_bear": {
"type": "yes_no",
"ask": "engulfing_bear()"
},
"evening": {
"type": "yes_no",
"ask": "evening_star()"
},
"dark": {
"type": "yes_no",
"ask": "dark_cloud()"
},
"tweezer_top": {
"type": "yes_no",
"ask": "tweezer_top()"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "board_answer",
"when": "engulf_bear >= 0.6 or evening >= 0.6 or dark >= 0.6",
"do": "email",
"connection": "board-secretary",
"subject": "{{symbol}}: bearish candle on {{as_of}}",
"message": "{{symbol}} printed a bearish reversal candle (engulfing {{engulf_bear|pct}}, evening star {{evening|pct}}, dark cloud {{dark|pct}}). 5% drawdown odds: {{drop5|pct}}."
},
{
"id": "none",
"when": "else",
"do": "slack",
"connection": "pension-investments",
"message": "{{symbol}} ({{as_of}}): no bearish reversal candle."
}
],
"dry_run": true
}Response JSON (SPY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"engulf_bear": {
"yes_no": 0.0604,
"rule": "engulfing_bear()",
"basis": "rule"
},
"evening": {
"yes_no": 0.1524,
"rule": "evening_star()",
"basis": "rule"
},
"dark": {
"yes_no": 0.0597,
"rule": "dark_cloud()",
"basis": "rule"
},
"tweezer_top": {
"yes_no": 0.0537,
"rule": "tweezer_top()",
"basis": "rule"
},
"drop5": {
"yes_no": 0.203
}
},
"context": {
"symbol": "SPY",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "board_answer",
"fired": false,
"status": "skipped"
},
{
"id": "none",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "pension-investments",
"preview": {
"text": "SPY (2026-10-30): no bearish reversal candle."
}
}
]
}Pension fund · example 14
Daily drawdown escalation for the CIO
After every close, escalate any core fund that falls more than 3% on the day or breaks its 20-day low.
- ScheduleMon–Fri at 16:45 ET
- State3 symbols
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"VTI"} then VEA, TLT, one request each. The server fills in the latest completed session.
Questions
down3 | English → rule | Did the stock fall more than 3% today? |
low20 | English → rule | Did the stock make a new 20-day low today? |
worst | English → rule | Was today the worst day of the last 20 sessions? |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Symbol | down3rule | low20rule | worstrule | drop10forecast | Fired |
|---|---|---|---|---|---|
VTI | 0.0717 | 0.7296 | 0.8368 | 0.189 | team_note |
VEA | 0.0716 | 0.3758 | 0.6593 | 0.225 | none |
TLT | 0.0537 | 0.0537 | 0.0895 | 0.163 | 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.
down3 >= 0.6→Emailciolow20 >= 0.6→Slackpension-investments{
"text": "VTI (2026-10-30) made a new 20-day low; worst day in 20 sessions 84%."
}What it means
Session of 2026-10-30, 3 symbols: Did the stock fall more than 3% today: true for none of 3. Did the stock make a new 20-day low today: true for VTI of 3. Was today the worst day of the last 20 sessions: true for VTI, VEA of 3. Highest odds for “A 10% drawdown within a month”: VEA at 23%. cio_email fired for none. team_note fired for VTI.
Most days nothing fires; when one does, the CIO hears about it the same evening instead of at the monthly meeting.
As a scheduled workflow (Mon–Fri at 16:45 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 the CIO",
"symbols": "VTI VEA TLT",
"days": [
1,
2,
3,
4,
5
],
"at_time": "16:45",
"model": "ora-fin-0.1.1",
"questions": {
"down3": {
"type": "yes_no",
"instructions": "Did the stock fall more than 3% today?"
},
"low20": {
"type": "yes_no",
"instructions": "Did the stock make a new 20-day low today?"
},
"worst": {
"type": "yes_no",
"instructions": "Was today the worst day of the last 20 sessions?"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "cio_email",
"when": "down3 >= 0.6",
"do": "email",
"connection": "cio",
"subject": "{{symbol}} fell more than 3% ({{as_of}})",
"message": "{{symbol}} fell more than 3% today. New 20-day low: {{low20|pct}}. 10% drawdown odds within a month: {{drop10|pct}}."
},
{
"id": "team_note",
"when": "low20 >= 0.6",
"do": "slack",
"connection": "pension-investments",
"message": "{{symbol}} ({{as_of}}) made a new 20-day low; worst day in 20 sessions {{worst|pct}}."
}
]
}Request JSON (VTI; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VTI"
},
"questions": {
"down3": {
"type": "yes_no",
"instructions": "Did the stock fall more than 3% today?"
},
"low20": {
"type": "yes_no",
"instructions": "Did the stock make a new 20-day low today?"
},
"worst": {
"type": "yes_no",
"instructions": "Was today the worst day of the last 20 sessions?"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "cio_email",
"when": "down3 >= 0.6",
"do": "email",
"connection": "cio",
"subject": "{{symbol}} fell more than 3% ({{as_of}})",
"message": "{{symbol}} fell more than 3% today. New 20-day low: {{low20|pct}}. 10% drawdown odds within a month: {{drop10|pct}}."
},
{
"id": "team_note",
"when": "low20 >= 0.6",
"do": "slack",
"connection": "pension-investments",
"message": "{{symbol}} ({{as_of}}) made a new 20-day low; worst day in 20 sessions {{worst|pct}}."
}
],
"dry_run": true
}Response JSON (VTI, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"down3": {
"yes_no": 0.0717,
"rule": "C / C[-1] - 1 < -0.03",
"basis": "pattern"
},
"low20": {
"yes_no": 0.7296,
"rule": "L < lowest(L, 20)",
"basis": "pattern"
},
"worst": {
"yes_no": 0.8368,
"rule": "(C < C[-1]) and (C / C[-1] - 1 < ref(min(C / C[-1] - 1, 19), -1))",
"basis": "pattern"
},
"drop10": {
"yes_no": 0.189
}
},
"context": {
"symbol": "VTI",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "cio_email",
"fired": false,
"status": "skipped"
},
{
"id": "team_note",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "pension-investments",
"preview": {
"text": "VTI (2026-10-30) made a new 20-day low; worst day in 20 sessions 84%."
}
}
]
}Pension fund · example 15
Listed real estate: VNQ income and trend
Check the REIT fund's payout and trend as a public read on the private real-estate allocation.
- StateVNQ
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"VNQ"} The server fills in the latest completed session.
Questions
pays | rule | pays_dividend > 0.5Pays a dividend |
cut | English → rule | Did the stock cut its dividend last time? |
trend | rule | C > sma(C, 50)Above the 50-day average |
marubozu | rule | marubozu()marubozu candle: Body at least 90% of the range: almost no wicks. |
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 |
|---|---|---|
paysPays a dividend | 0.8591 | true |
cutDid the stock cut its dividend last time compiled to cut_last > 0.5 | 0.8591 | true |
trendAbove the 50-day average | 0.7433 | true |
marubozumarubozu candle: Body at least 90% of the range: almost no wicks. | 0.132 | false |
drop5A 5% drawdown within a month | 0.218 | 22% · unlikely |
What it means
For VNQ on the session of 2026-10-30: True now: Pays a dividend; Did the stock cut its dividend last time; Above the 50-day average. Not true: marubozu candle: Body at least 90% of the range: almost no wicks.. Forecasts: A 5% drawdown within a month 22%.
A strong one-way candle (marubozu) after a trend change is worth noting; payout facts anchor the income story.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VNQ"
},
"questions": {
"pays": {
"type": "yes_no",
"ask": "pays_dividend > 0.5"
},
"cut": {
"type": "yes_no",
"instructions": "Did the stock cut its dividend last time?"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"marubozu": {
"type": "yes_no",
"ask": "marubozu()"
},
"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": {
"pays": {
"yes_no": 0.8591,
"rule": "pays_dividend > 0.5",
"basis": "rule"
},
"cut": {
"yes_no": 0.8591,
"rule": "cut_last > 0.5",
"basis": "pattern"
},
"trend": {
"yes_no": 0.7433,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"marubozu": {
"yes_no": 0.132,
"rule": "marubozu()",
"basis": "rule"
},
"drop5": {
"yes_no": 0.218
}
},
"context": {
"symbol": "VNQ",
"as_of": "2026-10-30"
}
}Pension fund · example 16
Gold tail hedge: is GLD breaking out?
Gold is a small diversifier. Check whether it is breaking out on volume and how stretched it is.
- StateGLD
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GLD"} The server fills in the latest completed session.
Questions
breakout | rule | C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)20-day breakout on 1.5× volume |
near_high | rule | C >= 0.98 * max(H, 252)Within 2% of the 52-week high |
stretched | rule | C > sma(C, 20) + 2 * atr(14)Stretched: more than 2 ATR above the 20-day |
percentrank | rule | percentrank(C, 252) > 90Close in the top tenth of its one-year range of closes |
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 |
|---|---|---|
breakout20-day breakout on 1.5× volume | 0.0619 | false |
near_highWithin 2% of the 52-week high | 0.0537 | false |
stretchedStretched: more than 2 ATR above the 20-day | 0.063 | false |
percentrankClose in the top tenth of its one-year range of closes | 0.0537 | false |
drop5A 5% drawdown within a month | 0.435 | 44% · close to even |
What it means
For GLD on the session of 2026-10-30: Not true: 20-day breakout on 1.5× volume; Within 2% of the 52-week high; Stretched: more than 2 ATR above the 20-day; Close in the top tenth of its one-year range of closes. Forecasts: A 5% drawdown within a month 44%.
A breakout near the top of its one-year range shows strength but also stretch; the hedge stays at its policy weight either way.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"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)"
},
"stretched": {
"type": "yes_no",
"ask": "C > sma(C, 20) + 2 * atr(14)"
},
"percentrank": {
"type": "yes_no",
"ask": "percentrank(C, 252) > 90"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"breakout": {
"yes_no": 0.0619,
"rule": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)",
"basis": "rule"
},
"near_high": {
"yes_no": 0.0537,
"rule": "C >= 0.98 * max(H, 252)",
"basis": "rule"
},
"stretched": {
"yes_no": 0.063,
"rule": "C > sma(C, 20) + 2 * atr(14)",
"basis": "rule"
},
"percentrank": {
"yes_no": 0.0537,
"rule": "percentrank(C, 252) > 90",
"basis": "rule"
},
"drop5": {
"yes_no": 0.435
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
}
}Pension fund · example 17
Largest US holding NVDA: trend and earnings events
The biggest single-stock exposure in the index funds drives returns. Check its trend and the earnings calendar.
- StateNVDA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NVDA"} The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
earn14 | English → rule | Is earnings in the next 14 days? |
beat | English → rule | Did the stock beat EPS estimates last quarter? |
ext | English → rule | Is the stock more than 10% above its 200-day moving average? |
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 |
|---|---|---|
trendAbove the 50-day average | 0.0746 | false |
earn14Is earnings in the next 14 days compiled to days_to_earnings <= 14 | 0.1033 | false |
beatDid the stock beat EPS estimates last quarter compiled to beat_eps_last > 0.5 | 0.8591 | true |
extIs the stock more than 10% above its 200-day moving average compiled to C > sma(C, 200) * 1.1 | 0.06 | false |
drop5A 5% drawdown within a month | 0.523 | 52% · close to even |
What it means
For NVDA on the session of 2026-10-30: True now: Did the stock beat EPS estimates last quarter. Not true: Above the 50-day average; Is earnings in the next 14 days; Is the stock more than 10% above its 200-day moving average. Forecasts: A 5% drawdown within a month 52%.
Concentration risk is highest when the leader is extended and reporting soon; the risk report says so when it is.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"earn14": {
"type": "yes_no",
"instructions": "Is earnings in the next 14 days?"
},
"beat": {
"type": "yes_no",
"instructions": "Did the stock beat EPS estimates last quarter?"
},
"ext": {
"type": "yes_no",
"instructions": "Is the stock more than 10% above its 200-day moving average?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (NVDA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.0746,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"earn14": {
"yes_no": 0.1033,
"rule": "days_to_earnings <= 14",
"basis": "pattern"
},
"beat": {
"yes_no": 0.8591,
"rule": "beat_eps_last > 0.5",
"basis": "pattern"
},
"ext": {
"yes_no": 0.06,
"rule": "C > sma(C, 200) * 1.1",
"basis": "comparison"
},
"drop5": {
"yes_no": 0.523
}
},
"context": {
"symbol": "NVDA",
"as_of": "2026-10-30"
}
}Pension fund · example 18
Cash-flow matching ladder: is SHY stable?
Benefit payments are matched with short bonds. Confirm the fund is stable and not drawing down.
- StateSHY
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SHY"} The server fills in the latest completed session.
Questions
atr_low | English → rule | Is the 14-day ATR less than 2% of the price? |
down5 | English → rule | Is the stock down more than 5% over the last month? |
lowbars | rule | lowestbars(L, 60) >= 20The 60-day low is at least 20 sessions old |
spin | rule | spinning_top()spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides. |
Answers
| Question | Answer | Reading |
|---|---|---|
atr_lowIs the 14-day ATR less than 2% of the price compiled to atr(14) / C < 0.02 | 0.9463 | true |
down5Is the stock down more than 5% over the last month compiled to C / C[-21] - 1 < -0.05 | 0.0537 | false |
lowbarsThe 60-day low is at least 20 sessions old | 0.5282 | on the line (true) |
spinspinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides. | 0.665 | true |
What it means
For SHY on the session of 2026-10-30: True now: Is the 14-day ATR less than 2% of the price; spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.. Not true: Is the stock down more than 5% over the last month. On the line: The 60-day low is at least 20 sessions old.
An old low and a small ATR describe a stable ladder; any change is checked against the payment schedule.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SHY"
},
"questions": {
"atr_low": {
"type": "yes_no",
"instructions": "Is the 14-day ATR less than 2% of the price?"
},
"down5": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"lowbars": {
"type": "yes_no",
"ask": "lowestbars(L, 60) >= 20"
},
"spin": {
"type": "yes_no",
"ask": "spinning_top()"
}
}
}Response JSON (SHY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"atr_low": {
"yes_no": 0.9463,
"rule": "atr(14) / C < 0.02",
"basis": "pattern"
},
"down5": {
"yes_no": 0.0537,
"rule": "C / C[-21] - 1 < -0.05",
"basis": "pattern"
},
"lowbars": {
"yes_no": 0.5282,
"rule": "lowestbars(L, 60) >= 20",
"basis": "rule"
},
"spin": {
"yes_no": 0.665,
"rule": "spinning_top()",
"basis": "rule"
}
},
"context": {
"symbol": "SHY",
"as_of": "2026-10-30"
}
}Pension fund · example 19
Global equity breadth: EFA, VGK, EWJ, INDA
Check how many international markets are in uptrends to frame the global-equity section of the board report.
- State4 symbols
- Questions3 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"EFA"} then VGK, EWJ, INDA, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
above_50d | rule | C > sma(C, 50)Above the 50-day average |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | trendrule | above_50drule | beat_spyforecast |
|---|---|---|---|
EFA | 0.6709 | 0.2035 | 0.447 |
VGK | 0.6118 | 0.3016 | 0.407 |
EWJ | 0.778 | 0.0788 | 0.568 |
INDA | 0.0895 | 0.4136 | 0.349 |
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 EFA, VGK, EWJ of 4. Above the 50-day average: true for none of 4. Highest odds for “Beating SPY over a month”: EWJ at 57%.
The count of markets above their 200-day is a simple breadth measure the board can follow quarter to quarter.
Request JSON (EFA; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "EFA"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"above_50d": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (EFA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.6709,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"above_50d": {
"yes_no": 0.2035,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.447
}
},
"context": {
"symbol": "EFA",
"as_of": "2026-10-30"
}
}Pension fund · example 20
Smoothed trend on VEA: a slower signal for a slower board
A pension board meets quarterly, so it wants slow signals. Use smoothed averages and regression slope on developed markets.
- StateVEA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"VEA"} The server fills in the latest completed session.
Questions
ema | rule | ema(C, 50) > ema(C, 150)50-day EMA above the 150-day EMA |
linreg | rule | linreg(C, 100) > ref(linreg(C, 100), -20)100-day regression line higher than a month ago |
rec | rule | C > rec(C, self + 0.05 * (C - self))Above a slow recursive smoother (alpha 0.05) |
mean | rule | C > mean(C, 200)Above its 200-day mean |
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 |
|---|---|---|
ema50-day EMA above the 150-day EMA | 0.9266 | true |
linreg100-day regression line higher than a month ago | 0.0725 | false |
recAbove a slow recursive smoother (alpha 0.05) | 0.1694 | false |
meanAbove its 200-day mean | 0.5877 | on the line (true) |
drop5A 5% drawdown within a month | 0.223 | 22% · unlikely |
What it means
For VEA on the session of 2026-10-30: True now: 50-day EMA above the 150-day EMA. Not true: 100-day regression line higher than a month ago; Above a slow recursive smoother (alpha 0.05). On the line: Above its 200-day mean. Forecasts: A 5% drawdown within a month 22%.
Slow rules change state rarely, which is what a quarterly board needs; a change is a discussion item, not an order.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VEA"
},
"questions": {
"ema": {
"type": "yes_no",
"ask": "ema(C, 50) > ema(C, 150)"
},
"linreg": {
"type": "yes_no",
"ask": "linreg(C, 100) > ref(linreg(C, 100), -20)"
},
"rec": {
"type": "yes_no",
"ask": "C > rec(C, self + 0.05 * (C - self))"
},
"mean": {
"type": "yes_no",
"ask": "C > mean(C, 200)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (VEA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"ema": {
"yes_no": 0.9266,
"rule": "ema(C, 50) > ema(C, 150)",
"basis": "rule"
},
"linreg": {
"yes_no": 0.0725,
"rule": "linreg(C, 100) > ref(linreg(C, 100), -20)",
"basis": "rule"
},
"rec": {
"yes_no": 0.1694,
"rule": "C > rec(C, self + 0.05 * (C - self))",
"basis": "rule"
},
"mean": {
"yes_no": 0.5877,
"rule": "C > mean(C, 200)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.223
}
},
"context": {
"symbol": "VEA",
"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 Institutions: ETF issuer, Index provider, Insurance investment office, Endowment, Sovereign wealth fund.