Use cases · Corporates
Bank credit analyst: 20 ways to use Ora
Equity signals as early credit warnings: drawdowns, dividend cuts, misses and volatility. Each example is a complete, runnable request with the real answers it returned (45 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 (47)
sma 12offset 9max 6ref 4cut_last 3div_yield_ttm 3lowest 3log 3sqrt 3std 3swinghigh 2swinglow 2eps_year_ago 2last_eps 2miss_eps_last 2misses_last4 2zscore 2evening_star 2min 2abs 2avg 1div_change_pct 1pays_dividend 1miss_revenue_last 1atr 1three_black_crows 1atr_pct 1adx 1crossdown 1diminus 1diplus 1beat_revenue_last 1days_since_earnings 1last_earnings_move 1crossup 1dragonfly_doji 1days_to_earnings 1next_report_bmo 1least 1percentrank 1shooting_star 1raised_last 1years_of_growth 1linreg 1greatest 1rsi 1tweezer_top 1
Examples 11–20 of 20 · page 2 of 2
Bank credit analyst · example 11
Credit analyst: T after earnings, any red flags?
After the borrower reports, check revenue, EPS and the dividend in one request.
- StateT
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"T"} The server fills in the latest completed session.
Questions
recent | rule | days_since_earnings <= 5Reported in the last 5 days |
rev_miss | English → rule | Did revenue beat estimates last quarter? |
eps_pos | English → rule | Was EPS positive last quarter? |
eps_yoy | English → rule | Is EPS up year over year? |
no_cut | rule | cut_last < 0.5Did not cut its last dividend |
fell | English → rule | Did the stock fall after its last earnings report? |
Answers
| Question | Answer | Reading |
|---|---|---|
recentReported in the last 5 days | 0.1033 | false |
rev_missDid revenue beat estimates last quarter compiled to beat_revenue_last > 0.5 | 0.8591 | true |
eps_posWas EPS positive last quarter compiled to last_eps > 0 | 0.9463 | true |
eps_yoyIs EPS up year over year compiled to last_eps > eps_year_ago | 0.9463 | true |
no_cutDid not cut its last dividend | 0.8591 | true |
fellDid the stock fall after its last earnings report compiled to last_earnings_move < 0 | 0.9463 | true |
What it means
For T on the session of 2026-10-30: True now: Did revenue beat estimates last quarter; Was EPS positive last quarter; Is EPS up year over year; Did not cut its last dividend; Did the stock fall after its last earnings report. Not true: Reported in the last 5 days.
Positive EPS, no dividend cut and a revenue beat mean the quarter did not change the credit story; any false answer gets a note in the file.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "T"
},
"questions": {
"recent": {
"type": "yes_no",
"ask": "days_since_earnings <= 5"
},
"rev_miss": {
"type": "yes_no",
"instructions": "Did revenue beat estimates last quarter?"
},
"eps_pos": {
"type": "yes_no",
"instructions": "Was EPS positive last quarter?"
},
"eps_yoy": {
"type": "yes_no",
"instructions": "Is EPS up year over year?"
},
"no_cut": {
"type": "yes_no",
"ask": "cut_last < 0.5"
},
"fell": {
"type": "yes_no",
"instructions": "Did the stock fall after its last earnings report?"
}
}
}Response JSON (T, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"recent": {
"yes_no": 0.1033,
"rule": "days_since_earnings <= 5",
"basis": "rule"
},
"rev_miss": {
"yes_no": 0.8591,
"rule": "beat_revenue_last > 0.5",
"basis": "pattern"
},
"eps_pos": {
"yes_no": 0.9463,
"rule": "last_eps > 0",
"basis": "pattern"
},
"eps_yoy": {
"yes_no": 0.9463,
"rule": "last_eps > eps_year_ago",
"basis": "pattern"
},
"no_cut": {
"yes_no": 0.8591,
"rule": "cut_last < 0.5",
"basis": "rule"
},
"fell": {
"yes_no": 0.9463,
"rule": "last_earnings_move < 0",
"basis": "pattern"
}
},
"context": {
"symbol": "T",
"as_of": "2026-10-30"
}
}beat_revenue_last cut_last days_since_earnings eps_year_ago last_earnings_move last_eps
Bank credit analyst · example 12
Credit analyst: airline borrowers in one scan (DAL, UAL, AAL, LUV)
Airlines are cyclical, highly levered credits; compare their equity health side by side.
- State4 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"DAL"} then UAL, AAL, LUV, 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 |
below200 | English → rule | Is the stock below its 200-day moving average? |
hv | English → rule | Is 20-day historical volatility above 40%? |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Symbol | drawdownrule | below200rule | hvrule | drop10forecast | Fired |
|---|---|---|---|---|---|
DAL | 0.1364 | 0.1787 | 0.0965 | 0.54 | none |
UAL | 0.841 | 0.7368 | 0.834 | 0.614 | weakest |
AAL | 0.9447 | 0.8758 | 0.5434 | 0.648 | weakest |
LUV | 0.7627 | 0.688 | 0.2732 | 0.477 | weakest |
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 and below200 >= 0.6→Emailcredit-committee{
"subject": "Airline credit watch: UAL",
"text": "UAL (2026-10-30): 20% drawdown 84% and below the 200-day 74%. 10% drop odds 61%. Prioritise the review."
}{
"subject": "Airline credit watch: AAL",
"text": "AAL (2026-10-30): 20% drawdown 94% and below the 200-day 88%. 10% drop odds 65%. Prioritise the review."
}{
"subject": "Airline credit watch: LUV",
"text": "LUV (2026-10-30): 20% drawdown 76% and below the 200-day 69%. 10% drop odds 48%. Prioritise the review."
}What it means
Session of 2026-10-30, 4 symbols: More than 20% off the 52-week high: true for UAL, AAL, LUV of 4. Is the stock below its 200-day moving average: true for UAL, AAL, LUV of 4. Is 20-day historical volatility above 40%: true for UAL of 4. Highest odds for “A 10% drawdown within a month”: AAL at 65%. weakest fired for UAL, AAL, LUV.
The weakest equity in the group is usually the credit with the least headroom; it gets reviewed first.
Request JSON (DAL; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "DAL"
},
"questions": {
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"below200": {
"type": "yes_no",
"instructions": "Is the stock below its 200-day moving average?"
},
"hv": {
"type": "yes_no",
"instructions": "Is 20-day historical volatility above 40%?"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "weakest",
"when": "drawdown >= 0.6 and below200 >= 0.6",
"do": "email",
"connection": "credit-committee",
"subject": "Airline credit watch: {{symbol}}",
"message": "{{symbol}} ({{as_of}}): 20% drawdown {{drawdown|pct}} and below the 200-day {{below200|pct}}. 10% drop odds {{drop10|pct}}. Prioritise the review."
}
],
"dry_run": true
}Response JSON (DAL, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"drawdown": {
"yes_no": 0.1364,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"below200": {
"yes_no": 0.1787,
"rule": "C < sma(C, 200)",
"basis": "comparison"
},
"hv": {
"yes_no": 0.0965,
"rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4",
"basis": "pattern"
},
"drop10": {
"yes_no": 0.54
}
},
"context": {
"symbol": "DAL",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "weakest",
"fired": false,
"status": "skipped"
}
]
}Bank credit analyst · example 13
Credit analyst: is the bounce in INTC real or a dead-cat?
After a deep fall, check whether the rebound has structure: higher lows, a reclaimed average, reversal candles.
- StateINTC
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"INTC"} The server fills in the latest completed session.
Questions
bounce | English → rule | Has the stock bounced at least 5% off its 20-day low? |
higher_low | rule | swinglow(5, 1) > swinglow(5, 2)Latest swing low above the one before |
dragonfly | rule | dragonfly_doji()dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick. |
reclaim | rule | crossup(C, sma(C, 50))Crossed above the 50-day today |
still_bear | English → rule | Is the stock in bear-market territory, more than 20% below its 52-week high? |
rally10 | forecast | Will it rally at least 10% at some point in the next month? A 10% rally within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
bounceHas the stock bounced at least 5% off its 20-day low compiled to C >= min(L, 20) * 1.05 | 0.4628 | on the line (false) |
higher_lowLatest swing low above the one before | 0.4334 | on the line (false) |
dragonflydragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick. | 0.0927 | false |
reclaimCrossed above the 50-day today | 0.05 | false |
still_bearIs the stock in bear-market territory, more than 20% below its 52-week high compiled to C < 0.8 * max(H, 252) | 0.9463 | true |
rally10A 10% rally within a month | 0.871 | 87% · likely |
What it means
For INTC on the session of 2026-10-30: True now: Is the stock in bear-market territory, more than 20% below its 52-week high. Not true: dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.; Crossed above the 50-day today. On the line: Has the stock bounced at least 5% off its 20-day low; Latest swing low above the one before. Forecasts: A 10% rally within a month 87%.
A bounce without higher lows is weak evidence of recovery; credit views change on fundamentals, but the tape tells the analyst where the market stands.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "INTC"
},
"questions": {
"bounce": {
"type": "yes_no",
"instructions": "Has the stock bounced at least 5% off its 20-day low?"
},
"higher_low": {
"type": "yes_no",
"ask": "swinglow(5, 1) > swinglow(5, 2)"
},
"dragonfly": {
"type": "yes_no",
"ask": "dragonfly_doji()"
},
"reclaim": {
"type": "yes_no",
"ask": "crossup(C, sma(C, 50))"
},
"still_bear": {
"type": "yes_no",
"instructions": "Is the stock in bear-market territory, more than 20% below its 52-week high?"
},
"rally10": {
"type": "yes_no",
"instructions": "Will it rally at least 10% at some point in the next month?"
}
}
}Response JSON (INTC, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"bounce": {
"yes_no": 0.4628,
"rule": "C >= min(L, 20) * 1.05",
"basis": "pattern"
},
"higher_low": {
"yes_no": 0.4334,
"rule": "swinglow(5, 1) > swinglow(5, 2)",
"basis": "rule"
},
"dragonfly": {
"yes_no": 0.0927,
"rule": "dragonfly_doji()",
"basis": "rule"
},
"reclaim": {
"yes_no": 0.05,
"rule": "crossup(C, sma(C, 50))",
"basis": "rule"
},
"still_bear": {
"yes_no": 0.9463,
"rule": "C < 0.8 * max(H, 252)",
"basis": "pattern"
},
"rally10": {
"yes_no": 0.871
}
},
"context": {
"symbol": "INTC",
"as_of": "2026-10-30"
}
}Bank credit analyst · example 14
Credit analyst: earnings due for borrowers with quarterly covenants
Remind the portfolio team which borrowers report within two weeks, so covenant certificates are expected on time.
- State3 symbols
- Questions3 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"GM"} then F, DAL, one request each. The server fills in the latest completed session.
Questions
soon | English → rule | Is earnings in the next 14 days? |
bmo | English → rule | Does the stock report before the market opens next time? |
streak | English → rule | Has the stock missed EPS estimates in any of the last 4 quarters? |
Answers
| Symbol | soonrule | bmorule | streakrule | Fired |
|---|---|---|---|---|
GM | 0.0537 | 0.8591 | 0.1409 | none |
F | 0.0537 | 0.1409 | 0.55 | none |
DAL | 0.0537 | 0.8591 | 0.55 | 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.
soon >= 0.6→Emailportfolio-mgmtWhat it means
Session of 2026-10-30, 3 symbols: Is earnings in the next 14 days: true for none of 3. Does the stock report before the market opens next time: true for GM, DAL of 3. Has the stock missed EPS estimates in any of the last 4 quarters: true for none of 3. remind fired for none.
A calendar fact turned into a reminder; the certificate deadline itself comes from the credit agreement.
Request JSON (GM; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GM"
},
"questions": {
"soon": {
"type": "yes_no",
"instructions": "Is earnings in the next 14 days?"
},
"bmo": {
"type": "yes_no",
"instructions": "Does the stock report before the market opens next time?"
},
"streak": {
"type": "yes_no",
"instructions": "Has the stock missed EPS estimates in any of the last 4 quarters?"
}
},
"actions": [
{
"id": "remind",
"when": "soon >= 0.6",
"do": "email",
"connection": "portfolio-mgmt",
"subject": "{{symbol}} reports within 14 days",
"message": "{{symbol}} ({{as_of}}): next report within 14 days ({{soon|pct}}). Before the open {{bmo|pct}}. Missed in the last four quarters {{streak|pct}}. Expect the compliance certificate."
}
],
"dry_run": true
}Response JSON (GM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"soon": {
"yes_no": 0.0537,
"rule": "days_to_earnings <= 14",
"basis": "pattern"
},
"bmo": {
"yes_no": 0.8591,
"rule": "next_report_bmo > 0.5",
"basis": "pattern"
},
"streak": {
"yes_no": 0.1409,
"rule": "misses_last4 >= 1",
"basis": "pattern"
}
},
"context": {
"symbol": "GM",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "remind",
"fired": false,
"status": "skipped"
}
]
}Bank credit analyst · example 15
A Monday credit market note: HYG, JNK, LQD and bank stocks
Every Monday morning, the credit team gets one line per instrument with trend and drawdown odds.
- ScheduleMon at 08:00 ET
- State4 symbols
- Questions3 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"HYG"} then JNK, LQD, KRE, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day 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 | trendrule | down_monthrule | drop5forecast | Fired |
|---|---|---|---|---|
HYG | 0.1914 | 0.0537 | 0.009 | note |
JNK | 0.1742 | 0.0537 | 0.011 | note |
LQD | 0.6552 | 0.0537 | 0.022 | note |
KRE | 0.5119 | 0.0594 | 0.309 | note |
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.
trend >= 0→Slackcredit-desk{
"text": "HYG (2026-10-30): above 50-day 19%, down 5% on the month 5%, 5% drawdown odds 1%."
}{
"text": "JNK (2026-10-30): above 50-day 17%, down 5% on the month 5%, 5% drawdown odds 1%."
}{
"text": "LQD (2026-10-30): above 50-day 66%, down 5% on the month 5%, 5% drawdown odds 2%."
}{
"text": "KRE (2026-10-30): above 50-day 51%, down 5% on the month 6%, 5% drawdown odds 31%."
}What it means
Session of 2026-10-30, 4 symbols: Above the 50-day average: true for LQD of 4. Is the stock down more than 5% over the last month: true for none of 4. Highest odds for “A 5% drawdown within a month”: KRE at 31%. note fired for HYG, JNK, LQD, KRE.
A standing weekly note keeps the desk aligned on market conditions before pricing new facilities.
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": "A Monday credit market note: HYG, JNK, LQD and bank stocks",
"symbols": "HYG JNK LQD KRE",
"days": [
1
],
"at_time": "08:00",
"model": "ora-fin-0.1.1",
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"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": "note",
"when": "trend >= 0",
"do": "slack",
"connection": "credit-desk",
"message": "{{symbol}} ({{as_of}}): above 50-day {{trend|pct}}, down 5% on the month {{down_month|pct}}, 5% drawdown odds {{drop5|pct}}."
}
]
}Request JSON (HYG; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "HYG"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"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": "note",
"when": "trend >= 0",
"do": "slack",
"connection": "credit-desk",
"message": "{{symbol}} ({{as_of}}): above 50-day {{trend|pct}}, down 5% on the month {{down_month|pct}}, 5% drawdown odds {{drop5|pct}}."
}
],
"dry_run": true
}Response JSON (HYG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.1914,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"down_month": {
"yes_no": 0.0537,
"rule": "C / C[-21] - 1 < -0.05",
"basis": "pattern"
},
"drop5": {
"yes_no": 0.009
}
},
"context": {
"symbol": "HYG",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "note",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "credit-desk",
"preview": {
"text": "HYG (2026-10-30): above 50-day 19%, down 5% on the month 5%, 5% drawdown odds 1%."
}
}
]
}Bank credit analyst · example 16
Credit analyst: did media borrower DIS gap down on news, and did it hold?
Check a media borrower for a news gap down and whether it held the low of the day.
- StateDIS
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"DIS"} The server fills in the latest completed session.
Questions
gap | rule | O < L[-1]Opened below yesterday's low |
gap_pct | rule | O < C[-1] * 0.99Opened more than 1% below yesterday's close |
close_low | rule | (C - L) / (H - L) < 0.25Closed in the bottom quarter of the day's range |
least | rule | least(O, C) - L > 2 * abs(C - O)Long lower wick: more than twice the body |
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 |
|---|---|---|
gapOpened below yesterday's low | 0.0584 | false |
gap_pctOpened more than 1% below yesterday's close | 0.0537 | false |
close_lowClosed in the bottom quarter of the day's range | 0.7296 | true |
leastLong lower wick: more than twice the body | 0.1548 | false |
drop5A 5% drawdown within a month | 0.325 | 33% · unlikely |
What it means
For DIS on the session of 2026-10-30: True now: Closed in the bottom quarter of the day's range. Not true: Opened below yesterday's low; Opened more than 1% below yesterday's close; Long lower wick: more than twice the body. Forecasts: A 5% drawdown within a month 33%.
A gap down that closes near the low is the weaker signal; a long lower wick means buyers stepped in during the day.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "DIS"
},
"questions": {
"gap": {
"type": "yes_no",
"ask": "O < L[-1]"
},
"gap_pct": {
"type": "yes_no",
"ask": "O < C[-1] * 0.99"
},
"close_low": {
"type": "yes_no",
"ask": "(C - L) / (H - L) < 0.25"
},
"least": {
"type": "yes_no",
"ask": "least(O, C) - L > 2 * abs(C - O)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (DIS, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"gap": {
"yes_no": 0.0584,
"rule": "O < L[-1]",
"basis": "rule"
},
"gap_pct": {
"yes_no": 0.0537,
"rule": "O < C[-1] * 0.99",
"basis": "rule"
},
"close_low": {
"yes_no": 0.7296,
"rule": "(C - L) / (H - L) < 0.25",
"basis": "rule"
},
"least": {
"yes_no": 0.1548,
"rule": "least(O, C) - L > 2 * abs(C - O)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.325
}
},
"context": {
"symbol": "DIS",
"as_of": "2026-10-30"
}
}Bank credit analyst · example 17
Credit analyst: retail borrower TGT vs the retail sector (XRT)
Compare a large retail borrower with the retail ETF for stress around guidance season.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"TGT"} then XRT, one request each. The server fills in the latest completed session.
Questions
below200 | English → rule | Is the stock below its 200-day moving average? |
miss | English → rule | Did the stock miss EPS estimates last quarter? |
percent | rule | percentrank(C, 252) < 10Close in the bottom tenth of its one-year range |
shooting | rule | shooting_star()shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise. |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Symbol | below200rule | missrule | percentrule | shootingrule | drop10forecast |
|---|---|---|---|---|---|
TGT | 0.0596 | 0.1409 | 0.0537 | 0.0569 | 0.489 |
XRT | 0.115 | 0.50 | 0.0545 | 0.0738 | 0.32 |
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: Is the stock below its 200-day moving average: true for none of 2. Did the stock miss EPS estimates last quarter: true for none of 2. Close in the bottom tenth of its one-year range: true for none of 2. shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.: true for none of 2. Highest odds for “A 10% drawdown within a month”: TGT at 49%.
A borrower in the bottom of its one-year range while the sector is not points to company-specific trouble.
Request JSON (TGT; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TGT"
},
"questions": {
"below200": {
"type": "yes_no",
"instructions": "Is the stock below its 200-day moving average?"
},
"miss": {
"type": "yes_no",
"instructions": "Did the stock miss EPS estimates last quarter?"
},
"percent": {
"type": "yes_no",
"ask": "percentrank(C, 252) < 10"
},
"shooting": {
"type": "yes_no",
"ask": "shooting_star()"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
}
}Response JSON (TGT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"below200": {
"yes_no": 0.0596,
"rule": "C < sma(C, 200)",
"basis": "comparison"
},
"miss": {
"yes_no": 0.1409,
"rule": "miss_eps_last > 0.5",
"basis": "pattern"
},
"percent": {
"yes_no": 0.0537,
"rule": "percentrank(C, 252) < 10",
"basis": "rule"
},
"shooting": {
"yes_no": 0.0569,
"rule": "shooting_star()",
"basis": "rule"
},
"drop10": {
"yes_no": 0.489
}
},
"context": {
"symbol": "TGT",
"as_of": "2026-10-30"
}
}Bank credit analyst · example 18
Credit analyst: is VZ's high yield a warning sign?
An unusually high yield can mean the market doubts the dividend; pair it with trend and payout history.
- StateVZ
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"VZ"} The server fills in the latest completed session.
Questions
yield | rule | div_yield_ttm > 6Trailing yield above 6% |
raised | rule | raised_last > 0.5Raised its last dividend |
years | English → rule | Has the stock grown its dividend for 10 years in a row? |
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 |
|---|---|---|
yieldTrailing yield above 6% | 0.7708 | true |
raisedRaised its last dividend | 0.1409 | false |
yearsHas the stock grown its dividend for 10 years in a row compiled to years_of_growth >= 10 | 0.9463 | true |
trendIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.3448 | false |
raise_nextRaising the dividend next year | 0.442 | 44% · close to even |
What it means
For VZ on the session of 2026-10-30: True now: Trailing yield above 6%; Has the stock grown its dividend for 10 years in a row. Not true: Raised its last dividend; Is the stock above its 200-day moving average. Forecasts: Raising the dividend next year 44%.
A high yield with a continuing raise record and a recovering trend reads differently from a high yield on a falling stock.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VZ"
},
"questions": {
"yield": {
"type": "yes_no",
"ask": "div_yield_ttm > 6"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
},
"years": {
"type": "yes_no",
"instructions": "Has the stock grown its dividend for 10 years in a row?"
},
"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?"
}
}
}Response JSON (VZ, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"yield": {
"yes_no": 0.7708,
"rule": "div_yield_ttm > 6",
"basis": "rule"
},
"raised": {
"yes_no": 0.1409,
"rule": "raised_last > 0.5",
"basis": "rule"
},
"years": {
"yes_no": 0.9463,
"rule": "years_of_growth >= 10",
"basis": "pattern"
},
"trend": {
"yes_no": 0.3448,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"raise_next": {
"yes_no": 0.442
}
},
"context": {
"symbol": "VZ",
"as_of": "2026-10-30"
}
}Bank credit analyst · example 19
Credit analyst: leveraged loans (BKLN) vs high-yield bonds (HYG)
Floating-rate loans and fixed-rate junk bonds react differently to rates; compare their trends.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"BKLN"} then HYG, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
linreg | rule | linreg(C, 50) < ref(linreg(C, 50), -10)50-day regression line lower than two weeks ago |
tight | English → rule | Has the stock traded in a range of less than 5% over the last 10 sessions? |
vol_low | English → rule | Is 20-day historical volatility below 20%? |
down_week | forecast | Will the stock be lower in a week? Lower in a week |
Answers
| Symbol | trendrule | linregrule | tightrule | vol_lowrule | down_weekforecast |
|---|---|---|---|---|---|
BKLN | 0.9463 | 0.7678 | 0.9463 | 0.9463 | 0.434 |
HYG | 0.1909 | 0.803 | 0.9463 | 0.9463 | 0.425 |
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: Is the stock above its 200-day moving average: true for BKLN of 2. 50-day regression line lower than two weeks ago: true for BKLN, HYG of 2. Has the stock traded in a range of less than 5% over the last 10 sessions: true for BKLN, HYG of 2. Is 20-day historical volatility below 20%: true for BKLN, HYG of 2. Highest odds for “Lower in a week”: BKLN at 43%.
If loans weaken while bonds hold, the stress is in floating-rate borrowers, which matters for the bank's own loan book.
Request JSON (BKLN; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "BKLN"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"linreg": {
"type": "yes_no",
"ask": "linreg(C, 50) < ref(linreg(C, 50), -10)"
},
"tight": {
"type": "yes_no",
"instructions": "Has the stock traded in a range of less than 5% over the last 10 sessions?"
},
"vol_low": {
"type": "yes_no",
"instructions": "Is 20-day historical volatility below 20%?"
},
"down_week": {
"type": "yes_no",
"instructions": "Will the stock be lower in a week?"
}
}
}Response JSON (BKLN, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"linreg": {
"yes_no": 0.7678,
"rule": "linreg(C, 50) < ref(linreg(C, 50), -10)",
"basis": "rule"
},
"tight": {
"yes_no": 0.9463,
"rule": "max(H, 10) / min(L, 10) - 1 < 0.05",
"basis": "pattern"
},
"vol_low": {
"yes_no": 0.9463,
"rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
"basis": "pattern"
},
"down_week": {
"yes_no": 0.434
}
},
"context": {
"symbol": "BKLN",
"as_of": "2026-10-30"
}
}Bank credit analyst · example 20
Credit analyst: has the rally in GE topped out?
After a big rally in a borrower's equity, check for topping candles before relying on it as collateral value.
- StateGE
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GE"} The server fills in the latest completed session.
Questions
tweezer | rule | tweezer_top()tweezer top candle: Green then red, with highs within 0.1%. |
evening | English → rule | Is there an evening star on the last three candles? |
greatest | rule | H - greatest(O, C) > 2 * abs(C - O)Long upper wick: more than twice the body |
rsi70 | rule | rsi(C, 14) > 70RSI above 70 |
below_sh | rule | C < swinghigh(5, 2)Below the swing high before the latest one |
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 |
|---|---|---|
tweezertweezer top candle: Green then red, with highs within 0.1%. | 0.3781 | false |
eveningIs there an evening star on the last three candles compiled to evening_star() | 0.0553 | false |
greatestLong upper wick: more than twice the body | 0.0741 | false |
rsi70RSI above 70 | 0.0537 | false |
below_shBelow the swing high before the latest one | 0.8446 | true |
drop5A 5% drawdown within a month | 0.534 | 53% · close to even |
What it means
For GE on the session of 2026-10-30: True now: Below the swing high before the latest one. Not true: tweezer top candle: Green then red, with highs within 0.1%.; Is there an evening star on the last three candles; Long upper wick: more than twice the body; RSI above 70. Forecasts: A 5% drawdown within a month 53%.
Topping candles after a big rally are a reason to haircut equity collateral conservatively, not to call a top.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GE"
},
"questions": {
"tweezer": {
"type": "yes_no",
"ask": "tweezer_top()"
},
"evening": {
"type": "yes_no",
"instructions": "Is there an evening star on the last three candles?"
},
"greatest": {
"type": "yes_no",
"ask": "H - greatest(O, C) > 2 * abs(C - O)"
},
"rsi70": {
"type": "yes_no",
"ask": "rsi(C, 14) > 70"
},
"below_sh": {
"type": "yes_no",
"ask": "C < swinghigh(5, 2)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (GE, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"tweezer": {
"yes_no": 0.3781,
"rule": "tweezer_top()",
"basis": "rule"
},
"evening": {
"yes_no": 0.0553,
"rule": "evening_star()",
"basis": "pattern"
},
"greatest": {
"yes_no": 0.0741,
"rule": "H - greatest(O, C) > 2 * abs(C - O)",
"basis": "rule"
},
"rsi70": {
"yes_no": 0.0537,
"rule": "rsi(C, 14) > 70",
"basis": "rule"
},
"below_sh": {
"yes_no": 0.8446,
"rule": "C < swinghigh(5, 2)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.534
}
},
"context": {
"symbol": "GE",
"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 Corporates: Investor relations team, Corporate treasury, CFO office, Financial journalist / media.