Ora
All use cases All industries

Individuals

Retail investorActive day traderSwing traderOptions traderDividend investorLong-term passive investorCrypto traderFX traderCommodities traderSocial trading communityStudents and universities

Buy side

Financial advisor / RIAWealth managerFamily officeHedge fund PMQuant researcherPortfolio manager (long-only)Risk managerPrivate equityVC / growth investorFund-of-funds allocator

Sell side

Equity research analystSell-side sales traderExecution trader / deskMarket makerProp trading firmCompliance officer

Corporates

Investor relations teamCorporate treasuryCFO officeBank credit analystFinancial journalist / media

Builders

Quant developerFintech app builderRobo-advisorBroker appAlgo / bot developerData vendor / platformTrading educator / newsletter

Institutions

ETF issuerIndex providerInsurance investment officePension fundEndowmentSovereign wealth fund

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.

Answers were captured on 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 11–20 of 20 · page 2 of 2

Dividend investor · example 11

Is the 'cut' at XOM really a special dividend

A special followed by a regular payment reads as a cut; compare the amounts before acting.

ora-fin-0.1.1XOM4 questions
  1. StateXOM
  2. Questions4 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"XOM"} The server fills in the latest completed session.

Questions

cutEnglish → ruleDid the stock cut its dividend last time?
changerulediv_change_pct < 0
Last payment below the previous one
countrulediv_count_ttm >= 4
Four or more ex-dates in the past year
ttm2English → ruleHas the stock paid more than $2 per share in dividends over the past year?

Answers

QuestionAnswerReading
cut
Did the stock cut its dividend last time
compiled to cut_last > 0.5
0.1409false
change
Last payment below the previous one
0.45on the line (false)
count
Four or more ex-dates in the past year
0.55on the line (true)
ttm2
Has the stock paid more than $2 per share in dividends over the past year
compiled to div_ttm > 2
0.9463true

What it means

For XOM on the session of 2026-10-30: True now: Has the stock paid more than $2 per share in dividends over the past year. Not true: Did the stock cut its dividend last time. On the line: Last payment below the previous one; Four or more ex-dates in the past year.

If four or more payments came in a year and the trailing total is steady, a one-off cut flag is the special payment rolling off.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "XOM"
  },
  "questions": {
    "cut": {
      "type": "yes_no",
      "instructions": "Did the stock cut its dividend last time?"
    },
    "change": {
      "type": "yes_no",
      "ask": "div_change_pct < 0"
    },
    "count": {
      "type": "yes_no",
      "ask": "div_count_ttm >= 4"
    },
    "ttm2": {
      "type": "yes_no",
      "instructions": "Has the stock paid more than $2 per share in dividends over the past year?"
    }
  }
}
Response JSON (XOM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "cut": {
      "yes_no": 0.1409,
      "rule": "cut_last > 0.5",
      "basis": "pattern"
    },
    "change": {
      "yes_no": 0.45,
      "rule": "div_change_pct < 0",
      "basis": "rule"
    },
    "count": {
      "yes_no": 0.55,
      "rule": "div_count_ttm >= 4",
      "basis": "rule"
    },
    "ttm2": {
      "yes_no": 0.9463,
      "rule": "div_ttm > 2",
      "basis": "pattern"
    }
  },
  "context": {
    "symbol": "XOM",
    "as_of": "2026-10-30"
  }
}

cut_last div_change_pct div_count_ttm div_ttm

Dividend investor · example 12

Email me three days before PG's ex-dividend

Buy before the ex-date to get the payment; a reminder arrives when the date is close.

ora-fin-0.1.1PG4 questions1 action
  1. StatePG
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

{"symbol":"PG"} The server fills in the latest completed session.

Questions

ex3ruledays_to_ex_div <= 3
Declared ex-date within 3 days
ex_soonruledays_to_ex_div <= 30
Goes ex-dividend within 30 days
trendruleC > sma(C, 50)
Above the 50-day average
paysrulepays_dividend > 0.5
Pays a dividend

Answers

QuestionAnswerReading
ex3
Declared ex-date within 3 days
0.0537false
ex_soon
Goes ex-dividend within 30 days
0.0537false
trend
Above the 50-day average
0.9375true
pays
Pays a dividend
0.8591true

