Use cases · Individuals
Dividend investor: 20 ways to use Ora
Builds income: yield, growth streaks, ex-dates, cuts and the price trend under the payout. Each example is a complete, runnable request with the real answers it returned (47 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 (35)
div_yield_ttm 14sma 11raised_last 8years_of_growth 5cut_last 5max 5div_count_ttm 3div_change_pct 3days_to_ex_div 2rsi 2beat_eps_last 2miss_eps_last 1last_div_amount 1next_div_amount 1days_since_ex_div 1zscore 1ref 1eps_year_ago 1last_eps 1revenue_growth_yoy 1adx 1div_ttm 1pays_dividend 1roc 1atr 1bbmid 1log 1offset 1sqrt 1std 1hammer 1inverted_hammer 1lowest 1tweezer_bottom 1median 1
Examples 1–10 of 20 · page 1 of 2
Dividend investor · example 1
Is JNJ still a dividend grower worth holding
Check the growth streak, the last raise, the yield and the trend under the payout.
- StateJNJ
- Questions6 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"JNJ"} The server fills in the latest completed session.
Questions
grow25 | English → rule | Has the stock grown its dividend for 25 years in a row? |
grow10 | rule | years_of_growth >= 10Ten years of dividend growth |
raised | rule | raised_last > 0.5Raised its last dividend |
yield3 | rule | div_yield_ttm > 3Yield above 3% |
trend | English → rule | Is the stock above its 200-day moving average? |
raise_next | forecast | Will the company raise its dividend next year? Raising the dividend next year |
Answers
| Question | Answer | Reading |
|---|---|---|
grow25Has the stock grown its dividend for 25 years in a row compiled to years_of_growth >= 25 | 0.9463 | true |
grow10Ten years of dividend growth | 0.9463 | true |
raisedRaised its last dividend | 0.1409 | false |
yield3Yield above 3% | 0.0648 | false |
trendIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.9454 | true |
raise_nextRaising the dividend next year | 0.495 | 50% · close to even |
Actions
Rules on the answers decide what to send.
raised < 0.4 or trend < 0.4→Emailmeelse→Emailme{
"subject": "JNJ: dividend holding review",
"text": "JNJ (2026-10-30): raised last time 14%, above the 200-day 95%. Review the position."
}What it means
For JNJ on the session of 2026-10-30: True now: Has the stock grown its dividend for 25 years in a row; Ten years of dividend growth; Is the stock above its 200-day moving average. Not true: Raised its last dividend; Yield above 3%. Forecasts: Raising the dividend next year 50%. Fired: review (Email → me).
A long streak and a recent raise keep it in the income core; a cut or a broken trend triggers a review.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "JNJ"
},
"questions": {
"grow25": {
"type": "yes_no",
"instructions": "Has the stock grown its dividend for 25 years in a row?"
},
"grow10": {
"type": "yes_no",
"ask": "years_of_growth >= 10"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
},
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"raise_next": {
"type": "yes_no",
"instructions": "Will the company raise its dividend next year?"
}
},
"actions": [
{
"id": "review",
"when": "raised < 0.4 or trend < 0.4",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: dividend holding review",
"message": "{{symbol}} ({{as_of}}): raised last time {{raised|pct}}, above the 200-day {{trend|pct}}. Review the position."
},
{
"id": "ok",
"when": "else",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: dividend record intact",
"message": "{{symbol}} ({{as_of}}): 25-year grower {{grow25|pct}}, raised {{raised|pct}}."
}
],
"dry_run": true
}Response JSON (JNJ, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"grow25": {
"yes_no": 0.9463,
"rule": "years_of_growth >= 25",
"basis": "pattern"
},
"grow10": {
"yes_no": 0.9463,
"rule": "years_of_growth >= 10",
"basis": "rule"
},
"raised": {
"yes_no": 0.1409,
"rule": "raised_last > 0.5",
"basis": "rule"
},
"yield3": {
"yes_no": 0.0648,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"trend": {
"yes_no": 0.9454,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"raise_next": {
"yes_no": 0.495
}
},
"context": {
"symbol": "JNJ",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "review",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "me",
"preview": {
"subject": "JNJ: dividend holding review",
"text": "JNJ (2026-10-30): raised last time 14%, above the 200-day 95%. Review the position."
}
},
{
"id": "ok",
"fired": false,
"status": "skipped"
}
]
}Dividend investor · example 2
Yield-trap screen: T, VZ, MO, PFE
High yields can be a sign of trouble: check for cuts, falling prices and missed earnings.
- State4 symbols
- Questions6 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"T"} then VZ, MO, PFE, one request each. The server fills in the latest completed session.
Questions
yield3 | English → rule | Is the dividend yield above 3%? |
cut | English → rule | Did the stock cut its dividend last time? |
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
miss | English → rule | Did the stock miss EPS estimates last quarter? |
below200 | English → rule | Is the stock below 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
| Symbol | yield3rule | cutrule | drawdownrule | missrule | below200rule | drop5forecast | Fired |
|---|---|---|---|---|---|---|---|
T | 0.9463 | 0.1409 | 0.845 | 0.1409 | 0.9326 | 0.463 | trap |
VZ | 0.9463 | 0.1409 | 0.0879 | 0.1409 | 0.6552 | 0.421 | none |
MO | 0.9463 | 0.1409 | 0.0537 | 0.1409 | 0.0537 | 0.543 | none |
PFE | 0.9463 | 0.1409 | 0.0537 | 0.1409 | 0.0537 | 0.418 | 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.
yield3 >= 0.6 and (cut >= 0.6 or drawdown >= 0.6)→Slackincome-book{
"text": "T (2026-10-30): possible yield trap. Cut 14%, 20% drawdown 84%."
}What it means
Session of 2026-10-30, 4 symbols: Is the dividend yield above 3%: true for T, VZ, MO, PFE of 4. Did the stock cut its dividend last time: true for none of 4. More than 20% off the 52-week high: true for T of 4. Did the stock miss EPS estimates last quarter: true for none of 4. Highest odds for “A 5% drawdown within a month”: MO at 54%. trap fired for T.
A high yield with a cut or a deep drawdown is a possible trap; a high yield with an intact trend is income.
Request JSON (T; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "T"
},
"questions": {
"yield3": {
"type": "yes_no",
"instructions": "Is the dividend yield above 3%?"
},
"cut": {
"type": "yes_no",
"instructions": "Did the stock cut its dividend last time?"
},
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"miss": {
"type": "yes_no",
"instructions": "Did the stock miss EPS estimates last quarter?"
},
"below200": {
"type": "yes_no",
"instructions": "Is the stock below its 200-day moving average?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "trap",
"when": "yield3 >= 0.6 and (cut >= 0.6 or drawdown >= 0.6)",
"do": "slack",
"connection": "income-book",
"message": "{{symbol}} ({{as_of}}): possible yield trap. Cut {{cut|pct}}, 20% drawdown {{drawdown|pct}}."
}
],
"dry_run": true
}Response JSON (T, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"yield3": {
"yes_no": 0.9463,
"rule": "div_yield_ttm > 3",
"basis": "pattern"
},
"cut": {
"yes_no": 0.1409,
"rule": "cut_last > 0.5",
"basis": "pattern"
},
"drawdown": {
"yes_no": 0.845,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"miss": {
"yes_no": 0.1409,
"rule": "miss_eps_last > 0.5",
"basis": "pattern"
},
"below200": {
"yes_no": 0.9326,
"rule": "C < sma(C, 200)",
"basis": "comparison"
},
"drop5": {
"yes_no": 0.463
}
},
"context": {
"symbol": "T",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "trap",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "income-book",
"preview": {
"text": "T (2026-10-30): possible yield trap. Cut 14%, 20% drawdown 84%."
}
}
]
}Dividend investor · example 3
Ex-dividend calendar: my income holdings every Monday
Each Monday, list which holdings go ex-dividend within 30 days, with the amount change.
- ScheduleMon at 08:00 ET
- State4 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"KO"} then PEP, PG, JNJ, one request each. The server fills in the latest completed session.
Questions
ex_soon | rule | days_to_ex_div <= 30Goes ex-dividend within 30 days |
next_up | English → rule | Is the next declared dividend larger than the last one? |
raised | rule | raised_last > 0.5Raised its last dividend |
yield3 | rule | div_yield_ttm > 3Yield above 3% |
Answers
| Symbol | ex_soonrule | next_uprule | raisedrule | yield3rule | Fired |
|---|---|---|---|---|---|
KO | 0.2049 | 0.45 | 0.1409 | 0.0537 | none |
PEP | 0.0537 | 0.50 | 0.1409 | 0.9463 | none |
PG | 0.0537 | 0.50 | 0.1409 | 0.2091 | none |
JNJ | 0.9187 | 0.45 | 0.1409 | 0.0648 | ex_list |
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.
ex_soon >= 0.6→Emailme{
"subject": "JNJ goes ex-dividend within 30 days",
"text": "JNJ (2026-10-30): declared ex-date within 30 days. Next payment larger than the last: 45%. Raised last time: 14%."
}What it means
Session of 2026-10-30, 4 symbols: Goes ex-dividend within 30 days: true for JNJ of 4. Is the next declared dividend larger than the last one: true for none of 4. Raised its last dividend: true for none of 4. Yield above 3%: true for PEP of 4. ex_list fired for JNJ.
The email is the week's dividend calendar; names without a declared ex-date stay off it.
As a scheduled workflow (Mon at 08: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": "Ex-dividend calendar: my income holdings every Monday",
"symbols": "KO PEP PG JNJ",
"days": [
1
],
"at_time": "08:00",
"model": "ora-fin-0.1.1",
"questions": {
"ex_soon": {
"type": "yes_no",
"ask": "days_to_ex_div <= 30"
},
"next_up": {
"type": "yes_no",
"instructions": "Is the next declared dividend larger than the last one?"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
},
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
}
},
"actions": [
{
"id": "ex_list",
"when": "ex_soon >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}} goes ex-dividend within 30 days",
"message": "{{symbol}} ({{as_of}}): declared ex-date within 30 days. Next payment larger than the last: {{next_up|pct}}. Raised last time: {{raised|pct}}."
}
]
}Request JSON (KO; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "KO"
},
"questions": {
"ex_soon": {
"type": "yes_no",
"ask": "days_to_ex_div <= 30"
},
"next_up": {
"type": "yes_no",
"instructions": "Is the next declared dividend larger than the last one?"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
},
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
}
},
"actions": [
{
"id": "ex_list",
"when": "ex_soon >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}} goes ex-dividend within 30 days",
"message": "{{symbol}} ({{as_of}}): declared ex-date within 30 days. Next payment larger than the last: {{next_up|pct}}. Raised last time: {{raised|pct}}."
}
],
"dry_run": true
}Response JSON (KO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"ex_soon": {
"yes_no": 0.2049,
"rule": "days_to_ex_div <= 30",
"basis": "rule"
},
"next_up": {
"yes_no": 0.45,
"rule": "next_div_amount > last_div_amount",
"basis": "pattern"
},
"raised": {
"yes_no": 0.1409,
"rule": "raised_last > 0.5",
"basis": "rule"
},
"yield3": {
"yes_no": 0.0537,
"rule": "div_yield_ttm > 3",
"basis": "rule"
}
},
"context": {
"symbol": "KO",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "ex_list",
"fired": false,
"status": "skipped"
}
]
}days_to_ex_div div_yield_ttm last_div_amount next_div_amount raised_last
Dividend investor · example 4
Monthly income: does O still pay monthly
Realty Income is bought for monthly payments; confirm the count and the record.
- StateO
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"O"} The server fills in the latest completed session.
Questions
monthly | English → rule | Does the stock pay a monthly dividend? |
raised | rule | raised_last > 0.5Raised its last dividend |
no_cut | rule | cut_last < 0.5Did not cut its last dividend |
yield3 | rule | div_yield_ttm > 3Yield above 3% |
trend | rule | div_yield_ttm > 2 and C > sma(C, 200)Yield above 2% and above the 200-day |
Answers
| Question | Answer | Reading |
|---|---|---|
monthlyDoes the stock pay a monthly dividend compiled to div_count_ttm >= 11 | 0.9317 | true |
raisedRaised its last dividend | 0.1409 | false |
no_cutDid not cut its last dividend | 0.8591 | true |
yield3Yield above 3% | 0.9463 | true |
trendYield above 2% and above the 200-day | 0.1427 | false |
What it means
For O on the session of 2026-10-30: True now: Does the stock pay a monthly dividend; Did not cut its last dividend; Yield above 3%. Not true: Raised its last dividend; Yield above 2% and above the 200-day.
Twelve payments a year, no cut and a yield above three percent is what the position is for.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "O"
},
"questions": {
"monthly": {
"type": "yes_no",
"instructions": "Does the stock pay a monthly dividend?"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
},
"no_cut": {
"type": "yes_no",
"ask": "cut_last < 0.5"
},
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"trend": {
"type": "yes_no",
"ask": "div_yield_ttm > 2 and C > sma(C, 200)"
}
}
}Response JSON (O, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"monthly": {
"yes_no": 0.9317,
"rule": "div_count_ttm >= 11",
"basis": "pattern"
},
"raised": {
"yes_no": 0.1409,
"rule": "raised_last > 0.5",
"basis": "rule"
},
"no_cut": {
"yes_no": 0.8591,
"rule": "cut_last < 0.5",
"basis": "rule"
},
"yield3": {
"yes_no": 0.9463,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"trend": {
"yes_no": 0.1427,
"rule": "div_yield_ttm > 2 and C > sma(C, 200)",
"basis": "rule"
}
},
"context": {
"symbol": "O",
"as_of": "2026-10-30"
}
}Dividend investor · example 5
Dividend cut alert for the whole income book (Slack)
Post to the household channel the moment any holding's last payment is below the one before.
- ScheduleMon–Fri at 17:00 ET
- State4 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"T"} then VZ, MO, O, one request each. The server fills in the latest completed session.
Questions
cut | English → rule | Did the stock cut its dividend last time? |
change | rule | div_change_pct < -10Last payment more than 10% below the previous |
days_ex | rule | days_since_ex_div <= 45Went ex-dividend within 45 days |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Symbol | cutrule | changerule | days_exrule | drop10forecast | Fired |
|---|---|---|---|---|---|
T | 0.1409 | 0.0683 | 0.9463 | 0.463 | none |
VZ | 0.1409 | 0.0683 | 0.9463 | 0.421 | none |
MO | 0.1409 | 0.0537 | 0.55 | 0.543 | none |
O | 0.1409 | 0.0683 | 0.9463 | 0.314 | 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.
cut >= 0.6→Slackincome-bookWhat it means
Session of 2026-10-30, 4 symbols: Did the stock cut its dividend last time: true for none of 4. Last payment more than 10% below the previous: true for none of 4. Went ex-dividend within 45 days: true for T, VZ, O of 4. Highest odds for “A 10% drawdown within a month”: MO at 54%. cut fired for none.
A cut message means re-underwriting the position; no message means every payout held.
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": "Dividend cut alert for the whole income book (Slack)",
"symbols": "T VZ MO O",
"days": [
1,
2,
3,
4,
5
],
"at_time": "17:00",
"model": "ora-fin-0.1.1",
"questions": {
"cut": {
"type": "yes_no",
"instructions": "Did the stock cut its dividend last time?"
},
"change": {
"type": "yes_no",
"ask": "div_change_pct < -10"
},
"days_ex": {
"type": "yes_no",
"ask": "days_since_ex_div <= 45"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "cut",
"when": "cut >= 0.6",
"do": "slack",
"connection": "income-book",
"message": "{{symbol}} ({{as_of}}): last dividend lower than the previous one (cut {{cut|pct}}, over 10% {{change|pct}}). 10% drawdown odds {{drop10|pct}}."
}
]
}Request JSON (T; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "T"
},
"questions": {
"cut": {
"type": "yes_no",
"instructions": "Did the stock cut its dividend last time?"
},
"change": {
"type": "yes_no",
"ask": "div_change_pct < -10"
},
"days_ex": {
"type": "yes_no",
"ask": "days_since_ex_div <= 45"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "cut",
"when": "cut >= 0.6",
"do": "slack",
"connection": "income-book",
"message": "{{symbol}} ({{as_of}}): last dividend lower than the previous one (cut {{cut|pct}}, over 10% {{change|pct}}). 10% drawdown odds {{drop10|pct}}."
}
],
"dry_run": true
}Response JSON (T, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"cut": {
"yes_no": 0.1409,
"rule": "cut_last > 0.5",
"basis": "pattern"
},
"change": {
"yes_no": 0.0683,
"rule": "div_change_pct < -10",
"basis": "rule"
},
"days_ex": {
"yes_no": 0.9463,
"rule": "days_since_ex_div <= 45",
"basis": "rule"
},
"drop10": {
"yes_no": 0.463
}
},
"context": {
"symbol": "T",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "cut",
"fired": false,
"status": "skipped"
}
]
}Dividend investor · example 6
Add to PEP when the yield is high and the price dips
Income investors add when the price dips inside a long uptrend, which raises the yield on new money.
- StatePEP
- Questions5 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"PEP"} The server fills in the latest completed session.
Questions
rsi40 | English → rule | Is RSI below 40? |
zlow | rule | zscore(C, 20) < -2Two deviations under the 20-day mean |
yield3 | rule | div_yield_ttm > 3Yield above 3% |
grower | rule | years_of_growth >= 10Ten years of dividend growth |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
rsi40Is RSI below 40 compiled to rsi(C, 14) < 40 | 0.0755 | false |
zlowTwo deviations under the 20-day mean | 0.0585 | false |
yield3Yield above 3% | 0.9463 | true |
growerTen years of dividend growth | 0.9463 | true |
up_weekHigher in a week | 0.505 | 51% · close to even |
Actions
Rules on the answers decide what to send.
rsi40 >= 0.6 and grower >= 0.6→Webhookadvisor-crmWhat it means
For PEP on the session of 2026-10-30: True now: Yield above 3%; Ten years of dividend growth. Not true: Is RSI below 40; Two deviations under the 20-day mean. Forecasts: Higher in a week 51%. No action fired: every rule was false.
Oversold plus a higher yield on a long grower is the add signal; the forecast says how patient to be.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "PEP"
},
"questions": {
"rsi40": {
"type": "yes_no",
"instructions": "Is RSI below 40?"
},
"zlow": {
"type": "yes_no",
"ask": "zscore(C, 20) < -2"
},
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"grower": {
"type": "yes_no",
"ask": "years_of_growth >= 10"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "crm",
"when": "rsi40 >= 0.6 and grower >= 0.6",
"do": "webhook",
"connection": "advisor-crm",
"body": {
"symbol": "{{symbol}}",
"task": "add_on_dip",
"p_rsi_under_40": "{{rsi40}}",
"as_of": "{{as_of}}"
}
}
],
"dry_run": true
}Response JSON (PEP, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"rsi40": {
"yes_no": 0.0755,
"rule": "rsi(C, 14) < 40",
"basis": "comparison"
},
"zlow": {
"yes_no": 0.0585,
"rule": "zscore(C, 20) < -2",
"basis": "rule"
},
"yield3": {
"yes_no": 0.9463,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"grower": {
"yes_no": 0.9463,
"rule": "years_of_growth >= 10",
"basis": "rule"
},
"up_week": {
"yes_no": 0.505
}
},
"context": {
"symbol": "PEP",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "crm",
"fired": false,
"status": "skipped"
}
]
}Dividend investor · example 7
Dividend ETF comparison: SCHD, VIG, VYM, NOBL
Same questions for four dividend ETFs: trend, yield, drawdown and next-month odds.
- State4 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SCHD"} then VIG, VYM, NOBL, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
yield3 | rule | div_yield_ttm > 3Yield above 3% |
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
sma_up | rule | sma(C, 200) > ref(sma(C, 200), -20)The 200-day average is rising |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | trendrule | yield3rule | drawdownrule | sma_uprule | beat_spyforecast |
|---|---|---|---|---|---|
SCHD | 0.9463 | 0.4287 | 0.0537 | 0.9463 | 0.523 |
VIG | 0.9463 | 0.0537 | 0.0537 | 0.9463 | 0.427 |
VYM | 0.9274 | 0.0901 | 0.0537 | 0.9463 | 0.44 |
NOBL | 0.9335 | 0.0674 | 0.0537 | 0.943 | 0.49 |
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 SCHD, VIG, VYM, NOBL of 4. Yield above 3%: true for none of 4. More than 20% off the 52-week high: true for none of 4. The 200-day average is rising: true for SCHD, VIG, VYM, NOBL of 4. Highest odds for “Beating SPY over a month”: SCHD at 52%.
The fund with the best trend and a yield that fits the income target gets new money this month.
Request JSON (SCHD; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SCHD"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"sma_up": {
"type": "yes_no",
"ask": "sma(C, 200) > ref(sma(C, 200), -20)"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (SCHD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"yield3": {
"yes_no": 0.4287,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"drawdown": {
"yes_no": 0.0537,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"sma_up": {
"yes_no": 0.9463,
"rule": "sma(C, 200) > ref(sma(C, 200), -20)",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.523
}
},
"context": {
"symbol": "SCHD",
"as_of": "2026-10-30"
}
}Dividend investor · example 8
Did KO's earnings back the dividend
A dividend is paid from earnings: check the last report beat, EPS growth and positivity.
- StateKO
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"KO"} The server fills in the latest completed session.
Questions
beat | English → rule | Did the stock beat EPS estimates last quarter? |
eps_pos | English → rule | Was EPS positive last quarter? |
eps_up | English → rule | Is EPS up year over year? |
rev | English → rule | Did revenue grow more than 5% year over year? |
raise_next | forecast | Will the company raise its dividend next year? Raising the dividend next year |
Answers
| Question | Answer | Reading |
|---|---|---|
beatDid the stock beat EPS estimates last quarter compiled to beat_eps_last > 0.5 | 0.8591 | true |
eps_posWas EPS positive last quarter compiled to last_eps > 0 | 0.9463 | true |
eps_upIs EPS up year over year compiled to last_eps > eps_year_ago | 0.9463 | true |
revDid revenue grow more than 5% year over year compiled to revenue_growth_yoy > 5 | 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: Did the stock beat EPS estimates last quarter; Was EPS positive last quarter; Is EPS up year over year; Did revenue grow more than 5% year over year. Forecasts: Raising the dividend next year 52%.
Positive, growing EPS after a beat means the payout has support; a miss and falling EPS is a reason to watch the next declaration.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "KO"
},
"questions": {
"beat": {
"type": "yes_no",
"instructions": "Did the stock beat EPS estimates last quarter?"
},
"eps_pos": {
"type": "yes_no",
"instructions": "Was EPS positive last quarter?"
},
"eps_up": {
"type": "yes_no",
"instructions": "Is EPS up year over year?"
},
"rev": {
"type": "yes_no",
"instructions": "Did revenue grow more than 5% year over year?"
},
"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": {
"beat": {
"yes_no": 0.8591,
"rule": "beat_eps_last > 0.5",
"basis": "pattern"
},
"eps_pos": {
"yes_no": 0.9463,
"rule": "last_eps > 0",
"basis": "pattern"
},
"eps_up": {
"yes_no": 0.9463,
"rule": "last_eps > eps_year_ago",
"basis": "pattern"
},
"rev": {
"yes_no": 0.9463,
"rule": "revenue_growth_yoy > 5",
"basis": "pattern"
},
"raise_next": {
"yes_no": 0.517
}
},
"context": {
"symbol": "KO",
"as_of": "2026-10-30"
}
}Dividend investor · example 9
REIT health check: VNQ, O and PLD
Rate-sensitive income: trend, drawdown and yield in one batch.
- State3 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"VNQ"} then O, PLD, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
yield3 | rule | div_yield_ttm > 3Yield above 3% |
raised | rule | raised_last > 0.5Raised its last 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 | drawdownrule | yield3rule | raisedrule | drop5forecast |
|---|---|---|---|---|---|
VNQ | 0.7433 | 0.0537 | 0.8893 | 0.1409 | 0.218 |
O | 0.4661 | 0.1005 | 0.9463 | 0.1409 | 0.313 |
PLD | 0.0812 | 0.116 | 0.7763 | 0.1409 | 0.342 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 3 symbols: Above the 50-day average: true for VNQ of 3. More than 20% off the 52-week high: true for none of 3. Yield above 3%: true for VNQ, O, PLD of 3. Raised its last dividend: true for none of 3. Highest odds for “A 5% drawdown within a month”: PLD at 34%.
REITs above their 50-day with no deep drawdown keep their weight; the rest wait for rates to settle.
Request JSON (VNQ; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VNQ"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
},
"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": {
"trend": {
"yes_no": 0.7433,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"drawdown": {
"yes_no": 0.0537,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"yield3": {
"yes_no": 0.8893,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"raised": {
"yes_no": 0.1409,
"rule": "raised_last > 0.5",
"basis": "rule"
},
"drop5": {
"yes_no": 0.218
}
},
"context": {
"symbol": "VNQ",
"as_of": "2026-10-30"
}
}Dividend investor · example 10
Energy income: XOM and CVX dividend and trend
Oil majors pay well but swing with crude; check both together.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"XOM"} then CVX, one request each. The server fills in the latest completed session.
Questions
yield3 | rule | div_yield_ttm > 3Yield above 3% |
grower | rule | years_of_growth >= 10Ten years of dividend growth |
trend | rule | sma(C, 50) > sma(C, 200)50-day above the 200-day |
adx | rule | adx(14) > 25Trending (ADX above 25) |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | yield3rule | growerrule | trendrule | adxrule | drop5forecast |
|---|---|---|---|---|---|
XOM | 0.0537 | 0.0537 | 0.9463 | 0.8859 | 0.506 |
CVX | 0.4906 | 0.1409 | 0.9463 | 0.9102 | 0.496 |
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 none of 2. Ten years of dividend growth: true for none of 2. 50-day above the 200-day: true for XOM, CVX of 2. Trending (ADX above 25): true for XOM, CVX of 2. Highest odds for “A 5% drawdown within a month”: XOM at 51%.
Both growing and in trend means income plus price; a broken trend means the yield is the only return for now.
Request JSON (XOM; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "XOM"
},
"questions": {
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"grower": {
"type": "yes_no",
"ask": "years_of_growth >= 10"
},
"trend": {
"type": "yes_no",
"ask": "sma(C, 50) > sma(C, 200)"
},
"adx": {
"type": "yes_no",
"ask": "adx(14) > 25"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (XOM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"yield3": {
"yes_no": 0.0537,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"grower": {
"yes_no": 0.0537,
"rule": "years_of_growth >= 10",
"basis": "rule"
},
"trend": {
"yes_no": 0.9463,
"rule": "sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"adx": {
"yes_no": 0.8859,
"rule": "adx(14) > 25",
"basis": "rule"
},
"drop5": {
"yes_no": 0.506
}
},
"context": {
"symbol": "XOM",
"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 Individuals: Retail investor, Active day trader, Swing trader, Options trader, Long-term passive investor, Crypto trader, FX trader, Commodities trader, Social trading community, Students and universities.