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

Pension fund: 20 ways to use Ora

Policy portfolio, rebalancing ranges and risk-off signals for a long-horizon board. 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 (42)

sma 14offset 8ref 7max 4roc 3avg 3lowest 3atr 3log 2sqrt 2std 2macd 1macdhist 1macdsignal 1wma 1obv 1three_black_crows 1zscore 1engulfing_bull 1harami_bull 1rsi 1div_count_ttm 1div_yield_ttm 1raised_last 1dark_cloud 1engulfing_bear 1evening_star 1tweezer_top 1min 1cut_last 1marubozu 1pays_dividend 1highest 1percentrank 1beat_eps_last 1days_to_earnings 1lowestbars 1spinning_top 1ema 1linreg 1mean 1rec 1

Examples 11–20 of 20 · page 2 of 2

Pension fund · example 11

Is the market calm enough to rebalance this week?

Large rebalancing trades cost more in turbulent markets. Check SPY's volatility state and forecast before scheduling trades.

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

calmEnglish → ruleIs 20-day historical volatility below 20%?
atr_lowEnglish → ruleIs the 14-day ATR less than 2% of the price?
nr7rule(H - L) < lowest(H - L, 6)
Narrowest range of the last seven sessions (NR7)
vol_calmforecastWill volatility calm down over the next 5 days?
Volatility calming over 5 days
vol_riseforecastWill volatility rise over the next 5 days?
Volatility rising over 5 days

Answers

QuestionAnswerReading
calm
Is 20-day historical volatility below 20%
compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2
0.9463true
atr_low
Is the 14-day ATR less than 2% of the price
compiled to atr(14) / C < 0.02
0.9463true
nr7
Narrowest range of the last seven sessions (NR7)
0.0547false
vol_calm
Volatility calming over 5 days
0.45245% · close to even
vol_rise
Volatility rising over 5 days
0.55856% · close to even

Actions

Rules on the answers decide what to send.

calm >= 0.6 and vol_rise < 0.6→Webhookrebalancing-system
else→Emailme
What each action would send 1 of 2 fired · dry run, nothing sent
schedule_tradeswould send (dry run)Webhook → rebalancing-system
{
  "ticket": "schedule_rebalance_trades",
  "underlying": "SPY",
  "as_of": "2026-10-30",
  "regime": "calm",
  "p_calm": 0.9463,
  "p_vol_rise": 0.558
}
deferrule false: skipped

What it means

For SPY on the session of 2026-10-30: True now: Is 20-day historical volatility below 20%; Is the 14-day ATR less than 2% of the price. Not true: Narrowest range of the last seven sessions (NR7). Forecasts: Volatility calming over 5 days 45%; Volatility rising over 5 days 56%. Fired: schedule_trades (Webhook → rebalancing-system).

Calm rules true with no rising-volatility forecast suggests a good week to trade; staff still spread trades over days.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "calm": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "atr_low": {
      "type": "yes_no",
      "instructions": "Is the 14-day ATR less than 2% of the price?"
    },
    "nr7": {
      "type": "yes_no",
      "ask": "(H - L) < lowest(H - L, 6)"
    },
    "vol_calm": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    },
    "vol_rise": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "schedule_trades",
      "when": "calm >= 0.6 and vol_rise < 0.6",
      "do": "webhook",
      "connection": "rebalancing-system",
      "body": {
        "ticket": "schedule_rebalance_trades",
        "underlying": "{{symbol}}",
        "as_of": "{{as_of}}",
        "regime": "calm",
        "p_calm": "{{calm}}",
        "p_vol_rise": "{{vol_rise}}"
      }
    },
    {
      "id": "defer",
      "when": "else",
      "do": "email",
      "connection": "me",
      "subject": "Defer rebalance trades ({{as_of}})",
      "message": "{{symbol}} is not calm enough: 20-day volatility under 20% {{calm|pct}}, rising over 5 days {{vol_rise|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (SPY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "calm": {
      "yes_no": 0.9463,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "atr_low": {
      "yes_no": 0.9463,
      "rule": "atr(14) / C < 0.02",
      "basis": "pattern"
    },
    "nr7": {
      "yes_no": 0.0547,
      "rule": "(H - L) < lowest(H - L, 6)",
      "basis": "rule"
    },
    "vol_calm": {
      "yes_no": 0.452
    },
    "vol_rise": {
      "yes_no": 0.558
    }
  },
  "context": {
    "symbol": "SPY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "schedule_trades",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "rebalancing-system",
      "preview": {
        "body": {
          "ticket": "schedule_rebalance_trades",
          "underlying": "SPY",
          "as_of": "2026-10-30",
          "regime": "calm",
          "p_calm": 0.9463,
          "p_vol_rise": 0.558
        }
      }
    },
    {
      "id": "defer",
      "fired": false,
      "status": "skipped"
    }
  ]
}

