Use cases · Institutions
Endowment: 20 ways to use Ora
Spending-rule portfolios: regime reads across equities, real assets and bonds. Each example is a complete, runnable request with the real answers it returned (37 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 (39)
sma 12offset 10max 4std 4log 3sqrt 3roc 3atr 3abs 3adx 2avg 2highestbars 2ref 2rsi 2highest 1ema 1lowestbars 1inside_bar 1outside_bar 1pays_dividend 1dragonfly_doji 1hammer 1inverted_hammer 1shooting_star 1cum 1days_to_ex_div 1div_yield_ttm 1raised_last 1lowest 1days_to_earnings 1last_earnings_move 1sum 1engulfing_bear 1morning_star 1tweezer_bottom 1tweezer_top 1zscore 1greatest 1least 1
Examples 1–10 of 20 · page 1 of 2
Endowment · example 1
Spending rule check: is VTI, the equity core, in a drawdown?
Spending is set from a trailing average of the portfolio value. Know early if the US equity core is in a deep drawdown before the budget cycle.
- StateVTI
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"VTI"} The server fills in the latest completed session.
Questions
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
below_200d | English → rule | Is the stock below its 200-day moving average? |
down_month | English → rule | Is the stock down more than 5% over the last month? |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
drawdownMore than 20% off the 52-week high | 0.0537 | false |
below_200dIs the stock below its 200-day moving average compiled to C < sma(C, 200) | 0.0585 | false |
down_monthIs the stock down more than 5% over the last month compiled to C / C[-21] - 1 < -0.05 | 0.0662 | false |
drop10A 10% drawdown within a month | 0.189 | 19% · unlikely |
Actions
Rules on the answers decide what to send.
drawdown >= 0.6→Emailcfo-universityWhat it means
For VTI on the session of 2026-10-30: Not true: More than 20% off the 52-week high; Is the stock below its 200-day moving average; Is the stock down more than 5% over the last month. Forecasts: A 10% drawdown within a month 19%. No action fired: every rule was false.
The university CFO hears about a deep drawdown as soon as it is a fact, long before the trailing average makes it a budget number.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VTI"
},
"questions": {
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"below_200d": {
"type": "yes_no",
"instructions": "Is the stock below its 200-day moving average?"
},
"down_month": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "budget_flag",
"when": "drawdown >= 0.6",
"do": "email",
"connection": "cfo-university",
"subject": "{{symbol}} in a 20% drawdown ({{as_of}})",
"message": "{{symbol}} is more than 20% below its 52-week high. Under the spending rule this lowers next year's distribution base. Further 10% drawdown odds: {{drop10|pct}}."
}
],
"dry_run": true
}Response JSON (VTI, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"drawdown": {
"yes_no": 0.0537,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"below_200d": {
"yes_no": 0.0585,
"rule": "C < sma(C, 200)",
"basis": "comparison"
},
"down_month": {
"yes_no": 0.0662,
"rule": "C / C[-21] - 1 < -0.05",
"basis": "pattern"
},
"drop10": {
"yes_no": 0.189
}
},
"context": {
"symbol": "VTI",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "budget_flag",
"fired": false,
"status": "skipped"
}
]
}Endowment · example 2
Regime read across equities, real assets and bonds
Ask the same three trend questions of SPY, GLD, DBC and TLT to describe the current market regime for the investment committee.
- State4 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"SPY"} then GLD, DBC, TLT, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
momentum | rule | C > C[-63]Higher than three months ago |
adx | rule | adx(14) > 25Trending (ADX above 25) |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | trendrule | momentumrule | adxrule | beat_spyforecast | Fired |
|---|---|---|---|---|---|
SPY | 0.9451 | 0.3809 | 0.0613 | 0.514 | regime_row |
GLD | 0.0537 | 0.1287 | 0.2061 | 0.544 | regime_row |
DBC | 0.9463 | 0.9297 | 0.3117 | 0.566 | regime_row |
TLT | 0.1127 | 0.4037 | 0.1371 | 0.455 | regime_row |
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→Webhookzapier-committee-sheet{
"asset": "SPY",
"as_of": "2026-10-30",
"above_200d": 0.9451,
"three_month_up": 0.3809,
"adx_trend": 0.0613,
"p_beat_spy": 0.514
}{
"asset": "GLD",
"as_of": "2026-10-30",
"above_200d": 0.0537,
"three_month_up": 0.1287,
"adx_trend": 0.2061,
"p_beat_spy": 0.544
}{
"asset": "DBC",
"as_of": "2026-10-30",
"above_200d": 0.9463,
"three_month_up": 0.9297,
"adx_trend": 0.3117,
"p_beat_spy": 0.566
}{
"asset": "TLT",
"as_of": "2026-10-30",
"above_200d": 0.1127,
"three_month_up": 0.4037,
"adx_trend": 0.1371,
"p_beat_spy": 0.455
}What it means
Session of 2026-10-30, 4 symbols: Is the stock above its 200-day moving average: true for SPY, DBC of 4. Higher than three months ago: true for DBC of 4. Trending (ADX above 25): true for none of 4. Highest odds for “Beating SPY over a month”: DBC at 57%. regime_row fired for SPY, GLD, DBC, TLT.
Equities and commodities up with bonds down reads as reflation; bonds and gold up with equities down reads as risk-off. The committee labels it.
Request JSON (SPY; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"momentum": {
"type": "yes_no",
"ask": "C > C[-63]"
},
"adx": {
"type": "yes_no",
"ask": "adx(14) > 25"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
},
"actions": [
{
"id": "regime_row",
"when": "trend >= 0",
"do": "webhook",
"connection": "zapier-committee-sheet",
"body": {
"asset": "{{symbol}}",
"as_of": "{{as_of}}",
"above_200d": "{{trend}}",
"three_month_up": "{{momentum}}",
"adx_trend": "{{adx}}",
"p_beat_spy": "{{beat_spy}}"
}
}
],
"dry_run": true
}Response JSON (SPY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9451,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"momentum": {
"yes_no": 0.3809,
"rule": "C > C[-63]",
"basis": "rule"
},
"adx": {
"yes_no": 0.0613,
"rule": "adx(14) > 25",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.514
}
},
"context": {
"symbol": "SPY",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "regime_row",
"fired": true,
"status": "dry_run",
"do": "webhook",
"connection": "zapier-committee-sheet",
"preview": {
"body": {
"asset": "SPY",
"as_of": "2026-10-30",
"above_200d": 0.9451,
"three_month_up": 0.3809,
"adx_trend": 0.0613,
"p_beat_spy": 0.514
}
}
}
]
}Endowment · example 3
Real assets sleeve: GLD, SLV, COPX breakout scan
Endowments hold real assets for inflation protection. Scan precious and industrial metals for breakouts on volume.
- State3 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GLD"} then SLV, COPX, one request each. 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 |
donchian | rule | C > highest(C, 55)55-day closing breakout |
recent_high | rule | highestbars(H, 20) <= 3Set its 20-day high in the last four sessions |
squeeze | rule | std(C, 20) < 0.7 * std(C, 100) and C > highest(C, 20)Squeeze, then a breakout |
rally5 | forecast | Will it rally at least 5% at some point in the next month? A 5% rally within a month |
Answers
| Symbol | breakoutrule | donchianrule | recent_highrule | squeezerule | rally5forecast |
|---|---|---|---|---|---|
GLD | 0.0619 | 0.0537 | 0.083 | 0.0619 | 0.503 |
SLV | 0.0537 | 0.0537 | 0.0643 | 0.0537 | 0.68 |
COPX | 0.0537 | 0.0537 | 0.0626 | 0.0537 | 0.718 |
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: 20-day breakout on 1.5× volume: true for none of 3. 55-day closing breakout: true for none of 3. Set its 20-day high in the last four sessions: true for none of 3. Squeeze, then a breakout: true for none of 3. Highest odds for “A 5% rally within a month”: COPX at 72%.
A 55-day breakout on volume is a trend fact; the sleeve's weight is set by policy, so this frames manager conversations.
Request JSON (GLD; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"questions": {
"breakout": {
"type": "yes_no",
"ask": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)"
},
"donchian": {
"type": "yes_no",
"ask": "C > highest(C, 55)"
},
"recent_high": {
"type": "yes_no",
"ask": "highestbars(H, 20) <= 3"
},
"squeeze": {
"type": "yes_no",
"ask": "std(C, 20) < 0.7 * std(C, 100) and C > highest(C, 20)"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"breakout": {
"yes_no": 0.0619,
"rule": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)",
"basis": "rule"
},
"donchian": {
"yes_no": 0.0537,
"rule": "C > highest(C, 55)",
"basis": "rule"
},
"recent_high": {
"yes_no": 0.083,
"rule": "highestbars(H, 20) <= 3",
"basis": "rule"
},
"squeeze": {
"yes_no": 0.0619,
"rule": "std(C, 20) < 0.7 * std(C, 100) and C > highest(C, 20)",
"basis": "rule"
},
"rally5": {
"yes_no": 0.503
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
}
}Endowment · example 4
Venture marks ahead: what is ARKK, the listed growth proxy, doing?
Venture marks lag public markets. ARKK acts as an early proxy for the next round of venture valuations.
- StateARKK
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"ARKK"} The server fills in the latest completed session.
Questions
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
trend | rule | C > sma(C, 50)Above the 50-day average |
hv | rule | std(log(C / C[-1]), 20) * sqrt(252) > 0.4Annualized 20-day volatility above 40% |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
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 |
|---|---|---|
drawdownMore than 20% off the 52-week high | 0.0988 | false |
trendAbove the 50-day average | 0.101 | false |
hvAnnualized 20-day volatility above 40% | 0.7844 | true |
drop10A 10% drawdown within a month | 0.61 | 61% · likely |
rally10A 10% rally within a month | 0.681 | 68% · likely |
What it means
For ARKK on the session of 2026-10-30: True now: Annualized 20-day volatility above 40%. Not true: More than 20% off the 52-week high; Above the 50-day average. Forecasts: A 10% drawdown within a month 61%; A 10% rally within a month 68%.
A deep drawdown in the listed proxy usually shows up in private marks a quarter or two later; staff prepare the committee for it.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "ARKK"
},
"questions": {
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"hv": {
"type": "yes_no",
"ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
},
"rally10": {
"type": "yes_no",
"instructions": "Will it rally at least 10% at some point in the next month?"
}
}
}Response JSON (ARKK, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"drawdown": {
"yes_no": 0.0988,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"trend": {
"yes_no": 0.101,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"hv": {
"yes_no": 0.7844,
"rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4",
"basis": "rule"
},
"drop10": {
"yes_no": 0.61
},
"rally10": {
"yes_no": 0.681
}
},
"context": {
"symbol": "ARKK",
"as_of": "2026-10-30"
}
}Endowment · example 5
Rebalancing band on the bond sleeve: AGG three-month move
Rebalance the bond sleeve back to target when it moves outside its band, through a ticket in the rebalancing system.
- StateAGG
- Questions4 asked
- Answersreal, captured
- Actions3 rules · dry run
State
{"symbol":"AGG"} The server fills in the latest completed session.
Questions
up_band | rule | roc(C, 63) > 3Up more than 3% over three months |
down_band | rule | roc(C, 63) < -3Down more than 3% over three months |
trend | rule | C > sma(C, 50)Above the 50-day average |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
up_bandUp more than 3% over three months | 0.0567 | false |
down_bandDown more than 3% over three months | 0.0622 | false |
trendAbove the 50-day average | 0.8598 | true |
up_weekHigher in a week | 0.502 | 50% · close to even |
Actions
Rules on the answers decide what to send.
up_band >= 0.6→Webhookrebalancing-systemdown_band >= 0.6→Webhookrebalancing-systemelse→Slackendowment-office{
"text": "AGG (2026-10-30) inside its band (up 6%, down 6%)."
}What it means
For AGG on the session of 2026-10-30: True now: Above the 50-day average. Not true: Up more than 3% over three months; Down more than 3% over three months. Forecasts: Higher in a week 50%. Fired: inside (Slack → endowment-office).
The band rule is mechanical; staff review the ticket before trading, and the channel logs every check.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "AGG"
},
"questions": {
"up_band": {
"type": "yes_no",
"ask": "roc(C, 63) > 3"
},
"down_band": {
"type": "yes_no",
"ask": "roc(C, 63) < -3"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
},
"actions": [
{
"id": "trim",
"when": "up_band >= 0.6",
"do": "webhook",
"connection": "rebalancing-system",
"body": {
"sleeve": "core_bonds",
"fund": "{{symbol}}",
"action": "trim_to_target",
"as_of": "{{as_of}}",
"p": "{{up_band}}"
}
},
{
"id": "add",
"when": "down_band >= 0.6",
"do": "webhook",
"connection": "rebalancing-system",
"body": {
"sleeve": "core_bonds",
"fund": "{{symbol}}",
"action": "add_to_target",
"as_of": "{{as_of}}",
"p": "{{down_band}}"
}
},
{
"id": "inside",
"when": "else",
"do": "slack",
"connection": "endowment-office",
"message": "{{symbol}} ({{as_of}}) inside its band (up {{up_band|pct}}, down {{down_band|pct}})."
}
],
"dry_run": true
}Response JSON (AGG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"up_band": {
"yes_no": 0.0567,
"rule": "roc(C, 63) > 3",
"basis": "rule"
},
"down_band": {
"yes_no": 0.0622,
"rule": "roc(C, 63) < -3",
"basis": "rule"
},
"trend": {
"yes_no": 0.8598,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.502
}
},
"context": {
"symbol": "AGG",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "trim",
"fired": false,
"status": "skipped"
},
{
"id": "add",
"fired": false,
"status": "skipped"
},
{
"id": "inside",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "endowment-office",
"preview": {
"text": "AGG (2026-10-30) inside its band (up 6%, down 6%)."
}
}
]
}Endowment · example 6
Emerging Asia tilt: INDA, EWT, EWY, MCHI trend
The endowment runs a small tactical tilt to Asian markets. Check which ones are trending before the quarterly tilt review.
- State4 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"INDA"} then EWT, EWY, MCHI, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
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 |
rsi | rule | rsi(C, 14) > 50RSI above 50 |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | trendrule | stackedrule | rsirule | beat_spyforecast |
|---|---|---|---|---|
INDA | 0.0895 | 0.0537 | 0.7553 | 0.349 |
EWT | 0.9131 | 0.0655 | 0.0778 | 0.582 |
EWY | 0.228 | 0.0888 | 0.1156 | 0.50 |
MCHI | 0.0537 | 0.0537 | 0.0647 | 0.403 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 4 symbols: Is the stock above its 200-day moving average: true for EWT of 4. Stacked averages: close > 20 EMA > 50 > 200: true for none of 4. RSI above 50: true for INDA of 4. Highest odds for “Beating SPY over a month”: EWT at 58%.
Markets with a stacked trend and RSI above 50 are candidates to keep in the tilt; the committee approves any change.
Request JSON (INDA; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "INDA"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"stacked": {
"type": "yes_no",
"ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
},
"rsi": {
"type": "yes_no",
"ask": "rsi(C, 14) > 50"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (INDA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.0895,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"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"
},
"rsi": {
"yes_no": 0.7553,
"rule": "rsi(C, 14) > 50",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.349
}
},
"context": {
"symbol": "INDA",
"as_of": "2026-10-30"
}
}Endowment · example 7
Climate sleeve: ICLN health check
A mission-aligned sleeve holds clean-energy funds. Check drawdown, trend and selling pressure for the stewardship report.
- StateICLN
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"ICLN"} The server fills in the latest completed session.
Questions
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
trend | English → rule | Is the stock above its 200-day moving average? |
down_vol | rule | C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)Down on heavy volume |
lowbars | rule | lowestbars(L, 60) <= 5The 60-day low was set within the last five sessions |
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 |
|---|---|---|
drawdownMore than 20% off the 52-week high | 0.9463 | true |
trendIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.0537 | false |
down_volDown on heavy volume | 0.1897 | false |
lowbarsThe 60-day low was set within the last five sessions | 0.6909 | true |
rally10A 10% rally within a month | 0.622 | 62% · likely |
What it means
For ICLN on the session of 2026-10-30: True now: More than 20% off the 52-week high; The 60-day low was set within the last five sessions. Not true: Is the stock above its 200-day moving average; Down on heavy volume. Forecasts: A 10% rally within a month 62%.
A recent 60-day low in a deep drawdown means the sleeve is still under pressure; the report says so plainly.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "ICLN"
},
"questions": {
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"down_vol": {
"type": "yes_no",
"ask": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)"
},
"lowbars": {
"type": "yes_no",
"ask": "lowestbars(L, 60) <= 5"
},
"rally10": {
"type": "yes_no",
"instructions": "Will it rally at least 10% at some point in the next month?"
}
}
}Response JSON (ICLN, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"drawdown": {
"yes_no": 0.9463,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"trend": {
"yes_no": 0.0537,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"down_vol": {
"yes_no": 0.1897,
"rule": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)",
"basis": "rule"
},
"lowbars": {
"yes_no": 0.6909,
"rule": "lowestbars(L, 60) <= 5",
"basis": "rule"
},
"rally10": {
"yes_no": 0.622
}
},
"context": {
"symbol": "ICLN",
"as_of": "2026-10-30"
}
}Endowment · example 8
Friday investment committee digest across the policy portfolio
Every Friday after the close, one row per asset class goes to the committee's Teams channel.
- ScheduleFri at 17:00 ET
- State5 symbols
- Questions3 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"VTI"} then VEA, VWO, BND, GLD, one request each. The server fills in the latest completed session.
Questions
trend | English → rule | Is the stock above its 200-day moving average? |
up_month | English → rule | Is the stock up over the last month? |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | trendrule | up_monthrule | drop5forecast | Fired |
|---|---|---|---|---|
VTI | 0.9415 | 0.2517 | 0.187 | teams_row |
VEA | 0.5877 | 0.3095 | 0.223 | teams_row |
VWO | 0.0887 | 0.069 | 0.255 | teams_row |
BND | 0.2013 | 0.9196 | 0.007 | teams_row |
GLD | 0.0537 | 0.1455 | 0.435 | teams_row |
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→Webhookteams-investment-committee{
"text": "VTI (2026-10-30): above 200-day 94%, up over the month 25%, 5% drawdown odds 19%."
}{
"text": "VEA (2026-10-30): above 200-day 59%, up over the month 31%, 5% drawdown odds 22%."
}{
"text": "VWO (2026-10-30): above 200-day 9%, up over the month 7%, 5% drawdown odds 26%."
}{
"text": "BND (2026-10-30): above 200-day 20%, up over the month 92%, 5% drawdown odds 1%."
}{
"text": "GLD (2026-10-30): above 200-day 5%, up over the month 15%, 5% drawdown odds 44%."
}What it means
Session of 2026-10-30, 5 symbols: Is the stock above its 200-day moving average: true for VTI of 5. Is the stock up over the last month: true for BND of 5. Highest odds for “A 5% drawdown within a month”: GLD at 44%. teams_row fired for VTI, VEA, VWO, BND, GLD.
A short weekly message per asset class keeps trustees informed without a meeting; the numbers are the live answers.
As a scheduled workflow (Fri at 17: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": "Friday investment committee digest across the policy portfolio",
"symbols": "VTI VEA VWO BND GLD",
"days": [
5
],
"at_time": "17:00",
"model": "ora-fin-0.1.1",
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"up_month": {
"type": "yes_no",
"instructions": "Is the stock up over the last month?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "teams_row",
"when": "trend >= 0",
"do": "webhook",
"connection": "teams-investment-committee",
"body": {
"text": "{{symbol}} ({{as_of}}): above 200-day {{trend|pct}}, up over the month {{up_month|pct}}, 5% drawdown odds {{drop5|pct}}."
}
}
]
}Request JSON (VTI; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "VTI"
},
"questions": {
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"up_month": {
"type": "yes_no",
"instructions": "Is the stock up over the last month?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "teams_row",
"when": "trend >= 0",
"do": "webhook",
"connection": "teams-investment-committee",
"body": {
"text": "{{symbol}} ({{as_of}}): above 200-day {{trend|pct}}, up over the month {{up_month|pct}}, 5% drawdown odds {{drop5|pct}}."
}
}
],
"dry_run": true
}Response JSON (VTI, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9415,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"up_month": {
"yes_no": 0.2517,
"rule": "C > C[-21]",
"basis": "pattern"
},
"drop5": {
"yes_no": 0.187
}
},
"context": {
"symbol": "VTI",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "teams_row",
"fired": true,
"status": "dry_run",
"do": "webhook",
"connection": "teams-investment-committee",
"preview": {
"body": {
"text": "VTI (2026-10-30): above 200-day 94%, up over the month 25%, 5% drawdown odds 19%."
}
}
}
]
}Endowment · example 9
Hedge fund sleeve context: is the market making it easy?
Absolute-return managers are judged against a market that may be trending or choppy. Read SPY's trend strength and choppiness.
- StateSPY
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SPY"} The server fills in the latest completed session.
Questions
adx | rule | adx(14) > 25Trending (ADX above 25) |
choppy | rule | adx(14) < 15ADX under 15 (no trend) |
inside | rule | inside_bar()inside bar candle: Today's high and low are inside yesterday's (equal counts). |
outside | rule | outside_bar()outside bar candle: Today's high above yesterday's and low below it. |
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
| Question | Answer | Reading |
|---|---|---|
adxTrending (ADX above 25) | 0.0613 | false |
choppyADX under 15 (no trend) | 0.5063 | on the line (true) |
insideinside bar candle: Today's high and low are inside yesterday's (equal counts). | 0.0537 | false |
outsideoutside bar candle: Today's high above yesterday's and low below it. | 0.0614 | false |
big_moveA big move either way in 5 days | 0.425 | 43% · close to even |
What it means
For SPY on the session of 2026-10-30: Not true: Trending (ADX above 25); inside bar candle: Today's high and low are inside yesterday's (equal counts).; outside bar candle: Today's high above yesterday's and low below it.. On the line: ADX under 15 (no trend). Forecasts: A big move either way in 5 days 43%.
Trend-followers struggle in choppy markets and macro managers often thrive in trends; this context goes into manager reviews.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"adx": {
"type": "yes_no",
"ask": "adx(14) > 25"
},
"choppy": {
"type": "yes_no",
"ask": "adx(14) < 15"
},
"inside": {
"type": "yes_no",
"ask": "inside_bar()"
},
"outside": {
"type": "yes_no",
"ask": "outside_bar()"
},
"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": {
"adx": {
"yes_no": 0.0613,
"rule": "adx(14) > 25",
"basis": "rule"
},
"choppy": {
"yes_no": 0.5063,
"rule": "adx(14) < 15",
"basis": "rule"
},
"inside": {
"yes_no": 0.0537,
"rule": "inside_bar()",
"basis": "rule"
},
"outside": {
"yes_no": 0.0614,
"rule": "outside_bar()",
"basis": "rule"
},
"big_move": {
"yes_no": 0.425
}
},
"context": {
"symbol": "SPY",
"as_of": "2026-10-30"
}
}Endowment · example 10
Liquidity reserve: is SGOV stable for capital calls?
Capital calls from private funds are paid from a liquidity reserve. Confirm the T-bill fund is stable.
- StateSGOV
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"SGOV"} 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%? |
down | English → rule | Is the stock down more than 5% over the last month? |
pays | rule | pays_dividend > 0.5Pays a dividend |
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 |
downIs the stock down more than 5% over the last month compiled to C / C[-21] - 1 < -0.05 | 0.0537 | false |
paysPays a dividend | 0.8591 | true |
Actions
Rules on the answers decide what to send.
atr_low < 0.4 or down >= 0.6→Emailtreasury-opselse→Slackendowment-office{
"text": "SGOV (2026-10-30): reserve calm, ready for capital calls."
}What it means
For SGOV 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%; Pays a dividend. Not true: Is the stock down more than 5% over the last month. Fired: ready (Slack → endowment-office).
All stability rules true means the reserve is ready for capital calls; anything else is checked with the custodian.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SGOV"
},
"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%?"
},
"down": {
"type": "yes_no",
"instructions": "Is the stock down more than 5% over the last month?"
},
"pays": {
"type": "yes_no",
"ask": "pays_dividend > 0.5"
}
},
"actions": [
{
"id": "reserve_alert",
"when": "atr_low < 0.4 or down >= 0.6",
"do": "email",
"connection": "treasury-ops",
"subject": "{{symbol}} reserve not calm ({{as_of}})",
"message": "{{symbol}}: ATR under 2% {{atr_low|pct}}, down 5% over the month {{down|pct}}. Check before the next capital call."
},
{
"id": "ready",
"when": "else",
"do": "slack",
"connection": "endowment-office",
"message": "{{symbol}} ({{as_of}}): reserve calm, ready for capital calls."
}
],
"dry_run": true
}Response JSON (SGOV, 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"
},
"down": {
"yes_no": 0.0537,
"rule": "C / C[-21] - 1 < -0.05",
"basis": "pattern"
},
"pays": {
"yes_no": 0.8591,
"rule": "pays_dividend > 0.5",
"basis": "rule"
}
},
"context": {
"symbol": "SGOV",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "reserve_alert",
"fired": false,
"status": "skipped"
},
{
"id": "ready",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "endowment-office",
"preview": {
"text": "SGOV (2026-10-30): reserve calm, ready for capital calls."
}
}
]
}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, Insurance investment office, Pension fund, Sovereign wealth fund.