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

Family office: 20 ways to use Ora

A concentrated, multi-asset book with a small team: watch everything, act on exceptions. Each example is a complete, runnable request with the real answers it returned (48 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 (50)

sma 13offset 5max 5atr 5log 4sqrt 4std 4roc 4beat_eps_last 3lowest 3avg 3highest 3beat_revenue_last 2doji 2min 2rsi 2outside_bar 2swinghigh 2swinglow 2ref 2raised_last 1years_of_growth 1adx 1diminus 1diplus 1macd 1macdsignal 1revenue_growth_yoy 1mean 1median 1crossup 1eps_growth_yoy 1last_earnings_gap 1pre_earnings_close 1gravestone_doji 1inside_bar 1marubozu 1spinning_top 1ema 1bblower 1bbmid 1bbupper 1cut_last 1days_to_ex_div 1div_ttm 1div_yield_ttm 1pays_dividend 1atr_pct 1cci 1abs 1

Examples 11–20 of 20 · page 2 of 2

Family office · example 11

Emerging markets tilt: INDA, EWZ, MCHI and EWT

The family likes country bets; compare trend and momentum across four emerging markets before adding to one.

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

State

{"symbol":"INDA"} then EWZ, MCHI, EWT, 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
rocruleroc(C, 63) > 10
Up more than 10% over three months
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulestackedrulerocrulenear_highrulebeat_spyforecast
INDA0.08950.05370.05370.05370.349
EWZ0.08880.06020.06940.05370.392
MCHI0.05370.05370.05370.05370.403
EWT0.91310.06550.0880.05370.582

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. Up more than 10% over three months: true for none of 4. Within 2% of the 52-week high: true for none of 4. Highest odds for “Beating SPY over a month”: EWT at 58%.

The country with trend, momentum and a nearby high is the cleaner add; laggards wait until their trend turns.

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)"
    },
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 63) > 10"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "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"
    },
    "roc": {
      "yes_no": 0.0537,
      "rule": "roc(C, 63) > 10",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.349
    }
  },
  "context": {
    "symbol": "INDA",
    "as_of": "2026-10-30"
  }
}

ema max roc sma

Family office · example 12

When to hedge a concentrated AMZN stake with puts

Puts are cheaper when volatility is low; check whether volatility is calm and the stock is extended before buying protection.

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

State

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

Questions

hv_lowEnglish → ruleIs 20-day historical volatility below 20%?
extEnglish → ruleIs price extended more than 2 ATR above its 20-day average?
squeezerule(bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06
Bollinger bands narrower than 6% of price
vol_upforecastWill volatility be higher over the next month?
Higher volatility next month
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
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.1317false
ext
Is price extended more than 2 ATR above its 20-day average
compiled to C - sma(C, 20) > 2 * atr(14)
0.0537false
squeeze
Bollinger bands narrower than 6% of price
0.2727false
vol_up
Higher volatility next month
0.36837% · unlikely
drop10
A 10% drawdown within a month
0.46246% · close to even

Actions

Rules on the answers decide what to send.

hv_low >= 0.6 and (ext >= 0.6 or drop10 >= 0.35)→Slackfo-investments
else→Slackfo-investments
What each action would send 1 of 2 fired · dry run, nothing sent
hedge_nowrule false: skipped
waitwould send (dry run)Slack → fo-investments
{
  "text": "AMZN (2026-10-30): no hedge trigger. Calm volatility 13%, extended 5%."
}

What it means

For AMZN on the session of 2026-10-30: Not true: Is 20-day historical volatility below 20%; Is price extended more than 2 ATR above its 20-day average; Bollinger bands narrower than 6% of price. Forecasts: Higher volatility next month 37%; A 10% drawdown within a month 46%. Fired: wait (Slack → fo-investments).

Low realized volatility and real downside odds together make protection worth pricing; otherwise the team waits.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AMZN"
  },
  "questions": {
    "hv_low": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "ext": {
      "type": "yes_no",
      "instructions": "Is price extended more than 2 ATR above its 20-day average?"
    },
    "squeeze": {
      "type": "yes_no",
      "ask": "(bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "hedge_now",
      "when": "hv_low >= 0.6 and (ext >= 0.6 or drop10 >= 0.35)",
      "do": "slack",
      "connection": "fo-investments",
      "message": "{{symbol}} ({{as_of}}): volatility is calm ({{hv_low|pct}}) and downside odds are {{drop10|pct}}. Price protective puts on the concentrated stake."
    },
    {
      "id": "wait",
      "when": "else",
      "do": "slack",
      "connection": "fo-investments",
      "message": "{{symbol}} ({{as_of}}): no hedge trigger. Calm volatility {{hv_low|pct}}, extended {{ext|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (AMZN, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "hv_low": {
      "yes_no": 0.1317,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "ext": {
      "yes_no": 0.0537,
      "rule": "C - sma(C, 20) > 2 * atr(14)",
      "basis": "pattern"
    },
    "squeeze": {
      "yes_no": 0.2727,
      "rule": "(bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06",
      "basis": "rule"
    },
    "vol_up": {
      "yes_no": 0.368
    },
    "drop10": {
      "yes_no": 0.462
    }
  },
  "context": {
    "symbol": "AMZN",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "hedge_now",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "wait",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "fo-investments",
      "preview": {
        "text": "AMZN (2026-10-30): no hedge trigger. Calm volatility 13%, extended 5%."
      }
    }
  ]
}

