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

Private equity: 20 ways to use Ora

Public comparables, exit windows and listed-portfolio monitoring around deals. 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 (42)

sma 13max 9offset 4lowest 4ema 3log 2ref 2sqrt 2std 2beat_eps_last 2beat_revenue_last 2days_to_earnings 2roc 2atr 2swinghigh 2swinglow 2div_yield_ttm 2avg 1abs 1last_earnings_move 1pre_earnings_close 1lowestbars 1adx 1diminus 1diplus 1engulfing_bear 1evening_star 1tweezer_top 1beat_streak 1beats_last4 1eps_growth_yoy 1next_report_bmo 1crossup 1macd 1macdsignal 1pays_dividend 1raised_last 1years_of_growth 1barssince 1dragonfly_doji 1hammer 1rsi 1

Examples 11–20 of 20 · page 2 of 2

Private equity · example 11

Rates backdrop for deal financing

Long bond prices move inversely to yields; read the financing backdrop from TLT and IEF.

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

State

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

Questions

trendEnglish → ruleIs the stock above its 50-day moving average?
risingrulesma(C, 50) > ref(sma(C, 50), -10)
The 50-day average is rising
new_lowEnglish → ruleDid the stock make a new 20-day low today?
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symboltrendrulerisingrulenew_lowruleup_weekforecast
TLT0.84820.15840.05370.561
IEF0.85140.08820.05370.483

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 50-day moving average: true for TLT, IEF of 2. The 50-day average is rising: true for none of 2. Did the stock make a new 20-day low today: true for none of 2. Highest odds for “Higher in a week”: TLT at 56%.

Rising bond prices mean falling yields and cheaper financing; a new 20-day low in bonds means yields are rising.

Request JSON (TLT; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TLT"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 50-day moving average?"
    },
    "rising": {
      "type": "yes_no",
      "ask": "sma(C, 50) > ref(sma(C, 50), -10)"
    },
    "new_low": {
      "type": "yes_no",
      "instructions": "Did the stock make a new 20-day low today?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (TLT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8482,
      "rule": "C > sma(C, 50)",
      "basis": "comparison"
    },
    "rising": {
      "yes_no": 0.1584,
      "rule": "sma(C, 50) > ref(sma(C, 50), -10)",
      "basis": "rule"
    },
    "new_low": {
      "yes_no": 0.0537,
      "rule": "L < lowest(L, 20)",
      "basis": "pattern"
    },
    "up_week": {
      "yes_no": 0.561
    }
  },
  "context": {
    "symbol": "TLT",
    "as_of": "2026-10-30"
  }
}

lowest ref sma

Private equity · example 12

Earnings prep for a listed portfolio company

The board observer wants to know when the listed portfolio company reports and how the last few quarters went.

ora-fin-0.1.1DAL6 questions1 action
  1. StateDAL
  2. Questions6 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

soonEnglish → ruleIs earnings in the next 14 days?
beatsEnglish → ruleHas the stock beaten EPS estimates in at least 3 of the last 4 quarters?
streakEnglish → ruleHas the stock beaten EPS estimates 4 quarters in a row?
eps_growthruleeps_growth_yoy > 10
EPS up more than 10% on the year
bmoEnglish → ruleDoes the stock report before the market opens next time?
beat_nextforecastWill the stock beat earnings next quarter?
Beating earnings next quarter

Answers

QuestionAnswerReading
soon
Is earnings in the next 14 days
compiled to days_to_earnings <= 14
0.0537false
beats
Has the stock beaten EPS estimates in at least 3 of the last 4 quarters
compiled to beats_last4 >= 3
0.55on the line (true)
streak
Has the stock beaten EPS estimates 4 quarters in a row
compiled to beat_streak >= 4
0.0537false
eps_growth
EPS up more than 10% on the year
0.1498false
bmo
Does the stock report before the market opens next time
compiled to next_report_bmo > 0.5
0.8591true
beat_next
Beating earnings next quarter
0.49650% · close to even

Actions

Rules on the answers decide what to send.