atr log lowest offset sqrt std

Pension fund · example 12

Dividend income from equity holdings: SCHD

Retiree cash flows lean on equity income. Check yield, payout record and price trend of the income fund.

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

State

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

Questions

yield3English → ruleIs the dividend yield above 3%?
quarterlyrulediv_count_ttm >= 4
Pays at least quarterly
raisedruleraised_last > 0.5
Raised its last dividend
trendrulediv_yield_ttm > 2 and C > sma(C, 200)
Yield above 2% and above the 200-day
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
yield3
Is the dividend yield above 3%
compiled to div_yield_ttm > 3
0.4287on the line (false)
quarterly
Pays at least quarterly
0.55on the line (true)
raised
Raised its last dividend
0.8591true
trend
Yield above 2% and above the 200-day
0.9463true
drop5
A 5% drawdown within a month
0.20721% · unlikely

What it means

For SCHD on the session of 2026-10-30: True now: Raised its last dividend; Yield above 2% and above the 200-day. On the line: Is the dividend yield above 3%; Pays at least quarterly. Forecasts: A 5% drawdown within a month 21%.

Income facts come from the distribution history; the trend rule says whether the price under the yield is holding.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SCHD"
  },
  "questions": {
    "yield3": {
      "type": "yes_no",
      "instructions": "Is the dividend yield above 3%?"
    },
    "quarterly": {
      "type": "yes_no",
      "ask": "div_count_ttm >= 4"
    },
    "raised": {
      "type": "yes_no",
      "ask": "raised_last > 0.5"
    },
    "trend": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 2 and C > sma(C, 200)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (SCHD, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "yield3": {
      "yes_no": 0.4287,
      "rule": "div_yield_ttm > 3",
      "basis": "pattern"
    },
    "quarterly": {
      "yes_no": 0.55,
      "rule": "div_count_ttm >= 4",
      "basis": "rule"
    },
    "raised": {
      "yes_no": 0.8591,
      "rule": "raised_last > 0.5",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.9463,
      "rule": "div_yield_ttm > 2 and C > sma(C, 200)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.207
    }
  },
  "context": {
    "symbol": "SCHD",
    "as_of": "2026-10-30"
  }
}

div_count_ttm div_yield_ttm raised_last sma

Pension fund · example 13

Crash watch: bearish candles on SPY

A board member asks after every sharp day whether a top is forming. Answer with exact candle rules, not opinions.

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

engulf_bearruleengulfing_bear()
engulfing bear candle: A red body that engulfs yesterday's green body.
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).
tweezer_topruletweezer_top()
tweezer top candle: Green then red, with highs within 0.1%.
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
engulf_bear
engulfing bear candle: A red body that engulfs yesterday's green body.
0.0604false
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.1524false
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.0597false
tweezer_top
tweezer top candle: Green then red, with highs within 0.1%.
0.0537false
drop5
A 5% drawdown within a month
0.20320% · unlikely

Actions

Rules on the answers decide what to send.

engulf_bear >= 0.6 or evening >= 0.6 or dark >= 0.6→Emailboard-secretary
else→Slackpension-investments
What each action would send 1 of 2 fired · dry run, nothing sent
board_answerrule false: skipped
nonewould send (dry run)Slack → pension-investments
{
  "text": "SPY (2026-10-30): no bearish reversal candle."
}

What it means

For SPY on the session of 2026-10-30: Not true: engulfing bear candle: A red body that engulfs yesterday's green body.; 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).; tweezer top candle: Green then red, with highs within 0.1%.. Forecasts: A 5% drawdown within a month 20%. Fired: none (Slack → pension-investments).