atr bblower bbmid bbupper log offset sma sqrt std

Family office · example 13

Trust income: do the dividend holdings cover the distribution?

A family trust distributes income quarterly; confirm each dividend holding is paying and not cutting.

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

State

{"symbol":"PG"} then PEP, KO, MO, one request each. The server fills in the latest completed session.

Questions

paysrulepays_dividend > 0.5
Pays a dividend
no_cutrulecut_last < 0.5
Did not cut its last dividend
yield3rulediv_yield_ttm > 3
Yield above 3%
div2English → ruleHas the stock paid more than $2 per share in dividends over the past year?
ex_soonruledays_to_ex_div <= 30
Goes ex-dividend within 30 days

Answers

Symbolpaysruleno_cutruleyield3rulediv2ruleex_soonrule
PG0.85910.85910.20910.94630.0537
PEP0.85910.85910.94630.94630.0537
KO0.85910.85910.05370.94630.2049
MO0.85910.85910.94630.94630.0537

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: Pays a dividend: true for PG, PEP, KO, MO of 4. Did not cut its last dividend: true for PG, PEP, KO, MO of 4. Yield above 3%: true for PEP, MO of 4. Has the stock paid more than $2 per share in dividends over the past year: true for PG, PEP, KO, MO of 4.

Payout facts per holding show whether trust income is on track; a cut would mean adjusting the distribution plan.

Request JSON (PG; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "PG"
  },
  "questions": {
    "pays": {
      "type": "yes_no",
      "ask": "pays_dividend > 0.5"
    },
    "no_cut": {
      "type": "yes_no",
      "ask": "cut_last < 0.5"
    },
    "yield3": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 3"
    },
    "div2": {
      "type": "yes_no",
      "instructions": "Has the stock paid more than $2 per share in dividends over the past year?"
    },
    "ex_soon": {
      "type": "yes_no",
      "ask": "days_to_ex_div <= 30"
    }
  }
}
Response JSON (PG, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "pays": {
      "yes_no": 0.8591,
      "rule": "pays_dividend > 0.5",
      "basis": "rule"
    },
    "no_cut": {
      "yes_no": 0.8591,
      "rule": "cut_last < 0.5",
      "basis": "rule"
    },
    "yield3": {
      "yes_no": 0.2091,
      "rule": "div_yield_ttm > 3",
      "basis": "rule"
    },
    "div2": {
      "yes_no": 0.9463,
      "rule": "div_ttm > 2",
      "basis": "pattern"
    },
    "ex_soon": {
      "yes_no": 0.0537,
      "rule": "days_to_ex_div <= 30",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "PG",
    "as_of": "2026-10-30"
  }
}

cut_last days_to_ex_div div_ttm div_yield_ttm pays_dividend

Family office · example 14

Is the IPO window open? Growth proxies ARKK and IWM

The family has late-stage venture stakes that could list; read the growth-market mood from speculative and small-cap ETFs.

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

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
momentumruleroc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)
Momentum with participation
hh_hlrule(swinghigh(3) > swinghigh(3, 2)) and (swinglow(3) > swinglow(3, 2))
Higher swing highs and higher swing lows
vol_lowEnglish → ruleIs 20-day historical volatility below 20%?
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symboltrendrulemomentumrulehh_hlrulevol_lowrulerally5forecast
ARKK0.81320.07010.06040.05370.681
IWM0.55640.07190.12940.93870.285

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: Is the stock above its 200-day moving average: true for ARKK of 2. Momentum with participation: true for none of 2. Higher swing highs and higher swing lows: true for none of 2. Is 20-day historical volatility below 20%: true for IWM of 2. Highest odds for “A 5% rally within a month”: ARKK at 68%.

