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 11–20 of 20 · page 2 of 2
Retail investor · example 11
Has NVDA split recently, and is another split announced?
Understand the split history behind the share price before reading old price charts or news.
- StateNVDA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NVDA"} The server fills in the latest completed session.
Questions
split_3y | rule | days_since_split <= 1095Split in the last three years |
ratio | English → rule | Was the last split at least 2-for-1? |
reverse | rule | reverse_split_last > 0.5Last split was a reverse split |
announced | rule | days_to_split <= 365A split is announced |
multi | rule | splits_5y >= 2Two or more splits in five years |
Answers
| Question | Answer | Reading |
|---|---|---|
split_3ySplit in the last three years | 0.9463 | true |
ratioWas the last split at least 2-for-1 compiled to last_split_ratio >= 2 | 0.9463 | true |
reverseLast split was a reverse split | 0.1409 | false |
announcedA split is announced | 0.0537 | false |
multiTwo or more splits in five years | 0.1409 | false |
What it means
For NVDA on the session of 2026-10-30: True now: Split in the last three years; Was the last split at least 2-for-1. Not true: Last split was a reverse split; A split is announced; Two or more splits in five years.
Split facts come from the corporate-action record; an announced split is answered only once it is in the table.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NVDA"
},
"questions": {
"split_3y": {
"type": "yes_no",
"ask": "days_since_split <= 1095"
},
"ratio": {
"type": "yes_no",
"instructions": "Was the last split at least 2-for-1?"
},
"reverse": {
"type": "yes_no",
"ask": "reverse_split_last > 0.5"
},
"announced": {
"type": "yes_no",
"ask": "days_to_split <= 365"
},
"multi": {
"type": "yes_no",
"ask": "splits_5y >= 2"
}
}
}Response JSON (NVDA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"split_3y": {
"yes_no": 0.9463,
"rule": "days_since_split <= 1095",
"basis": "rule"
},
"ratio": {
"yes_no": 0.9463,
"rule": "last_split_ratio >= 2",
"basis": "pattern"
},
"reverse": {
"yes_no": 0.1409,
"rule": "reverse_split_last > 0.5",
"basis": "rule"
},
"announced": {
"yes_no": 0.0537,
"rule": "days_to_split <= 365",
"basis": "rule"
},
"multi": {
"yes_no": 0.1409,
"rule": "splits_5y >= 2",
"basis": "rule"
}
},
"context": {
"symbol": "NVDA",
"as_of": "2026-10-30"
}
}days_since_split days_to_split last_split_ratio reverse_split_last splits_5y
Retail investor · example 12
Did a reversal candle print at support in PFE?
Look for a hammer or bullish engulfing near the recent low before averaging down.
- StatePFE
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"PFE"} The server fills in the latest completed session.
Questions
hammer_low | rule | hammer() and L <= 1.01 * lowest(L, 20)Hammer at a 20-day low |
engulf | rule | engulfing_bull()engulfing bull candle: A green body that engulfs yesterday's red body. |
near_sup | English → rule | Is the stock within 2% above its last swing low (support)? |
below_200d | English → rule | Is the stock below its 200-day moving average? |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
hammer_lowHammer at a 20-day low | 0.0591 | false |
engulfengulfing bull candle: A green body that engulfs yesterday's red body. | 0.0562 | false |
near_supIs the stock within 2% above its last swing low (support) compiled to (C >= swinglow(5, 1)) and (C <= swinglow(5, 1) * 1.02) | 0.0904 | false |
below_200dIs the stock below its 200-day moving average compiled to C < sma(C, 200) | 0.0537 | false |
up_weekHigher in a week | 0.555 | 56% · close to even |
What it means
For PFE on the session of 2026-10-30: Not true: Hammer at a 20-day low; engulfing bull candle: A green body that engulfs yesterday's red body.; Is the stock within 2% above its last swing low (support); Is the stock below its 200-day moving average. Forecasts: Higher in a week 56%.
A candle at support is a reason to look, not to buy blindly; the trend rule says whether the stock is still in a downtrend.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "PFE"
},
"questions": {
"hammer_low": {
"type": "yes_no",
"ask": "hammer() and L <= 1.01 * lowest(L, 20)"
},
"engulf": {
"type": "yes_no",
"ask": "engulfing_bull()"
},
"near_sup": {
"type": "yes_no",
"instructions": "Is the stock within 2% above its last swing low (support)?"
},
"below_200d": {
"type": "yes_no",
"instructions": "Is the stock below its 200-day moving average?"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (PFE, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"hammer_low": {
"yes_no": 0.0591,
"rule": "hammer() and L <= 1.01 * lowest(L, 20)",
"basis": "rule"
},
"engulf": {
"yes_no": 0.0562,
"rule": "engulfing_bull()",
"basis": "rule"
},
"near_sup": {
"yes_no": 0.0904,
"rule": "(C >= swinglow(5, 1)) and (C <= swinglow(5, 1) * 1.02)",
"basis": "pattern"
},
"below_200d": {
"yes_no": 0.0537,
"rule": "C < sma(C, 200)",
"basis": "comparison"
},
"up_week": {
"yes_no": 0.555
}
},
"context": {
"symbol": "PFE",
"as_of": "2026-10-30"
}
}Retail investor · example 13
A quick checkup on JPM
Trend, momentum, earnings and dividend in one request for a bank stock in the portfolio.
- StateJPM
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"JPM"} The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
rsi50 | rule | rsi(C, 14) > 50RSI above 50 |
beat | English → rule | Did the stock beat EPS estimates last quarter? |
raised | rule | raised_last > 0.5Raised its last dividend |
yield | English → rule | Is the dividend yield above 2%? |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
trendAbove the 50-day average | 0.3034 | false |
rsi50RSI above 50 | 0.4703 | on the line (false) |
beatDid the stock beat EPS estimates last quarter compiled to beat_eps_last > 0.5 | 0.1409 | false |
raisedRaised its last dividend | 0.8591 | true |
yieldIs the dividend yield above 2% compiled to div_yield_ttm > 2 | 0.0537 | false |
up_weekHigher in a week | 0.558 | 56% · close to even |
What it means
For JPM on the session of 2026-10-30: True now: Raised its last dividend. Not true: Above the 50-day average; Did the stock beat EPS estimates last quarter; Is the dividend yield above 2%. On the line: RSI above 50. Forecasts: Higher in a week 56%.
One request mixes technical rules, earnings facts, dividend facts and a forecast; each answer carries its own rule, or none for the forecast.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "JPM"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"rsi50": {
"type": "yes_no",
"ask": "rsi(C, 14) > 50"
},
"beat": {
"type": "yes_no",
"instructions": "Did the stock beat EPS estimates last quarter?"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
},
"yield": {
"type": "yes_no",
"instructions": "Is the dividend yield above 2%?"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (JPM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.3034,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"rsi50": {
"yes_no": 0.4703,
"rule": "rsi(C, 14) > 50",
"basis": "rule"
},
"beat": {
"yes_no": 0.1409,
"rule": "beat_eps_last > 0.5",
"basis": "pattern"
},
"raised": {
"yes_no": 0.8591,
"rule": "raised_last > 0.5",
"basis": "rule"
},
"yield": {
"yes_no": 0.0537,
"rule": "div_yield_ttm > 2",
"basis": "pattern"
},
"up_week": {
"yes_no": 0.558
}
},
"context": {
"symbol": "JPM",
"as_of": "2026-10-30"
}
}Retail investor · example 14
Is my stop on WMT about to be hit?
Check whether the stock closed below a chandelier stop or broke its 20-day low, and how likely a further drop is.
- StateWMT
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"WMT"} The server fills in the latest completed session.
Questions
chandelier | rule | C < highest(H, 22) - 3 * atr(22)Chandelier exit: 3 ATR under the 22-day high |
low_break | rule | C < lowest(L, 20)Closed under the 20-day low |
swing_stop | English → rule | Is a stop below the last swing low less than 1.5 ATR away? |
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 |
|---|---|---|
chandelierChandelier exit: 3 ATR under the 22-day high | 0.0681 | false |
low_breakClosed under the 20-day low | 0.0537 | false |
swing_stopIs a stop below the last swing low less than 1.5 ATR away compiled to (C > swinglow(5, 1)) and (C - swinglow(5, 1) < 1.5 * atr(14)) | 0.0575 | false |
drop5A 5% drawdown within a month | 0.432 | 43% · close to even |
Actions
Rules on the answers decide what to send.
chandelier >= 0.6 or low_break >= 0.6→EmailmeWhat it means
For WMT on the session of 2026-10-30: Not true: Chandelier exit: 3 ATR under the 22-day high; Closed under the 20-day low; Is a stop below the last swing low less than 1.5 ATR away. Forecasts: A 5% drawdown within a month 43%. No action fired: every rule was false.
The stop rules are exact checks on the close; the drawdown forecast is the odds of more downside, which helps decide whether to wait for the next session.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "WMT"
},
"questions": {
"chandelier": {
"type": "yes_no",
"ask": "C < highest(H, 22) - 3 * atr(22)"
},
"low_break": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"swing_stop": {
"type": "yes_no",
"instructions": "Is a stop below the last swing low less than 1.5 ATR away?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "stop_hit",
"when": "chandelier >= 0.6 or low_break >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: stop level broken",
"message": "{{symbol}} ({{as_of}}) closed through a stop level (chandelier {{chandelier|pct}}, 20-day low {{low_break|pct}}). Review the position."
}
],
"dry_run": true
}Response JSON (WMT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"chandelier": {
"yes_no": 0.0681,
"rule": "C < highest(H, 22) - 3 * atr(22)",
"basis": "rule"
},
"low_break": {
"yes_no": 0.0537,
"rule": "C < lowest(L, 20)",
"basis": "rule"
},
"swing_stop": {
"yes_no": 0.0575,
"rule": "(C > swinglow(5, 1)) and (C - swinglow(5, 1) < 1.5 * atr(14))",
"basis": "pattern"
},
"drop5": {
"yes_no": 0.432
}
},
"context": {
"symbol": "WMT",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "stop_hit",
"fired": false,
"status": "skipped"
}
]
}Retail investor · example 15
Is HD coiling in a tight range?
Spot a quiet base (tight range, low volatility) that often comes before a bigger move.
- StateHD
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"HD"} The server fills in the latest completed session.
Questions
tight | rule | (max(H, 10) - min(L, 10)) / C < 0.05A tight 10-day base (under 5% of price) |
squeeze | rule | (bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06Bollinger bands narrower than 6% of price |
nr7 | rule | (H - L) < lowest(H - L, 6)Narrowest range of the last seven sessions (NR7) |
compression | rule | std(C, 10) < 0.5 * std(C, 50)Swings less than half their 50-day size |
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 |
|---|---|---|
tightA tight 10-day base (under 5% of price) | 0.0626 | false |
squeezeBollinger bands narrower than 6% of price | 0.0537 | false |
nr7Narrowest range of the last seven sessions (NR7) | 0.1182 | false |
compressionSwings less than half their 50-day size | 0.7725 | true |
big_move5A big move either way in 5 days | 0.272 | 27% · unlikely |
What it means
For HD on the session of 2026-10-30: True now: Swings less than half their 50-day size. Not true: A tight 10-day base (under 5% of price); Bollinger bands narrower than 6% of price; Narrowest range of the last seven sessions (NR7). Forecasts: A big move either way in 5 days 27%.
Several compression rules true at once describe a coiled stock; the forecast says whether a big move is likely soon, not which way.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "HD"
},
"questions": {
"tight": {
"type": "yes_no",
"ask": "(max(H, 10) - min(L, 10)) / C < 0.05"
},
"squeeze": {
"type": "yes_no",
"ask": "(bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06"
},
"nr7": {
"type": "yes_no",
"ask": "(H - L) < lowest(H - L, 6)"
},
"compression": {
"type": "yes_no",
"ask": "std(C, 10) < 0.5 * std(C, 50)"
},
"big_move5": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
}
}Response JSON (HD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"tight": {
"yes_no": 0.0626,
"rule": "(max(H, 10) - min(L, 10)) / C < 0.05",
"basis": "rule"
},
"squeeze": {
"yes_no": 0.0537,
"rule": "(bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06",
"basis": "rule"
},
"nr7": {
"yes_no": 0.1182,
"rule": "(H - L) < lowest(H - L, 6)",
"basis": "rule"
},
"compression": {
"yes_no": 0.7725,
"rule": "std(C, 10) < 0.5 * std(C, 50)",
"basis": "rule"
},
"big_move5": {
"yes_no": 0.272
}
},
"context": {
"symbol": "HD",
"as_of": "2026-10-30"
}
}Retail investor · example 16
AAPL or MSFT: which one is stronger right now?
Ask the same questions of two stocks and compare them side by side before choosing where to add.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"AAPL"} then MSFT, one request each. The server fills in the latest completed session.
Questions
trend | 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 |
momentum | rule | roc(C, 20) > 5Up more than 5% in 20 sessions |
rsi50 | rule | rsi(C, 14) > 50RSI above 50 |
near_high | rule | C >= 0.98 * max(H, 252)Within 2% of the 52-week high |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | trendrule | momentumrule | rsi50rule | near_highrule | beat_spyforecast |
|---|---|---|---|---|---|
AAPL | 0.7079 | 0.3147 | 0.8179 | 0.4962 | 0.531 |
MSFT | 0.3192 | 0.2797 | 0.4101 | 0.1327 | 0.514 |
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: Stacked averages: close > 20 EMA > 50 > 200: true for AAPL of 2. Up more than 5% in 20 sessions: true for none of 2. RSI above 50: true for AAPL of 2. Within 2% of the 52-week high: true for none of 2. Highest odds for “Beating SPY over a month”: AAPL at 53%.
One request per symbol with identical questions makes a fair comparison; prefer the one with more trend rules true and better odds against SPY.
Request JSON (AAPL; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
},
"momentum": {
"type": "yes_no",
"ask": "roc(C, 20) > 5"
},
"rsi50": {
"type": "yes_no",
"ask": "rsi(C, 14) > 50"
},
"near_high": {
"type": "yes_no",
"ask": "C >= 0.98 * max(H, 252)"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (AAPL, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.7079,
"rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"momentum": {
"yes_no": 0.3147,
"rule": "roc(C, 20) > 5",
"basis": "rule"
},
"rsi50": {
"yes_no": 0.8179,
"rule": "rsi(C, 14) > 50",
"basis": "rule"
},
"near_high": {
"yes_no": 0.4962,
"rule": "C >= 0.98 * max(H, 252)",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.531
}
},
"context": {
"symbol": "AAPL",
"as_of": "2026-10-30"
}
}Retail investor · example 17
When does PG go ex-dividend?
Buy before the ex-date to receive the next payment, and check the yield and the record of raises.
- StatePG
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"PG"} The server fills in the latest completed session.
Questions
ex_soon | rule | days_to_ex_div <= 30Goes ex-dividend within 30 days |
recent_ex | English → rule | Did the stock go ex-dividend in the last 30 days? |
yield3 | English → rule | Is the dividend yield above 3%? |
grow25 | English → rule | Has the stock grown its dividend for 25 years in a row? |
quarterly | rule | div_count_ttm >= 4Pays at least quarterly |
Answers
| Question | Answer | Reading |
|---|---|---|
ex_soonGoes ex-dividend within 30 days | 0.0537 | false |
recent_exDid the stock go ex-dividend in the last 30 days compiled to days_since_ex_div <= 30 | 0.9463 | true |
yield3Is the dividend yield above 3% compiled to div_yield_ttm > 3 | 0.2091 | false |
grow25Has the stock grown its dividend for 25 years in a row compiled to years_of_growth >= 25 | 0.9463 | true |
quarterlyPays at least quarterly | 0.55 | on the line (true) |
What it means
For PG on the session of 2026-10-30: True now: Did the stock go ex-dividend in the last 30 days; Has the stock grown its dividend for 25 years in a row. Not true: Goes ex-dividend within 30 days; Is the dividend yield above 3%. On the line: Pays at least quarterly.
days_to_ex_div only sees declared dates; if none is declared yet, the ex-soon question answers no.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "PG"
},
"questions": {
"ex_soon": {
"type": "yes_no",
"ask": "days_to_ex_div <= 30"
},
"recent_ex": {
"type": "yes_no",
"instructions": "Did the stock go ex-dividend in the last 30 days?"
},
"yield3": {
"type": "yes_no",
"instructions": "Is the dividend yield above 3%?"
},
"grow25": {
"type": "yes_no",
"instructions": "Has the stock grown its dividend for 25 years in a row?"
},
"quarterly": {
"type": "yes_no",
"ask": "div_count_ttm >= 4"
}
}
}Response JSON (PG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"ex_soon": {
"yes_no": 0.0537,
"rule": "days_to_ex_div <= 30",
"basis": "rule"
},
"recent_ex": {
"yes_no": 0.9463,
"rule": "days_since_ex_div <= 30",
"basis": "pattern"
},
"yield3": {
"yes_no": 0.2091,
"rule": "div_yield_ttm > 3",
"basis": "pattern"
},
"grow25": {
"yes_no": 0.9463,
"rule": "years_of_growth >= 25",
"basis": "pattern"
},
"quarterly": {
"yes_no": 0.55,
"rule": "div_count_ttm >= 4",
"basis": "rule"
}
},
"context": {
"symbol": "PG",
"as_of": "2026-10-30"
}
}days_since_ex_div days_to_ex_div div_count_ttm div_yield_ttm years_of_growth
Retail investor · example 18
Is NFLX drifting higher after its earnings beat?
After a report, check whether the stock beat, gapped up, and is holding above its pre-earnings price.
- StateNFLX
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NFLX"} The server fills in the latest completed session.
Questions
drift | rule | beat_eps_last > 0.5 and last_earnings_gap > 0 and C > pre_earnings_closePost-earnings drift: beat, gapped up, still above the pre-earnings close |
recent | rule | days_since_earnings <= 5Reported in the last 5 days |
above_pre | rule | C > pre_earnings_closeHolding above the pre-earnings close |
surprise | rule | eps_surprise_pct > 5EPS beat by more than 5% |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
driftPost-earnings drift: beat, gapped up, still above the pre-earnings close | 0.0537 | false |
recentReported in the last 5 days | 0.0813 | false |
above_preHolding above the pre-earnings close | 0.1227 | false |
surpriseEPS beat by more than 5% | 0.6333 | true |
up_weekHigher in a week | 0.506 | 51% · close to even |
What it means
For NFLX on the session of 2026-10-30: True now: EPS beat by more than 5%. Not true: Post-earnings drift: beat, gapped up, still above the pre-earnings close; Reported in the last 5 days; Holding above the pre-earnings close. Forecasts: Higher in a week 51%.
The drift rule needs a beat, a gap up and a hold above the pre-report close all at once; if any part is false the setup is not there.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NFLX"
},
"questions": {
"drift": {
"type": "yes_no",
"ask": "beat_eps_last > 0.5 and last_earnings_gap > 0 and C > pre_earnings_close"
},
"recent": {
"type": "yes_no",
"ask": "days_since_earnings <= 5"
},
"above_pre": {
"type": "yes_no",
"ask": "C > pre_earnings_close"
},
"surprise": {
"type": "yes_no",
"ask": "eps_surprise_pct > 5"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (NFLX, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"drift": {
"yes_no": 0.0537,
"rule": "beat_eps_last > 0.5 and last_earnings_gap > 0 and C > pre_earnings_close",
"basis": "rule"
},
"recent": {
"yes_no": 0.0813,
"rule": "days_since_earnings <= 5",
"basis": "rule"
},
"above_pre": {
"yes_no": 0.1227,
"rule": "C > pre_earnings_close",
"basis": "rule"
},
"surprise": {
"yes_no": 0.6333,
"rule": "eps_surprise_pct > 5",
"basis": "rule"
},
"up_week": {
"yes_no": 0.506
}
},
"context": {
"symbol": "NFLX",
"as_of": "2026-10-30"
}
}beat_eps_last days_since_earnings eps_surprise_pct last_earnings_gap pre_earnings_close
Retail investor · example 19
Is TQQQ too volatile to hold this week?
Leveraged ETFs decay in choppy markets: check volatility and trend before holding through the week.
- StateTQQQ
- Questions5 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"TQQQ"} The server fills in the latest completed session.
Questions
atr3 | rule | atr_pct(14) > 3A typical day moves more than 3% |
hv40 | rule | std(log(C / C[-1]), 20) * sqrt(252) > 0.4Annualized 20-day volatility above 40% |
trend | English → rule | Is the stock above its 50-day moving average? |
vol_rise | forecast | Will volatility rise over the next 5 days? Volatility rising over 5 days |
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 |
|---|---|---|
atr3A typical day moves more than 3% | 0.9463 | true |
hv40Annualized 20-day volatility above 40% | 0.9413 | true |
trendIs the stock above its 50-day moving average compiled to C > sma(C, 50) | 0.0621 | false |
vol_riseVolatility rising over 5 days | 0.427 | 43% · close to even |
drop10A 10% drawdown within a month | 0.766 | 77% · likely |
Actions
Rules on the answers decide what to send.
atr3 >= 0.6 and drop10 >= 0.4→Emailme{
"subject": "TQQQ: high-volatility week",
"text": "TQQQ (2026-10-30): ATR over 3% of price and 77% odds of a 10% drop within a month. Size down or step aside."
}What it means
For TQQQ on the session of 2026-10-30: True now: A typical day moves more than 3%; Annualized 20-day volatility above 40%. Not true: Is the stock above its 50-day moving average. Forecasts: Volatility rising over 5 days 43%; A 10% drawdown within a month 77%. Fired: risk_note (Email → me).
For a leveraged fund the volatility rules matter as much as direction; the email only fires when volatility and drawdown odds are both high.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TQQQ"
},
"questions": {
"atr3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"hv40": {
"type": "yes_no",
"ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4"
},
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 50-day moving average?"
},
"vol_rise": {
"type": "yes_no",
"instructions": "Will volatility rise over the next 5 days?"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "risk_note",
"when": "atr3 >= 0.6 and drop10 >= 0.4",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: high-volatility week",
"message": "{{symbol}} ({{as_of}}): ATR over 3% of price and {{drop10|pct}} odds of a 10% drop within a month. Size down or step aside."
}
],
"dry_run": true
}Response JSON (TQQQ, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"atr3": {
"yes_no": 0.9463,
"rule": "atr_pct(14) > 3",
"basis": "rule"
},
"hv40": {
"yes_no": 0.9413,
"rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4",
"basis": "rule"
},
"trend": {
"yes_no": 0.0621,
"rule": "C > sma(C, 50)",
"basis": "comparison"
},
"vol_rise": {
"yes_no": 0.427
},
"drop10": {
"yes_no": 0.766
}
},
"context": {
"symbol": "TQQQ",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "risk_note",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "me",
"preview": {
"subject": "TQQQ: high-volatility week",
"text": "TQQQ (2026-10-30): ATR over 3% of price and 77% odds of a 10% drop within a month. Size down or step aside."
}
}
]
}Retail investor · example 20
A Monday rebalance nudge for a two-fund portfolio
Every Monday morning, check stocks (VTI) and bonds (BND) and email if either is in a large drawdown.
- ScheduleMon at 09:00 ET
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"VTI"} then BND, one request each. The server fills in the latest completed session.
Questions
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
trend | English → rule | Is the stock above its 200-day moving average? |
down_month | English → rule | Is the stock down more than 5% over the last month? |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | drawdownrule | trendrule | down_monthrule | drop5forecast | Fired |
|---|---|---|---|---|---|
VTI | 0.0537 | 0.9415 | 0.0662 | 0.187 | none |
BND | 0.0537 | 0.2013 | 0.0537 | 0.007 | 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.
drawdown >= 0.6 or down_month >= 0.6→EmailmeWhat it means
Session of 2026-10-30, 2 symbols: More than 20% off the 52-week high: true for none of 2. Is the stock above its 200-day moving average: true for VTI of 2. Is the stock down more than 5% over the last month: true for none of 2. Highest odds for “A 5% drawdown within a month”: VTI at 19%. rebalance fired for none.
A quiet Monday means both funds are within their normal range; an email means one has moved enough to check the mix.
As a scheduled workflow (Mon at 09: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": "A Monday rebalance nudge for a two-fund portfolio",
"symbols": "VTI BND",
"days": [
1
],
"at_time": "09:00",
"model": "ora-fin-0.1.1",
"questions": {
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"down_month": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "rebalance",
"when": "drawdown >= 0.6 or down_month >= 0.6",
"do": "email",
"connection": "me",
"subject": "Rebalance check: {{symbol}}",
"message": "{{symbol}} ({{as_of}}) is in a drawdown (20% off the high {{drawdown|pct}}, down 5% this month {{down_month|pct}}). Check your target mix."
}
]
}Request JSON (VTI; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VTI"
},
"questions": {
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"down_month": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "rebalance",
"when": "drawdown >= 0.6 or down_month >= 0.6",
"do": "email",
"connection": "me",
"subject": "Rebalance check: {{symbol}}",
"message": "{{symbol}} ({{as_of}}) is in a drawdown (20% off the high {{drawdown|pct}}, down 5% this month {{down_month|pct}}). Check your target mix."
}
],
"dry_run": true
}Response JSON (VTI, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"drawdown": {
"yes_no": 0.0537,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"trend": {
"yes_no": 0.9415,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"down_month": {
"yes_no": 0.0662,
"rule": "C / C[-21] - 1 < -0.05",
"basis": "pattern"
},
"drop5": {
"yes_no": 0.187
}
},
"context": {
"symbol": "VTI",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "rebalance",
"fired": false,
"status": "skipped"
}
]
}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.