Actions

Rules on the answers decide what to send.

ex3 >= 0.6→Emailme
What each action would send 0 of 1 fired · dry run, nothing sent
ex_reminderrule false: skipped

What it means

For PG on the session of 2026-10-30: True now: Above the 50-day average; Pays a dividend. Not true: Declared ex-date within 3 days; Goes ex-dividend within 30 days. No action fired: every rule was false.

The reminder only fires inside three days of a declared ex-date.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "PG"
  },
  "questions": {
    "ex3": {
      "type": "yes_no",
      "ask": "days_to_ex_div <= 3"
    },
    "ex_soon": {
      "type": "yes_no",
      "ask": "days_to_ex_div <= 30"
    },
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "pays": {
      "type": "yes_no",
      "ask": "pays_dividend > 0.5"
    }
  },
  "actions": [
    {
      "id": "ex_reminder",
      "when": "ex3 >= 0.6",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}} goes ex-dividend within 3 days",
      "message": "{{symbol}} ({{as_of}}): buy before the ex-date to receive the next payment. Above the 50-day: {{trend|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (PG, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "ex3": {
      "yes_no": 0.0537,
      "rule": "days_to_ex_div <= 3",
      "basis": "rule"
    },
    "ex_soon": {
      "yes_no": 0.0537,
      "rule": "days_to_ex_div <= 30",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.9375,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "pays": {
      "yes_no": 0.8591,
      "rule": "pays_dividend > 0.5",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "PG",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "ex_reminder",
      "fired": false,
      "status": "skipped"
    }
  ]
}

days_to_ex_div pays_dividend sma

Dividend investor · example 13

Dividend growth with price momentum: MSFT, HD, COST, UNH

Dividend growers that are also price leaders: the payout grows and so does the stock.

ora-fin-0.1.14 symbols, one request each5 questions
  1. State4 symbols
  2. Questions5 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"MSFT"} then HD, COST, UNH, one request each. The server fills in the latest completed session.

Questions

raisedruleraised_last > 0.5
Raised its last dividend
raise5English → ruleWas the last dividend raised by more than 5%?
leaderruleroc(C, 63) > 10 and C >= 0.95 * max(H, 63)
Up more than 10% in a quarter, near the high
rsi50rulersi(C, 14) > 50
RSI above 50
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symbolraisedruleraise5ruleleaderrulersi50rulerally5forecast
MSFT0.14090.14090.33240.41010.495
HD0.14090.14090.11420.90010.524
COST0.14090.14090.20310.9010.353
UNH0.14090.14090.07230.77460.509

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: Raised its last dividend: true for none of 4. Was the last dividend raised by more than 5%: true for none of 4. Up more than 10% in a quarter, near the high: true for none of 4. RSI above 50: true for HD, COST, UNH of 4. Highest odds for “A 5% rally within a month”: HD at 52%.

A raise above five percent with price leadership is the core of a dividend-growth sleeve.

Request JSON (MSFT; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MSFT"
  },
  "questions": {
    "raised": {
      "type": "yes_no",
      "ask": "raised_last > 0.5"
    },
    "raise5": {
      "type": "yes_no",
      "instructions": "Was the last dividend raised by more than 5%?"
    },
    "leader": {
      "type": "yes_no",
      "ask": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)"
    },
    "rsi50": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 50"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (MSFT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "raised": {
      "yes_no": 0.1409,
      "rule": "raised_last > 0.5",
      "basis": "rule"
    },
    "raise5": {
      "yes_no": 0.1409,
      "rule": "div_change_pct > 5",
      "basis": "pattern"
    },
    "leader": {
      "yes_no": 0.3324,
      "rule": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)",
      "basis": "rule"
    },
    "rsi50": {
      "yes_no": 0.4101,
      "rule": "rsi(C, 14) > 50",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.495
    }
  },
  "context": {
    "symbol": "MSFT",
    "as_of": "2026-10-30"
  }
}

div_change_pct max raised_last roc rsi

Dividend investor · example 14

DRIP or cash? Reinvest when JNJ trades below its average

Turn off automatic reinvestment when the stock is stretched, and reinvest when it is below its averages.

