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 · Buy side

Wealth manager: 20 ways to use Ora

Model portfolios across many households: drift, concentration, income and risk alerts. Each example is a complete, runnable request with the real answers it returned (46 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 (53)

sma 16offset 9max 5atr 4log 4sqrt 4std 4pays_dividend 3rsi 2ref 2cut_last 2div_count_ttm 2div_yield_ttm 2ema 2roc 2abs 2lowest 2avg 1lowestbars 1sum 1beat_eps_last 1beat_revenue_last 1eps_growth_yoy 1raised_last 1years_of_growth 1cum 1adx 1diminus 1diplus 1beat_streak 1days_to_earnings 1last_earnings_move 1next_report_bmo 1macd 1macdsignal 1dark_cloud 1engulfing_bear 1evening_star 1hanging_man 1tweezer_top 1zscore 1highest 1rma 1bbupper 1dragonfly_doji 1inverted_hammer 1stochd 1stochk 1beats_last4 1revenue_growth_yoy 1willr 1atr_pct 1three_white_soldiers 1

Examples 11–20 of 20 · page 2 of 2

Wealth manager · example 11

REIT sleeve check: VNQ and O income and trend

Rates-sensitive real estate holdings: check yield, payout record and trend before adding.

ora-fin-0.1.12 symbols, one request each6 questions
  1. State2 symbols
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

{"symbol":"VNQ"} then O, one request each. The server fills in the latest completed session.

Questions

yield3rulediv_yield_ttm > 3
Yield above 3%
monthlyEnglish → ruleDoes the stock pay a monthly dividend?
no_cutrulecut_last < 0.5
Did not cut its last dividend
trendEnglish → ruleIs the stock above its 200-day moving average?
macdrulemacd(C) > macdsignal(C)
MACD above its signal line
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symbolyield3rulemonthlyruleno_cutruletrendrulemacdruledrop5forecast
VNQ0.88930.05370.14090.62850.90870.218
O0.94630.93170.85910.14270.88560.313

true false not known for rules; forecasts are odds. Hover a column for its question.

What it means

Session of 2026-10-30, 2 symbols: Yield above 3%: true for VNQ, O of 2. Does the stock pay a monthly dividend: true for O of 2. Did not cut its last dividend: true for O of 2. Is the stock above its 200-day moving average: true for VNQ of 2. Highest odds for “A 5% drawdown within a month”: O at 31%.

Income facts and trend together show whether the sleeve is paying and holding up; monthly payers suit clients who draw income.

Request JSON (VNQ; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VNQ"
  },
  "questions": {
    "yield3": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 3"
    },
    "monthly": {
      "type": "yes_no",
      "instructions": "Does the stock pay a monthly dividend?"
    },
    "no_cut": {
      "type": "yes_no",
      "ask": "cut_last < 0.5"
    },
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "macd": {
      "type": "yes_no",
      "ask": "macd(C) > macdsignal(C)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (VNQ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "yield3": {
      "yes_no": 0.8893,
      "rule": "div_yield_ttm > 3",
      "basis": "rule"
    },
    "monthly": {
      "yes_no": 0.0537,
      "rule": "div_count_ttm >= 11",
      "basis": "pattern"
    },
    "no_cut": {
      "yes_no": 0.1409,
      "rule": "cut_last < 0.5",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.6285,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "macd": {
      "yes_no": 0.9087,
      "rule": "macd(C) > macdsignal(C)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.218
    }
  },
  "context": {
    "symbol": "VNQ",
    "as_of": "2026-10-30"
  }
}

cut_last div_count_ttm div_yield_ttm macd macdsignal sma

Wealth manager · example 12

Bearish reversal candles on QQQ after a run

After a strong stretch, check the growth sleeve for topping candles before adding new client money.

ora-fin-0.1.1QQQ6 questions
  1. StateQQQ
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

eveningruleevening_star()
evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.
darkruledark_cloud()
dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).
engulf_bearruleengulfing_bear()
engulfing bear candle: A red body that engulfs yesterday's green body.
hangingrulehanging_man()
hanging man candle: Hammer shape, closing above the close five bars back.
tweezer_topruletweezer_top()
tweezer top candle: Green then red, with highs within 0.1%.
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

