Use cases · Corporates
Corporate treasury: 20 ways to use Ora
Cash, hedges and buybacks: rates and dollar ETFs, own-stock levels and counterparty checks. Each example is a complete, runnable request with the real answers it returned (42 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 (51)
sma 13offset 8ref 5atr 4max 4lowest 4log 3sqrt 3std 3rsi 3avg 3swinglow 2ema 2zscore 2adx 2days_to_earnings 2highest 2macd 1swinghigh 1roc 1between 1crossup 1stochd 1stochk 1bblower 1mean 1rma 1abs 1atr_pct 1highestbars 1bbupper 1diminus 1diplus 1marubozu 1three_white_soldiers 1days_since_earnings 1next_report_bmo 1days_to_ex_div 1div_ttm 1last_div_amount 1next_div_amount 1raised_last 1tr 1percentrank 1willr 1cut_last 1miss_eps_last 1three_black_crows 1hl2 1obv 1ohlc4 1
Examples 11–20 of 20 · page 2 of 2
Corporate treasury · example 11
Treasury: will falling rates hurt our pension funding (TLT rally)?
Corporate pension liabilities rise when long rates fall; check whether long bonds are breaking out.
- StateTLT
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"TLT"} The server fills in the latest completed session.
Questions
breakout | rule | C > highest(C, 20)20-day closing breakout |
donchian | rule | C > highest(C, 55)55-day closing breakout |
high_bars | rule | highestbars(C, 55) <= 3The 55-day closing high is at most 3 sessions old |
rsi | rule | rsi(C, 14) > 50RSI above 50 |
rally5 | forecast | Will it rally at least 5% at some point in the next month? A 5% rally within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
breakout20-day closing breakout | 0.5462 | on the line (true) |
donchian55-day closing breakout | 0.1178 | false |
high_barsThe 55-day closing high is at most 3 sessions old | 0.0537 | false |
rsiRSI above 50 | 0.8762 | true |
rally5A 5% rally within a month | 0.165 | 17% · unlikely |
What it means
For TLT on the session of 2026-10-30: True now: RSI above 50. Not true: 55-day closing breakout; The 55-day closing high is at most 3 sessions old. On the line: 20-day closing breakout. Forecasts: A 5% rally within a month 17%.
A long-bond breakout means falling long rates; the pension committee hears about it before the next funding review.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TLT"
},
"questions": {
"breakout": {
"type": "yes_no",
"ask": "C > highest(C, 20)"
},
"donchian": {
"type": "yes_no",
"ask": "C > highest(C, 55)"
},
"high_bars": {
"type": "yes_no",
"ask": "highestbars(C, 55) <= 3"
},
"rsi": {
"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 (TLT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"breakout": {
"yes_no": 0.5462,
"rule": "C > highest(C, 20)",
"basis": "rule"
},
"donchian": {
"yes_no": 0.1178,
"rule": "C > highest(C, 55)",
"basis": "rule"
},
"high_bars": {
"yes_no": 0.0537,
"rule": "highestbars(C, 55) <= 3",
"basis": "rule"
},
"rsi": {
"yes_no": 0.8762,
"rule": "rsi(C, 14) > 50",
"basis": "rule"
},
"rally5": {
"yes_no": 0.165
}
},
"context": {
"symbol": "TLT",
"as_of": "2026-10-30"
}
}Corporate treasury · example 12
Treasury at DAL: is jet fuel (USO) breaking higher?
An airline treasury watches crude through USO to time fuel hedges.
- StateUSO
- Questions6 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"USO"} The server fills in the latest completed session.
Questions
breakout | rule | C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)20-day breakout on 1.5× volume |
above_band | rule | C > bbupper(C, 20, 2)Closed above the upper Bollinger band |
white | rule | three_white_soldiers()three white soldiers candle: Three green bars, each closing higher and opening inside the previous body. |
marubozu | rule | marubozu()marubozu candle: Body at least 90% of the range: almost no wicks. |
trend | rule | adx(14) > 20 and diplus(14) > diminus(14)Trending up (ADX over 20 and +DI over −DI) |
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 |
|---|---|---|
breakout20-day breakout on 1.5× volume | 0.1578 | false |
above_bandClosed above the upper Bollinger band | 0.1634 | false |
whitethree white soldiers candle: Three green bars, each closing higher and opening inside the previous body. | 0.1947 | false |
marubozumarubozu candle: Body at least 90% of the range: almost no wicks. | 0.0717 | false |
trendTrending up (ADX over 20 and +DI over −DI) | 0.922 | true |
rally10A 10% rally within a month | 0.658 | 66% · likely |
Actions
Rules on the answers decide what to send.
breakout >= 0.6 or rally10 >= 0.5→Webhooktms{
"event": "fuel_hedge_review",
"proxy": "USO",
"as_of": "2026-10-30",
"p_breakout": 0.1578,
"p_rally10": 0.658
}What it means
For USO on the session of 2026-10-30: True now: Trending up (ADX over 20 and +DI over −DI). Not true: 20-day breakout on 1.5× volume; Closed above the upper Bollinger band; three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.; marubozu candle: Body at least 90% of the range: almost no wicks.. Forecasts: A 10% rally within a month 66%. Fired: hedge_review (Webhook → tms).
A breakout or high rally odds trigger a review in the treasury system; the hedge ratio itself stays inside policy.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "USO"
},
"questions": {
"breakout": {
"type": "yes_no",
"ask": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)"
},
"above_band": {
"type": "yes_no",
"ask": "C > bbupper(C, 20, 2)"
},
"white": {
"type": "yes_no",
"ask": "three_white_soldiers()"
},
"marubozu": {
"type": "yes_no",
"ask": "marubozu()"
},
"trend": {
"type": "yes_no",
"ask": "adx(14) > 20 and diplus(14) > diminus(14)"
},
"rally10": {
"type": "yes_no",
"instructions": "Will it rally at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "hedge_review",
"when": "breakout >= 0.6 or rally10 >= 0.5",
"do": "webhook",
"connection": "tms",
"body": {
"event": "fuel_hedge_review",
"proxy": "{{symbol}}",
"as_of": "{{as_of}}",
"p_breakout": "{{breakout}}",
"p_rally10": "{{rally10}}"
}
}
],
"dry_run": true
}Response JSON (USO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"breakout": {
"yes_no": 0.1578,
"rule": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)",
"basis": "rule"
},
"above_band": {
"yes_no": 0.1634,
"rule": "C > bbupper(C, 20, 2)",
"basis": "rule"
},
"white": {
"yes_no": 0.1947,
"rule": "three_white_soldiers()",
"basis": "rule"
},
"marubozu": {
"yes_no": 0.0717,
"rule": "marubozu()",
"basis": "rule"
},
"trend": {
"yes_no": 0.922,
"rule": "adx(14) > 20 and diplus(14) > diminus(14)",
"basis": "rule"
},
"rally10": {
"yes_no": 0.658
}
},
"context": {
"symbol": "USO",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "hedge_review",
"fired": true,
"status": "dry_run",
"do": "webhook",
"connection": "tms",
"preview": {
"body": {
"event": "fuel_hedge_review",
"proxy": "USO",
"as_of": "2026-10-30",
"p_breakout": 0.1578,
"p_rally10": 0.658
}
}
}
]
}adx avg bbupper diminus diplus highest marubozu ref three_white_soldiers
Corporate treasury · example 13
Treasury at WMT: are we near the earnings blackout?
Check the report date so repurchase and insider-plan windows line up with the calendar.
- StateWMT
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"WMT"} The server fills in the latest completed session.
Questions
soon | English → rule | Is earnings in the next 14 days? |
far | English → rule | Is the next earnings report more than 10 days away? |
recent | English → rule | Did the stock report earnings in the last 7 days? |
bmo | English → rule | Does the stock report before the market opens next time? |
Answers
| Question | Answer | Reading |
|---|---|---|
soonIs earnings in the next 14 days compiled to days_to_earnings <= 14 | 0.0683 | false |
farIs the next earnings report more than 10 days away compiled to days_to_earnings > 10 | 0.9463 | true |
recentDid the stock report earnings in the last 7 days compiled to days_since_earnings <= 7 | 0.0537 | false |
bmoDoes the stock report before the market opens next time compiled to next_report_bmo > 0.5 | 0.8591 | true |
Actions
Rules on the answers decide what to send.
soon >= 0.6→Emailtreasury-opselse→Slacktreasury{
"text": "WMT (2026-10-30): next report more than 14 days out. Window open per policy."
}What it means
For WMT on the session of 2026-10-30: True now: Is the next earnings report more than 10 days away; Does the stock report before the market opens next time. Not true: Is earnings in the next 14 days; Did the stock report earnings in the last 7 days. Fired: open (Slack → treasury).
These are calendar facts; legal still decides the window, but the reminder arrives on time.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "WMT"
},
"questions": {
"soon": {
"type": "yes_no",
"instructions": "Is earnings in the next 14 days?"
},
"far": {
"type": "yes_no",
"instructions": "Is the next earnings report more than 10 days away?"
},
"recent": {
"type": "yes_no",
"instructions": "Did the stock report earnings in the last 7 days?"
},
"bmo": {
"type": "yes_no",
"instructions": "Does the stock report before the market opens next time?"
}
},
"actions": [
{
"id": "blackout",
"when": "soon >= 0.6",
"do": "email",
"connection": "treasury-ops",
"subject": "{{symbol}}: earnings within 14 days",
"message": "{{symbol}} ({{as_of}}): next report within 14 days ({{soon|pct}}). Confirm discretionary buyback windows with legal."
},
{
"id": "open",
"when": "else",
"do": "slack",
"connection": "treasury",
"message": "{{symbol}} ({{as_of}}): next report more than 14 days out. Window open per policy."
}
],
"dry_run": true
}Response JSON (WMT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"soon": {
"yes_no": 0.0683,
"rule": "days_to_earnings <= 14",
"basis": "pattern"
},
"far": {
"yes_no": 0.9463,
"rule": "days_to_earnings > 10",
"basis": "pattern"
},
"recent": {
"yes_no": 0.0537,
"rule": "days_since_earnings <= 7",
"basis": "pattern"
},
"bmo": {
"yes_no": 0.8591,
"rule": "next_report_bmo > 0.5",
"basis": "pattern"
}
},
"context": {
"symbol": "WMT",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "blackout",
"fired": false,
"status": "skipped"
},
{
"id": "open",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "treasury",
"preview": {
"text": "WMT (2026-10-30): next report more than 14 days out. Window open per policy."
}
}
]
}Corporate treasury · example 14
Treasury at PG: confirm the dividend cash call
Check the declared ex-date and whether the next payment is larger, to line up cash for the payment date.
- StatePG
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"PG"} The server fills in the latest completed session.
Questions
ex_soon | rule | days_to_ex_div <= 30Goes ex-dividend within 30 days |
next_up | English → rule | Is the next declared dividend larger than the last one? |
div_ttm | English → rule | Has the stock paid more than $2 per share in dividends over the past year? |
raised | rule | raised_last > 0.5Raised its last dividend |
Answers
| Question | Answer | Reading |
|---|---|---|
ex_soonGoes ex-dividend within 30 days | 0.0537 | false |
next_upIs the next declared dividend larger than the last one compiled to next_div_amount > last_div_amount | 0.50 | not known |
div_ttmHas the stock paid more than $2 per share in dividends over the past year compiled to div_ttm > 2 | 0.9463 | true |
raisedRaised its last dividend | 0.1409 | false |
What it means
For PG 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: Goes ex-dividend within 30 days; Raised its last dividend. Not known (no data on record): Is the next declared dividend larger than the last one.
A declared ex-date tells treasury a payment is coming within weeks; the amount comes from the board declaration, which the next_div_amount fact reflects.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "PG"
},
"questions": {
"ex_soon": {
"type": "yes_no",
"ask": "days_to_ex_div <= 30"
},
"next_up": {
"type": "yes_no",
"instructions": "Is the next declared dividend larger than the last one?"
},
"div_ttm": {
"type": "yes_no",
"instructions": "Has the stock paid more than $2 per share in dividends over the past year?"
},
"raised": {
"type": "yes_no",
"ask": "raised_last > 0.5"
}
}
}Response JSON (PG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"ex_soon": {
"yes_no": 0.0537,
"rule": "days_to_ex_div <= 30",
"basis": "rule"
},
"next_up": {
"yes_no": 0.5,
"rule": "next_div_amount > last_div_amount",
"basis": "pattern"
},
"div_ttm": {
"yes_no": 0.9463,
"rule": "div_ttm > 2",
"basis": "pattern"
},
"raised": {
"yes_no": 0.1409,
"rule": "raised_last > 0.5",
"basis": "rule"
}
},
"context": {
"symbol": "PG",
"as_of": "2026-10-30"
}
}days_to_ex_div div_ttm last_div_amount next_div_amount raised_last
Corporate treasury · example 15
Treasury: is gold (GLD, IAU) trending as a reserve hedge?
A treasury with a small gold sleeve checks the trend and stretch of the two gold ETFs it can use.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GLD"} then IAU, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
ext | English → rule | Is the stock more than 10% above its 200-day moving average? |
zscore | rule | zscore(C, 50) > 2More than two standard deviations above its 50-day mean |
rsi70 | rule | rsi(C, 14) > 70RSI above 70 |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | trendrule | extrule | zscorerule | rsi70rule | drop5forecast |
|---|---|---|---|---|---|
GLD | 0.0537 | 0.0537 | 0.0538 | 0.0537 | 0.435 |
IAU | 0.0537 | 0.0537 | 0.0538 | 0.0537 | 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 none of 2. Is the stock more than 10% above its 200-day moving average: true for none of 2. More than two standard deviations above its 50-day mean: true for none of 2. RSI above 70: true for none of 2. Highest odds for “A 5% drawdown within a month”: GLD at 44%.
A stretched trend is a reason to add slowly rather than all at once; both ETFs should read the same, which also checks the data.
Request JSON (GLD; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"ext": {
"type": "yes_no",
"instructions": "Is the stock more than 10% above its 200-day moving average?"
},
"zscore": {
"type": "yes_no",
"ask": "zscore(C, 50) > 2"
},
"rsi70": {
"type": "yes_no",
"ask": "rsi(C, 14) > 70"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.0537,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"ext": {
"yes_no": 0.0537,
"rule": "C > sma(C, 200) * 1.1",
"basis": "comparison"
},
"zscore": {
"yes_no": 0.0538,
"rule": "zscore(C, 50) > 2",
"basis": "rule"
},
"rsi70": {
"yes_no": 0.0537,
"rule": "rsi(C, 14) > 70",
"basis": "rule"
},
"drop5": {
"yes_no": 0.435
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
}
}Corporate treasury · example 16
Treasury: emerging-market exposure through EEM and EWZ
A company with Brazilian and EM revenue watches local equity funds as a proxy for currency and macro stress.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"EEM"} then EWZ, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
breakdown | rule | C < lowest(L, 20)Closed under the 20-day low |
gap_down | rule | O < C[-1] * 0.99Opened more than 1% below yesterday's close |
tr | rule | tr() > 2 * atr(14)True range more than twice the 14-day ATR |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Symbol | trendrule | breakdownrule | gap_downrule | trrule | drop10forecast | Fired |
|---|---|---|---|---|---|---|
EEM | 0.0611 | 0.5678 | 0.875 | 0.3269 | 0.422 | none |
EWZ | 0.0671 | 0.2755 | 0.6301 | 0.0851 | 0.508 | 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.
breakdown >= 0.6 or tr >= 0.6→Webhookteams-treasuryWhat it means
Session of 2026-10-30, 2 symbols: Above the 50-day average: true for none of 2. Closed under the 20-day low: true for none of 2. Opened more than 1% below yesterday's close: true for EEM, EWZ of 2. True range more than twice the 14-day ATR: true for none of 2. Highest odds for “A 10% drawdown within a month”: EWZ at 51%. em_stress fired for none.
A wide-range breakdown in a country fund is an early sign of currency stress; treasury checks hedge coverage for that revenue.
Request JSON (EEM; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "EEM"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"breakdown": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"gap_down": {
"type": "yes_no",
"ask": "O < C[-1] * 0.99"
},
"tr": {
"type": "yes_no",
"ask": "tr() > 2 * atr(14)"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "em_stress",
"when": "breakdown >= 0.6 or tr >= 0.6",
"do": "webhook",
"connection": "teams-treasury",
"body": {
"text": "{{symbol}} ({{as_of}}): EM stress check. Breakdown {{breakdown|pct}}, wide range {{tr|pct}}, 10% drop odds {{drop10|pct}}."
}
}
],
"dry_run": true
}Response JSON (EEM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.0611,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"breakdown": {
"yes_no": 0.5678,
"rule": "C < lowest(L, 20)",
"basis": "rule"
},
"gap_down": {
"yes_no": 0.875,
"rule": "O < C[-1] * 0.99",
"basis": "rule"
},
"tr": {
"yes_no": 0.3269,
"rule": "tr() > 2 * atr(14)",
"basis": "rule"
},
"drop10": {
"yes_no": 0.422
}
},
"context": {
"symbol": "EEM",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "em_stress",
"fired": false,
"status": "skipped"
}
]
}Corporate treasury · example 17
A Monday rates memo for the CFO
Every Monday, treasury emails a short read on the Treasury curve ETFs and inflation-linked bonds.
- ScheduleMon at 07:30 ET
- State4 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"SHY"} then IEF, TLT, TIP, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 50-day moving average? |
down_month | English → rule | Is the stock down more than 5% over the last month? |
sma50_falling | English → rule | Is the 50-day moving average falling, lower than 5 sessions ago? |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Symbol | trendrule | down_monthrule | sma50_fallingrule | up_weekforecast | Fired |
|---|---|---|---|---|---|
SHY | 0.8971 | 0.0537 | 0.8235 | 0.594 | memo_line |
IEF | 0.8514 | 0.0537 | 0.894 | 0.483 | memo_line |
TLT | 0.8482 | 0.0537 | 0.7064 | 0.561 | memo_line |
TIP | 0.8649 | 0.0537 | 0.8356 | 0.567 | memo_line |
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→Emailcfo{
"subject": "Rates memo: SHY (2026-10-30)",
"text": "SHY: above the 50-day 90%, 50-day falling 82%, down 5% on the month 5%. Higher in a week (forecast) 59%."
}{
"subject": "Rates memo: IEF (2026-10-30)",
"text": "IEF: above the 50-day 85%, 50-day falling 89%, down 5% on the month 5%. Higher in a week (forecast) 48%."
}{
"subject": "Rates memo: TLT (2026-10-30)",
"text": "TLT: above the 50-day 85%, 50-day falling 71%, down 5% on the month 5%. Higher in a week (forecast) 56%."
}{
"subject": "Rates memo: TIP (2026-10-30)",
"text": "TIP: above the 50-day 86%, 50-day falling 84%, down 5% on the month 5%. Higher in a week (forecast) 57%."
}What it means
Session of 2026-10-30, 4 symbols: Is the stock above its 50-day moving average: true for SHY, IEF, TLT, TIP of 4. Is the stock down more than 5% over the last month: true for none of 4. Is the 50-day moving average falling, lower than 5 sessions ago: true for SHY, IEF, TLT, TIP of 4. Highest odds for “Higher in a week”: SHY at 59%. memo_line fired for SHY, IEF, TLT, TIP.
Every instrument gets a line every week, so the CFO sees the curve even when nothing dramatic happened.
As a scheduled workflow (Mon at 07:30 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 rates memo for the CFO",
"symbols": "SHY IEF TLT TIP",
"days": [
1
],
"at_time": "07:30",
"model": "ora-fin-0.1.1",
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 50-day moving average?"
},
"down_month": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"sma50_falling": {
"type": "yes_no",
"instructions": "Is the 50-day moving average falling, lower than 5 sessions ago?"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "memo_line",
"when": "trend >= 0",
"do": "email",
"connection": "cfo",
"subject": "Rates memo: {{symbol}} ({{as_of}})",
"message": "{{symbol}}: above the 50-day {{trend|pct}}, 50-day falling {{sma50_falling|pct}}, down 5% on the month {{down_month|pct}}. Higher in a week (forecast) {{up_week|pct}}."
}
]
}Request JSON (SHY; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SHY"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 50-day moving average?"
},
"down_month": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"sma50_falling": {
"type": "yes_no",
"instructions": "Is the 50-day moving average falling, lower than 5 sessions ago?"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "memo_line",
"when": "trend >= 0",
"do": "email",
"connection": "cfo",
"subject": "Rates memo: {{symbol}} ({{as_of}})",
"message": "{{symbol}}: above the 50-day {{trend|pct}}, 50-day falling {{sma50_falling|pct}}, down 5% on the month {{down_month|pct}}. Higher in a week (forecast) {{up_week|pct}}."
}
],
"dry_run": true
}Response JSON (SHY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.8971,
"rule": "C > sma(C, 50)",
"basis": "comparison"
},
"down_month": {
"yes_no": 0.0537,
"rule": "C / C[-21] - 1 < -0.05",
"basis": "pattern"
},
"sma50_falling": {
"yes_no": 0.8235,
"rule": "sma(C, 50) < ref(sma(C, 50), -5)",
"basis": "pattern"
},
"up_week": {
"yes_no": 0.594
}
},
"context": {
"symbol": "SHY",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "memo_line",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "cfo",
"preview": {
"subject": "Rates memo: SHY (2026-10-30)",
"text": "SHY: above the 50-day 90%, 50-day falling 82%, down 5% on the month 5%. Higher in a week (forecast) 59%."
}
}
]
}Corporate treasury · example 18
Treasury: short-duration credit (LQD vs SHY) spread check
Compare investment-grade credit with short Treasuries to sense whether funding spreads are widening.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"LQD"} then SHY, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
lowest | rule | C < lowest(C, 10)Closed under every close of the last ten sessions |
willr | rule | willr(14) < -80Williams %R below -80 |
percent | rule | percentrank(C, 50) < 10Close in the bottom tenth of its 50-day range |
down_week | forecast | Will the stock be lower in a week? Lower in a week |
Answers
| Symbol | trendrule | lowestrule | willrrule | percentrule | down_weekforecast |
|---|---|---|---|---|---|
LQD | 0.6552 | 0.0636 | 0.0635 | 0.0605 | 0.476 |
SHY | 0.8971 | 0.0537 | 0.0624 | 0.0626 | 0.481 |
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: Above the 50-day average: true for LQD, SHY of 2. Closed under every close of the last ten sessions: true for none of 2. Williams %R below -80: true for none of 2. Close in the bottom tenth of its 50-day range: true for none of 2. Highest odds for “Lower in a week”: SHY at 48%.
If LQD is weak while SHY is steady, credit spreads are widening; the team may draw on cheaper facilities first.
Request JSON (LQD; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "LQD"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"lowest": {
"type": "yes_no",
"ask": "C < lowest(C, 10)"
},
"willr": {
"type": "yes_no",
"ask": "willr(14) < -80"
},
"percent": {
"type": "yes_no",
"ask": "percentrank(C, 50) < 10"
},
"down_week": {
"type": "yes_no",
"instructions": "Will the stock be lower in a week?"
}
}
}Response JSON (LQD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.6552,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"lowest": {
"yes_no": 0.0636,
"rule": "C < lowest(C, 10)",
"basis": "rule"
},
"willr": {
"yes_no": 0.0635,
"rule": "willr(14) < -80",
"basis": "rule"
},
"percent": {
"yes_no": 0.0605,
"rule": "percentrank(C, 50) < 10",
"basis": "rule"
},
"down_week": {
"yes_no": 0.476
}
},
"context": {
"symbol": "LQD",
"as_of": "2026-10-30"
}
}Corporate treasury · example 19
Treasury: key supplier stocks in distress? (INTC, F, GM)
Watch the equity of large suppliers or customers for signs of stress that could affect payment terms.
- State3 symbols
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"INTC"} then F, GM, one request each. The server fills in the latest completed session.
Questions
bear | English → rule | Is the stock in bear-market territory, more than 20% below its 52-week high? |
cut | English → rule | Did the stock cut its dividend last time? |
miss | English → rule | Did the stock miss EPS estimates last quarter? |
crows | rule | three_black_crows()three black crows candle: Three red bars, each closing lower and opening inside the previous body. |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Symbol | bearrule | cutrule | missrule | crowsrule | drop10forecast | Fired |
|---|---|---|---|---|---|---|
INTC | 0.9463 | 0.1409 | 0.1409 | 0.0537 | 0.836 | ok |
F | 0.9309 | 0.1409 | 0.1409 | 0.0599 | 0.532 | ok |
GM | 0.0537 | 0.1409 | 0.1409 | 0.078 | 0.525 | ok |
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.
bear >= 0.6 and (cut >= 0.6 or miss >= 0.6)→Webhookcredit-watchlistelse→Slacktreasury{
"text": "INTC (2026-10-30): no combined stress flag (bear 95%, cut 14%, miss 14%)."
}{
"text": "F (2026-10-30): no combined stress flag (bear 93%, cut 14%, miss 14%)."
}{
"text": "GM (2026-10-30): no combined stress flag (bear 5%, cut 14%, miss 14%)."
}What it means
Session of 2026-10-30, 3 symbols: Is the stock in bear-market territory, more than 20% below its 52-week high: true for INTC, F of 3. Did the stock cut its dividend last time: true for none of 3. Did the stock miss EPS estimates last quarter: true for none of 3. three black crows candle: Three red bars, each closing lower and opening inside the previous body.: true for none of 3. Highest odds for “A 10% drawdown within a month”: INTC at 84%. supplier_watch fired for none. ok fired for INTC, F, GM.
A bear market plus a cut or a miss is the combination that sends the name to the credit watchlist; any single fact alone is noted only.
Request JSON (INTC; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "INTC"
},
"questions": {
"bear": {
"type": "yes_no",
"instructions": "Is the stock in bear-market territory, more than 20% below its 52-week high?"
},
"cut": {
"type": "yes_no",
"instructions": "Did the stock cut its dividend last time?"
},
"miss": {
"type": "yes_no",
"instructions": "Did the stock miss EPS estimates last quarter?"
},
"crows": {
"type": "yes_no",
"ask": "three_black_crows()"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "supplier_watch",
"when": "bear >= 0.6 and (cut >= 0.6 or miss >= 0.6)",
"do": "webhook",
"connection": "credit-watchlist",
"body": {
"counterparty": "{{symbol}}",
"as_of": "{{as_of}}",
"flag": "equity_stress",
"p_bear_market": "{{bear}}",
"p_dividend_cut": "{{cut}}",
"p_eps_miss": "{{miss}}"
}
},
{
"id": "ok",
"when": "else",
"do": "slack",
"connection": "treasury",
"message": "{{symbol}} ({{as_of}}): no combined stress flag (bear {{bear|pct}}, cut {{cut|pct}}, miss {{miss|pct}})."
}
],
"dry_run": true
}Response JSON (INTC, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"bear": {
"yes_no": 0.9463,
"rule": "C < 0.8 * max(H, 252)",
"basis": "pattern"
},
"cut": {
"yes_no": 0.1409,
"rule": "cut_last > 0.5",
"basis": "pattern"
},
"miss": {
"yes_no": 0.1409,
"rule": "miss_eps_last > 0.5",
"basis": "pattern"
},
"crows": {
"yes_no": 0.0537,
"rule": "three_black_crows()",
"basis": "rule"
},
"drop10": {
"yes_no": 0.836
}
},
"context": {
"symbol": "INTC",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "supplier_watch",
"fired": false,
"status": "skipped"
},
{
"id": "ok",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "treasury",
"preview": {
"text": "INTC (2026-10-30): no combined stress flag (bear 95%, cut 14%, miss 14%)."
}
}
]
}Corporate treasury · example 20
Treasury: risk appetite through JNK and HYG
Two high-yield ETFs read together tell treasury whether markets are welcoming lower-rated borrowers.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"JNK"} then HYG, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)Stacked averages: close > 20 EMA > 50 > 200 |
obv | rule | obv() > sma(obv(), 20)On-balance volume above its 20-day average |
hl2 | rule | C > hl2()Closed in the upper half of the day's range |
ohlc | rule | ohlc4() > sma(C, 10)The day's average price above the 10-day average close |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | trendrule | obvrule | hl2rule | ohlcrule | drop5forecast |
|---|---|---|---|---|---|
JNK | 0.0966 | 0.6285 | 0.651 | 0.7757 | 0.011 |
HYG | 0.0996 | 0.1675 | 0.5826 | 0.7929 | 0.009 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 2 symbols: Stacked averages: close > 20 EMA > 50 > 200: true for none of 2. On-balance volume above its 20-day average: true for JNK of 2. Closed in the upper half of the day's range: true for JNK of 2. The day's average price above the 10-day average close: true for JNK, HYG of 2. Highest odds for “A 5% drawdown within a month”: JNK at 1%.
Stacked averages and rising volume in junk bonds describe strong risk appetite; that is when refinancing lower-rated subsidiaries is easiest.
Request JSON (JNK; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "JNK"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
},
"obv": {
"type": "yes_no",
"ask": "obv() > sma(obv(), 20)"
},
"hl2": {
"type": "yes_no",
"ask": "C > hl2()"
},
"ohlc": {
"type": "yes_no",
"ask": "ohlc4() > sma(C, 10)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (JNK, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.0966,
"rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"obv": {
"yes_no": 0.6285,
"rule": "obv() > sma(obv(), 20)",
"basis": "rule"
},
"hl2": {
"yes_no": 0.651,
"rule": "C > hl2()",
"basis": "rule"
},
"ohlc": {
"yes_no": 0.7757,
"rule": "ohlc4() > sma(C, 10)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.011
}
},
"context": {
"symbol": "JNK",
"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, CFO office, Bank credit analyst, Financial journalist / media.