ora-fin-0.1.1JNJ4 questions2 actions
  1. StateJNJ
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions2 rules · dry run

State

{"symbol":"JNJ"} The server fills in the latest completed session.

Questions

below50ruleC < sma(C, 50)
Below the 50-day
below_midruleC < bbmid(C, 20)
Below the middle Bollinger Band
stretchedruleC > sma(C, 20) + 2 * atr(14)
Stretched: more than 2 ATR above the 20-day
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
below50
Below the 50-day
0.1691false
below_mid
Below the middle Bollinger Band
0.0783false
stretched
Stretched: more than 2 ATR above the 20-day
0.4048on the line (false)
up_week
Higher in a week
0.52553% · close to even

Actions

Rules on the answers decide what to send.

below50 >= 0.6→Webhookbroker-api
stretched >= 0.6→Webhookbroker-api
What each action would send 0 of 2 fired · dry run, nothing sent
broker_drip_onrule false: skipped
broker_drip_offrule false: skipped

What it means

For JNJ on the session of 2026-10-30: Not true: Below the 50-day; Below the middle Bollinger Band. On the line: Stretched: more than 2 ATR above the 20-day. Forecasts: Higher in a week 53%. No action fired: every rule was false.

Below the averages, the dividend is reinvested; stretched, it is held as cash for later.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "JNJ"
  },
  "questions": {
    "below50": {
      "type": "yes_no",
      "ask": "C < sma(C, 50)"
    },
    "below_mid": {
      "type": "yes_no",
      "ask": "C < bbmid(C, 20)"
    },
    "stretched": {
      "type": "yes_no",
      "ask": "C > sma(C, 20) + 2 * atr(14)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "broker_drip_on",
      "when": "below50 >= 0.6",
      "do": "webhook",
      "connection": "broker-api",
      "body": {
        "account": "income",
        "symbol": "{{symbol}}",
        "drip": "on",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "broker_drip_off",
      "when": "stretched >= 0.6",
      "do": "webhook",
      "connection": "broker-api",
      "body": {
        "account": "income",
        "symbol": "{{symbol}}",
        "drip": "off",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (JNJ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "below50": {
      "yes_no": 0.1691,
      "rule": "C < sma(C, 50)",
      "basis": "rule"
    },
    "below_mid": {
      "yes_no": 0.0783,
      "rule": "C < bbmid(C, 20)",
      "basis": "rule"
    },
    "stretched": {
      "yes_no": 0.4048,
      "rule": "C > sma(C, 20) + 2 * atr(14)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.525
    }
  },
  "context": {
    "symbol": "JNJ",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "broker_drip_on",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "broker_drip_off",
      "fired": false,
      "status": "skipped"
    }
  ]
}

atr bbmid sma

Dividend investor · example 15

Covered-call income funds: JEPI and QYLD

Option-income ETFs pay high yields but give up upside; check trend and drawdown.

ora-fin-0.1.12 symbols, one request each5 questions
  1. State2 symbols
  2. Questions5 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"JEPI"} then QYLD, one request each. The server fills in the latest completed session.

Questions

monthlyEnglish → ruleDoes the stock pay a monthly dividend?
yield3rulediv_yield_ttm > 3
Yield above 3%
trendEnglish → ruleIs the stock above its 200-day moving average?
drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symbolmonthlyruleyield3ruletrendruledrawdownruledrop5forecast
JEPI0.85910.94630.94630.05370.071
QYLD0.85910.94630.94630.05370.223

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: Does the stock pay a monthly dividend: true for JEPI, QYLD of 2. Yield above 3%: true for JEPI, QYLD of 2. Is the stock above its 200-day moving average: true for JEPI, QYLD of 2. More than 20% off the 52-week high: true for none of 2. Highest odds for “A 5% drawdown within a month”: QYLD at 22%.

Monthly payments with an intact trend keep these as income sleeves; a deep drawdown means the yield is being paid out of capital.

Request JSON (JEPI; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "JEPI"
  },
  "questions": {
    "monthly": {
      "type": "yes_no",
      "instructions": "Does the stock pay a monthly dividend?"
    },
    "yield3": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 3"
    },
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "drawdown": {
      "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 (JEPI, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "monthly": {
      "yes_no": 0.8591,
      "rule": "div_count_ttm >= 11",
      "basis": "pattern"
    },
    "yield3": {
      "yes_no": 0.9463,
      "rule": "div_yield_ttm > 3",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.071
    }
  },
  "context": {
    "symbol": "JEPI",
    "as_of": "2026-10-30"
  }
}