Rising growth proxies with calm volatility are the conditions bankers look for; weak readings suggest waiting on any listing plans.

Request JSON (ARKK; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "ARKK"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "momentum": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)"
    },
    "hh_hl": {
      "type": "yes_no",
      "ask": "(swinghigh(3) > swinghigh(3, 2)) and (swinglow(3) > swinglow(3, 2))"
    },
    "vol_low": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (ARKK, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8132,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "momentum": {
      "yes_no": 0.0701,
      "rule": "roc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)",
      "basis": "rule"
    },
    "hh_hl": {
      "yes_no": 0.0604,
      "rule": "(swinghigh(3) > swinghigh(3, 2)) and (swinglow(3) > swinglow(3, 2))",
      "basis": "rule"
    },
    "vol_low": {
      "yes_no": 0.0537,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "rally5": {
      "yes_no": 0.681
    }
  },
  "context": {
    "symbol": "ARKK",
    "as_of": "2026-10-30"
  }
}

avg log offset roc sma sqrt std swinghigh swinglow

Family office · example 15

Friday CIO email: the family's largest five positions

Every Friday afternoon, email the CIO each top position's trend and month-ahead odds.

ora-fin-0.1.15 symbols, one request each4 questions1 actionworkflow · Fri at 15:30 ET
  1. ScheduleFri at 15:30 ET
  2. State5 symbols
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
above_50druleC > sma(C, 50)
Above the 50-day average
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symboltrendruleabove_50druledrop5forecastrally5forecastFired
AAPL0.94630.91190.3650.446line
NVDA0.54550.07460.5230.616line
MSFT0.94630.70880.4220.495line
SPY0.94510.11280.2030.229line
GLD0.05370.08070.4350.503line

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→Emailcio
AAPL 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Email → cio
{
  "subject": "Weekly: AAPL",
  "text": "AAPL (2026-10-30): above 200-day 95%, above 50-day 91%. Month ahead: 5% drop 36%, 5% rally 45%."
}
NVDA 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Email → cio
{
  "subject": "Weekly: NVDA",
  "text": "NVDA (2026-10-30): above 200-day 55%, above 50-day 7%. Month ahead: 5% drop 52%, 5% rally 62%."
}
MSFT 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Email → cio
{
  "subject": "Weekly: MSFT",
  "text": "MSFT (2026-10-30): above 200-day 95%, above 50-day 71%. Month ahead: 5% drop 42%, 5% rally 50%."
}
SPY 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Email → cio
{
  "subject": "Weekly: SPY",
  "text": "SPY (2026-10-30): above 200-day 95%, above 50-day 11%. Month ahead: 5% drop 20%, 5% rally 23%."
}
GLD 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Email → cio
{
  "subject": "Weekly: GLD",
  "text": "GLD (2026-10-30): above 200-day 5%, above 50-day 8%. Month ahead: 5% drop 44%, 5% rally 50%."
}

What it means

Session of 2026-10-30, 5 symbols: Is the stock above its 200-day moving average: true for AAPL, MSFT, SPY of 5. Above the 50-day average: true for AAPL, MSFT of 5. Highest odds for “A 5% drawdown within a month”: NVDA at 52%. line fired for AAPL, NVDA, MSFT, SPY, GLD.

The CIO gets the same format every week for every large position, so changes stand out at a glance.