soon >= 0.6→Emailboard-observer
What each action would send 0 of 1 fired · dry run, nothing sent
board_noterule false: skipped

What it means

For DAL on the session of 2026-10-30: True now: Does the stock report before the market opens next time. Not true: Is earnings in the next 14 days; Has the stock beaten EPS estimates 4 quarters in a row; EPS up more than 10% on the year. On the line: Has the stock beaten EPS estimates in at least 3 of the last 4 quarters. Forecasts: Beating earnings next quarter 50%. No action fired: every rule was false.

The board observer gets the earnings date and track record ahead of time; facts carry rules, the beat-next question is a forecast.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "DAL"
  },
  "questions": {
    "soon": {
      "type": "yes_no",
      "instructions": "Is earnings in the next 14 days?"
    },
    "beats": {
      "type": "yes_no",
      "instructions": "Has the stock beaten EPS estimates in at least 3 of the last 4 quarters?"
    },
    "streak": {
      "type": "yes_no",
      "instructions": "Has the stock beaten EPS estimates 4 quarters in a row?"
    },
    "eps_growth": {
      "type": "yes_no",
      "ask": "eps_growth_yoy > 10"
    },
    "bmo": {
      "type": "yes_no",
      "instructions": "Does the stock report before the market opens next time?"
    },
    "beat_next": {
      "type": "yes_no",
      "instructions": "Will the stock beat earnings next quarter?"
    }
  },
  "actions": [
    {
      "id": "board_note",
      "when": "soon >= 0.6",
      "do": "email",
      "connection": "board-observer",
      "subject": "{{symbol}} reports within two weeks",
      "message": "{{symbol}} ({{as_of}}) reports within 14 days. Beat 3 of last 4: {{beats|pct}}. EPS growth over 10%: {{eps_growth|pct}}. Before the open: {{bmo|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (DAL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "soon": {
      "yes_no": 0.0537,
      "rule": "days_to_earnings <= 14",
      "basis": "pattern"
    },
    "beats": {
      "yes_no": 0.55,
      "rule": "beats_last4 >= 3",
      "basis": "pattern"
    },
    "streak": {
      "yes_no": 0.0537,
      "rule": "beat_streak >= 4",
      "basis": "pattern"
    },
    "eps_growth": {
      "yes_no": 0.1498,
      "rule": "eps_growth_yoy > 10",
      "basis": "rule"
    },
    "bmo": {
      "yes_no": 0.8591,
      "rule": "next_report_bmo > 0.5",
      "basis": "pattern"
    },
    "beat_next": {
      "yes_no": 0.496
    }
  },
  "context": {
    "symbol": "DAL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "board_note",
      "fired": false,
      "status": "skipped"
    }
  ]
}

beat_streak beats_last4 days_to_earnings eps_growth_yoy next_report_bmo

Private equity · example 13

Travel sector recovery read: JETS, MAR, RCL

Before buying a travel services business, check whether listed travel names are recovering together.

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

State

{"symbol":"JETS"} then MAR, RCL, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
hh_hlrule(swinghigh(3) > swinghigh(3, 2)) and (swinglow(3) > swinglow(3, 2))
Higher swing highs and higher swing lows
momruleroc(C, 63) > 10 and C >= 0.95 * max(H, 63)
Up more than 10% in a quarter, near the high
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symboltrendrulehh_hlrulemomrulerally5forecast
JETS0.1740.07290.05370.575
MAR0.94220.93080.74890.432
RCL0.86990.53390.12120.609

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

What it means

Session of 2026-10-30, 3 symbols: Is the stock above its 200-day moving average: true for MAR, RCL of 3. Higher swing highs and higher swing lows: true for MAR of 3. Up more than 10% in a quarter, near the high: true for MAR of 3. Highest odds for “A 5% rally within a month”: RCL at 61%.

Higher swing highs and lows across the group are a recovery signal; mixed answers suggest a name-specific story.