Candles describe the last few sessions exactly; the drawdown forecast is the better guide to near-term risk.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "engulf_bear": {
      "type": "yes_no",
      "ask": "engulfing_bear()"
    },
    "evening": {
      "type": "yes_no",
      "ask": "evening_star()"
    },
    "dark": {
      "type": "yes_no",
      "ask": "dark_cloud()"
    },
    "tweezer_top": {
      "type": "yes_no",
      "ask": "tweezer_top()"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "board_answer",
      "when": "engulf_bear >= 0.6 or evening >= 0.6 or dark >= 0.6",
      "do": "email",
      "connection": "board-secretary",
      "subject": "{{symbol}}: bearish candle on {{as_of}}",
      "message": "{{symbol}} printed a bearish reversal candle (engulfing {{engulf_bear|pct}}, evening star {{evening|pct}}, dark cloud {{dark|pct}}). 5% drawdown odds: {{drop5|pct}}."
    },
    {
      "id": "none",
      "when": "else",
      "do": "slack",
      "connection": "pension-investments",
      "message": "{{symbol}} ({{as_of}}): no bearish reversal candle."
    }
  ],
  "dry_run": true
}
Response JSON (SPY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "engulf_bear": {
      "yes_no": 0.0604,
      "rule": "engulfing_bear()",
      "basis": "rule"
    },
    "evening": {
      "yes_no": 0.1524,
      "rule": "evening_star()",
      "basis": "rule"
    },
    "dark": {
      "yes_no": 0.0597,
      "rule": "dark_cloud()",
      "basis": "rule"
    },
    "tweezer_top": {
      "yes_no": 0.0537,
      "rule": "tweezer_top()",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.203
    }
  },
  "context": {
    "symbol": "SPY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "board_answer",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "none",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "pension-investments",
      "preview": {
        "text": "SPY (2026-10-30): no bearish reversal candle."
      }
    }
  ]
}

dark_cloud engulfing_bear evening_star tweezer_top

Pension fund · example 14

Daily drawdown escalation for the CIO

After every close, escalate any core fund that falls more than 3% on the day or breaks its 20-day low.

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

State

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

Questions

down3English → ruleDid the stock fall more than 3% today?
low20English → ruleDid the stock make a new 20-day low today?
worstEnglish → ruleWas today the worst day of the last 20 sessions?
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

Symboldown3rulelow20ruleworstruledrop10forecastFired
VTI0.07170.72960.83680.189team_note
VEA0.07160.37580.65930.225none
TLT0.05370.05370.08950.163none

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→Emailcio
low20 >= 0.6→Slackpension-investments
VTI 1 of 2 fired · dry run, nothing sent
cio_emailrule false: skipped
team_notewould send (dry run)Slack → pension-investments
{
  "text": "VTI (2026-10-30) made a new 20-day low; worst day in 20 sessions 84%."
}
VEA 0 of 2 fired · dry run, nothing sent
TLT 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. Did the stock make a new 20-day low today: true for VTI of 3. Was today the worst day of the last 20 sessions: true for VTI, VEA of 3. Highest odds for “A 10% drawdown within a month”: VEA at 23%. cio_email fired for none. team_note fired for VTI.

Most days nothing fires; when one does, the CIO hears about it the same evening instead of at the monthly meeting.

As a scheduled workflow (Mon–Fri at 16:45 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 the CIO",
  "symbols": "VTI VEA TLT",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "16:45",
  "model": "ora-fin-0.1.1",
  "questions": {
    "down3": {
      "type": "yes_no",
      "instructions": "Did the stock fall more than 3% today?"
    },
    "low20": {
      "type": "yes_no",
      "instructions": "Did the stock make a new 20-day low today?"
    },
    "worst": {
      "type": "yes_no",
      "instructions": "Was today the worst day of the last 20 sessions?"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "cio_email",
      "when": "down3 >= 0.6",
      "do": "email",
      "connection": "cio",
      "subject": "{{symbol}} fell more than 3% ({{as_of}})",
      "message": "{{symbol}} fell more than 3% today. New 20-day low: {{low20|pct}}. 10% drawdown odds within a month: {{drop10|pct}}."
    },
    {
      "id": "team_note",
      "when": "low20 >= 0.6",
      "do": "slack",
      "connection": "pension-investments",
      "message": "{{symbol}} ({{as_of}}) made a new 20-day low; worst day in 20 sessions {{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?"
    },
    "low20": {
      "type": "yes_no",
      "instructions": "Did the stock make a new 20-day low today?"
    },
    "worst": {
      "type": "yes_no",
      "instructions": "Was today the worst day of the last 20 sessions?"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "cio_email",
      "when": "down3 >= 0.6",
      "do": "email",
      "connection": "cio",
      "subject": "{{symbol}} fell more than 3% ({{as_of}})",
      "message": "{{symbol}} fell more than 3% today. New 20-day low: {{low20|pct}}. 10% drawdown odds within a month: {{drop10|pct}}."
    },
    {
      "id": "team_note",
      "when": "low20 >= 0.6",
      "do": "slack",
      "connection": "pension-investments",
      "message": "{{symbol}} ({{as_of}}) made a new 20-day low; worst day in 20 sessions {{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"
    },
    "low20": {
      "yes_no": 0.7296,
      "rule": "L < lowest(L, 20)",
      "basis": "pattern"
    },
    "worst": {
      "yes_no": 0.8368,
      "rule": "(C < C[-1]) and (C / C[-1] - 1 < ref(min(C / C[-1] - 1, 19), -1))",
      "basis": "pattern"
    },
    "drop10": {
      "yes_no": 0.189
    }
  },
  "context": {
    "symbol": "VTI",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "cio_email",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "team_note",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "pension-investments",
      "preview": {
        "text": "VTI (2026-10-30) made a new 20-day low; worst day in 20 sessions 84%."
      }
    }
  ]
}

