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 1–10 of 20 · page 1 of 2

Private equity · example 1

Is the IPO exit window open? Small caps as the read

Listing a portfolio company works best when small caps trend up with calm volatility; read that from IWM.

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

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
sma50_uprulesma(C, 50) > ref(sma(C, 50), -10)
The 50-day average is rising
calmEnglish → ruleIs 20-day historical volatility below 20%?
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
vol_calmforecastWill volatility calm down over the next 5 days?
Volatility calming over 5 days
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.5564on the line (true)
sma50_up
The 50-day average is rising
0.0779false
calm
Is 20-day historical volatility below 20%
compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2
0.9387true
near_high
Within 2% of the 52-week high
0.0689false
vol_calm
Volatility calming over 5 days
0.52252% · close to even
drop5
A 5% drawdown within a month
0.23423% · unlikely

What it means

For IWM on the session of 2026-10-30: True now: Is 20-day historical volatility below 20%. Not true: The 50-day average is rising; Within 2% of the 52-week high. On the line: Is the stock above its 200-day moving average. Forecasts: Volatility calming over 5 days 52%; A 5% drawdown within a month 23%.

An uptrend with low realized volatility is the backdrop bankers like for a listing; a drawdown or vol spike argues for waiting a quarter.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IWM"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "sma50_up": {
      "type": "yes_no",
      "ask": "sma(C, 50) > ref(sma(C, 50), -10)"
    },
    "calm": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "vol_calm": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (IWM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.5564,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "sma50_up": {
      "yes_no": 0.0779,
      "rule": "sma(C, 50) > ref(sma(C, 50), -10)",
      "basis": "rule"
    },
    "calm": {
      "yes_no": 0.9387,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "near_high": {
      "yes_no": 0.0689,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "vol_calm": {
      "yes_no": 0.522
    },
    "drop5": {
      "yes_no": 0.234
    }
  },
  "context": {
    "symbol": "IWM",
    "as_of": "2026-10-30"
  }
}

log max offset ref sma sqrt std

Private equity · example 2

Public software comps for a SaaS deal: CRM, NOW, WDAY, ADBE

Before pricing a software buyout, check how the listed comparables are trading: trend, drawdown from highs and momentum.

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

State

{"symbol":"CRM"} then NOW, WDAY, ADBE, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
ddruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
momruleC > C[-63]
Higher than three months ago
beatEnglish → ruleDid the stock beat on both EPS and revenue last quarter?

Answers

Symboltrendruleddrulemomrulebeatrule
CRM0.91070.18620.92810.8591
NOW0.17280.94630.19060.1409
WDAY0.94630.23160.94160.8591
ADBE0.48940.94450.45270.8591

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 CRM, WDAY of 4. More than 20% off the 52-week high: true for NOW, ADBE of 4. Higher than three months ago: true for CRM, WDAY of 4. Did the stock beat on both EPS and revenue last quarter: true for CRM, WDAY, ADBE of 4.

Comps in deep drawdowns pull public multiples down, which shapes the bid and the exit assumptions in the model.

Request JSON (CRM; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "CRM"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "dd": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "mom": {
      "type": "yes_no",
      "ask": "C > C[-63]"
    },
    "beat": {
      "type": "yes_no",
      "instructions": "Did the stock beat on both EPS and revenue last quarter?"
    }
  }
}
Response JSON (CRM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9107,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "dd": {
      "yes_no": 0.1862,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "mom": {
      "yes_no": 0.9281,
      "rule": "C > C[-63]",
      "basis": "rule"
    },
    "beat": {
      "yes_no": 0.8591,
      "rule": "beat_eps_last > 0.5 and beat_revenue_last > 0.5",
      "basis": "pattern"
    }
  },
  "context": {
    "symbol": "CRM",
    "as_of": "2026-10-30"
  }
}

beat_eps_last beat_revenue_last max offset sma

Private equity · example 3

Weekly monitor of a listed portfolio company

After a partial IPO the fund still holds a large stake; each Friday check the stock's trend and alert the deal team on a breakdown.

ora-fin-0.1.1ETSY5 questions2 actionsworkflow · Fri at 17:00 ET
  1. ScheduleFri at 17:00 ET
  2. StateETSY
  3. Questions5 asked
  4. Answersreal, captured
  5. Actions2 rules · dry run

