Ora
All use cases All industries

Individuals

Retail investorActive day traderSwing traderOptions traderDividend investorLong-term passive investorCrypto traderFX traderCommodities traderSocial trading communityStudents and universities

Buy side

Financial advisor / RIAWealth managerFamily officeHedge fund PMQuant researcherPortfolio manager (long-only)Risk managerPrivate equityVC / growth investorFund-of-funds allocator

Sell side

Equity research analystSell-side sales traderExecution trader / deskMarket makerProp trading firmCompliance officer

Corporates

Investor relations teamCorporate treasuryCFO officeBank credit analystFinancial journalist / media

Builders

Quant developerFintech app builderRobo-advisorBroker appAlgo / bot developerData vendor / platformTrading educator / newsletter

Institutions

ETF issuerIndex providerInsurance investment officePension fundEndowmentSovereign wealth fund

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

Answers were captured on ora-fin-0.1.1. Another model changes the request JSON and the Playground link; run it there to see its answers.
Rule functions and facts used by this player (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.

ora-fin-0.1.1VTI4 questions1 action
  1. StateVTI
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
below_200dEnglish → ruleIs the stock below its 200-day moving average?
down_monthEnglish → ruleIs the stock down more than 5% over the last month?
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
drawdown
More than 20% off the 52-week high
0.0537false
below_200d
Is the stock below its 200-day moving average
compiled to C < sma(C, 200)
0.0585false
down_month
Is the stock down more than 5% over the last month
compiled to C / C[-21] - 1 < -0.05
0.0662false
drop10
A 10% drawdown within a month
0.18919% · unlikely

Actions

Rules on the answers decide what to send.

drawdown >= 0.6→Emailcfo-university
What each action would send 0 of 1 fired · dry run, nothing sent
budget_flagrule false: skipped

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

max offset sma

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.

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

State

{"symbol":"SPY"} then GLD, DBC, TLT, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
momentumruleC > C[-63]
Higher than three months ago
adxruleadx(14) > 25
Trending (ADX above 25)
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulemomentumruleadxrulebeat_spyforecastFired
SPY0.94510.38090.06130.514regime_row
GLD0.05370.12870.20610.544regime_row
DBC0.94630.92970.31170.566regime_row
TLT0.11270.40370.13710.455regime_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
SPY 1 of 1 fired · dry run, nothing sent
regime_rowwould send (dry run)Webhook → zapier-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
}
GLD 1 of 1 fired · dry run, nothing sent
regime_rowwould send (dry run)Webhook → zapier-committee-sheet
{
  "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
}
DBC 1 of 1 fired · dry run, nothing sent
regime_rowwould send (dry run)Webhook → zapier-committee-sheet
{
  "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
}
TLT 1 of 1 fired · dry run, nothing sent
regime_rowwould send (dry run)Webhook → zapier-committee-sheet
{
  "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
        }
      }
    }
  ]
}

adx offset sma

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.

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

State

{"symbol":"GLD"} then SLV, COPX, one request each. The server fills in the latest completed session.

Questions

breakoutruleC > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)
20-day breakout on 1.5× volume
donchianruleC > highest(C, 55)
55-day closing breakout
recent_highrulehighestbars(H, 20) <= 3
Set its 20-day high in the last four sessions
squeezerulestd(C, 20) < 0.7 * std(C, 100) and C > highest(C, 20)
Squeeze, then a breakout
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symbolbreakoutruledonchianrulerecent_highrulesqueezerulerally5forecast
GLD0.06190.05370.0830.06190.503
SLV0.05370.05370.06430.05370.68
COPX0.05370.05370.06260.05370.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"
  }
}

avg highest highestbars ref std

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.

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

State

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

Questions

drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
trendruleC > sma(C, 50)
Above the 50-day average
hvrulestd(log(C / C[-1]), 20) * sqrt(252) > 0.4
Annualized 20-day volatility above 40%
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month

Answers

QuestionAnswerReading
drawdown
More than 20% off the 52-week high
0.0988false
trend
Above the 50-day average
0.101false
hv
Annualized 20-day volatility above 40%
0.7844true
drop10
A 10% drawdown within a month
0.6161% · likely
rally10
A 10% rally within a month
0.68168% · 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"
  }
}

log max offset sma sqrt std

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.

ora-fin-0.1.1AGG4 questions3 actions
  1. StateAGG
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions3 rules · dry run

State

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

Questions

up_bandruleroc(C, 63) > 3
Up more than 3% over three months
down_bandruleroc(C, 63) < -3
Down more than 3% over three months
trendruleC > sma(C, 50)
Above the 50-day average
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
up_band
Up more than 3% over three months
0.0567false
down_band
Down more than 3% over three months
0.0622false
trend
Above the 50-day average
0.8598true
up_week
Higher in a week
0.50250% · close to even

Actions

Rules on the answers decide what to send.

up_band >= 0.6→Webhookrebalancing-system
down_band >= 0.6→Webhookrebalancing-system
else→Slackendowment-office
What each action would send 1 of 3 fired · dry run, nothing sent
trimrule false: skipped
addrule false: skipped
insidewould send (dry run)Slack → endowment-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%)."
      }
    }
  ]
}

