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 · 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.

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 (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.

ora-fin-0.1.1T6 questions
  1. StateT
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

recentruledays_since_earnings <= 5
Reported in the last 5 days
rev_missEnglish → ruleDid revenue beat estimates last quarter?
eps_posEnglish → ruleWas EPS positive last quarter?
eps_yoyEnglish → ruleIs EPS up year over year?
no_cutrulecut_last < 0.5
Did not cut its last dividend
fellEnglish → ruleDid the stock fall after its last earnings report?

Answers

QuestionAnswerReading
recent
Reported in the last 5 days
0.1033false
rev_miss
Did revenue beat estimates last quarter
compiled to beat_revenue_last > 0.5
0.8591true
eps_pos
Was EPS positive last quarter
compiled to last_eps > 0
0.9463true
eps_yoy
Is EPS up year over year
compiled to last_eps > eps_year_ago
0.9463true
no_cut
Did not cut its last dividend
0.8591true
fell
Did the stock fall after its last earnings report
compiled to last_earnings_move < 0
0.9463true

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.

ora-fin-0.1.14 symbols, one request each4 questions1 action
  1. State4 symbols
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

{"symbol":"DAL"} then UAL, AAL, LUV, one request each. The server fills in the latest completed session.

Questions

drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
below200English → ruleIs the stock below its 200-day moving average?
hvEnglish → ruleIs 20-day historical volatility above 40%?
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

Symboldrawdownrulebelow200rulehvruledrop10forecastFired
DAL0.13640.17870.09650.54none
UAL0.8410.73680.8340.614weakest
AAL0.94470.87580.54340.648weakest
LUV0.76270.6880.27320.477weakest

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
DAL 0 of 1 fired · dry run, nothing sent
UAL 1 of 1 fired · dry run, nothing sent
weakestwould send (dry run)Email → credit-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."
}
AAL 1 of 1 fired · dry run, nothing sent
weakestwould send (dry run)Email → credit-committee
{
  "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."
}
LUV 1 of 1 fired · dry run, nothing sent
weakestwould send (dry run)Email → credit-committee
{
  "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"
    }
  ]
}

log max offset sma sqrt std

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.

ora-fin-0.1.1INTC6 questions
  1. StateINTC
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

bounceEnglish → ruleHas the stock bounced at least 5% off its 20-day low?
higher_lowruleswinglow(5, 1) > swinglow(5, 2)
Latest swing low above the one before
dragonflyruledragonfly_doji()
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
reclaimrulecrossup(C, sma(C, 50))
Crossed above the 50-day today
still_bearEnglish → ruleIs the stock in bear-market territory, more than 20% below its 52-week high?
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month

Answers

QuestionAnswerReading
bounce
Has the stock bounced at least 5% off its 20-day low
compiled to C >= min(L, 20) * 1.05
0.4628on the line (false)
higher_low
Latest swing low above the one before
0.4334on the line (false)
dragonfly
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
0.0927false
reclaim
Crossed above the 50-day today
0.05false
still_bear
Is the stock in bear-market territory, more than 20% below its 52-week high
compiled to C < 0.8 * max(H, 252)
0.9463true
rally10
A 10% rally within a month
0.87187% · 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"
  }
}

crossup dragonfly_doji max min sma swinglow

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.

ora-fin-0.1.13 symbols, one request each3 questions1 action
  1. State3 symbols
  2. Questions3 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

{"symbol":"GM"} then F, DAL, one request each. The server fills in the latest completed session.

Questions

soonEnglish → ruleIs earnings in the next 14 days?
bmoEnglish → ruleDoes the stock report before the market opens next time?
streakEnglish → ruleHas the stock missed EPS estimates in any of the last 4 quarters?

Answers

SymbolsoonrulebmorulestreakruleFired
GM0.05370.85910.1409none
F0.05370.14090.55none
DAL0.05370.85910.55none

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-mgmt
GM 0 of 1 fired · dry run, nothing sent
F 0 of 1 fired · dry run, nothing sent
DAL 0 of 1 fired · dry run, nothing sent

What 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"
    }
  ]
}

days_to_earnings misses_last4 next_report_bmo

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.

ora-fin-0.1.14 symbols, one request each3 questions1 actionworkflow · Mon at 08:00 ET
  1. ScheduleMon at 08:00 ET
  2. State4 symbols
  3. Questions3 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"HYG"} then JNK, LQD, KRE, one request each. The server fills in the latest completed session.

Questions