As a scheduled workflow (Fri at 15:30 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 CIO email: the family's largest five positions",
  "symbols": "AAPL NVDA MSFT SPY GLD",
  "days": [
    5
  ],
  "at_time": "15:30",
  "model": "ora-fin-0.1.1",
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "line",
      "when": "trend >= 0",
      "do": "email",
      "connection": "cio",
      "subject": "Weekly: {{symbol}}",
      "message": "{{symbol}} ({{as_of}}): above 200-day {{trend|pct}}, above 50-day {{above_50d|pct}}. Month ahead: 5% drop {{drop5|pct}}, 5% rally {{rally5|pct}}."
    }
  ]
}
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?"
    },
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "line",
      "when": "trend >= 0",
      "do": "email",
      "connection": "cio",
      "subject": "Weekly: {{symbol}}",
      "message": "{{symbol}} ({{as_of}}): above 200-day {{trend|pct}}, above 50-day {{above_50d|pct}}. Month ahead: 5% drop {{drop5|pct}}, 5% rally {{rally5|pct}}."
    }
  ],
  "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"
    },
    "above_50d": {
      "yes_no": 0.9119,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.365
    },
    "rally5": {
      "yes_no": 0.446
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "line",
      "fired": true,
      "status": "dry_run",
      "do": "email",
      "connection": "cio",
      "preview": {
        "subject": "Weekly: AAPL",
        "text": "AAPL (2026-10-30): above 200-day 95%, above 50-day 91%. Month ahead: 5% drop 36%, 5% rally 45%."
      }
    }
  ]
}

sma

Family office · example 16

Private credit exposure: what do BKLN and HYG say?

The family holds private credit funds; listed loan and high-yield ETFs give an early read on credit stress.

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

State