div_count_ttm div_yield_ttm max sma

Dividend investor · example 16

Utilities as defensive income: XLU, NEE, DUK, SO

Utilities hold up in risk-off weeks; check yield and relative calm.

ora-fin-0.1.14 symbols, one request each4 questions
  1. State4 symbols
  2. Questions4 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"XLU"} then NEE, DUK, SO, one request each. The server fills in the latest completed session.

Questions

yield3rulediv_yield_ttm > 3
Yield above 3%
hv_lowEnglish → ruleIs 20-day historical volatility below 20%?
trendruleC > sma(C, 50)
Above the 50-day average
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symbolyield3rulehv_lowruletrendrulebeat_spyforecast
XLU0.05370.91170.88650.445
NEE0.38760.13220.89650.491
DUK0.94630.34150.9330.492
SO0.94630.24710.91280.484

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: Yield above 3%: true for DUK, SO of 4. Is 20-day historical volatility below 20%: true for XLU of 4. Above the 50-day average: true for XLU, NEE, DUK, SO of 4. Highest odds for “Beating SPY over a month”: DUK at 49%.

Calm, yielding utilities in trend are where the income investor hides; weak ones get trimmed.

Request JSON (XLU; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "XLU"
  },
  "questions": {
    "yield3": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 3"
    },
    "hv_low": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (XLU, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "yield3": {
      "yes_no": 0.0537,
      "rule": "div_yield_ttm > 3",
      "basis": "rule"
    },
    "hv_low": {
      "yes_no": 0.9117,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "trend": {
      "yes_no": 0.8865,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.445
    }
  },
  "context": {
    "symbol": "XLU",
    "as_of": "2026-10-30"
  }
}

div_yield_ttm log offset sma sqrt std

Dividend investor · example 17

Quarterly dividend review row to a spreadsheet (Zapier)

Append a row per holding with the dividend facts so the yearly review writes itself.

ora-fin-0.1.12 symbols, one request each5 questions1 action
  1. State2 symbols
  2. Questions5 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

{"symbol":"KO"} then PEP, one request each. The server fills in the latest completed session.

Questions

yield3rulediv_yield_ttm > 3
Yield above 3%
raisedruleraised_last > 0.5
Raised its last dividend
growerruleyears_of_growth >= 10
Ten years of dividend growth
cutEnglish → ruleDid the stock cut its dividend last time?
raise_nextforecastWill the company raise its dividend next year?
Raising the dividend next year

Answers

Symbolyield3ruleraisedrulegrowerrulecutruleraise_nextforecastFired
KO0.05370.14090.94630.14090.517row
PEP0.94630.14090.94630.14090.496row

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→Webhookzapier-sheet
KO 1 of 1 fired · dry run, nothing sent
rowwould send (dry run)Webhook → zapier-sheet
{
  "symbol": "KO",
  "as_of": "2026-10-30",
  "yield_above_3": 0.0537,
  "raised_last": 0.1409,
  "grew_10y": 0.9463,
  "cut_last": 0.1409,
  "p_raise_next_year": 0.517
}
PEP 1 of 1 fired · dry run, nothing sent
rowwould send (dry run)Webhook → zapier-sheet
{
  "symbol": "PEP",
  "as_of": "2026-10-30",
  "yield_above_3": 0.9463,
  "raised_last": 0.1409,
  "grew_10y": 0.9463,
  "cut_last": 0.1409,
  "p_raise_next_year": 0.496
}

What it means

Session of 2026-10-30, 2 symbols: Yield above 3%: true for PEP of 2. Raised its last dividend: true for none of 2. Ten years of dividend growth: true for KO, PEP of 2. Did the stock cut its dividend last time: true for none of 2. Highest odds for “Raising the dividend next year”: KO at 52%. row fired for KO, PEP.

Every run appends a row; the spreadsheet shows the dividend story over the year.

