Use cases · Institutions
Insurance investment office: 20 ways to use Ora
Liability-aware portfolios: rates, credit, income and drawdown limits. Each example is a complete, runnable request with the real answers it returned (32 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 (44)
sma 11offset 8ref 7rsi 4atr 4highest 3log 3abs 3avg 2ema 2max 2div_yield_ttm 2sqrt 2std 2last_earnings_move 2min 2sum 2linreg 1macd 1macdsignal 1lowest 1cut_last 1pays_dividend 1years_of_growth 1evening_star 1harami_bear 1cci 1miss_eps_last 1misses_last4 1gravestone_doji 1shooting_star 1between 1engulfing_bull 1morning_star 1piercing_line 1days_to_earnings 1roc 1atr_pct 1three_white_soldiers 1doji 1hammer 1hanging_man 1outside_bar 1sign 1
Examples 11–20 of 20 · page 2 of 2
Insurance investment office · example 11
GLD: gold allocation trend and exhaustion
Gold is a small tail-risk sleeve. Check whether the trend is intact or showing exhaustion candles before the annual allocation review.
- StateGLD
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"GLD"} The server fills in the latest completed session.
Questions
stacked | 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 |
rsi70 | rule | rsi(C, 14) > 70RSI above 70 |
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. |
gravestone | rule | gravestone_doji()gravestone doji candle: Doji with a long upper wick and almost no lower wick. |
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 |
|---|---|---|
stackedStacked averages: close > 20 EMA > 50 > 200 | 0.0537 | false |
rsi70RSI above 70 | 0.0537 | false |
shootingshooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise. | 0.0584 | false |
gravestonegravestone doji candle: Doji with a long upper wick and almost no lower wick. | 0.0548 | false |
drop5A 5% drawdown within a month | 0.435 | 44% · close to even |
Actions
Rules on the answers decide what to send.
shooting >= 0.6 or gravestone >= 0.6→Slackinvestment-officeelse→Slackinvestment-office{
"text": "GLD (2026-10-30): no exhaustion candle; stacked trend 5%."
}What it means
For GLD on the session of 2026-10-30: Not true: Stacked averages: close > 20 EMA > 50 > 200; RSI above 70; shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.; gravestone doji candle: Doji with a long upper wick and almost no lower wick.. Forecasts: A 5% drawdown within a month 44%. Fired: intact (Slack → investment-office).
An intact trend with no exhaustion candle supports keeping the sleeve at target; exhaustion signs are noted for the review.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"questions": {
"stacked": {
"type": "yes_no",
"ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
},
"rsi70": {
"type": "yes_no",
"ask": "rsi(C, 14) > 70"
},
"shooting": {
"type": "yes_no",
"ask": "shooting_star()"
},
"gravestone": {
"type": "yes_no",
"ask": "gravestone_doji()"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "exhaustion",
"when": "shooting >= 0.6 or gravestone >= 0.6",
"do": "slack",
"connection": "investment-office",
"message": "{{symbol}} ({{as_of}}): exhaustion candle (shooting star {{shooting|pct}}, gravestone {{gravestone|pct}}). Note for the allocation review."
},
{
"id": "intact",
"when": "else",
"do": "slack",
"connection": "investment-office",
"message": "{{symbol}} ({{as_of}}): no exhaustion candle; stacked trend {{stacked|pct}}."
}
],
"dry_run": true
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"stacked": {
"yes_no": 0.0537,
"rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"rsi70": {
"yes_no": 0.0537,
"rule": "rsi(C, 14) > 70",
"basis": "rule"
},
"shooting": {
"yes_no": 0.0584,
"rule": "shooting_star()",
"basis": "rule"
},
"gravestone": {
"yes_no": 0.0548,
"rule": "gravestone_doji()",
"basis": "rule"
},
"drop5": {
"yes_no": 0.435
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "exhaustion",
"fired": false,
"status": "skipped"
},
{
"id": "intact",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "investment-office",
"preview": {
"text": "GLD (2026-10-30): no exhaustion candle; stacked trend 5%."
}
}
]
}Insurance investment office · example 12
SHY: is short duration still a safe parking spot?
Short Treasuries hold the liquidity buffer. Confirm the fund is calm and not drawing down.
- StateSHY
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SHY"} The server fills in the latest completed session.
Questions
atr_low | English → rule | Is the 14-day ATR less than 2% of the price? |
hv_low | English → rule | Is 20-day historical volatility below 20%? |
down5 | English → rule | Is the stock down more than 5% over the last month? |
between | rule | between(rsi(C, 14), 30, 70)RSI between 30 and 70 (no extreme) |
Answers
| Question | Answer | Reading |
|---|---|---|
atr_lowIs the 14-day ATR less than 2% of the price compiled to atr(14) / C < 0.02 | 0.9463 | true |
hv_lowIs 20-day historical volatility below 20% compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2 | 0.9463 | true |
down5Is the stock down more than 5% over the last month compiled to C / C[-21] - 1 < -0.05 | 0.0537 | false |
betweenRSI between 30 and 70 (no extreme) | 0.05 | false |
What it means
For SHY on the session of 2026-10-30: True now: Is the 14-day ATR less than 2% of the price; Is 20-day historical volatility below 20%. Not true: Is the stock down more than 5% over the last month; RSI between 30 and 70 (no extreme).
All calm rules true is what a liquidity buffer should look like; any false answer is investigated by treasury operations.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SHY"
},
"questions": {
"atr_low": {
"type": "yes_no",
"instructions": "Is the 14-day ATR less than 2% of the price?"
},
"hv_low": {
"type": "yes_no",
"instructions": "Is 20-day historical volatility below 20%?"
},
"down5": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"between": {
"type": "yes_no",
"ask": "between(rsi(C, 14), 30, 70)"
}
}
}Response JSON (SHY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"atr_low": {
"yes_no": 0.9463,
"rule": "atr(14) / C < 0.02",
"basis": "pattern"
},
"hv_low": {
"yes_no": 0.9463,
"rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
"basis": "pattern"
},
"down5": {
"yes_no": 0.0537,
"rule": "C / C[-21] - 1 < -0.05",
"basis": "pattern"
},
"between": {
"yes_no": 0.05,
"rule": "between(rsi(C, 14), 30, 70)",
"basis": "rule"
}
},
"context": {
"symbol": "SHY",
"as_of": "2026-10-30"
}
}Insurance investment office · example 13
HYG: reversal candles after a credit sell-off
After a sell-off in high yield, look for bullish reversal patterns before adding back credit risk.
- StateHYG
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"HYG"} The server fills in the latest completed session.
Questions
piercing | rule | piercing_line()piercing line candle: After a red day, opens below its close and closes above the middle of its body (but under its open). |
morning | rule | morning_star()morning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first. |
engulf | rule | engulfing_bull()engulfing bull candle: A green body that engulfs yesterday's red body. |
near_low | English → rule | Is the stock within 10% of its 52-week low? |
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 |
|---|---|---|
piercingpiercing line candle: After a red day, opens below its close and closes above the middle of its body (but under its open). | 0.1935 | false |
morningmorning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first. | 0.1774 | false |
engulfengulfing bull candle: A green body that engulfs yesterday's red body. | 0.1812 | false |
near_lowIs the stock within 10% of its 52-week low compiled to abs(C / min(L, 252) - 1) <= 0.1 | 0.9463 | true |
rally5A 5% rally within a month | 0.009 | 1% · unlikely |
What it means
For HYG on the session of 2026-10-30: True now: Is the stock within 10% of its 52-week low. Not true: piercing line candle: After a red day, opens below its close and closes above the middle of its body (but under its open).; morning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first.; engulfing bull candle: A green body that engulfs yesterday's red body.. Forecasts: A 5% rally within a month 1%.
A reversal pattern near the lows is one input to the credit committee's add-back decision; it never acts alone.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "HYG"
},
"questions": {
"piercing": {
"type": "yes_no",
"ask": "piercing_line()"
},
"morning": {
"type": "yes_no",
"ask": "morning_star()"
},
"engulf": {
"type": "yes_no",
"ask": "engulfing_bull()"
},
"near_low": {
"type": "yes_no",
"instructions": "Is the stock within 10% of its 52-week low?"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Response JSON (HYG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"piercing": {
"yes_no": 0.1935,
"rule": "piercing_line()",
"basis": "rule"
},
"morning": {
"yes_no": 0.1774,
"rule": "morning_star()",
"basis": "rule"
},
"engulf": {
"yes_no": 0.1812,
"rule": "engulfing_bull()",
"basis": "rule"
},
"near_low": {
"yes_no": 0.9463,
"rule": "abs(C / min(L, 252) - 1) <= 0.1",
"basis": "comparison"
},
"rally5": {
"yes_no": 0.009
}
},
"context": {
"symbol": "HYG",
"as_of": "2026-10-30"
}
}Insurance investment office · example 14
Large equity holdings reporting this month: AAPL, MSFT, JPM
Concentrated equity holdings with reports coming up add short-term risk to the capital ratio. List them ahead of the month end.
- State3 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"AAPL"} then MSFT, JPM, one request each. The server fills in the latest completed session.
Questions
earn14 | English → rule | Is earnings in the next 14 days? |
big_react | rule | abs(last_earnings_move) > 5Last earnings move bigger than 5% |
trend | rule | C > sma(C, 50)Above the 50-day average |
big_move | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Symbol | earn14rule | big_reactrule | trendrule | big_moveforecast | Fired |
|---|---|---|---|---|---|
AAPL | 0.9463 | 0.9463 | 0.9119 | 0.409 | event_risk |
MSFT | 0.0537 | 0.0537 | 0.7088 | 0.397 | none |
JPM | 0.0537 | 0.0664 | 0.3034 | 0.371 | 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.
earn14 >= 0.6 and big_react >= 0.6→Emailcapital-management{
"subject": "AAPL reports within 14 days (2026-10-30)",
"text": "AAPL reports within 14 days and its last earnings reaction was over 5%. Big-move odds over 5 days: 41%."
}What it means
Session of 2026-10-30, 3 symbols: Is earnings in the next 14 days: true for AAPL of 3. Last earnings move bigger than 5%: true for AAPL of 3. Above the 50-day average: true for AAPL, MSFT of 3. Highest odds for “A big move either way in 5 days”: AAPL at 41%. event_risk fired for AAPL.
Only names with both a near report and a large last reaction are flagged to capital management.
Request JSON (AAPL; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AAPL"
},
"questions": {
"earn14": {
"type": "yes_no",
"instructions": "Is earnings in the next 14 days?"
},
"big_react": {
"type": "yes_no",
"ask": "abs(last_earnings_move) > 5"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"big_move": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
},
"actions": [
{
"id": "event_risk",
"when": "earn14 >= 0.6 and big_react >= 0.6",
"do": "email",
"connection": "capital-management",
"subject": "{{symbol}} reports within 14 days ({{as_of}})",
"message": "{{symbol}} reports within 14 days and its last earnings reaction was over 5%. Big-move odds over 5 days: {{big_move|pct}}."
}
],
"dry_run": true
}Response JSON (AAPL, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"earn14": {
"yes_no": 0.9463,
"rule": "days_to_earnings <= 14",
"basis": "pattern"
},
"big_react": {
"yes_no": 0.9463,
"rule": "abs(last_earnings_move) > 5",
"basis": "rule"
},
"trend": {
"yes_no": 0.9119,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"big_move": {
"yes_no": 0.409
}
},
"context": {
"symbol": "AAPL",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "event_risk",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "capital-management",
"preview": {
"subject": "AAPL reports within 14 days (2026-10-30)",
"text": "AAPL reports within 14 days and its last earnings reaction was over 5%. Big-move odds over 5 days: 41%."
}
}
]
}Insurance investment office · example 15
Curve shape proxy: SHY, IEF, TLT momentum
Compare three-month momentum along the Treasury curve to see whether the long end or the short end is leading.
- State3 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SHY"} then IEF, TLT, one request each. The server fills in the latest completed session.
Questions
roc | rule | roc(C, 63) > 0Up over three months |
log | rule | log(C / C[-20]) > 0Up over the last 20 sessions (log return positive) |
sma | rule | sma(C, 50) > ref(sma(C, 50), -10)The 50-day average is rising |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Symbol | rocrule | logrule | smarule | up_weekforecast |
|---|---|---|---|---|
SHY | 0.7494 | 0.9307 | 0.1624 | 0.594 |
IEF | 0.2569 | 0.9275 | 0.0882 | 0.483 |
TLT | 0.4003 | 0.932 | 0.1584 | 0.561 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 3 symbols: Up over three months: true for SHY of 3. Up over the last 20 sessions (log return positive): true for SHY, IEF, TLT of 3. The 50-day average is rising: true for none of 3. Highest odds for “Higher in a week”: SHY at 59%.
Long duration up while short duration is flat describes a falling long-end yield; the ALM team ties it to the liability discount rate.
Request JSON (SHY; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SHY"
},
"questions": {
"roc": {
"type": "yes_no",
"ask": "roc(C, 63) > 0"
},
"log": {
"type": "yes_no",
"ask": "log(C / C[-20]) > 0"
},
"sma": {
"type": "yes_no",
"ask": "sma(C, 50) > ref(sma(C, 50), -10)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (SHY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"roc": {
"yes_no": 0.7494,
"rule": "roc(C, 63) > 0",
"basis": "rule"
},
"log": {
"yes_no": 0.9307,
"rule": "log(C / C[-20]) > 0",
"basis": "rule"
},
"sma": {
"yes_no": 0.1624,
"rule": "sma(C, 50) > ref(sma(C, 50), -10)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.594
}
},
"context": {
"symbol": "SHY",
"as_of": "2026-10-30"
}
}Insurance investment office · example 16
International equity sleeve: EFA trend
Check the developed international equity fund's trend and momentum before the strategic allocation review.
- StateEFA
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"EFA"} The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
golden | rule | sma(C, 50) > sma(C, 200)50-day above the 200-day |
mostly | rule | sum(C > C[-1], 10) >= 6Up on at least six of the last ten days |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Question | Answer | Reading |
|---|---|---|
trendIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.6709 | true |
golden50-day above the 200-day | 0.9463 | true |
mostlyUp on at least six of the last ten days | 0.55 | on the line (true) |
beat_spyBeating SPY over a month | 0.447 | 45% · close to even |
What it means
For EFA on the session of 2026-10-30: True now: Is the stock above its 200-day moving average; 50-day above the 200-day. On the line: Up on at least six of the last ten days. Forecasts: Beating SPY over a month 45%.
Trend and golden alignment true means the sleeve is holding its weight; otherwise the review discusses it.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "EFA"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"golden": {
"type": "yes_no",
"ask": "sma(C, 50) > sma(C, 200)"
},
"mostly": {
"type": "yes_no",
"ask": "sum(C > C[-1], 10) >= 6"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (EFA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.6709,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"golden": {
"yes_no": 0.9463,
"rule": "sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"mostly": {
"yes_no": 0.55,
"rule": "sum(C > C[-1], 10) >= 6",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.447
}
},
"context": {
"symbol": "EFA",
"as_of": "2026-10-30"
}
}Insurance investment office · example 17
DBC: broad commodities as an inflation sleeve
Check the broad commodity fund for trend, breakouts and volatility for the inflation-risk report.
- StateDBC
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"DBC"} The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
donchian | rule | C > highest(C, 55)55-day closing breakout |
atr3 | rule | atr_pct(14) > 3A typical day moves more than 3% |
soldiers | rule | three_white_soldiers()three white soldiers candle: Three green bars, each closing higher and opening inside the previous body. |
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 |
|---|---|---|
trendAbove the 50-day average | 0.8888 | true |
donchian55-day closing breakout | 0.1724 | false |
atr3A typical day moves more than 3% | 0.0537 | false |
soldiersthree white soldiers candle: Three green bars, each closing higher and opening inside the previous body. | 0.0955 | false |
rally5A 5% rally within a month | 0.392 | 39% · unlikely |
What it means
For DBC on the session of 2026-10-30: True now: Above the 50-day average. Not true: 55-day closing breakout; A typical day moves more than 3%; three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.. Forecasts: A 5% rally within a month 39%.
A 55-day breakout is a trend-following buy signal in many systems; here it is reported as a fact next to the volatility rule.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "DBC"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"donchian": {
"type": "yes_no",
"ask": "C > highest(C, 55)"
},
"atr3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"soldiers": {
"type": "yes_no",
"ask": "three_white_soldiers()"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Response JSON (DBC, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.8888,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"donchian": {
"yes_no": 0.1724,
"rule": "C > highest(C, 55)",
"basis": "rule"
},
"atr3": {
"yes_no": 0.0537,
"rule": "atr_pct(14) > 3",
"basis": "rule"
},
"soldiers": {
"yes_no": 0.0955,
"rule": "three_white_soldiers()",
"basis": "rule"
},
"rally5": {
"yes_no": 0.392
}
},
"context": {
"symbol": "DBC",
"as_of": "2026-10-30"
}
}Insurance investment office · example 18
Daily risk-limit monitor on the equity funds
After each close, any equity fund down more than 3% on the day goes to the risk dashboard immediately.
- ScheduleMon–Fri at 16:40 ET
- State3 symbols
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"VTI"} then EFA, EEM, one request each. The server fills in the latest completed session.
Questions
down3 | English → rule | Did the stock fall more than 3% today? |
move_atr | rule | abs(C - C[-1]) > 1.5 * atr(14)Today's move was bigger than 1.5 ATR |
worst | English → rule | Was today the worst day of the last 20 sessions? |
gap_down | forecast | Will it gap down tomorrow? A gap down tomorrow |
Answers
| Symbol | down3rule | move_atrrule | worstrule | gap_downforecast | Fired |
|---|---|---|---|---|---|
VTI | 0.0717 | 0.793 | 0.8368 | 0.029 | big_day |
EFA | 0.0539 | 0.0945 | 0.3849 | 0.019 | none |
EEM | 0.3535 | 0.4508 | 0.3974 | 0.077 | 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.
down3 >= 0.6→Webhookrisk-dashboardmove_atr >= 0.6→Slackrisk-team{
"text": "VTI (2026-10-30): move bigger than 1.5 ATR (79%), worst day in 20 84%."
}What it means
Session of 2026-10-30, 3 symbols: Did the stock fall more than 3% today: true for none of 3. Today's move was bigger than 1.5 ATR: true for VTI of 3. Was today the worst day of the last 20 sessions: true for VTI of 3. Highest odds for “A gap down tomorrow”: EEM at 8%. limit_day fired for none. big_day fired for VTI.
A big loss day posts to the dashboard; a big move in either direction goes to the risk channel for context.
As a scheduled workflow (Mon–Fri at 16:40 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": "Daily risk-limit monitor on the equity funds",
"symbols": "VTI EFA EEM",
"days": [
1,
2,
3,
4,
5
],
"at_time": "16:40",
"model": "ora-fin-0.1.1",
"questions": {
"down3": {
"type": "yes_no",
"instructions": "Did the stock fall more than 3% today?"
},
"move_atr": {
"type": "yes_no",
"ask": "abs(C - C[-1]) > 1.5 * atr(14)"
},
"worst": {
"type": "yes_no",
"instructions": "Was today the worst day of the last 20 sessions?"
},
"gap_down": {
"type": "yes_no",
"instructions": "Will it gap down tomorrow?"
}
},
"actions": [
{
"id": "limit_day",
"when": "down3 >= 0.6",
"do": "webhook",
"connection": "risk-dashboard",
"body": {
"fund": "{{symbol}}",
"as_of": "{{as_of}}",
"event": "daily_loss_over_3pct",
"p": "{{down3}}",
"p_gap_down_tomorrow": "{{gap_down}}"
}
},
{
"id": "big_day",
"when": "move_atr >= 0.6",
"do": "slack",
"connection": "risk-team",
"message": "{{symbol}} ({{as_of}}): move bigger than 1.5 ATR ({{move_atr|pct}}), worst day in 20 {{worst|pct}}."
}
]
}Request JSON (VTI; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VTI"
},
"questions": {
"down3": {
"type": "yes_no",
"instructions": "Did the stock fall more than 3% today?"
},
"move_atr": {
"type": "yes_no",
"ask": "abs(C - C[-1]) > 1.5 * atr(14)"
},
"worst": {
"type": "yes_no",
"instructions": "Was today the worst day of the last 20 sessions?"
},
"gap_down": {
"type": "yes_no",
"instructions": "Will it gap down tomorrow?"
}
},
"actions": [
{
"id": "limit_day",
"when": "down3 >= 0.6",
"do": "webhook",
"connection": "risk-dashboard",
"body": {
"fund": "{{symbol}}",
"as_of": "{{as_of}}",
"event": "daily_loss_over_3pct",
"p": "{{down3}}",
"p_gap_down_tomorrow": "{{gap_down}}"
}
},
{
"id": "big_day",
"when": "move_atr >= 0.6",
"do": "slack",
"connection": "risk-team",
"message": "{{symbol}} ({{as_of}}): move bigger than 1.5 ATR ({{move_atr|pct}}), worst day in 20 {{worst|pct}}."
}
],
"dry_run": true
}Response JSON (VTI, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"down3": {
"yes_no": 0.0717,
"rule": "C / C[-1] - 1 < -0.03",
"basis": "pattern"
},
"move_atr": {
"yes_no": 0.793,
"rule": "abs(C - C[-1]) > 1.5 * atr(14)",
"basis": "rule"
},
"worst": {
"yes_no": 0.8368,
"rule": "(C < C[-1]) and (C / C[-1] - 1 < ref(min(C / C[-1] - 1, 19), -1))",
"basis": "pattern"
},
"gap_down": {
"yes_no": 0.029
}
},
"context": {
"symbol": "VTI",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "limit_day",
"fired": false,
"status": "skipped"
},
{
"id": "big_day",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "risk-team",
"preview": {
"text": "VTI (2026-10-30): move bigger than 1.5 ATR (79%), worst day in 20 84%."
}
}
]
}Insurance investment office · example 19
AGG: reversal candles in core bonds
Core bond funds rarely print strong candles; when they do it often marks a turn in rates. Check the core bond fund.
- StateAGG
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"AGG"} The server fills in the latest completed session.
Questions
hammer | rule | hammer()hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back. |
hanging | rule | hanging_man()hanging man candle: Hammer shape, closing above the close five bars back. |
doji | rule | doji()doji candle: Body at most 10% of the day's range. |
outside | rule | outside_bar()outside bar candle: Today's high above yesterday's and low below it. |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
hammerhammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back. | 0.1416 | false |
hanginghanging man candle: Hammer shape, closing above the close five bars back. | 0.1416 | false |
dojidoji candle: Body at most 10% of the day's range. | 0.367 | false |
outsideoutside bar candle: Today's high above yesterday's and low below it. | 0.179 | false |
up_weekHigher in a week | 0.502 | 50% · close to even |
What it means
For AGG on the session of 2026-10-30: Not true: hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back.; hanging man candle: Hammer shape, closing above the close five bars back.; doji candle: Body at most 10% of the day's range.; outside bar candle: Today's high above yesterday's and low below it.. Forecasts: Higher in a week 50%.
A strong candle in core bonds is worth a note in the rates commentary; the duration policy does not change on it.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AGG"
},
"questions": {
"hammer": {
"type": "yes_no",
"ask": "hammer()"
},
"hanging": {
"type": "yes_no",
"ask": "hanging_man()"
},
"doji": {
"type": "yes_no",
"ask": "doji()"
},
"outside": {
"type": "yes_no",
"ask": "outside_bar()"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (AGG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"hammer": {
"yes_no": 0.1416,
"rule": "hammer()",
"basis": "rule"
},
"hanging": {
"yes_no": 0.1416,
"rule": "hanging_man()",
"basis": "rule"
},
"doji": {
"yes_no": 0.367,
"rule": "doji()",
"basis": "rule"
},
"outside": {
"yes_no": 0.179,
"rule": "outside_bar()",
"basis": "rule"
},
"up_week": {
"yes_no": 0.502
}
},
"context": {
"symbol": "AGG",
"as_of": "2026-10-30"
}
}Insurance investment office · example 20
Stress composite: equities down, bonds up, gold up
Check whether the classic flight-to-quality pattern is under way, using one question set across SPY, TLT and GLD.
- State3 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SPY"} then TLT, GLD, one request each. The server fills in the latest completed session.
Questions
up5d | rule | C > C[-5]Higher than five sessions ago |
down_week | English → rule | Is the stock down over the last week? |
up_vol | rule | C > C[-1] and V > 1.5 * ref(avg(V, 20), -1)Up on heavy volume |
sign | rule | sum(sign(C - C[-1]), 10) > 2More up days than down days by three or more over 10 sessions |
big_move | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Symbol | up5drule | down_weekrule | up_volrule | signrule | big_moveforecast |
|---|---|---|---|---|---|
SPY | 0.2586 | 0.7414 | 0.0552 | 0.45 | 0.425 |
TLT | 0.7004 | 0.2996 | 0.1681 | 0.45 | 0.371 |
GLD | 0.1671 | 0.8329 | 0.064 | 0.1074 | 0.427 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 3 symbols: Higher than five sessions ago: true for TLT of 3. Is the stock down over the last week: true for SPY, GLD of 3. Up on heavy volume: true for none of 3. More up days than down days by three or more over 10 sessions: true for none of 3. Highest odds for “A big move either way in 5 days”: GLD at 43%.
SPY down on the week while TLT and GLD are up is the stress pattern; the office reads the three answers together.
Request JSON (SPY; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"up5d": {
"type": "yes_no",
"ask": "C > C[-5]"
},
"down_week": {
"type": "yes_no",
"instructions": "Is the stock down over the last week?"
},
"up_vol": {
"type": "yes_no",
"ask": "C > C[-1] and V > 1.5 * ref(avg(V, 20), -1)"
},
"sign": {
"type": "yes_no",
"ask": "sum(sign(C - C[-1]), 10) > 2"
},
"big_move": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
}
}Response JSON (SPY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"up5d": {
"yes_no": 0.2586,
"rule": "C > C[-5]",
"basis": "rule"
},
"down_week": {
"yes_no": 0.7414,
"rule": "C < C[-5]",
"basis": "pattern"
},
"up_vol": {
"yes_no": 0.0552,
"rule": "C > C[-1] and V > 1.5 * ref(avg(V, 20), -1)",
"basis": "rule"
},
"sign": {
"yes_no": 0.45,
"rule": "sum(sign(C - C[-1]), 10) > 2",
"basis": "rule"
},
"big_move": {
"yes_no": 0.425
}
},
"context": {
"symbol": "SPY",
"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 Institutions: ETF issuer, Index provider, Pension fund, Endowment, Sovereign wealth fund.