roc sma

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.

ora-fin-0.1.14 symbols, one request each4 questions
  1. State4 symbols
  2. Questions4 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"INDA"} then EWT, EWY, MCHI, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
stackedruleC > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)
Stacked averages: close > 20 EMA > 50 > 200
rsirulersi(C, 14) > 50
RSI above 50
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulestackedrulersirulebeat_spyforecast
INDA0.08950.05370.75530.349
EWT0.91310.06550.07780.582
EWY0.2280.08880.11560.50
MCHI0.05370.05370.06470.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"
  }
}

ema rsi sma

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.

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

State

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

Questions

drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
trendEnglish → ruleIs the stock above its 200-day moving average?
down_volruleC < C[-1] and V > 1.5 * ref(avg(V, 20), -1)
Down on heavy volume
lowbarsrulelowestbars(L, 60) <= 5
The 60-day low was set within the last five sessions
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month

Answers

QuestionAnswerReading
drawdown
More than 20% off the 52-week high
0.9463true
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.0537false
down_vol
Down on heavy volume
0.1897false
lowbars
The 60-day low was set within the last five sessions
0.6909true
rally10
A 10% rally within a month
0.62262% · 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"
  }
}

avg lowestbars max offset ref sma

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.

ora-fin-0.1.15 symbols, one request each3 questions1 actionworkflow · Fri at 17:00 ET
  1. ScheduleFri at 17:00 ET
  2. State5 symbols
  3. Questions3 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"VTI"} then VEA, VWO, BND, GLD, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
up_monthEnglish → ruleIs the stock up over the last month?
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symboltrendruleup_monthruledrop5forecastFired
VTI0.94150.25170.187teams_row
VEA0.58770.30950.223teams_row
VWO0.08870.0690.255teams_row
BND0.20130.91960.007teams_row
GLD0.05370.14550.435teams_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
VTI 1 of 1 fired · dry run, nothing sent
teams_rowwould send (dry run)Webhook → teams-investment-committee
{
  "text": "VTI (2026-10-30): above 200-day 94%, up over the month 25%, 5% drawdown odds 19%."
}
VEA 1 of 1 fired · dry run, nothing sent
teams_rowwould send (dry run)Webhook → teams-investment-committee
{
  "text": "VEA (2026-10-30): above 200-day 59%, up over the month 31%, 5% drawdown odds 22%."
}
VWO 1 of 1 fired · dry run, nothing sent
teams_rowwould send (dry run)Webhook → teams-investment-committee
{
  "text": "VWO (2026-10-30): above 200-day 9%, up over the month 7%, 5% drawdown odds 26%."
}
BND 1 of 1 fired · dry run, nothing sent
teams_rowwould send (dry run)Webhook → teams-investment-committee
{
  "text": "BND (2026-10-30): above 200-day 20%, up over the month 92%, 5% drawdown odds 1%."
}
GLD 1 of 1 fired · dry run, nothing sent
teams_rowwould send (dry run)Webhook → teams-investment-committee
{
  "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%."
        }
      }
    }
  ]
}

offset sma

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.

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

State

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

Questions

adxruleadx(14) > 25
Trending (ADX above 25)
choppyruleadx(14) < 15
ADX under 15 (no trend)
insideruleinside_bar()
inside bar candle: Today's high and low are inside yesterday's (equal counts).
outsideruleoutside_bar()
outside bar candle: Today's high above yesterday's and low below it.
big_moveforecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
adx
Trending (ADX above 25)
0.0613false
choppy
ADX under 15 (no trend)
0.5063on the line (true)
inside
inside bar candle: Today's high and low are inside yesterday's (equal counts).
0.0537false
outside
outside bar candle: Today's high above yesterday's and low below it.
0.0614false
big_move
A big move either way in 5 days
0.42543% · 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"
  }
}

adx inside_bar outside_bar

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.

ora-fin-0.1.1SGOV4 questions2 actions
  1. StateSGOV
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions2 rules · dry run

State

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

Questions

atr_lowEnglish → ruleIs the 14-day ATR less than 2% of the price?
hv_lowEnglish → ruleIs 20-day historical volatility below 20%?
downEnglish → ruleIs the stock down more than 5% over the last month?
paysrulepays_dividend > 0.5
Pays a dividend

Answers

QuestionAnswerReading
atr_low
Is the 14-day ATR less than 2% of the price
compiled to atr(14) / C < 0.02
0.9463true
hv_low
Is 20-day historical volatility below 20%
compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2
0.9463true
down
Is the stock down more than 5% over the last month
compiled to C / C[-21] - 1 < -0.05
0.0537false
pays
Pays a dividend
0.8591true

Actions

Rules on the answers decide what to send.

atr_low < 0.4 or down >= 0.6→Emailtreasury-ops
else→Slackendowment-office
What each action would send 1 of 2 fired · dry run, nothing sent
reserve_alertrule false: skipped
readywould send (dry run)Slack → endowment-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."
      }
    }
  ]
}

atr log offset pays_dividend sqrt std

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.

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