State

{"symbol":"ETSY"} 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
ddruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
earn_soonruledays_to_earnings <= 10
Reports earnings within 10 days
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
trend
Above the 50-day average
0.9047true
breakdown
Closed under the 20-day low
0.0586false
dd
More than 20% off the 52-week high
0.0604false
earn_soon
Reports earnings within 10 days
0.0537false
drop10
A 10% drawdown within a month
0.6363% · likely

Actions

Rules on the answers decide what to send.

breakdown >= 0.6 or dd >= 0.6→Emaildeal-team
else→Slackdeal-team
What each action would send 1 of 2 fired · dry run, nothing sent
deal_teamrule false: skipped
statuswould send (dry run)Slack → deal-team
{
  "text": "ETSY (2026-10-30): no breakdown. Above 50-day 90%."
}

What it means

For ETSY on the session of 2026-10-30: True now: Above the 50-day average. Not true: Closed under the 20-day low; More than 20% off the 52-week high; Reports earnings within 10 days. Forecasts: A 10% drawdown within a month 63%. Fired: status (Slack → deal-team).

The weekly email fires only on a breakdown; otherwise one Slack line records that the stake was checked.

As a scheduled workflow (Fri at 17:00 ET)

Create it under Workflows in the console: it runs these questions for every symbol on the schedule and fires the actions per symbol. The answers above are what one run returned.

{
  "name": "Weekly monitor of a listed portfolio company",
  "symbols": "ETSY",
  "days": [
    5
  ],
  "at_time": "17:00",
  "model": "ora-fin-0.1.1",
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "dd": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "earn_soon": {
      "type": "yes_no",
      "ask": "days_to_earnings <= 10"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "deal_team",
      "when": "breakdown >= 0.6 or dd >= 0.6",
      "do": "email",
      "connection": "deal-team",
      "subject": "{{symbol}} stake: breakdown ({{as_of}})",
      "message": "{{symbol}} broke its 20-day low ({{breakdown|pct}}) or sits over 20% below its high ({{dd|pct}}). Report within 10 days: {{earn_soon|pct}}. 10% drawdown odds: {{drop10|pct}}."
    },
    {
      "id": "status",
      "when": "else",
      "do": "slack",
      "connection": "deal-team",
      "message": "{{symbol}} ({{as_of}}): no breakdown. Above 50-day {{trend|pct}}."
    }
  ]
}
Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "ETSY"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "dd": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "earn_soon": {
      "type": "yes_no",
      "ask": "days_to_earnings <= 10"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "deal_team",
      "when": "breakdown >= 0.6 or dd >= 0.6",
      "do": "email",
      "connection": "deal-team",
      "subject": "{{symbol}} stake: breakdown ({{as_of}})",
      "message": "{{symbol}} broke its 20-day low ({{breakdown|pct}}) or sits over 20% below its high ({{dd|pct}}). Report within 10 days: {{earn_soon|pct}}. 10% drawdown odds: {{drop10|pct}}."
    },
    {
      "id": "status",
      "when": "else",
      "do": "slack",
      "connection": "deal-team",
      "message": "{{symbol}} ({{as_of}}): no breakdown. Above 50-day {{trend|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (ETSY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9047,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "breakdown": {
      "yes_no": 0.0586,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "dd": {
      "yes_no": 0.0604,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "earn_soon": {
      "yes_no": 0.0537,
      "rule": "days_to_earnings <= 10",
      "basis": "rule"
    },
    "drop10": {
      "yes_no": 0.63
    }
  },
  "context": {
    "symbol": "ETSY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "deal_team",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "status",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "deal-team",
      "preview": {
        "text": "ETSY (2026-10-30): no breakdown. Above 50-day 90%."
      }
    }
  ]
}

days_to_earnings lowest max sma

Private equity · example 4

Lock-up expiry: is the tape strong enough to sell down?

Selling a block after the lock-up is easier into strength and volume; check EXPE for both before calling the banks.

ora-fin-0.1.1EXPE5 questions1 action
  1. StateEXPE
  2. Questions5 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