Request JSON (JETS; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "JETS"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "hh_hl": {
      "type": "yes_no",
      "ask": "(swinghigh(3) > swinghigh(3, 2)) and (swinglow(3) > swinglow(3, 2))"
    },
    "mom": {
      "type": "yes_no",
      "ask": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (JETS, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.174,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "hh_hl": {
      "yes_no": 0.0729,
      "rule": "(swinghigh(3) > swinghigh(3, 2)) and (swinglow(3) > swinglow(3, 2))",
      "basis": "rule"
    },
    "mom": {
      "yes_no": 0.0537,
      "rule": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.575
    }
  },
  "context": {
    "symbol": "JETS",
    "as_of": "2026-10-30"
  }
}

max roc sma swinghigh swinglow

Private equity · example 14

Selling an energy asset: is the oil tape supportive?

Timing the sale of an upstream asset: check crude and E&P equities for trend and momentum.

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

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
ema_upruleema(C, 20) > ema(C, 50)
20-day EMA above the 50-day EMA
macdEnglish → ruleIs the MACD line above its signal line?
crossrulecrossup(C, sma(C, 200))
Crossed above the 200-day today
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symboltrendruleema_uprulemacdrulecrossrulerally5forecast
USO0.94340.94630.79020.050.658
XOP0.92040.94630.61530.050.506

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 USO, XOP of 2. 20-day EMA above the 50-day EMA: true for USO, XOP of 2. Is the MACD line above its signal line: true for USO, XOP of 2. Crossed above the 200-day today: true for none of 2. Highest odds for “A 5% rally within a month”: USO at 66%.

Buyers pay more for energy assets in a rising oil tape; a sale process launched into weakness risks lower bids.

Request JSON (USO; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "USO"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "ema_up": {
      "type": "yes_no",
      "ask": "ema(C, 20) > ema(C, 50)"
    },
    "macd": {
      "type": "yes_no",
      "instructions": "Is the MACD line above its signal line?"
    },
    "cross": {
      "type": "yes_no",
      "ask": "crossup(C, sma(C, 200))"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (USO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9434,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "ema_up": {
      "yes_no": 0.9463,
      "rule": "ema(C, 20) > ema(C, 50)",
      "basis": "rule"
    },
    "macd": {
      "yes_no": 0.7902,
      "rule": "macd(C) > macdsignal(C)",
      "basis": "comparison"
    },
    "cross": {
      "yes_no": 0.05,
      "rule": "crossup(C, sma(C, 200))",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.658
    }
  },
  "context": {
    "symbol": "USO",
    "as_of": "2026-10-30"
  }
}

crossup ema macd macdsignal sma

Private equity · example 15

Volatility gate before launching a listing roadshow

Roadshows are pulled when markets get volatile; gate the launch on VXX and SPY volatility.

ora-fin-0.1.12 symbols, one request each3 questions2 actions
  1. State2 symbols
  2. Questions3 asked
  3. Answersreal, captured
  4. Actions2 rules · dry run

State

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

Questions

atr_lowEnglish → ruleIs the 14-day ATR less than 2% of the price?
vol_upEnglish → ruleIs 5-day volatility higher than 20-day volatility?
vol_riseforecastWill volatility rise over the next 5 days?
Volatility rising over 5 days

Answers

Symbolatr_lowrulevol_uprulevol_riseforecastFired
SPY0.94630.88720.558hold
VXX0.05370.9230.254hold

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.

atr_low >= 0.6 and vol_up < 0.5→Slackecm-deal
else→Slackecm-deal
SPY 1 of 2 fired · dry run, nothing sent
gorule false: skipped
holdwould send (dry run)Slack → ecm-deal
{
  "text": "SPY (2026-10-30): volatility up (5-day over 20-day 89%). Hold the launch decision."
}
VXX 1 of 2 fired · dry run, nothing sent
gorule false: skipped
holdwould send (dry run)Slack → ecm-deal
{
  "text": "VXX (2026-10-30): volatility up (5-day over 20-day 92%). Hold the launch decision."
}

What it means

Session of 2026-10-30, 2 symbols: Is the 14-day ATR less than 2% of the price: true for SPY of 2. Is 5-day volatility higher than 20-day volatility: true for SPY, VXX of 2. Highest odds for “Volatility rising over 5 days”: SPY at 56%. go fired for none. hold fired for SPY, VXX.

The deal channel gets a go or hold note per instrument; the bankers make the call with that context.

Request JSON (SPY; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "atr_low": {
      "type": "yes_no",
      "instructions": "Is the 14-day ATR less than 2% of the price?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Is 5-day volatility higher than 20-day volatility?"
    },
    "vol_rise": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "go",
      "when": "atr_low >= 0.6 and vol_up < 0.5",
      "do": "slack",
      "connection": "ecm-deal",
      "message": "{{symbol}} ({{as_of}}): calm tape (ATR under 2% {{atr_low|pct}}). Volatility rising next 5 days {{vol_rise|pct}}."
    },
    {
      "id": "hold",
      "when": "else",
      "do": "slack",
      "connection": "ecm-deal",
      "message": "{{symbol}} ({{as_of}}): volatility up (5-day over 20-day {{vol_up|pct}}). Hold the launch decision."
    }
  ],
  "dry_run": true
}
Response JSON (SPY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "atr_low": {
      "yes_no": 0.9463,
      "rule": "atr(14) / C < 0.02",
      "basis": "pattern"
    },
    "vol_up": {
      "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"
    },
    "vol_rise": {
      "yes_no": 0.558
    }
  },
  "context": {
    "symbol": "SPY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "go",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "hold",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "ecm-deal",
      "preview": {
        "text": "SPY (2026-10-30): volatility up (5-day over 20-day 89%). Hold the launch decision."
      }
    }
  ]
}