{"symbol":"BKLN"} then HYG, 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
lowestruleC < lowest(C, 60)
Closed below every close of the previous 60 sessions
atr_expruleatr(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

Symboltrendrulebreakdownrulelowestruleatr_expruledown_weekforecast
BKLN0.81330.06090.05570.44220.434
HYG0.19140.08110.11680.07770.425

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 BKLN of 2. Closed under the 20-day low: true for none of 2. Closed below every close of the previous 60 sessions: true for none of 2. ATR up 20% in two weeks: true for none of 2. Highest odds for “Lower in a week”: BKLN at 43%.

Loan and high-yield ETFs breaking to new lows would prompt calls to the private credit managers about marks and defaults.

Request JSON (BKLN; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "BKLN"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "lowest": {
      "type": "yes_no",
      "ask": "C < lowest(C, 60)"
    },
    "atr_exp": {
      "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 (BKLN, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8133,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "breakdown": {
      "yes_no": 0.0609,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "lowest": {
      "yes_no": 0.0557,
      "rule": "C < lowest(C, 60)",
      "basis": "rule"
    },
    "atr_exp": {
      "yes_no": 0.4422,
      "rule": "atr(14) > 1.2 * ref(atr(14), -10)",
      "basis": "rule"
    },
    "down_week": {
      "yes_no": 0.434
    }
  },
  "context": {
    "symbol": "BKLN",
    "as_of": "2026-10-30"
  }
}

atr lowest ref sma

Family office · example 17

Dollar-cost averaging into VTI: buy more on weak weeks

Automate the family's monthly buy so it doubles on weak weeks and stays normal otherwise.

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

State

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

Questions

down_weekEnglish → ruleIs the stock down over the last week?
rsi40English → ruleIs RSI below 40?
trendEnglish → ruleIs the stock above its 200-day moving average?
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
down_week
Is the stock down over the last week
compiled to C < C[-5]
0.6846true
rsi40
Is RSI below 40
compiled to rsi(C, 14) < 40
0.3777false
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.9415true
up_week
Higher in a week
0.5757% · close to even

Actions

Rules on the answers decide what to send.

down_week >= 0.6 and trend >= 0.6→Webhookbroker-oms
else→Webhookbroker-oms
What each action would send 1 of 2 fired · dry run, nothing sent
doublewould send (dry run)Webhook → broker-oms
{
  "side": "buy",
  "symbol": "VTI",
  "notional_usd": 50000,
  "reason": "dca_weak_week",
  "as_of": "2026-10-30"
}
normalrule false: skipped

What it means

For VTI on the session of 2026-10-30: True now: Is the stock down over the last week; Is the stock above its 200-day moving average. Not true: Is RSI below 40. Forecasts: Higher in a week 57%. Fired: double (Webhook → broker-oms).

The rule only changes the size of a buy that happens anyway; a down week inside an uptrend gets the larger amount.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VTI"
  },
  "questions": {
    "down_week": {
      "type": "yes_no",
      "instructions": "Is the stock down over the last week?"
    },
    "rsi40": {
      "type": "yes_no",
      "instructions": "Is RSI below 40?"
    },
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "double",
      "when": "down_week >= 0.6 and trend >= 0.6",
      "do": "webhook",
      "connection": "broker-oms",
      "body": {
        "side": "buy",
        "symbol": "{{symbol}}",
        "notional_usd": 50000,
        "reason": "dca_weak_week",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "normal",
      "when": "else",
      "do": "webhook",
      "connection": "broker-oms",
      "body": {
        "side": "buy",
        "symbol": "{{symbol}}",
        "notional_usd": 25000,
        "reason": "dca_regular",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (VTI, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "down_week": {
      "yes_no": 0.6846,
      "rule": "C < C[-5]",
      "basis": "pattern"
    },
    "rsi40": {
      "yes_no": 0.3777,
      "rule": "rsi(C, 14) < 40",
      "basis": "comparison"
    },
    "trend": {
      "yes_no": 0.9415,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "up_week": {
      "yes_no": 0.57
    }
  },
  "context": {
    "symbol": "VTI",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "double",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "broker-oms",
      "preview": {
        "body": {
          "side": "buy",
          "symbol": "VTI",
          "notional_usd": 50000,
          "reason": "dca_weak_week",
          "as_of": "2026-10-30"
        }
      }
    },
    {
      "id": "normal",
      "fired": false,
      "status": "skipped"
    }
  ]
}

offset rsi sma

Family office · example 18

Volatility budget for a TSLA position the family won't sell

Some positions are held for conviction; measure how much they move so the rest of the book can be sized around them.

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

State

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

Questions

atr3ruleatr_pct(14) > 3
A typical day moves more than 3%
hv40English → ruleIs 20-day historical volatility above 40%?
rangeEnglish → ruleWas today's range more than 1.5 ATR?
outsideEnglish → ruleIs today an outside day?
vol_upforecastWill volatility be higher over the next month?
Higher volatility next month
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
atr3
A typical day moves more than 3%
0.848true
hv40
Is 20-day historical volatility above 40%
compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4
0.3248false
range
Was today's range more than 1.5 ATR
compiled to (H - L) > 1.5 * atr(14)
0.1662false
outside
Is today an outside day
compiled to outside_bar()
0.3172false
vol_up
Higher volatility next month
0.44645% · close to even
big5
A big move either way in 5 days
0.24825% · unlikely

What it means

For TSLA on the session of 2026-10-30: True now: A typical day moves more than 3%. Not true: Is 20-day historical volatility above 40%; Was today's range more than 1.5 ATR; Is today an outside day. Forecasts: Higher volatility next month 45%; A big move either way in 5 days 25%.

If the conviction holding is in a high-volatility regime, the family trims risk elsewhere rather than in the position itself.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TSLA"
  },
  "questions": {
    "atr3": {
      "type": "yes_no",
      "ask": "atr_pct(14) > 3"
    },
    "hv40": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility above 40%?"
    },
    "range": {
      "type": "yes_no",
      "instructions": "Was today's range more than 1.5 ATR?"
    },
    "outside": {
      "type": "yes_no",
      "instructions": "Is today an outside day?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  }
}
Response JSON (TSLA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "atr3": {
      "yes_no": 0.848,
      "rule": "atr_pct(14) > 3",
      "basis": "rule"
    },
    "hv40": {
      "yes_no": 0.3248,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4",
      "basis": "pattern"
    },
    "range": {
      "yes_no": 0.1662,
      "rule": "(H - L) > 1.5 * atr(14)",
      "basis": "pattern"
    },
    "outside": {
      "yes_no": 0.3172,
      "rule": "outside_bar()",
      "basis": "pattern"
    },
    "vol_up": {
      "yes_no": 0.446
    },
    "big5": {
      "yes_no": 0.248
    }
  },
  "context": {
    "symbol": "TSLA",
    "as_of": "2026-10-30"
  }
}

atr atr_pct log offset outside_bar sqrt std

Family office · example 19

Biotech sleeve: XBI and IBB trend and breakout check

The family funds medical research and holds biotech ETFs; check whether the sector is breaking out.

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

State

{"symbol":"XBI"} then IBB, 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
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
ccirulecci(20) > 100
CCI above 100
hh_hlEnglish → ruleIs the stock making higher swing highs and higher swing lows?
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month

Answers

Symbolbreakoutrulenear_highruleccirulehh_hlrulerally10forecast
XBI0.06650.07830.64010.1190.579
IBB0.46760.46630.82410.28040.487

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: 20-day breakout on 1.5× volume: true for none of 2. Within 2% of the 52-week high: true for none of 2. CCI above 100: true for XBI, IBB of 2. Is the stock making higher swing highs and higher swing lows: true for none of 2. Highest odds for “A 10% rally within a month”: XBI at 58%.

