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

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.

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

ora-fin-0.1.1GLD5 questions2 actions
  1. StateGLD
  2. Questions5 asked
  3. Answersreal, captured
  4. Actions2 rules · dry run

State

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

Questions

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
rsi70rulersi(C, 14) > 70
RSI above 70
shootingruleshooting_star()
shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.
gravestonerulegravestone_doji()
gravestone doji candle: Doji with a long upper wick and almost no lower wick.
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
stacked
Stacked averages: close > 20 EMA > 50 > 200
0.0537false
rsi70
RSI above 70
0.0537false
shooting
shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.
0.0584false
gravestone
gravestone doji candle: Doji with a long upper wick and almost no lower wick.
0.0548false
drop5
A 5% drawdown within a month
0.43544% · close to even

Actions

Rules on the answers decide what to send.

shooting >= 0.6 or gravestone >= 0.6→Slackinvestment-office
else→Slackinvestment-office
What each action would send 1 of 2 fired · dry run, nothing sent
exhaustionrule false: skipped
intactwould send (dry run)Slack → investment-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%."
      }
    }
  ]
}

ema gravestone_doji rsi shooting_star sma

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.

ora-fin-0.1.1SHY4 questions
  1. StateSHY
  2. Questions4 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"SHY"} 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%?
down5English → ruleIs the stock down more than 5% over the last month?
betweenrulebetween(rsi(C, 14), 30, 70)
RSI between 30 and 70 (no extreme)

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
down5
Is the stock down more than 5% over the last month
compiled to C / C[-21] - 1 < -0.05
0.0537false
between
RSI between 30 and 70 (no extreme)
0.05false

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

atr between log offset rsi sqrt std

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.

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

State

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

Questions

piercingrulepiercing_line()
piercing line candle: After a red day, opens below its close and closes above the middle of its body (but under its open).
morningrulemorning_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.
engulfruleengulfing_bull()
engulfing bull candle: A green body that engulfs yesterday's red body.
near_lowEnglish → ruleIs the stock within 10% of its 52-week low?
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
piercing
piercing line candle: After a red day, opens below its close and closes above the middle of its body (but under its open).
0.1935false
morning
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.
0.1774false
engulf
engulfing bull candle: A green body that engulfs yesterday's red body.
0.1812false
near_low
Is the stock within 10% of its 52-week low
compiled to abs(C / min(L, 252) - 1) <= 0.1
0.9463true
rally5
A 5% rally within a month
0.0091% · 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"
  }
}

abs engulfing_bull min morning_star piercing_line

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.

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

State

{"symbol":"AAPL"} then MSFT, JPM, one request each. The server fills in the latest completed session.

Questions

earn14English → ruleIs earnings in the next 14 days?
big_reactruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%
trendruleC > sma(C, 50)
Above the 50-day average
big_moveforecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

Symbolearn14rulebig_reactruletrendrulebig_moveforecastFired
AAPL0.94630.94630.91190.409event_risk
MSFT0.05370.05370.70880.397none
JPM0.05370.06640.30340.371none

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
AAPL 1 of 1 fired · dry run, nothing sent
event_riskwould send (dry run)Email → capital-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%."
}
MSFT 0 of 1 fired · dry run, nothing sent
JPM 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 3 symbols: Is earnings in the next 14 days: true for 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%."
      }
    }
  ]
}

abs days_to_earnings last_earnings_move sma

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.

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

State

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

Questions

rocruleroc(C, 63) > 0
Up over three months
logrulelog(C / C[-20]) > 0
Up over the last 20 sessions (log return positive)
smarulesma(C, 50) > ref(sma(C, 50), -10)
The 50-day average is rising
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symbolrocrulelogrulesmaruleup_weekforecast
SHY0.74940.93070.16240.594
IEF0.25690.92750.08820.483
TLT0.40030.9320.15840.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"
  }
}

log offset ref roc sma

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.

ora-fin-0.1.1EFA4 questions
  1. StateEFA
  2. Questions4 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
goldenrulesma(C, 50) > sma(C, 200)
50-day above the 200-day
mostlyrulesum(C > C[-1], 10) >= 6
Up on at least six of the last ten days
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

QuestionAnswerReading
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.6709true
golden
50-day above the 200-day
0.9463true
mostly
Up on at least six of the last ten days
0.55on the line (true)
beat_spy
Beating SPY over a month
0.44745% · 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"
  }
}

offset sma sum

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.

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

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
donchianruleC > highest(C, 55)
55-day closing breakout
atr3ruleatr_pct(14) > 3
A typical day moves more than 3%
soldiersrulethree_white_soldiers()
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
trend
Above the 50-day average
0.8888true
donchian
55-day closing breakout
0.1724false
atr3
A typical day moves more than 3%
0.0537false
soldiers
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
0.0955false
rally5
A 5% rally within a month
0.39239% · 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"
  }
}

atr_pct highest sma three_white_soldiers

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.

ora-fin-0.1.13 symbols, one request each4 questions2 actionsworkflow · Mon–Fri at 16:40 ET
  1. ScheduleMon–Fri at 16:40 ET
  2. State3 symbols
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions2 rules · dry run

State

{"symbol":"VTI"} then EFA, EEM, one request each. The server fills in the latest completed session.

Questions

down3English → ruleDid the stock fall more than 3% today?
move_atrruleabs(C - C[-1]) > 1.5 * atr(14)
Today's move was bigger than 1.5 ATR
worstEnglish → ruleWas today the worst day of the last 20 sessions?
gap_downforecastWill it gap down tomorrow?
A gap down tomorrow

Answers

Symboldown3rulemove_atrruleworstrulegap_downforecastFired
VTI0.07170.7930.83680.029big_day
EFA0.05390.09450.38490.019none
EEM0.35350.45080.39740.077none

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-dashboard
move_atr >= 0.6→Slackrisk-team
VTI 1 of 2 fired · dry run, nothing sent
limit_dayrule false: skipped
big_daywould send (dry run)Slack → risk-team
{
  "text": "VTI (2026-10-30): move bigger than 1.5 ATR (79%), worst day in 20 84%."
}
EFA 0 of 2 fired · dry run, nothing sent
EEM 0 of 2 fired · dry run, nothing sent

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%."
      }
    }
  ]
}

abs atr min offset ref

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.

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

State

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

Questions

hammerrulehammer()
hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back.
hangingrulehanging_man()
hanging man candle: Hammer shape, closing above the close five bars back.
dojiruledoji()
doji candle: Body at most 10% of the day's range.
outsideruleoutside_bar()
outside bar candle: Today's high above yesterday's and low below it.
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
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.
0.1416false
hanging
hanging man candle: Hammer shape, closing above the close five bars back.
0.1416false
doji
doji candle: Body at most 10% of the day's range.
0.367false
outside
outside bar candle: Today's high above yesterday's and low below it.
0.179false
up_week
Higher in a week
0.50250% · 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"
  }
}

doji hammer hanging_man outside_bar

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.

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

State

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

Questions

up5druleC > C[-5]
Higher than five sessions ago
down_weekEnglish → ruleIs the stock down over the last week?
up_volruleC > C[-1] and V > 1.5 * ref(avg(V, 20), -1)
Up on heavy volume
signrulesum(sign(C - C[-1]), 10) > 2
More up days than down days by three or more over 10 sessions
big_moveforecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

Symbolup5druledown_weekruleup_volrulesignrulebig_moveforecast
SPY0.25860.74140.05520.450.425
TLT0.70040.29960.16810.450.371
GLD0.16710.83290.0640.10740.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"
  }
}

avg offset ref sign sum

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.

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