atr log offset sqrt std

Private equity · example 16

Dividend recap comps: do listed peers pay and grow?

A dividend recapitalization is easier to justify when listed peers return cash; check payout facts for consumer staples comps.

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

State

{"symbol":"CL"} then KMB, GIS, one request each. The server fills in the latest completed session.

Questions

paysrulepays_dividend > 0.5
Pays a dividend
growerruleyears_of_growth >= 10
Ten years of dividend growth
yieldEnglish → ruleIs the dividend yield above 3%?
raisedruleraised_last > 0.5
Raised its last dividend

Answers

Symbolpaysrulegrowerruleyieldruleraisedrule
CL0.85910.94630.05370.1409
KMB0.85910.94630.94630.1409
GIS0.85910.05370.94630.1409

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

What it means

Session of 2026-10-30, 3 symbols: Pays a dividend: true for CL, KMB, GIS of 3. Ten years of dividend growth: true for CL, KMB of 3. Is the dividend yield above 3%: true for KMB, GIS of 3. Raised its last dividend: true for none of 3.

Peers with long growth records support a payout-heavy capital structure in the model.

Request JSON (CL; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "CL"
  },
  "questions": {
    "pays": {
      "type": "yes_no",
      "ask": "pays_dividend > 0.5"
    },
    "grower": {
      "type": "yes_no",
      "ask": "years_of_growth >= 10"
    },
    "yield": {
      "type": "yes_no",
      "instructions": "Is the dividend yield above 3%?"
    },
    "raised": {
      "type": "yes_no",
      "ask": "raised_last > 0.5"
    }
  }
}
Response JSON (CL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "pays": {
      "yes_no": 0.8591,
      "rule": "pays_dividend > 0.5",
      "basis": "rule"
    },
    "grower": {
      "yes_no": 0.9463,
      "rule": "years_of_growth >= 10",
      "basis": "rule"
    },
    "yield": {
      "yes_no": 0.0537,
      "rule": "div_yield_ttm > 3",
      "basis": "pattern"
    },
    "raised": {
      "yes_no": 0.1409,
      "rule": "raised_last > 0.5",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "CL",
    "as_of": "2026-10-30"
  }
}

div_yield_ttm pays_dividend raised_last years_of_growth

Private equity · example 17

Chemicals cycle: DOW and LYB near cycle lows?

Buying a chemicals business near the bottom of the cycle: check how far the listed comps are from their highs and whether selling is exhausting.

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

State

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

Questions

ddruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
since_lowrulebarssince(L < lowest(L, 60)) > 20
No new 60-day low for more than 20 sessions
hammerrulehammer()
hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back.
dojiruledragonfly_doji()
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month