QuestionAnswerReading
evening
evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.
0.0863false
dark
dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).
0.0537false
engulf_bear
engulfing bear candle: A red body that engulfs yesterday's green body.
0.0537false
hanging
hanging man candle: Hammer shape, closing above the close five bars back.
0.1466false
tweezer_top
tweezer top candle: Green then red, with highs within 0.1%.
0.0537false
down_week
Lower in a week
0.53453% · close to even

What it means

For QQQ on the session of 2026-10-30: Not true: evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.; dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).; engulfing bear candle: A red body that engulfs yesterday's green body.; hanging man candle: Hammer shape, closing above the close five bars back.; tweezer top candle: Green then red, with highs within 0.1%.. Forecasts: Lower in a week 53%.

Topping candles are a reason to stage new money rather than invest it all at once; none printing removes that concern.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "QQQ"
  },
  "questions": {
    "evening": {
      "type": "yes_no",
      "ask": "evening_star()"
    },
    "dark": {
      "type": "yes_no",
      "ask": "dark_cloud()"
    },
    "engulf_bear": {
      "type": "yes_no",
      "ask": "engulfing_bear()"
    },
    "hanging": {
      "type": "yes_no",
      "ask": "hanging_man()"
    },
    "tweezer_top": {
      "type": "yes_no",
      "ask": "tweezer_top()"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  }
}
Response JSON (QQQ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "evening": {
      "yes_no": 0.0863,
      "rule": "evening_star()",
      "basis": "rule"
    },
    "dark": {
      "yes_no": 0.0537,
      "rule": "dark_cloud()",
      "basis": "rule"
    },
    "engulf_bear": {
      "yes_no": 0.0537,
      "rule": "engulfing_bear()",
      "basis": "rule"
    },
    "hanging": {
      "yes_no": 0.1466,
      "rule": "hanging_man()",
      "basis": "rule"
    },
    "tweezer_top": {
      "yes_no": 0.0537,
      "rule": "tweezer_top()",
      "basis": "rule"
    },
    "down_week": {
      "yes_no": 0.534
    }
  },
  "context": {
    "symbol": "QQQ",
    "as_of": "2026-10-30"
  }
}

dark_cloud engulfing_bear evening_star hanging_man tweezer_top

Wealth manager · example 13

Daily drawdown escalation for client-held funds

After every close, escalate to the CIO by email any core fund down more than 5% in a month.

ora-fin-0.1.14 symbols, one request each4 questions1 actionworkflow · Mon–Fri at 17:00 ET
  1. ScheduleMon–Fri at 17:00 ET
  2. State4 symbols
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

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

Questions

down_monthEnglish → ruleIs the stock down more than 5% over the last month?
drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
zrulezscore(C, 60) < -2
Price more than 2 standard deviations under its 60-day mean
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symboldown_monthruledrawdownrulezruledrop5forecastFired
VOO0.06490.05370.37850.194none
VEA0.11230.05370.29470.223none
BND0.05370.05370.06190.007none
VNQ0.05370.05370.06960.218none

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.

down_month >= 0.6 or z >= 0.6→Emailcio
VOO 0 of 1 fired · dry run, nothing sent
VEA 0 of 1 fired · dry run, nothing sent
BND 0 of 1 fired · dry run, nothing sent
VNQ 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 4 symbols: Is the stock down more than 5% over the last month: true for none of 4. More than 20% off the 52-week high: true for none of 4. Price more than 2 standard deviations under its 60-day mean: true for none of 4. Highest odds for “A 5% drawdown within a month”: VEA at 22%. escalate fired for none.

The CIO hears about a real drawdown the day it happens; on ordinary days the workflow runs and sends nothing.

