Use cases · Individuals
Retail investor: 20 ways to use Ora
Checks a handful of stocks before buying, adding or trimming, and wants alerts instead of screen time. Each example is a complete, runnable request with the real answers it returned (26 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 (49)
sma 13rsi 5max 5lowest 4offset 4beat_eps_last 3div_yield_ttm 3atr 3ref 3abs 2years_of_growth 2avg 2highest 2min 2ema 2bbupper 2swinglow 2std 2beat_revenue_last 1days_to_earnings 1last_earnings_move 1next_report_amc 1cut_last 1pays_dividend 1obv 1zscore 1macd 1macdsignal 1days_since_split 1days_to_split 1last_split_ratio 1reverse_split_last 1splits_5y 1engulfing_bull 1hammer 1raised_last 1bblower 1bbmid 1roc 1days_since_ex_div 1days_to_ex_div 1div_count_ttm 1days_since_earnings 1eps_surprise_pct 1last_earnings_gap 1pre_earnings_close 1atr_pct 1log 1sqrt 1
Examples 1–10 of 20 · page 1 of 2
Retail investor · example 1
Is AAPL in an uptrend before I buy?
Before adding to a position, confirm the long-term trend, check that the stock is not overbought, and get the odds for the next week.
- StateAAPL
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"AAPL"} The server fills in the latest completed session.
Questions
above_200d | English → rule | Is the stock above its 200-day moving average? |
golden | rule | sma(C, 50) > sma(C, 200)50-day above the 200-day |
overbought | rule | rsi(C, 14) > 70RSI above 70 |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
above_200dIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.9463 | true |
golden50-day above the 200-day | 0.9463 | true |
overboughtRSI above 70 | 0.0657 | false |
up_weekHigher in a week | 0.59 | 59% · close to even |
What it means
For AAPL on the session of 2026-10-30: True now: Is the stock above its 200-day moving average; 50-day above the 200-day. Not true: RSI above 70. Forecasts: Higher in a week 59%.
Two trend checks that are true and an RSI that is not overbought say the buy is not chasing; the forecast is the odds for the coming week, not a promise.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"above_200d": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"golden": {
"type": "yes_no",
"ask": "sma(C, 50) > sma(C, 200)"
},
"overbought": {
"type": "yes_no",
"ask": "rsi(C, 14) > 70"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (AAPL, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"above_200d": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"golden": {
"yes_no": 0.9463,
"rule": "sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"overbought": {
"yes_no": 0.0657,
"rule": "rsi(C, 14) > 70",
"basis": "rule"
},
"up_week": {
"yes_no": 0.59
}
},
"context": {
"symbol": "AAPL",
"as_of": "2026-10-30"
}
}Retail investor · example 2
Email me when MSFT dips inside its uptrend
Get one email when Microsoft pulls back (RSI under 40) while it is still above its 200-day average, the classic buy-the-dip setup.
- StateMSFT
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"MSFT"} The server fills in the latest completed session.
Questions
uptrend | rule | C > sma(C, 200) * 1.10More than 10% above the 200-day |
dip | rule | C > sma(C, 200) and rsi(C, 14) < 40Pullback in an uptrend: above the 200-day, RSI under 40 |
rsi40 | English → rule | Is RSI below 40? |
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 |
|---|---|---|
uptrendMore than 10% above the 200-day | 0.9431 | true |
dipPullback in an uptrend: above the 200-day, RSI under 40 | 0.1064 | false |
rsi40Is RSI below 40 compiled to rsi(C, 14) < 40 | 0.1064 | false |
drop5A 5% drawdown within a month | 0.422 | 42% · close to even |
Actions
Rules on the answers decide what to send.
dip >= 0.6→EmailmeWhat it means
For MSFT on the session of 2026-10-30: True now: More than 10% above the 200-day. Not true: Pullback in an uptrend: above the 200-day, RSI under 40; Is RSI below 40. Forecasts: A 5% drawdown within a month 42%. No action fired: every rule was false.
The email only goes out when the pullback rule is true; on most days it stays quiet, which is the point of an alert.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "MSFT"
},
"questions": {
"uptrend": {
"type": "yes_no",
"ask": "C > sma(C, 200) * 1.10"
},
"dip": {
"type": "yes_no",
"ask": "C > sma(C, 200) and rsi(C, 14) < 40"
},
"rsi40": {
"type": "yes_no",
"instructions": "Is RSI below 40?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "dip_alert",
"when": "dip >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: dip in an uptrend ({{as_of}})",
"message": "{{symbol}} pulled back inside its uptrend (rule {{dip|pct}}). Odds of a further 5% drop within a month: {{drop5|pct}}."
}
],
"dry_run": true
}Response JSON (MSFT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"uptrend": {
"yes_no": 0.9431,
"rule": "C > sma(C, 200) * 1.10",
"basis": "rule"
},
"dip": {
"yes_no": 0.1064,
"rule": "C > sma(C, 200) and rsi(C, 14) < 40",
"basis": "rule"
},
"rsi40": {
"yes_no": 0.1064,
"rule": "rsi(C, 14) < 40",
"basis": "comparison"
},
"drop5": {
"yes_no": 0.422
}
},
"context": {
"symbol": "MSFT",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "dip_alert",
"fired": false,
"status": "skipped"
}
]
}Retail investor · example 3
Does NVDA report soon, and how did it react last time?
Avoid buying right before a report by accident: when is the next one, did the last quarter beat, and how big was the move.
- StateNVDA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NVDA"} The server fills in the latest completed session.
Questions
soon | English → rule | Is earnings in the next 14 days? |
beat | English → rule | Did the stock beat on both EPS and revenue last quarter? |
big_move | rule | abs(last_earnings_move) > 5Last earnings move bigger than 5% |
after_close | English → rule | Does the stock report after the close next time? |
beat_next | forecast | Will the stock beat earnings next quarter? Beating earnings next quarter |
Answers
| Question | Answer | Reading |
|---|---|---|
soonIs earnings in the next 14 days compiled to days_to_earnings <= 14 | 0.1033 | false |
beatDid the stock beat on both EPS and revenue last quarter compiled to beat_eps_last > 0.5 and beat_revenue_last > 0.5 | 0.8591 | true |
big_moveLast earnings move bigger than 5% | 0.9463 | true |
after_closeDoes the stock report after the close next time compiled to next_report_amc > 0.5 | 0.8591 | true |
beat_nextBeating earnings next quarter | 0.516 | 52% · close to even |
What it means
For NVDA on the session of 2026-10-30: True now: Did the stock beat on both EPS and revenue last quarter; Last earnings move bigger than 5%; Does the stock report after the close next time. Not true: Is earnings in the next 14 days. Forecasts: Beating earnings next quarter 52%.
If the report is close and the last reaction was large, a new position takes on that event risk; waiting a few days is a choice, not a forecast.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"soon": {
"type": "yes_no",
"instructions": "Is earnings in the next 14 days?"
},
"beat": {
"type": "yes_no",
"instructions": "Did the stock beat on both EPS and revenue last quarter?"
},
"big_move": {
"type": "yes_no",
"ask": "abs(last_earnings_move) > 5"
},
"after_close": {
"type": "yes_no",
"instructions": "Does the stock report after the close next time?"
},
"beat_next": {
"type": "yes_no",
"instructions": "Will the stock beat earnings next quarter?"
}
}
}Response JSON (NVDA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"soon": {
"yes_no": 0.1033,
"rule": "days_to_earnings <= 14",
"basis": "pattern"
},
"beat": {
"yes_no": 0.8591,
"rule": "beat_eps_last > 0.5 and beat_revenue_last > 0.5",
"basis": "pattern"
},
"big_move": {
"yes_no": 0.9463,
"rule": "abs(last_earnings_move) > 5",
"basis": "rule"
},
"after_close": {
"yes_no": 0.8591,
"rule": "next_report_amc > 0.5",
"basis": "pattern"
},
"beat_next": {
"yes_no": 0.516
}
},
"context": {
"symbol": "NVDA",
"as_of": "2026-10-30"
}
}abs beat_eps_last beat_revenue_last days_to_earnings last_earnings_move next_report_amc
Retail investor · example 4
Is KO's dividend still safe to rely on?
For an income holding, check that it still pays, has not cut, keeps growing, and that the price trend under the payout is healthy.
- StateKO
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"KO"} The server fills in the latest completed session.
Questions
pays | rule | pays_dividend > 0.5Pays a dividend |
no_cut | rule | cut_last < 0.5Did not cut its last dividend |
grower | rule | years_of_growth >= 10Ten years of dividend growth |
trend | rule | div_yield_ttm > 2 and C > sma(C, 200)Yield above 2% and above the 200-day |
raise_next | forecast | Will the company raise its dividend next year? Raising the dividend next year |
Answers
| Question | Answer | Reading |
|---|---|---|
paysPays a dividend | 0.8591 | true |
no_cutDid not cut its last dividend | 0.8591 | true |
growerTen years of dividend growth | 0.9463 | true |
trendYield above 2% and above the 200-day | 0.9463 | true |
raise_nextRaising the dividend next year | 0.517 | 52% · close to even |
What it means
For KO on the session of 2026-10-30: True now: Pays a dividend; Did not cut its last dividend; Ten years of dividend growth; Yield above 2% and above the 200-day. Forecasts: Raising the dividend next year 52%.
Facts about the payout record answer from the dividend history; the raise-next-year question is a forecast and reads as odds.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "KO"
},
"questions": {
"pays": {
"type": "yes_no",
"ask": "pays_dividend > 0.5"
},
"no_cut": {
"type": "yes_no",
"ask": "cut_last < 0.5"
},
"grower": {
"type": "yes_no",
"ask": "years_of_growth >= 10"
},
"trend": {
"type": "yes_no",
"ask": "div_yield_ttm > 2 and C > sma(C, 200)"
},
"raise_next": {
"type": "yes_no",
"instructions": "Will the company raise its dividend next year?"
}
}
}Response JSON (KO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"pays": {
"yes_no": 0.8591,
"rule": "pays_dividend > 0.5",
"basis": "rule"
},
"no_cut": {
"yes_no": 0.8591,
"rule": "cut_last < 0.5",
"basis": "rule"
},
"grower": {
"yes_no": 0.9463,
"rule": "years_of_growth >= 10",
"basis": "rule"
},
"trend": {
"yes_no": 0.9463,
"rule": "div_yield_ttm > 2 and C > sma(C, 200)",
"basis": "rule"
},
"raise_next": {
"yes_no": 0.517
}
},
"context": {
"symbol": "KO",
"as_of": "2026-10-30"
}
}Retail investor · example 5
A Friday email for my five stocks
Every Friday after the close, the same three questions for each stock on the watchlist, and one email per stock that is breaking down.
- ScheduleFri at 16:30 ET
- State5 symbols
- Questions3 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"AAPL"} then MSFT, AMZN, COST, JNJ, one request each. The server fills in the latest completed session.
Questions
above_50d | rule | C > sma(C, 50)Above the 50-day average |
breakdown | rule | C < lowest(L, 20)Closed under the 20-day low |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Symbol | above_50drule | breakdownrule | up_weekforecast | Fired |
|---|---|---|---|---|
AAPL | 0.9119 | 0.0744 | 0.59 | none |
MSFT | 0.7088 | 0.365 | 0.574 | none |
AMZN | 0.0964 | 0.5418 | 0.493 | none |
COST | 0.9336 | 0.0553 | 0.519 | none |
JNJ | 0.8309 | 0.0537 | 0.525 | 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.
breakdown >= 0.6→EmailmeWhat it means
Session of 2026-10-30, 5 symbols: Above the 50-day average: true for AAPL, MSFT, COST, JNJ of 5. Closed under the 20-day low: true for none of 5. Highest odds for “Higher in a week”: AAPL at 59%. breaking_down fired for none.
A workflow runs this list on a schedule; each symbol gets its own answers, and only a breakdown sends mail.
As a scheduled workflow (Fri at 16: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": "A Friday email for my five stocks",
"symbols": "AAPL MSFT AMZN COST JNJ",
"days": [
5
],
"at_time": "16:30",
"model": "ora-fin-0.1.1",
"questions": {
"above_50d": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"breakdown": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "breaking_down",
"when": "breakdown >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}} closed under its 20-day low",
"message": "{{symbol}} ({{as_of}}) broke its 20-day low. Above the 50-day: {{above_50d|pct}}. Higher in a week: {{up_week|pct}}."
}
]
}Request JSON (AAPL; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"above_50d": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"breakdown": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "breaking_down",
"when": "breakdown >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}} closed under its 20-day low",
"message": "{{symbol}} ({{as_of}}) broke its 20-day low. Above the 50-day: {{above_50d|pct}}. Higher in a week: {{up_week|pct}}."
}
],
"dry_run": true
}Response JSON (AAPL, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"above_50d": {
"yes_no": 0.9119,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"breakdown": {
"yes_no": 0.0744,
"rule": "C < lowest(L, 20)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.59
}
},
"context": {
"symbol": "AAPL",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "breaking_down",
"fired": false,
"status": "skipped"
}
]
}Retail investor · example 6
Is COST near its 52-week high, and is volume confirming?
Decide whether a strong stock is breaking out with participation or drifting up on light volume.
- StateCOST
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"COST"} The server fills in the latest completed session.
Questions
near_high | rule | C >= 0.98 * max(H, 252)Within 2% of the 52-week high |
new_high | English → rule | Did the stock make a new 52-week high today? |
volume | rule | V > avg(V, 20)Volume above its 20-day average |
obv | rule | obv() > sma(obv(), 20)On-balance volume above its 20-day average |
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 |
|---|---|---|
near_highWithin 2% of the 52-week high | 0.0786 | false |
new_highDid the stock make a new 52-week high today compiled to H > highest(H, 252) | 0.0669 | false |
volumeVolume above its 20-day average | 0.9297 | true |
obvOn-balance volume above its 20-day average | 0.793 | true |
rally5A 5% rally within a month | 0.353 | 35% · unlikely |
What it means
For COST on the session of 2026-10-30: True now: Volume above its 20-day average; On-balance volume above its 20-day average. Not true: Within 2% of the 52-week high; Did the stock make a new 52-week high today. Forecasts: A 5% rally within a month 35%.
A new high with rising on-balance volume is the stronger read; near the high on thin volume is a reason to wait for confirmation.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "COST"
},
"questions": {
"near_high": {
"type": "yes_no",
"ask": "C >= 0.98 * max(H, 252)"
},
"new_high": {
"type": "yes_no",
"instructions": "Did the stock make a new 52-week high today?"
},
"volume": {
"type": "yes_no",
"ask": "V > avg(V, 20)"
},
"obv": {
"type": "yes_no",
"ask": "obv() > sma(obv(), 20)"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Response JSON (COST, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"near_high": {
"yes_no": 0.0786,
"rule": "C >= 0.98 * max(H, 252)",
"basis": "rule"
},
"new_high": {
"yes_no": 0.0669,
"rule": "H > highest(H, 252)",
"basis": "pattern"
},
"volume": {
"yes_no": 0.9297,
"rule": "V > avg(V, 20)",
"basis": "rule"
},
"obv": {
"yes_no": 0.793,
"rule": "obv() > sma(obv(), 20)",
"basis": "rule"
},
"rally5": {
"yes_no": 0.353
}
},
"context": {
"symbol": "COST",
"as_of": "2026-10-30"
}
}Retail investor · example 7
Was today's drop in TSLA unusual?
After a red day, check whether the move was big for this stock (in ATR and in standard deviations) before reacting.
- StateTSLA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"TSLA"} The server fills in the latest completed session.
Questions
big_atr | rule | abs(C - C[-1]) > 1.5 * atr(14)Today's move was bigger than 1.5 ATR |
shock | rule | zscore(C / C[-1] - 1, 20) < -2A two-sigma down day |
down_vol | rule | C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)Down on heavy volume |
worst20 | English → rule | Was today the worst day of the last 20 sessions? |
big_move5 | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
big_atrToday's move was bigger than 1.5 ATR | 0.054 | false |
shockA two-sigma down day | 0.0945 | false |
down_volDown on heavy volume | 0.1309 | false |
worst20Was today the worst day of the last 20 sessions compiled to (C < C[-1]) and (C / C[-1] - 1 < ref(min(C / C[-1] - 1, 19), -1)) | 0.2631 | false |
big_move5A big move either way in 5 days | 0.248 | 25% · unlikely |
What it means
For TSLA on the session of 2026-10-30: Not true: Today's move was bigger than 1.5 ATR; A two-sigma down day; Down on heavy volume; Was today the worst day of the last 20 sessions. Forecasts: A big move either way in 5 days 25%.
If none of the size rules is true, the drop was ordinary for a volatile stock; a return shock on heavy volume is the case worth a closer look.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TSLA"
},
"questions": {
"big_atr": {
"type": "yes_no",
"ask": "abs(C - C[-1]) > 1.5 * atr(14)"
},
"shock": {
"type": "yes_no",
"ask": "zscore(C / C[-1] - 1, 20) < -2"
},
"down_vol": {
"type": "yes_no",
"ask": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)"
},
"worst20": {
"type": "yes_no",
"instructions": "Was today the worst day of the last 20 sessions?"
},
"big_move5": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
}
}Response JSON (TSLA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"big_atr": {
"yes_no": 0.054,
"rule": "abs(C - C[-1]) > 1.5 * atr(14)",
"basis": "rule"
},
"shock": {
"yes_no": 0.0945,
"rule": "zscore(C / C[-1] - 1, 20) < -2",
"basis": "rule"
},
"down_vol": {
"yes_no": 0.1309,
"rule": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)",
"basis": "rule"
},
"worst20": {
"yes_no": 0.2631,
"rule": "(C < C[-1]) and (C / C[-1] - 1 < ref(min(C / C[-1] - 1, 19), -1))",
"basis": "pattern"
},
"big_move5": {
"yes_no": 0.248
}
},
"context": {
"symbol": "TSLA",
"as_of": "2026-10-30"
}
}Retail investor · example 8
Is my core index fund in a healthy trend?
A once-a-month look at VOO: trend, momentum and drawdown, without watching the market every day.
- StateVOO
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"VOO"} The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
sma200_up | rule | sma(C, 200) > ref(sma(C, 200), -20)The 200-day average is rising |
three_month | rule | C > C[-63]Higher than three months ago |
drawdown20 | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week 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 |
|---|---|---|
trendIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.9463 | true |
sma200_upThe 200-day average is rising | 0.9463 | true |
three_monthHigher than three months ago | 0.5147 | on the line (true) |
drawdown20More than 20% off the 52-week high | 0.0537 | false |
drop5A 5% drawdown within a month | 0.194 | 19% · unlikely |
What it means
For VOO on the session of 2026-10-30: True now: Is the stock above its 200-day moving average; The 200-day average is rising. Not true: More than 20% off the 52-week high. On the line: Higher than three months ago. Forecasts: A 5% drawdown within a month 19%.
Trend rules true and no 20% drawdown means the core position needs nothing; the forecast is context for the month ahead.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VOO"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"sma200_up": {
"type": "yes_no",
"ask": "sma(C, 200) > ref(sma(C, 200), -20)"
},
"three_month": {
"type": "yes_no",
"ask": "C > C[-63]"
},
"drawdown20": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (VOO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"sma200_up": {
"yes_no": 0.9463,
"rule": "sma(C, 200) > ref(sma(C, 200), -20)",
"basis": "rule"
},
"three_month": {
"yes_no": 0.5147,
"rule": "C > C[-63]",
"basis": "rule"
},
"drawdown20": {
"yes_no": 0.0537,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.194
}
},
"context": {
"symbol": "VOO",
"as_of": "2026-10-30"
}
}Retail investor · example 9
Did AMD just make a golden cross?
Check the moving-average story people talk about: did the 50-day cross the 200-day today, and is the stock above both.
- StateAMD
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"AMD"} The server fills in the latest completed session.
Questions
cross_today | English → rule | Did a golden cross happen today? |
setup | English → rule | Is the 50-day moving average above the 200-day? |
stacked | rule | C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)Stacked averages: close > 20 EMA > 50 > 200 |
macd | rule | macd(C) > macdsignal(C)MACD above its signal line |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
cross_todayDid a golden cross happen today compiled to (sma(C, 50) > sma(C, 200)) and (ref(sma(C, 50), -1) <= ref(sma(C, 200), -1)) | 0.0537 | false |
setupIs the 50-day moving average above the 200-day compiled to sma(C, 50) > sma(C, 200) | 0.9463 | true |
stackedStacked averages: close > 20 EMA > 50 > 200 | 0.1048 | false |
macdMACD above its signal line | 0.2076 | false |
up_weekHigher in a week | 0.577 | 58% · close to even |
What it means
For AMD on the session of 2026-10-30: True now: Is the 50-day moving average above the 200-day. Not true: Did a golden cross happen today; Stacked averages: close > 20 EMA > 50 > 200; MACD above its signal line. Forecasts: Higher in a week 58%.
The cross itself is a one-day event and is usually false; the setup (50-day above 200-day) is the state that lasts.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AMD"
},
"questions": {
"cross_today": {
"type": "yes_no",
"instructions": "Did a golden cross happen today?"
},
"setup": {
"type": "yes_no",
"instructions": "Is the 50-day moving average above the 200-day?"
},
"stacked": {
"type": "yes_no",
"ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
},
"macd": {
"type": "yes_no",
"ask": "macd(C) > macdsignal(C)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (AMD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"cross_today": {
"yes_no": 0.0537,
"rule": "(sma(C, 50) > sma(C, 200)) and (ref(sma(C, 50), -1) <= ref(sma(C, 200), -1))",
"basis": "pattern"
},
"setup": {
"yes_no": 0.9463,
"rule": "sma(C, 50) > sma(C, 200)",
"basis": "comparison"
},
"stacked": {
"yes_no": 0.1048,
"rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"macd": {
"yes_no": 0.2076,
"rule": "macd(C) > macdsignal(C)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.577
}
},
"context": {
"symbol": "AMD",
"as_of": "2026-10-30"
}
}Retail investor · example 10
Should I trim NFLX after a big run?
Check whether the stock is stretched above its averages before taking some profit.
- StateNFLX
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"NFLX"} The server fills in the latest completed session.
Questions
ext_200d | English → rule | Is the stock more than 10% above its 200-day moving average? |
stretched | rule | C > sma(C, 20) + 2 * atr(14)Stretched: more than 2 ATR above the 20-day |
rsi70 | rule | rsi(C, 14) > 70RSI above 70 |
bb_up | rule | C > bbupper(C, 20, 2)Closed above the upper Bollinger band |
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 |
|---|---|---|
ext_200dIs the stock more than 10% above its 200-day moving average compiled to C > sma(C, 200) * 1.1 | 0.0537 | false |
stretchedStretched: more than 2 ATR above the 20-day | 0.061 | false |
rsi70RSI above 70 | 0.0537 | false |
bb_upClosed above the upper Bollinger band | 0.057 | false |
drop5A 5% drawdown within a month | 0.627 | 63% · likely |
Actions
Rules on the answers decide what to send.
stretched >= 0.6 and rsi70 >= 0.6→Emailmeelse→Emailme{
"subject": "NFLX: no trim signal",
"text": "NFLX (2026-10-30): not stretched (rule 6%), RSI over 70 5%."
}What it means
For NFLX on the session of 2026-10-30: Not true: Is the stock more than 10% above its 200-day moving average; Stretched: more than 2 ATR above the 20-day; RSI above 70; Closed above the upper Bollinger band. Forecasts: A 5% drawdown within a month 63%. Fired: hold_note (Email → me).
The trim email fires only when both stretch rules agree; otherwise the else branch confirms there is nothing to do.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NFLX"
},
"questions": {
"ext_200d": {
"type": "yes_no",
"instructions": "Is the stock more than 10% above its 200-day moving average?"
},
"stretched": {
"type": "yes_no",
"ask": "C > sma(C, 20) + 2 * atr(14)"
},
"rsi70": {
"type": "yes_no",
"ask": "rsi(C, 14) > 70"
},
"bb_up": {
"type": "yes_no",
"ask": "C > bbupper(C, 20, 2)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "trim_note",
"when": "stretched >= 0.6 and rsi70 >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}} looks stretched",
"message": "{{symbol}} ({{as_of}}) is 2 ATR above its 20-day and RSI is over 70. Consider trimming. 5% drawdown odds: {{drop5|pct}}."
},
{
"id": "hold_note",
"when": "else",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: no trim signal",
"message": "{{symbol}} ({{as_of}}): not stretched (rule {{stretched|pct}}), RSI over 70 {{rsi70|pct}}."
}
],
"dry_run": true
}Response JSON (NFLX, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"ext_200d": {
"yes_no": 0.0537,
"rule": "C > sma(C, 200) * 1.1",
"basis": "comparison"
},
"stretched": {
"yes_no": 0.061,
"rule": "C > sma(C, 20) + 2 * atr(14)",
"basis": "rule"
},
"rsi70": {
"yes_no": 0.0537,
"rule": "rsi(C, 14) > 70",
"basis": "rule"
},
"bb_up": {
"yes_no": 0.057,
"rule": "C > bbupper(C, 20, 2)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.627
}
},
"context": {
"symbol": "NFLX",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "trim_note",
"fired": false,
"status": "skipped"
},
{
"id": "hold_note",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "me",
"preview": {
"subject": "NFLX: no trim signal",
"text": "NFLX (2026-10-30): not stretched (rule 6%), RSI over 70 5%."
}
}
]
}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 Individuals: Active day trader, Swing trader, Options trader, Dividend investor, Long-term passive investor, Crypto trader, FX trader, Commodities trader, Social trading community, Students and universities.