lowest min offset ref

Pension fund · example 15

Listed real estate: VNQ income and trend

Check the REIT fund's payout and trend as a public read on the private real-estate allocation.

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

State

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

Questions

paysrulepays_dividend > 0.5
Pays a dividend
cutEnglish → ruleDid the stock cut its dividend last time?
trendruleC > sma(C, 50)
Above the 50-day average
marubozurulemarubozu()
marubozu candle: Body at least 90% of the range: almost no wicks.
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
pays
Pays a dividend
0.8591true
cut
Did the stock cut its dividend last time
compiled to cut_last > 0.5
0.8591true
trend
Above the 50-day average
0.7433true
marubozu
marubozu candle: Body at least 90% of the range: almost no wicks.
0.132false
drop5
A 5% drawdown within a month
0.21822% · unlikely

What it means

For VNQ on the session of 2026-10-30: True now: Pays a dividend; Did the stock cut its dividend last time; Above the 50-day average. Not true: marubozu candle: Body at least 90% of the range: almost no wicks.. Forecasts: A 5% drawdown within a month 22%.

A strong one-way candle (marubozu) after a trend change is worth noting; payout facts anchor the income story.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VNQ"
  },
  "questions": {
    "pays": {
      "type": "yes_no",
      "ask": "pays_dividend > 0.5"
    },
    "cut": {
      "type": "yes_no",
      "instructions": "Did the stock cut its dividend last time?"
    },
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "marubozu": {
      "type": "yes_no",
      "ask": "marubozu()"
    },
    "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": {
    "pays": {
      "yes_no": 0.8591,
      "rule": "pays_dividend > 0.5",
      "basis": "rule"
    },
    "cut": {
      "yes_no": 0.8591,
      "rule": "cut_last > 0.5",
      "basis": "pattern"
    },
    "trend": {
      "yes_no": 0.7433,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "marubozu": {
      "yes_no": 0.132,
      "rule": "marubozu()",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.218
    }
  },
  "context": {
    "symbol": "VNQ",
    "as_of": "2026-10-30"
  }
}

cut_last marubozu pays_dividend sma

Pension fund · example 16

Gold tail hedge: is GLD breaking out?

Gold is a small diversifier. Check whether it is breaking out on volume and how stretched it is.

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

State

{"symbol":"GLD"} 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
stretchedruleC > sma(C, 20) + 2 * atr(14)
Stretched: more than 2 ATR above the 20-day
percentrankrulepercentrank(C, 252) > 90
Close in the top tenth of its one-year range of closes
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
breakout
20-day breakout on 1.5× volume
0.0619false
near_high
Within 2% of the 52-week high
0.0537false
stretched
Stretched: more than 2 ATR above the 20-day
0.063false
percentrank
Close in the top tenth of its one-year range of closes
0.0537false
drop5
A 5% drawdown within a month
0.43544% · close to even

What it means

For GLD on the session of 2026-10-30: Not true: 20-day breakout on 1.5× volume; Within 2% of the 52-week high; Stretched: more than 2 ATR above the 20-day; Close in the top tenth of its one-year range of closes. Forecasts: A 5% drawdown within a month 44%.

A breakout near the top of its one-year range shows strength but also stretch; the hedge stays at its policy weight either way.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "GLD"
  },
  "questions": {
    "breakout": {
      "type": "yes_no",
      "ask": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "stretched": {
      "type": "yes_no",
      "ask": "C > sma(C, 20) + 2 * atr(14)"
    },
    "percentrank": {
      "type": "yes_no",
      "ask": "percentrank(C, 252) > 90"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (GLD, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "breakout": {
      "yes_no": 0.0619,
      "rule": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "stretched": {
      "yes_no": 0.063,
      "rule": "C > sma(C, 20) + 2 * atr(14)",
      "basis": "rule"
    },
    "percentrank": {
      "yes_no": 0.0537,
      "rule": "percentrank(C, 252) > 90",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.435
    }
  },
  "context": {
    "symbol": "GLD",
    "as_of": "2026-10-30"
  }
}

atr avg highest max percentrank ref sma

Pension fund · example 17

Largest US holding NVDA: trend and earnings events

The biggest single-stock exposure in the index funds drives returns. Check its trend and the earnings calendar.

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

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
earn14English → ruleIs earnings in the next 14 days?
beatEnglish → ruleDid the stock beat EPS estimates last quarter?
extEnglish → ruleIs the stock more than 10% above its 200-day moving average?
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
trend
Above the 50-day average
0.0746false
earn14
Is earnings in the next 14 days
compiled to days_to_earnings <= 14
0.1033false
beat
Did the stock beat EPS estimates last quarter
compiled to beat_eps_last > 0.5
0.8591true
ext
Is the stock more than 10% above its 200-day moving average
compiled to C > sma(C, 200) * 1.1
0.06false
drop5
A 5% drawdown within a month
0.52352% · close to even

What it means

For NVDA on the session of 2026-10-30: True now: Did the stock beat EPS estimates last quarter. Not true: Above the 50-day average; Is earnings in the next 14 days; Is the stock more than 10% above its 200-day moving average. Forecasts: A 5% drawdown within a month 52%.

Concentration risk is highest when the leader is extended and reporting soon; the risk report says so when it is.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NVDA"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "earn14": {
      "type": "yes_no",
      "instructions": "Is earnings in the next 14 days?"
    },
    "beat": {
      "type": "yes_no",
      "instructions": "Did the stock beat EPS estimates last quarter?"
    },
    "ext": {
      "type": "yes_no",
      "instructions": "Is the stock more than 10% above its 200-day moving average?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (NVDA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.0746,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "earn14": {
      "yes_no": 0.1033,
      "rule": "days_to_earnings <= 14",
      "basis": "pattern"
    },
    "beat": {
      "yes_no": 0.8591,
      "rule": "beat_eps_last > 0.5",
      "basis": "pattern"
    },
    "ext": {
      "yes_no": 0.06,
      "rule": "C > sma(C, 200) * 1.1",
      "basis": "comparison"
    },
    "drop5": {
      "yes_no": 0.523
    }
  },
  "context": {
    "symbol": "NVDA",
    "as_of": "2026-10-30"
  }
}