As a scheduled workflow (Mon–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": "Daily drawdown escalation for client-held funds",
  "symbols": "VOO VEA BND VNQ",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "17:00",
  "model": "ora-fin-0.1.1",
  "questions": {
    "down_month": {
      "type": "yes_no",
      "instructions": "Is the stock down more than 5% over the last month?"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "z": {
      "type": "yes_no",
      "ask": "zscore(C, 60) < -2"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "escalate",
      "when": "down_month >= 0.6 or z >= 0.6",
      "do": "email",
      "connection": "cio",
      "subject": "Drawdown escalation: {{symbol}} ({{as_of}})",
      "message": "{{symbol}} is down over 5% in a month ({{down_month|pct}}) or 2 sd under its 60-day mean ({{z|pct}}). 20% drawdown {{drawdown|pct}}. Further 5% drop odds {{drop5|pct}}."
    }
  ]
}
Request JSON (VOO; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VOO"
  },
  "questions": {
    "down_month": {
      "type": "yes_no",
      "instructions": "Is the stock down more than 5% over the last month?"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "z": {
      "type": "yes_no",
      "ask": "zscore(C, 60) < -2"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "escalate",
      "when": "down_month >= 0.6 or z >= 0.6",
      "do": "email",
      "connection": "cio",
      "subject": "Drawdown escalation: {{symbol}} ({{as_of}})",
      "message": "{{symbol}} is down over 5% in a month ({{down_month|pct}}) or 2 sd under its 60-day mean ({{z|pct}}). 20% drawdown {{drawdown|pct}}. Further 5% drop odds {{drop5|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (VOO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "down_month": {
      "yes_no": 0.0649,
      "rule": "C / C[-21] - 1 < -0.05",
      "basis": "pattern"
    },
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "z": {
      "yes_no": 0.3785,
      "rule": "zscore(C, 60) < -2",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.194
    }
  },
  "context": {
    "symbol": "VOO",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "escalate",
      "fired": false,
      "status": "skipped"
    }
  ]
}

max offset zscore

Wealth manager · example 14

Inflation sleeve: is DBC trending for real-asset clients?

Check whether the broad commodity fund in the inflation-protection sleeve is trending before rebalancing into it.

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

trendEnglish → ruleIs the stock above its 200-day moving average?
donchianruleC > highest(C, 55)
55-day closing breakout
rmaruleC > rma(C, 50)
Above the 50-day Wilder average
hvEnglish → ruleIs 20-day historical volatility below 20%?
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.9463true
donchian
55-day closing breakout
0.1724false
rma
Above the 50-day Wilder average
0.9463true
hv
Is 20-day historical volatility below 20%
compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2
0.9289true
up_week
Higher in a week
0.65966% · likely

What it means

For DBC on the session of 2026-10-30: True now: Is the stock above its 200-day moving average; Above the 50-day Wilder average; Is 20-day historical volatility below 20%. Not true: 55-day closing breakout. Forecasts: Higher in a week 66%.

Trend and breakout rules say whether commodities are moving the sleeve's way; the forecast frames the week ahead.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "DBC"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "donchian": {
      "type": "yes_no",
      "ask": "C > highest(C, 55)"
    },
    "rma": {
      "type": "yes_no",
      "ask": "C > rma(C, 50)"
    },
    "hv": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (DBC, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "donchian": {
      "yes_no": 0.1724,
      "rule": "C > highest(C, 55)",
      "basis": "rule"
    },
    "rma": {
      "yes_no": 0.9463,
      "rule": "C > rma(C, 50)",
      "basis": "rule"
    },
    "hv": {
      "yes_no": 0.9289,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "up_week": {
      "yes_no": 0.659
    }
  },
  "context": {
    "symbol": "DBC",
    "as_of": "2026-10-30"
  }
}

highest log offset rma sma sqrt std

Wealth manager · example 15

Pacing new client money into SPY: lump sum or stages?

When a new client funds the account, decide between investing at once and staging in over weeks, based on stretch and volatility.

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

State

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

Questions

stretchedruleC > sma(C, 20) + 2 * atr(14)
Stretched: more than 2 ATR above the 20-day
rsi70English → ruleIs the stock overbought on RSI, above 70?
bb_upEnglish → ruleDid the stock close above the upper Bollinger Band?
vol5English → ruleIs 5-day volatility higher than 20-day volatility?
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
stretched
Stretched: more than 2 ATR above the 20-day
0.0537false
rsi70
Is the stock overbought on RSI, above 70
compiled to rsi(C, 14) > 70
0.0537false
bb_up
Did the stock close above the upper Bollinger Band
compiled to C > bbupper(C, 20)
0.0537false
vol5
Is 5-day volatility higher than 20-day volatility
compiled to std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)
0.8872true
drop5
A 5% drawdown within a month
0.20320% · unlikely