A volume-backed breakout with strong CCI is the case for adding; without it the sleeve stays at its weight.

Request JSON (XBI; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "XBI"
  },
  "questions": {
    "breakout": {
      "type": "yes_no",
      "ask": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "cci": {
      "type": "yes_no",
      "ask": "cci(20) > 100"
    },
    "hh_hl": {
      "type": "yes_no",
      "instructions": "Is the stock making higher swing highs and higher swing lows?"
    },
    "rally10": {
      "type": "yes_no",
      "instructions": "Will it rally at least 10% at some point in the next month?"
    }
  }
}
Response JSON (XBI, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "breakout": {
      "yes_no": 0.0665,
      "rule": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.0783,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "cci": {
      "yes_no": 0.6401,
      "rule": "cci(20) > 100",
      "basis": "rule"
    },
    "hh_hl": {
      "yes_no": 0.119,
      "rule": "(swinghigh(5, 1) > swinghigh(5, 2)) and (swinglow(5, 1) > swinglow(5, 2))",
      "basis": "pattern"
    },
    "rally10": {
      "yes_no": 0.579
    }
  },
  "context": {
    "symbol": "XBI",
    "as_of": "2026-10-30"
  }
}

avg cci highest max ref swinghigh swinglow

Family office · example 20

Estate planning: is BLK near a high or a low today?

For a gifting plan valued on a date, know where the stock sits in its range to choose a better valuation window.

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

State

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

Questions

near_highEnglish → ruleIs the stock within 5% of its 52-week high?
near_lowEnglish → ruleIs the stock within 10% of its 52-week low?
range_topEnglish → ruleIs the stock in the top 10% of its 20-day range?
lower_thirdruleC < lowest(L, 20) + (highest(H, 20) - lowest(L, 20)) / 3
In the lower third of its 20-day range
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

QuestionAnswerReading
near_high
Is the stock within 5% of its 52-week high
compiled to abs(C / max(H, 252) - 1) <= 0.05
0.7709true
near_low
Is the stock within 10% of its 52-week low
compiled to abs(C / min(L, 252) - 1) <= 0.1
0.0537false
range_top
Is the stock in the top 10% of its 20-day range
compiled to (C - min(L, 20)) / (max(H, 20) - min(L, 20)) >= 0.9
0.262false
lower_third
In the lower third of its 20-day range
0.0957false
down_week
Lower in a week
0.44645% · close to even

What it means

For BLK on the session of 2026-10-30: True now: Is the stock within 5% of its 52-week high. Not true: Is the stock within 10% of its 52-week low; Is the stock in the top 10% of its 20-day range; In the lower third of its 20-day range. Forecasts: Lower in a week 45%.

Gifts valued near a low transfer more shares for the same exemption; the facts show where the stock sits today, the planners pick the date.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "BLK"
  },
  "questions": {
    "near_high": {
      "type": "yes_no",
      "instructions": "Is the stock within 5% of its 52-week high?"
    },
    "near_low": {
      "type": "yes_no",
      "instructions": "Is the stock within 10% of its 52-week low?"
    },
    "range_top": {
      "type": "yes_no",
      "instructions": "Is the stock in the top 10% of its 20-day range?"
    },
    "lower_third": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20) + (highest(H, 20) - lowest(L, 20)) / 3"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  }
}
Response JSON (BLK, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "near_high": {
      "yes_no": 0.7709,
      "rule": "abs(C / max(H, 252) - 1) <= 0.05",
      "basis": "comparison"
    },
    "near_low": {
      "yes_no": 0.0537,
      "rule": "abs(C / min(L, 252) - 1) <= 0.1",
      "basis": "comparison"
    },
    "range_top": {
      "yes_no": 0.262,
      "rule": "(C - min(L, 20)) / (max(H, 20) - min(L, 20)) >= 0.9",
      "basis": "pattern"
    },
    "lower_third": {
      "yes_no": 0.0957,
      "rule": "C < lowest(L, 20) + (highest(H, 20) - lowest(L, 20)) / 3",
      "basis": "rule"
    },
    "down_week": {
      "yes_no": 0.446
    }
  },
  "context": {
    "symbol": "BLK",
    "as_of": "2026-10-30"
  }
}

abs highest lowest max min

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, Wealth manager, 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.