strengthrule(C - L) / (H - L) > 0.75
Closed in the top quarter of the day's range
volruleV > avg(V, 20)
Volume above its 20-day average
liquidruleavg(C * V, 20) > 100000000
Trades more than $100 million a day
trendruleC > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)
Stacked averages: close > 20 EMA > 50 > 200
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
strength
Closed in the top quarter of the day's range
0.7739true
vol
Volume above its 20-day average
0.712true
liquid
Trades more than $100 million a day
0.9463true
trend
Stacked averages: close > 20 EMA > 50 > 200
0.3791false
big5
A big move either way in 5 days
0.2222% · unlikely

Actions

Rules on the answers decide what to send.

trend >= 0.6 and liquid >= 0.6→Webhookzapier-deal-log
What each action would send 0 of 1 fired · dry run, nothing sent
block_readyrule false: skipped

What it means

For EXPE on the session of 2026-10-30: True now: Closed in the top quarter of the day's range; Volume above its 20-day average; Trades more than $100 million a day. Not true: Stacked averages: close > 20 EMA > 50 > 200. Forecasts: A big move either way in 5 days 22%. No action fired: every rule was false.

A trending, liquid stock supports an overnight block; the check is logged to the deal tracker through Zapier.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "EXPE"
  },
  "questions": {
    "strength": {
      "type": "yes_no",
      "ask": "(C - L) / (H - L) > 0.75"
    },
    "vol": {
      "type": "yes_no",
      "ask": "V > avg(V, 20)"
    },
    "liquid": {
      "type": "yes_no",
      "ask": "avg(C * V, 20) > 100000000"
    },
    "trend": {
      "type": "yes_no",
      "ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "block_ready",
      "when": "trend >= 0.6 and liquid >= 0.6",
      "do": "webhook",
      "connection": "zapier-deal-log",
      "body": {
        "event": "block_window_check",
        "symbol": "{{symbol}}",
        "trend": "{{trend}}",
        "liquid": "{{liquid}}",
        "big_move_odds": "{{big5}}",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (EXPE, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "strength": {
      "yes_no": 0.7739,
      "rule": "(C - L) / (H - L) > 0.75",
      "basis": "rule"
    },
    "vol": {
      "yes_no": 0.712,
      "rule": "V > avg(V, 20)",
      "basis": "rule"
    },
    "liquid": {
      "yes_no": 0.9463,
      "rule": "avg(C * V, 20) > 100000000",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.3791,
      "rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "big5": {
      "yes_no": 0.22
    }
  },
  "context": {
    "symbol": "EXPE",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "block_ready",
      "fired": false,
      "status": "skipped"
    }
  ]
}

avg ema sma

Private equity · example 5

How are listed alternative managers trading?

Listed asset managers are a read on fundraising sentiment; check BLK and GS as public proxies.

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

State

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

Questions

trendrulesma(C, 50) > sma(C, 200)
50-day above the 200-day
momruleroc(C, 20) > 5
Up more than 5% in 20 sessions
ddruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulemomruleddrulebeat_spyforecast
BLK0.94290.74020.05370.447
GS0.43160.11960.7060.529

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: 50-day above the 200-day: true for BLK of 2. Up more than 5% in 20 sessions: true for BLK of 2. More than 20% off the 52-week high: true for GS of 2. Highest odds for “Beating SPY over a month”: GS at 53%.

Strong listed managers usually coincide with an easier fundraising market; weakness is a reason to expect slower LP commitments.

Request JSON (BLK; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "BLK"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "sma(C, 50) > sma(C, 200)"
    },
    "mom": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "dd": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (BLK, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9429,
      "rule": "sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "mom": {
      "yes_no": 0.7402,
      "rule": "roc(C, 20) > 5",
      "basis": "rule"
    },
    "dd": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.447
    }
  },
  "context": {
    "symbol": "BLK",
    "as_of": "2026-10-30"
  }
}

max roc sma

Private equity · example 6

Leveraged loan market health for a refinancing

Before refinancing a portfolio company's debt, read the loan and high-yield markets through BKLN and HYG.

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

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
breakdownruleC < lowest(L, 20)
Closed under the 20-day low
calmEnglish → ruleIs the 14-day ATR less than 2% of the price?
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