beat_eps_last days_to_earnings sma

Pension fund · example 18

Cash-flow matching ladder: is SHY stable?

Benefit payments are matched with short bonds. Confirm the fund is stable 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?
down5English → ruleIs the stock down more than 5% over the last month?
lowbarsrulelowestbars(L, 60) >= 20
The 60-day low is at least 20 sessions old
spinrulespinning_top()
spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.

Answers

QuestionAnswerReading
atr_low
Is the 14-day ATR less than 2% of the price
compiled to atr(14) / C < 0.02
0.9463true
down5
Is the stock down more than 5% over the last month
compiled to C / C[-21] - 1 < -0.05
0.0537false
lowbars
The 60-day low is at least 20 sessions old
0.5282on the line (true)
spin
spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.
0.665true

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; spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.. Not true: Is the stock down more than 5% over the last month. On the line: The 60-day low is at least 20 sessions old.

An old low and a small ATR describe a stable ladder; any change is checked against the payment schedule.

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?"
    },
    "down5": {
      "type": "yes_no",
      "instructions": "Is the stock down more than 5% over the last month?"
    },
    "lowbars": {
      "type": "yes_no",
      "ask": "lowestbars(L, 60) >= 20"
    },
    "spin": {
      "type": "yes_no",
      "ask": "spinning_top()"
    }
  }
}
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"
    },
    "down5": {
      "yes_no": 0.0537,
      "rule": "C / C[-21] - 1 < -0.05",
      "basis": "pattern"
    },
    "lowbars": {
      "yes_no": 0.5282,
      "rule": "lowestbars(L, 60) >= 20",
      "basis": "rule"
    },
    "spin": {
      "yes_no": 0.665,
      "rule": "spinning_top()",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "SHY",
    "as_of": "2026-10-30"
  }
}