Actions

Rules on the answers decide what to send.

stretched >= 0.6 or rsi70 >= 0.6 or drop5 >= 0.5→Webhookrebalance-engine
else→Webhookrebalance-engine
What each action would send 1 of 2 fired · dry run, nothing sent
stagerule false: skipped
lumpwould send (dry run)Webhook → rebalance-engine
{
  "action": "invest_now",
  "symbol": "SPY",
  "as_of": "2026-10-30"
}

What it means

For SPY on the session of 2026-10-30: True now: Is 5-day volatility higher than 20-day volatility. Not true: Stretched: more than 2 ATR above the 20-day; Is the stock overbought on RSI, above 70; Did the stock close above the upper Bollinger Band. Forecasts: A 5% drawdown within a month 20%. Fired: lump (Webhook → rebalance-engine).

A stretched market sends a staged plan to the engine; otherwise the money goes in at once. Either way the advisor sees the reason.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "stretched": {
      "type": "yes_no",
      "ask": "C > sma(C, 20) + 2 * atr(14)"
    },
    "rsi70": {
      "type": "yes_no",
      "instructions": "Is the stock overbought on RSI, above 70?"
    },
    "bb_up": {
      "type": "yes_no",
      "instructions": "Did the stock close above the upper Bollinger Band?"
    },
    "vol5": {
      "type": "yes_no",
      "instructions": "Is 5-day volatility higher than 20-day volatility?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "stage",
      "when": "stretched >= 0.6 or rsi70 >= 0.6 or drop5 >= 0.5",
      "do": "webhook",
      "connection": "rebalance-engine",
      "body": {
        "action": "stage_entry",
        "symbol": "{{symbol}}",
        "tranches": 4,
        "interval_days": 7,
        "p_stretched": "{{stretched}}",
        "p_drop5": "{{drop5}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "lump",
      "when": "else",
      "do": "webhook",
      "connection": "rebalance-engine",
      "body": {
        "action": "invest_now",
        "symbol": "{{symbol}}",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (SPY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "stretched": {
      "yes_no": 0.0537,
      "rule": "C > sma(C, 20) + 2 * atr(14)",
      "basis": "rule"
    },
    "rsi70": {
      "yes_no": 0.0537,
      "rule": "rsi(C, 14) > 70",
      "basis": "pattern"
    },
    "bb_up": {
      "yes_no": 0.0537,
      "rule": "C > bbupper(C, 20)",
      "basis": "comparison"
    },
    "vol5": {
      "yes_no": 0.8872,
      "rule": "std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)",
      "basis": "pattern"
    },
    "drop5": {
      "yes_no": 0.203
    }
  },
  "context": {
    "symbol": "SPY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "stage",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "lump",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "rebalance-engine",
      "preview": {
        "body": {
          "action": "invest_now",
          "symbol": "SPY",
          "as_of": "2026-10-30"
        }
      }
    }
  ]
}

atr bbupper log offset rsi sma sqrt std

Wealth manager · example 16

Rebalancing into lagging small caps (IWM): any sign of a turn?

Models are underweight small caps after a lag; look for reversal evidence before the rebalance tops the sleeve back up.

ora-fin-0.1.1IWM6 questions
  1. StateIWM
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

inv_hammerruleinverted_hammer()
inverted hammer candle: Shooting-star shape after a five-bar decline.
dragonflyruledragonfly_doji()
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
key_revruleL < lowest(L, 10) and C > C[-1]
New 10-day low, but closed up on the day
failed_bdruleL < lowest(L, 20) and C > lowest(L, 20)
Undercut the 20-day low and closed back above it
stochrulestochk(14) > stochd(14) and stochk(14) < 30
Stochastic %K above %D while still under 30
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
inv_hammer
inverted hammer candle: Shooting-star shape after a five-bar decline.
0.0542false
dragonfly
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
0.0698false
key_rev
New 10-day low, but closed up on the day
0.0707false
failed_bd
Undercut the 20-day low and closed back above it
0.1016false
stoch
Stochastic %K above %D while still under 30
0.0708false
rally5
A 5% rally within a month
0.28528% · unlikely

What it means

For IWM on the session of 2026-10-30: Not true: inverted hammer candle: Shooting-star shape after a five-bar decline.; dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.; New 10-day low, but closed up on the day; Undercut the 20-day low and closed back above it; Stochastic %K above %D while still under 30. Forecasts: A 5% rally within a month 28%.

Reversal candles and a failed breakdown are evidence that sellers are tiring; the rebalance goes ahead on schedule either way, this only informs the pace.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IWM"
  },
  "questions": {
    "inv_hammer": {
      "type": "yes_no",
      "ask": "inverted_hammer()"
    },
    "dragonfly": {
      "type": "yes_no",
      "ask": "dragonfly_doji()"
    },
    "key_rev": {
      "type": "yes_no",
      "ask": "L < lowest(L, 10) and C > C[-1]"
    },
    "failed_bd": {
      "type": "yes_no",
      "ask": "L < lowest(L, 20) and C > lowest(L, 20)"
    },
    "stoch": {
      "type": "yes_no",
      "ask": "stochk(14) > stochd(14) and stochk(14) < 30"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (IWM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "inv_hammer": {
      "yes_no": 0.0542,
      "rule": "inverted_hammer()",
      "basis": "rule"
    },
    "dragonfly": {
      "yes_no": 0.0698,
      "rule": "dragonfly_doji()",
      "basis": "rule"
    },
    "key_rev": {
      "yes_no": 0.0707,
      "rule": "L < lowest(L, 10) and C > C[-1]",
      "basis": "rule"
    },
    "failed_bd": {
      "yes_no": 0.1016,
      "rule": "L < lowest(L, 20) and C > lowest(L, 20)",
      "basis": "rule"
    },
    "stoch": {
      "yes_no": 0.0708,
      "rule": "stochk(14) > stochd(14) and stochk(14) < 30",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.285
    }
  },
  "context": {
    "symbol": "IWM",
    "as_of": "2026-10-30"
  }
}

dragonfly_doji inverted_hammer lowest offset stochd stochk

Wealth manager · example 17

Defensive healthcare: LLY, ABBV, MRK and JNJ compared

Rank defensive healthcare holdings by trend and earnings quality before trimming one to fund another.

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

State

{"symbol":"LLY"} then ABBV, MRK, JNJ, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
beatsEnglish → ruleHas the stock beaten EPS estimates in at least 3 of the last 4 quarters?
rev_gEnglish → ruleDid revenue grow more than 5% year over year?
paysrulepays_dividend > 0.5
Pays a dividend
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symboltrendrulebeatsrulerev_grulepaysruledrop5forecast
LLY0.94630.85910.94630.85910.583
ABBV0.94630.85910.94630.85910.509
MRK0.94630.85910.05370.85910.543
JNJ0.94540.550.94630.85910.461

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 LLY, ABBV, MRK, JNJ of 4. Has the stock beaten EPS estimates in at least 3 of the last 4 quarters: true for LLY, ABBV, MRK of 4. Did revenue grow more than 5% year over year: true for LLY, ABBV, JNJ of 4. Pays a dividend: true for LLY, ABBV, MRK, JNJ of 4. Highest odds for “A 5% drawdown within a month”: LLY at 58%.

The same questions for each name make the comparison fair; weaker trend and earnings quality point to the one to trim.

Request JSON (LLY; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "LLY"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "beats": {
      "type": "yes_no",
      "instructions": "Has the stock beaten EPS estimates in at least 3 of the last 4 quarters?"
    },
    "rev_g": {
      "type": "yes_no",
      "instructions": "Did revenue grow more than 5% year over year?"
    },
    "pays": {
      "type": "yes_no",
      "ask": "pays_dividend > 0.5"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (LLY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "beats": {
      "yes_no": 0.8591,
      "rule": "beats_last4 >= 3",
      "basis": "pattern"
    },
    "rev_g": {
      "yes_no": 0.9463,
      "rule": "revenue_growth_yoy > 5",
      "basis": "pattern"
    },
    "pays": {
      "yes_no": 0.8591,
      "rule": "pays_dividend > 0.5",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.583
    }
  },
  "context": {
    "symbol": "LLY",
    "as_of": "2026-10-30"
  }
}

beats_last4 pays_dividend revenue_growth_yoy sma

Wealth manager · example 18

Credit check for balanced models: HYG vs LQD

Use high-yield and investment-grade bond ETFs as a credit-stress read before adding risk to balanced models.

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

State

{"symbol":"HYG"} then LQD, one request each. The server fills in the latest completed session.

Questions

trendruleC > sma(C, 50)
Above the 50-day average
breakdownruleC < lowest(L, 20)
Closed under the 20-day low
willrrulewillr(14) < -80
Williams %R under -80 (near the bottom of its 14-day range)
atrruleatr(14) > 1.2 * ref(atr(14), -10)
ATR up 20% in two weeks
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

Symboltrendrulebreakdownrulewillrruleatrruledown_weekforecast
HYG0.19140.08110.08550.07770.425
LQD0.65520.05370.06350.06070.476

true false not known for rules; forecasts are odds. Hover a column for its question.

What it means

Session of 2026-10-30, 2 symbols: Above the 50-day average: true for LQD of 2. Closed under the 20-day low: true for none of 2. Williams %R under -80 (near the bottom of its 14-day range): true for none of 2. ATR up 20% in two weeks: true for none of 2. Highest odds for “Lower in a week”: LQD at 48%.

High yield breaking down while investment grade holds is the classic credit-stress sign; both calm means no change to risk.

Request JSON (HYG; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "HYG"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "willr": {
      "type": "yes_no",
      "ask": "willr(14) < -80"
    },
    "atr": {
      "type": "yes_no",
      "ask": "atr(14) > 1.2 * ref(atr(14), -10)"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  }
}
Response JSON (HYG, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.1914,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "breakdown": {
      "yes_no": 0.0811,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "willr": {
      "yes_no": 0.0855,
      "rule": "willr(14) < -80",
      "basis": "rule"
    },
    "atr": {
      "yes_no": 0.0777,
      "rule": "atr(14) > 1.2 * ref(atr(14), -10)",
      "basis": "rule"
    },
    "down_week": {
      "yes_no": 0.425
    }
  },
  "context": {
    "symbol": "HYG",
    "as_of": "2026-10-30"
  }
}

atr lowest ref sma willr

Wealth manager · example 19

A client asks about gold miners: GDX volatility and trend

Give the advisor quick facts on the miners ETF before discussing a small satellite position.

ora-fin-0.1.1GDX6 questions
  1. StateGDX
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
atr3ruleatr_pct(14) > 3
A typical day moves more than 3%
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
soldiersrulethree_white_soldiers()
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.0729false
atr3
A typical day moves more than 3%
0.9463true
near_high
Within 2% of the 52-week high
0.0537false
soldiers
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
0.0859false
rally10
A 10% rally within a month
0.64965% · likely
drop10
A 10% drawdown within a month
0.57758% · close to even

What it means

For GDX on the session of 2026-10-30: True now: A typical day moves more than 3%. Not true: Is the stock above its 200-day moving average; Within 2% of the 52-week high; three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.. Forecasts: A 10% rally within a month 65%; A 10% drawdown within a month 58%.

Miners move far more than gold itself; the volatility rule and both ten-percent forecasts make that clear for sizing.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "GDX"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "atr3": {
      "type": "yes_no",
      "ask": "atr_pct(14) > 3"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "soldiers": {
      "type": "yes_no",
      "ask": "three_white_soldiers()"
    },
    "rally10": {
      "type": "yes_no",
      "instructions": "Will it rally at least 10% at some point in the next month?"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  }
}
Response JSON (GDX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.0729,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "atr3": {
      "yes_no": 0.9463,
      "rule": "atr_pct(14) > 3",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "soldiers": {
      "yes_no": 0.0859,
      "rule": "three_white_soldiers()",
      "basis": "rule"
    },
    "rally10": {
      "yes_no": 0.649
    },
    "drop10": {
      "yes_no": 0.577
    }
  },
  "context": {
    "symbol": "GDX",
    "as_of": "2026-10-30"
  }
}

atr_pct max sma three_white_soldiers

Wealth manager · example 20

Quarterly review pack: one request per core holding

Produce the market-status lines for a client's quarterly report across their core holdings.

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

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
three_monthruleC > C[-63]
Higher than three months ago
near_highEnglish → ruleIs the stock within 5% of its 52-week high?
paysrulepays_dividend > 0.5
Pays a dividend
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symboltrendrulethree_monthrulenear_highrulepaysruleup_weekforecastFired
AAPL0.94630.94420.8310.85910.59report_line
COST0.90220.87080.18240.85910.519report_line
JNJ0.94540.87510.80460.85910.525report_line
XOM0.94630.94630.90170.85910.577report_line

true false not known for rules; forecasts are odds. Hover a column for its question.

Actions

Rules on the answers decide what to send. Each symbol runs its own request, so each one can fire.

trend >= 0→Webhookreport-builder
AAPL 1 of 1 fired · dry run, nothing sent
report_linewould send (dry run)Webhook → report-builder
{
  "section": "holdings_status",
  "symbol": "AAPL",
  "above_200d": 0.9463,
  "up_3m": 0.9442,
  "near_52w_high": 0.831,
  "pays_dividend": 0.8591,
  "as_of": "2026-10-30"
}
COST 1 of 1 fired · dry run, nothing sent
report_linewould send (dry run)Webhook → report-builder
{
  "section": "holdings_status",
  "symbol": "COST",
  "above_200d": 0.9022,
  "up_3m": 0.8708,
  "near_52w_high": 0.1824,
  "pays_dividend": 0.8591,
  "as_of": "2026-10-30"
}
JNJ 1 of 1 fired · dry run, nothing sent
report_linewould send (dry run)Webhook → report-builder
{
  "section": "holdings_status",
  "symbol": "JNJ",
  "above_200d": 0.9454,
  "up_3m": 0.8751,
  "near_52w_high": 0.8046,
  "pays_dividend": 0.8591,
  "as_of": "2026-10-30"
}
XOM 1 of 1 fired · dry run, nothing sent
report_linewould send (dry run)Webhook → report-builder
{
  "section": "holdings_status",
  "symbol": "XOM",
  "above_200d": 0.9463,
  "up_3m": 0.9463,
  "near_52w_high": 0.9017,
  "pays_dividend": 0.8591,
  "as_of": "2026-10-30"
}

What it means

Session of 2026-10-30, 4 symbols: Is the stock above its 200-day moving average: true for AAPL, COST, JNJ, XOM of 4. Higher than three months ago: true for AAPL, COST, JNJ, XOM of 4. Is the stock within 5% of its 52-week high: true for AAPL, JNJ, XOM of 4. Pays a dividend: true for AAPL, COST, JNJ, XOM of 4. Highest odds for “Higher in a week”: AAPL at 59%. report_line fired for AAPL, COST, JNJ, XOM.

Every holding sends its status line to the report builder, so the quarterly pack is filled from the same checks for every client.

Request JSON (AAPL; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "three_month": {
      "type": "yes_no",
      "ask": "C > C[-63]"
    },
    "near_high": {
      "type": "yes_no",
      "instructions": "Is the stock within 5% of its 52-week high?"
    },
    "pays": {
      "type": "yes_no",
      "ask": "pays_dividend > 0.5"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "report_line",
      "when": "trend >= 0",
      "do": "webhook",
      "connection": "report-builder",
      "body": {
        "section": "holdings_status",
        "symbol": "{{symbol}}",
        "above_200d": "{{trend}}",
        "up_3m": "{{three_month}}",
        "near_52w_high": "{{near_high}}",
        "pays_dividend": "{{pays}}",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "three_month": {
      "yes_no": 0.9442,
      "rule": "C > C[-63]",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.831,
      "rule": "abs(C / max(H, 252) - 1) <= 0.05",
      "basis": "comparison"
    },
    "pays": {
      "yes_no": 0.8591,
      "rule": "pays_dividend > 0.5",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.59
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "report_line",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "report-builder",
      "preview": {
        "body": {
          "section": "holdings_status",
          "symbol": "AAPL",
          "above_200d": 0.9463,
          "up_3m": 0.9442,
          "near_52w_high": 0.831,
          "pays_dividend": 0.8591,
          "as_of": "2026-10-30"
        }
      }
    }
  ]
}

abs max offset pays_dividend sma

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 Buy side: Financial advisor / RIA, Family office, Hedge fund PM, Quant researcher, Portfolio manager (long-only), Risk manager, Private equity, VC / growth investor, Fund-of-funds allocator.

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