Symboltrendrulebreakdownrulecalmruledown_weekforecast
BKLN0.94630.06090.94630.434
HYG0.19090.08110.94630.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: Is the stock above its 200-day moving average: true for BKLN of 2. Closed under the 20-day low: true for none of 2. Is the 14-day ATR less than 2% of the price: true for BKLN, HYG of 2. Highest odds for “Lower in a week”: BKLN at 43%.

Loan and high-yield funds in an uptrend with low volatility point to open credit markets; a breakdown argues for refinancing sooner.

Request JSON (BKLN; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "BKLN"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "calm": {
      "type": "yes_no",
      "instructions": "Is the 14-day ATR less than 2% of the price?"
    },
    "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.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "breakdown": {
      "yes_no": 0.0609,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "calm": {
      "yes_no": 0.9463,
      "rule": "atr(14) / C < 0.02",
      "basis": "pattern"
    },
    "down_week": {
      "yes_no": 0.434
    }
  },
  "context": {
    "symbol": "BKLN",
    "as_of": "2026-10-30"
  }
}

atr lowest sma

Private equity · example 7

Consumer comps: how did NKE and LULU react to earnings?

A consumer brand deal: see how the listed comps were received at their last reports.

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

State

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

Questions

beatEnglish → ruleDid the stock beat EPS estimates last quarter?
rev_beatEnglish → ruleDid revenue beat estimates last quarter?
fellEnglish → ruleDid the stock fall after its last earnings report?
bigruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%
below_preEnglish → ruleIs the stock trading below its pre-earnings price?

Answers

Symbolbeatrulerev_beatrulefellrulebigrulebelow_prerule
NKE0.85910.14090.94630.20180.076
LULU0.85910.14090.94630.94630.8965

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: Did the stock beat EPS estimates last quarter: true for NKE, LULU of 2. Did revenue beat estimates last quarter: true for none of 2. Did the stock fall after its last earnings report: true for NKE, LULU of 2. Last earnings move bigger than 5%: true for LULU of 2.

Comps that fell hard after reports show how the market treats the category, which feeds the downside case.

Request JSON (NKE; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NKE"
  },
  "questions": {
    "beat": {
      "type": "yes_no",
      "instructions": "Did the stock beat EPS estimates last quarter?"
    },
    "rev_beat": {
      "type": "yes_no",
      "instructions": "Did revenue beat estimates last quarter?"
    },
    "fell": {
      "type": "yes_no",
      "instructions": "Did the stock fall after its last earnings report?"
    },
    "big": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) > 5"
    },
    "below_pre": {
      "type": "yes_no",
      "instructions": "Is the stock trading below its pre-earnings price?"
    }
  }
}
Response JSON (NKE, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "beat": {
      "yes_no": 0.8591,
      "rule": "beat_eps_last > 0.5",
      "basis": "pattern"
    },
    "rev_beat": {
      "yes_no": 0.1409,
      "rule": "beat_revenue_last > 0.5",
      "basis": "pattern"
    },
    "fell": {
      "yes_no": 0.9463,
      "rule": "last_earnings_move < 0",
      "basis": "pattern"
    },
    "big": {
      "yes_no": 0.2018,
      "rule": "abs(last_earnings_move) > 5",
      "basis": "rule"
    },
    "below_pre": {
      "yes_no": 0.076,
      "rule": "C < pre_earnings_close",
      "basis": "pattern"
    }
  },
  "context": {
    "symbol": "NKE",
    "as_of": "2026-10-30"
  }
}

abs beat_eps_last beat_revenue_last last_earnings_move pre_earnings_close

Private equity · example 8

Healthcare services comps: UNH, CVS, CI, HUM

Check whether the managed-care group is in a drawdown before bidding on a healthcare services asset.

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

State

{"symbol":"UNH"} then CVS, CI, HUM, 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
trendEnglish → ruleIs the stock above its 200-day moving average?
lowbarsrulelowestbars(L, 120) <= 10
Made its 120-day low within the last 10 sessions

Answers

Symbolddruletrendrulelowbarsrule
UNH0.05590.94630.2515
CVS0.17640.77830.2843
CI0.05370.92310.081
HUM0.05370.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: More than 20% off the 52-week high: true for none of 4. Is the stock above its 200-day moving average: true for UNH, CVS, CI, HUM of 4. Made its 120-day low within the last 10 sessions: true for none of 4.