trendruleC > sma(C, 50)
Above the 50-day average
down_monthEnglish → ruleIs the stock down more than 5% over the last month?
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symboltrendruledown_monthruledrop5forecastFired
HYG0.19140.05370.009note
JNK0.17420.05370.011note
LQD0.65520.05370.022note
KRE0.51190.05940.309note

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
HYG 1 of 1 fired · dry run, nothing sent
notewould send (dry run)Slack → credit-desk
{
  "text": "HYG (2026-10-30): above 50-day 19%, down 5% on the month 5%, 5% drawdown odds 1%."
}
JNK 1 of 1 fired · dry run, nothing sent
notewould send (dry run)Slack → credit-desk
{
  "text": "JNK (2026-10-30): above 50-day 17%, down 5% on the month 5%, 5% drawdown odds 1%."
}
LQD 1 of 1 fired · dry run, nothing sent
notewould send (dry run)Slack → credit-desk
{
  "text": "LQD (2026-10-30): above 50-day 66%, down 5% on the month 5%, 5% drawdown odds 2%."
}
KRE 1 of 1 fired · dry run, nothing sent
notewould send (dry run)Slack → credit-desk
{
  "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%."
      }
    }
  ]
}

offset sma

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.

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

State

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

Questions

gapruleO < L[-1]
Opened below yesterday's low
gap_pctruleO < C[-1] * 0.99
Opened more than 1% below yesterday's close
close_lowrule(C - L) / (H - L) < 0.25
Closed in the bottom quarter of the day's range
leastruleleast(O, C) - L > 2 * abs(C - O)
Long lower wick: more than twice the body
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
gap
Opened below yesterday's low
0.0584false
gap_pct
Opened more than 1% below yesterday's close
0.0537false
close_low
Closed in the bottom quarter of the day's range
0.7296true
least
Long lower wick: more than twice the body
0.1548false
drop5
A 5% drawdown within a month
0.32533% · 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"
  }
}

abs least offset

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.

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

State

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

Questions

below200English → ruleIs the stock below its 200-day moving average?
missEnglish → ruleDid the stock miss EPS estimates last quarter?
percentrulepercentrank(C, 252) < 10
Close in the bottom tenth of its one-year range
shootingruleshooting_star()
shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

Symbolbelow200rulemissrulepercentruleshootingruledrop10forecast
TGT0.05960.14090.05370.05690.489
XRT0.1150.500.05450.07380.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"
  }
}

miss_eps_last percentrank shooting_star sma

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.

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

yieldrulediv_yield_ttm > 6
Trailing yield above 6%
raisedruleraised_last > 0.5
Raised its last dividend
yearsEnglish → ruleHas the stock grown its dividend for 10 years in a row?
trendEnglish → ruleIs the stock above its 200-day moving average?
raise_nextforecastWill the company raise its dividend next year?
Raising the dividend next year

Answers

QuestionAnswerReading
yield
Trailing yield above 6%
0.7708true
raised
Raised its last dividend
0.1409false
years
Has the stock grown its dividend for 10 years in a row
compiled to years_of_growth >= 10
0.9463true
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.3448false
raise_next
Raising the dividend next year
0.44244% · 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"
  }
}

div_yield_ttm raised_last sma years_of_growth

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.

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

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
linregrulelinreg(C, 50) < ref(linreg(C, 50), -10)
50-day regression line lower than two weeks ago
tightEnglish → ruleHas the stock traded in a range of less than 5% over the last 10 sessions?
vol_lowEnglish → ruleIs 20-day historical volatility below 20%?
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

Symboltrendrulelinregruletightrulevol_lowruledown_weekforecast
BKLN0.94630.76780.94630.94630.434
HYG0.19090.8030.94630.94630.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"
  }
}

linreg log max min offset ref sma sqrt std

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.

ora-fin-0.1.1GE6 questions
  1. StateGE
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

tweezerruletweezer_top()
tweezer top candle: Green then red, with highs within 0.1%.
eveningEnglish → ruleIs there an evening star on the last three candles?
greatestruleH - greatest(O, C) > 2 * abs(C - O)
Long upper wick: more than twice the body
rsi70rulersi(C, 14) > 70
RSI above 70
below_shruleC < swinghigh(5, 2)
Below the swing high before the latest one
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
tweezer
tweezer top candle: Green then red, with highs within 0.1%.
0.3781false
evening
Is there an evening star on the last three candles
compiled to evening_star()
0.0553false
greatest
Long upper wick: more than twice the body
0.0741false
rsi70
RSI above 70
0.0537false
below_sh
Below the swing high before the latest one
0.8446true
drop5
A 5% drawdown within a month
0.53453% · 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"
  }
}

abs evening_star greatest rsi swinghigh tweezer_top

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.

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