Request JSON (KO; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "KO"
  },
  "questions": {
    "yield3": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 3"
    },
    "raised": {
      "type": "yes_no",
      "ask": "raised_last > 0.5"
    },
    "grower": {
      "type": "yes_no",
      "ask": "years_of_growth >= 10"
    },
    "cut": {
      "type": "yes_no",
      "instructions": "Did the stock cut its dividend last time?"
    },
    "raise_next": {
      "type": "yes_no",
      "instructions": "Will the company raise its dividend next year?"
    }
  },
  "actions": [
    {
      "id": "row",
      "when": "yield3 >= 0",
      "do": "webhook",
      "connection": "zapier-sheet",
      "body": {
        "symbol": "{{symbol}}",
        "as_of": "{{as_of}}",
        "yield_above_3": "{{yield3}}",
        "raised_last": "{{raised}}",
        "grew_10y": "{{grower}}",
        "cut_last": "{{cut}}",
        "p_raise_next_year": "{{raise_next}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (KO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "yield3": {
      "yes_no": 0.0537,
      "rule": "div_yield_ttm > 3",
      "basis": "rule"
    },
    "raised": {
      "yes_no": 0.1409,
      "rule": "raised_last > 0.5",
      "basis": "rule"
    },
    "grower": {
      "yes_no": 0.9463,
      "rule": "years_of_growth >= 10",
      "basis": "rule"
    },
    "cut": {
      "yes_no": 0.1409,
      "rule": "cut_last > 0.5",
      "basis": "pattern"
    },
    "raise_next": {
      "yes_no": 0.517
    }
  },
  "context": {
    "symbol": "KO",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "row",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "zapier-sheet",
      "preview": {
        "body": {
          "symbol": "KO",
          "as_of": "2026-10-30",
          "yield_above_3": 0.0537,
          "raised_last": 0.1409,
          "grew_10y": 0.9463,
          "cut_last": 0.1409,
          "p_raise_next_year": 0.517
        }
      }
    }
  ]
}

cut_last div_yield_ttm raised_last years_of_growth

Dividend investor · example 18

Hammer at the lows in VZ: an income entry

A reversal candle at the 20-day low in a high-yielder can be the time to add.

ora-fin-0.1.1VZ5 questions
  1. StateVZ
  2. Questions5 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"VZ"} The server fills in the latest completed session.

Questions

hammer_lowrulehammer() and L <= 1.01 * lowest(L, 20)
Hammer at a 20-day low
invruleinverted_hammer()
inverted hammer candle: Shooting-star shape after a five-bar decline.
tw_botruletweezer_bottom()
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
yield3rulediv_yield_ttm > 3
Yield above 3%
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
hammer_low
Hammer at a 20-day low
0.0667false
inv
inverted hammer candle: Shooting-star shape after a five-bar decline.
0.1565false
tw_bot
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
0.1136false
yield3
Yield above 3%
0.9463true
up_week
Higher in a week
0.46246% · close to even

What it means

For VZ on the session of 2026-10-30: True now: Yield above 3%. Not true: Hammer at a 20-day low; inverted hammer candle: Shooting-star shape after a five-bar decline.; tweezer bottom candle: Red then green, with lows within 0.1% of each other.. Forecasts: Higher in a week 46%.

A reversal candle at the low with the yield intact is an add; without a candle, the investor waits.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VZ"
  },
  "questions": {
    "hammer_low": {
      "type": "yes_no",
      "ask": "hammer() and L <= 1.01 * lowest(L, 20)"
    },
    "inv": {
      "type": "yes_no",
      "ask": "inverted_hammer()"
    },
    "tw_bot": {
      "type": "yes_no",
      "ask": "tweezer_bottom()"
    },
    "yield3": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 3"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (VZ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "hammer_low": {
      "yes_no": 0.0667,
      "rule": "hammer() and L <= 1.01 * lowest(L, 20)",
      "basis": "rule"
    },
    "inv": {
      "yes_no": 0.1565,
      "rule": "inverted_hammer()",
      "basis": "rule"
    },
    "tw_bot": {
      "yes_no": 0.1136,
      "rule": "tweezer_bottom()",
      "basis": "rule"
    },
    "yield3": {
      "yes_no": 0.9463,
      "rule": "div_yield_ttm > 3",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.462
    }
  },
  "context": {
    "symbol": "VZ",
    "as_of": "2026-10-30"
  }
}