Answers

Symbolddrulesince_lowrulehammerruledojirulerally10forecast
DOW0.19850.53610.05830.05580.613
LYB0.1440.94630.08260.05450.594

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: More than 20% off the 52-week high: true for none of 2. No new 60-day low for more than 20 sessions: true for LYB of 2. hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back.: true for none of 2. dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.: true for none of 2. Highest odds for “A 10% rally within a month”: DOW at 61%.

Comps far off their highs that have stopped making new lows are the setup a cyclical buyer looks for.

Request JSON (DOW; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "DOW"
  },
  "questions": {
    "dd": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "since_low": {
      "type": "yes_no",
      "ask": "barssince(L < lowest(L, 60)) > 20"
    },
    "hammer": {
      "type": "yes_no",
      "ask": "hammer()"
    },
    "doji": {
      "type": "yes_no",
      "ask": "dragonfly_doji()"
    },
    "rally10": {
      "type": "yes_no",
      "instructions": "Will it rally at least 10% at some point in the next month?"
    }
  }
}
Response JSON (DOW, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "dd": {
      "yes_no": 0.1985,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "since_low": {
      "yes_no": 0.5361,
      "rule": "barssince(L < lowest(L, 60)) > 20",
      "basis": "rule"
    },
    "hammer": {
      "yes_no": 0.0583,
      "rule": "hammer()",
      "basis": "rule"
    },
    "doji": {
      "yes_no": 0.0558,
      "rule": "dragonfly_doji()",
      "basis": "rule"
    },
    "rally10": {
      "yes_no": 0.613
    }
  },
  "context": {
    "symbol": "DOW",
    "as_of": "2026-10-30"
  }
}

barssince dragonfly_doji hammer lowest max

Private equity · example 18

Real estate exit read: REIT trend and yield

For a real estate exit, read REIT pricing (VNQ, PLD, O) as a public proxy for cap rates.

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

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
yieldEnglish → ruleIs the dividend yield above 3%?
momruleC > C[-63]
Higher than three months ago

Answers

Symboltrendruleyieldrulemomrule
VNQ0.62850.88930.1417
PLD0.10120.77630.0631
O0.14270.94630.1066

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

What it means

Session of 2026-10-30, 3 symbols: Is the stock above its 200-day moving average: true for VNQ of 3. Is the dividend yield above 3%: true for VNQ, PLD, O of 3. Higher than three months ago: true for none of 3.

Rising REIT prices usually mean falling implied cap rates, which supports exit valuations for private real estate.

Request JSON (VNQ; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VNQ"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "yield": {
      "type": "yes_no",
      "instructions": "Is the dividend yield above 3%?"
    },
    "mom": {
      "type": "yes_no",
      "ask": "C > C[-63]"
    }
  }
}
Response JSON (VNQ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.6285,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "yield": {
      "yes_no": 0.8893,
      "rule": "div_yield_ttm > 3",
      "basis": "pattern"
    },
    "mom": {
      "yes_no": 0.1417,
      "rule": "C > C[-63]",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "VNQ",
    "as_of": "2026-10-30"
  }
}

div_yield_ttm offset sma

Private equity · example 19

Semiconductor comps structure for a chip deal

Check swing structure and momentum in SOXX and two large chip names before a semiconductor transaction.

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

State

{"symbol":"SOXX"} then TXN, QCOM, one request each. The server fills in the latest completed session.

Questions

hhruleswinghigh(5, 1) > swinghigh(5, 2)
Higher swing high
hlruleswinglow(5, 1) > swinglow(5, 2)
Higher swing low
rsirulersi(C, 14) > 50
RSI above 50
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symbolhhrulehlrulersirulebeat_spyforecast
SOXX0.88050.14170.0950.533
TXN0.89270.94570.87080.513
QCOM0.88180.83940.10440.506

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

What it means

Session of 2026-10-30, 3 symbols: Higher swing high: true for SOXX, TXN, QCOM of 3. Higher swing low: true for TXN, QCOM of 3. RSI above 50: true for TXN of 3. Highest odds for “Beating SPY over a month”: SOXX at 53%.