A group near fresh lows implies lower public multiples; the deal team adjusts the exit multiple in the base case.

Request JSON (UNH; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "UNH"
  },
  "questions": {
    "dd": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "lowbars": {
      "type": "yes_no",
      "ask": "lowestbars(L, 120) <= 10"
    }
  }
}
Response JSON (UNH, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "dd": {
      "yes_no": 0.0559,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "lowbars": {
      "yes_no": 0.2515,
      "rule": "lowestbars(L, 120) <= 10",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "UNH",
    "as_of": "2026-10-30"
  }
}

lowestbars max sma

Private equity · example 9

Industrial comps breadth: GE, HON, MMM, UNP

For an industrial carve-out, see how many listed comps are in uptrends.

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

State

{"symbol":"GE"} then HON, MMM, UNP, one request each. The server fills in the latest completed session.

Questions

trendruleC > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)
Stacked averages: close > 20 EMA > 50 > 200
adxruleadx(14) > 20 and diplus(14) > diminus(14)
Trending up (ADX over 20 and +DI over −DI)
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high

Answers

Symboltrendruleadxrulenear_highrule
GE0.11060.55610.0537
HON0.10390.1290.0541
MMM0.65030.86940.1475
UNP0.72780.92370.2968

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: Stacked averages: close > 20 EMA > 50 > 200: true for MMM, UNP of 4. Trending up (ADX over 20 and +DI over −DI): true for MMM, UNP of 4. Within 2% of the 52-week high: true for none of 4.

Broad strength across comps supports a higher exit multiple assumption; one strong name with weak peers does not.

Request JSON (GE; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "GE"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
    },
    "adx": {
      "type": "yes_no",
      "ask": "adx(14) > 20 and diplus(14) > diminus(14)"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    }
  }
}
Response JSON (GE, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.1106,
      "rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "adx": {
      "yes_no": 0.5561,
      "rule": "adx(14) > 20 and diplus(14) > diminus(14)",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "GE",
    "as_of": "2026-10-30"
  }
}

adx diminus diplus ema max sma

Private equity · example 10

Exit timing on a listed stake: reversal candles at the high

A sell-down is planned into strength; watch for topping candles that suggest waiting.

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

State

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

Questions

tweezerruletweezer_top()
tweezer top candle: Green then red, with highs within 0.1%.
engulfruleengulfing_bear()
engulfing bear candle: A red body that engulfs yesterday's green body.
starruleevening_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.
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

QuestionAnswerReading
tweezer
tweezer top candle: Green then red, with highs within 0.1%.
0.3601false
engulf
engulfing bear candle: A red body that engulfs yesterday's green body.
0.461on the line (false)
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.
0.3449false
near_high
Within 2% of the 52-week high
0.0537false
down_week
Lower in a week
0.48749% · close to even

What it means

For BKNG on the session of 2026-10-30: Not true: tweezer top candle: Green then red, with highs within 0.1%.; 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.; Within 2% of the 52-week high. On the line: engulfing bear candle: A red body that engulfs yesterday's green body.. Forecasts: Lower in a week 49%.

A topping candle at the high is a reason to accelerate a planned sale only if the trend rules also weaken.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "BKNG"
  },
  "questions": {
    "tweezer": {
      "type": "yes_no",
      "ask": "tweezer_top()"
    },
    "engulf": {
      "type": "yes_no",
      "ask": "engulfing_bear()"
    },
    "star": {
      "type": "yes_no",
      "ask": "evening_star()"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  }
}
Response JSON (BKNG, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "tweezer": {
      "yes_no": 0.3601,
      "rule": "tweezer_top()",
      "basis": "rule"
    },
    "engulf": {
      "yes_no": 0.461,
      "rule": "engulfing_bear()",
      "basis": "rule"
    },
    "star": {
      "yes_no": 0.3449,
      "rule": "evening_star()",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "down_week": {
      "yes_no": 0.487
    }
  },
  "context": {
    "symbol": "BKNG",
    "as_of": "2026-10-30"
  }
}

engulfing_bear evening_star max tweezer_top

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.