div_yield_ttm hammer inverted_hammer lowest tweezer_bottom

Dividend investor · example 19

Tobacco payers MO and PM: payout and price

High-yield tobacco stocks: is the payout raising and the price stable.

ora-fin-0.1.12 symbols, one request each5 questions
  1. State2 symbols
  2. Questions5 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"MO"} then PM, one request each. The server fills in the latest completed session.

Questions

raisedruleraised_last > 0.5
Raised its last dividend
yield3rulediv_yield_ttm > 3
Yield above 3%
growerruleyears_of_growth >= 10
Ten years of dividend growth
median_upruleC > median(C, 50)
Above its 50-day median close
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symbolraisedruleyield3rulegrowerrulemedian_upruledrop5forecast
MO0.85910.94630.94630.93780.543
PM0.85910.3550.94630.94630.458

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: Raised its last dividend: true for MO, PM of 2. Yield above 3%: true for MO of 2. Ten years of dividend growth: true for MO, PM of 2. Above its 50-day median close: true for MO, PM of 2. Highest odds for “A 5% drawdown within a month”: MO at 54%.

Raised payouts and a price above its median keep the position; a cut is a hard review.

Request JSON (MO; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MO"
  },
  "questions": {
    "raised": {
      "type": "yes_no",
      "ask": "raised_last > 0.5"
    },
    "yield3": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 3"
    },
    "grower": {
      "type": "yes_no",
      "ask": "years_of_growth >= 10"
    },
    "median_up": {
      "type": "yes_no",
      "ask": "C > median(C, 50)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (MO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "raised": {
      "yes_no": 0.8591,
      "rule": "raised_last > 0.5",
      "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"
    },
    "median_up": {
      "yes_no": 0.9378,
      "rule": "C > median(C, 50)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.543
    }
  },
  "context": {
    "symbol": "MO",
    "as_of": "2026-10-30"
  }
}

div_yield_ttm median raised_last years_of_growth

Dividend investor · example 20

Bank dividends: JPM, BAC, WFC, C after their reports

Bank payouts move with earnings; check the reports and the raises.

ora-fin-0.1.14 symbols, one request each5 questions
  1. State4 symbols
  2. Questions5 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"JPM"} then BAC, WFC, C, one request each. The server fills in the latest completed session.

Questions

beatEnglish → ruleDid the stock beat EPS estimates last quarter?
raisedruleraised_last > 0.5
Raised its last dividend
yieldrulediv_yield_ttm > 2
Dividend yield above 2%
trendruleC > sma(C, 50)
Above the 50-day average
raise_nextforecastWill the company raise its dividend next year?
Raising the dividend next year

Answers

Symbolbeatruleraisedruleyieldruletrendruleraise_nextforecast
JPM0.14090.85910.05370.30340.499
BAC0.14090.85910.94630.09510.469
WFC0.85910.85910.72580.32960.503
C0.85910.85910.51970.07650.492

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: Did the stock beat EPS estimates last quarter: true for WFC, C of 4. Raised its last dividend: true for JPM, BAC, WFC, C of 4. Dividend yield above 2%: true for BAC, WFC of 4. Above the 50-day average: true for none of 4. Highest odds for “Raising the dividend next year”: WFC at 50%.

Banks that beat and raised keep their income weight; misses without raises get trimmed.

Request JSON (JPM; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "JPM"
  },
  "questions": {
    "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",
      "ask": "div_yield_ttm > 2"
    },
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "raise_next": {
      "type": "yes_no",
      "instructions": "Will the company raise its dividend next year?"
    }
  }
}
Response JSON (JPM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "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": "rule"
    },
    "trend": {
      "yes_no": 0.3034,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "raise_next": {
      "yes_no": 0.499
    }
  },
  "context": {
    "symbol": "JPM",
    "as_of": "2026-10-30"
  }
}

beat_eps_last div_yield_ttm raised_last sma

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.

Create an account Open the Playground Everything here also lives in the console, next to your keys and usage.