Higher highs and lows in the group support a richer exit case; lower ones push the model toward the downside.

Request JSON (SOXX; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SOXX"
  },
  "questions": {
    "hh": {
      "type": "yes_no",
      "ask": "swinghigh(5, 1) > swinghigh(5, 2)"
    },
    "hl": {
      "type": "yes_no",
      "ask": "swinglow(5, 1) > swinglow(5, 2)"
    },
    "rsi": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 50"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (SOXX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "hh": {
      "yes_no": 0.8805,
      "rule": "swinghigh(5, 1) > swinghigh(5, 2)",
      "basis": "rule"
    },
    "hl": {
      "yes_no": 0.1417,
      "rule": "swinglow(5, 1) > swinglow(5, 2)",
      "basis": "rule"
    },
    "rsi": {
      "yes_no": 0.095,
      "rule": "rsi(C, 14) > 50",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.533
    }
  },
  "context": {
    "symbol": "SOXX",
    "as_of": "2026-10-30"
  }
}

rsi swinghigh swinglow

Private equity · example 20

Morning tape for the deal team

Every Monday before the deal meeting, a short read on the broad market, small caps and credit.

ora-fin-0.1.13 symbols, one request each3 questions1 actionworkflow · Mon at 08:30 ET
  1. ScheduleMon at 08:30 ET
  2. State3 symbols
  3. Questions3 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

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

Questions

trendEnglish → ruleIs the stock 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
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symboltrendruledrop5forecastup_weekforecastFired
SPY0.94510.2030.598tape
IWM0.55640.2340.526tape
HYG0.19090.0090.499tape

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→Slackdeal-team
SPY 1 of 1 fired · dry run, nothing sent
tapewould send (dry run)Slack → deal-team
{
  "text": "SPY (2026-10-30): above 200-day 95%, higher in a week 60%, 5% drawdown odds 20%."
}
IWM 1 of 1 fired · dry run, nothing sent
tapewould send (dry run)Slack → deal-team
{
  "text": "IWM (2026-10-30): above 200-day 56%, higher in a week 53%, 5% drawdown odds 23%."
}
HYG 1 of 1 fired · dry run, nothing sent
tapewould send (dry run)Slack → deal-team
{
  "text": "HYG (2026-10-30): above 200-day 19%, higher in a week 50%, 5% drawdown odds 1%."
}

What it means

Session of 2026-10-30, 3 symbols: Is the stock above its 200-day moving average: true for SPY of 3. Highest odds for “A 5% drawdown within a month”: IWM at 23%. tape fired for SPY, IWM, HYG.

The Monday post gives the deal meeting a common, sourced market backdrop in three lines.

As a scheduled workflow (Mon at 08: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": "Morning tape for the deal team",
  "symbols": "SPY IWM HYG",
  "days": [
    1
  ],
  "at_time": "08:30",
  "model": "ora-fin-0.1.1",
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "tape",
      "when": "trend >= 0",
      "do": "slack",
      "connection": "deal-team",
      "message": "{{symbol}} ({{as_of}}): above 200-day {{trend|pct}}, higher in a week {{up_week|pct}}, 5% drawdown odds {{drop5|pct}}."
    }
  ]
}
Request JSON (SPY; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "tape",
      "when": "trend >= 0",
      "do": "slack",
      "connection": "deal-team",
      "message": "{{symbol}} ({{as_of}}): above 200-day {{trend|pct}}, higher in a week {{up_week|pct}}, 5% drawdown odds {{drop5|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (SPY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9451,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "drop5": {
      "yes_no": 0.203
    },
    "up_week": {
      "yes_no": 0.598
    }
  },
  "context": {
    "symbol": "SPY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "tape",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "deal-team",
      "preview": {
        "text": "SPY (2026-10-30): above 200-day 95%, higher in a week 60%, 5% drawdown odds 20%."
      }
    }
  ]
}

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, Wealth manager, Family office, Hedge fund PM, Quant researcher, Portfolio manager (long-only), Risk manager, 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.