atr lowestbars offset spinning_top

Pension fund · example 19

Global equity breadth: EFA, VGK, EWJ, INDA

Check how many international markets are in uptrends to frame the global-equity section of the board report.

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

State

{"symbol":"EFA"} then VGK, EWJ, INDA, 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
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendruleabove_50drulebeat_spyforecast
EFA0.67090.20350.447
VGK0.61180.30160.407
EWJ0.7780.07880.568
INDA0.08950.41360.349

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 EFA, VGK, EWJ of 4. Above the 50-day average: true for none of 4. Highest odds for “Beating SPY over a month”: EWJ at 57%.

The count of markets above their 200-day is a simple breadth measure the board can follow quarter to quarter.

Request JSON (EFA; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "EFA"
  },
  "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)"
    },
    "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"
    },
    "above_50d": {
      "yes_no": 0.2035,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.447
    }
  },
  "context": {
    "symbol": "EFA",
    "as_of": "2026-10-30"
  }
}

sma

Pension fund · example 20

Smoothed trend on VEA: a slower signal for a slower board

A pension board meets quarterly, so it wants slow signals. Use smoothed averages and regression slope on developed markets.

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

State

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

Questions

emaruleema(C, 50) > ema(C, 150)
50-day EMA above the 150-day EMA
linregrulelinreg(C, 100) > ref(linreg(C, 100), -20)
100-day regression line higher than a month ago
recruleC > rec(C, self + 0.05 * (C - self))
Above a slow recursive smoother (alpha 0.05)
meanruleC > mean(C, 200)
Above its 200-day mean
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
ema
50-day EMA above the 150-day EMA
0.9266true
linreg
100-day regression line higher than a month ago
0.0725false
rec
Above a slow recursive smoother (alpha 0.05)
0.1694false
mean
Above its 200-day mean
0.5877on the line (true)
drop5
A 5% drawdown within a month
0.22322% · unlikely

What it means

For VEA on the session of 2026-10-30: True now: 50-day EMA above the 150-day EMA. Not true: 100-day regression line higher than a month ago; Above a slow recursive smoother (alpha 0.05). On the line: Above its 200-day mean. Forecasts: A 5% drawdown within a month 22%.

Slow rules change state rarely, which is what a quarterly board needs; a change is a discussion item, not an order.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VEA"
  },
  "questions": {
    "ema": {
      "type": "yes_no",
      "ask": "ema(C, 50) > ema(C, 150)"
    },
    "linreg": {
      "type": "yes_no",
      "ask": "linreg(C, 100) > ref(linreg(C, 100), -20)"
    },
    "rec": {
      "type": "yes_no",
      "ask": "C > rec(C, self + 0.05 * (C - self))"
    },
    "mean": {
      "type": "yes_no",
      "ask": "C > mean(C, 200)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (VEA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "ema": {
      "yes_no": 0.9266,
      "rule": "ema(C, 50) > ema(C, 150)",
      "basis": "rule"
    },
    "linreg": {
      "yes_no": 0.0725,
      "rule": "linreg(C, 100) > ref(linreg(C, 100), -20)",
      "basis": "rule"
    },
    "rec": {
      "yes_no": 0.1694,
      "rule": "C > rec(C, self + 0.05 * (C - self))",
      "basis": "rule"
    },
    "mean": {
      "yes_no": 0.5877,
      "rule": "C > mean(C, 200)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.223
    }
  },
  "context": {
    "symbol": "VEA",
    "as_of": "2026-10-30"
  }
}

ema linreg mean rec ref

Information, not investment advice. Rules answer from the latest completed daily session; forecasts are probabilities. Actions ran as dry runs: nothing was sent. More in Institutions: ETF issuer, Index provider, Insurance investment office, Endowment, Sovereign wealth fund.

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