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

VC / growth investor: 20 ways to use Ora

Public growth comps, IPO windows and the health of listed portfolio companies. Each example is a complete, runnable request with the real answers it returned (41 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 (48)

sma 16max 9offset 8log 4roc 4sqrt 4std 4ema 3ref 3atr 3revenue_growth_yoy 2beat_eps_last 2beat_revenue_last 2beats_last4 1days_to_earnings 1crossup 1adx 1swinghigh 1swinglow 1linreg 1cum 1highestbars 1obv 1sign 1sum 1abs 1eps_surprise_pct 1last_earnings_gap 1last_earnings_move 1pre_earnings_close 1inverted_hammer 1macd 1macdsignal 1morning_star 1stochd 1stochk 1three_white_soldiers 1inside_bar 1lowest 1min 1spinning_top 1tweezer_bottom 1avg 1hl2 1mean 1ohlc4 1rec 1zscore 1

Examples 11–20 of 20 · page 2 of 2

VC / growth investor · example 11

Is NOW's momentum broad or a single spike?

A best-in-class software comp: check whether the advance is steady.

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

State

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

Questions

cumrulecum(C > C[-1]) > cum(C < C[-1])
More up days than down days in the whole history
signrulesum(sign(C - C[-1]), 20) > 2
Up days outnumber down days by more than 2 in 20 sessions
obvruleobv() > sma(obv(), 20)
On-balance volume above its 20-day average
highbarsrulehighestbars(H, 60) <= 5
60-day high set within the last 5 sessions
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
cum
More up days than down days in the whole history
0.9463true
sign
Up days outnumber down days by more than 2 in 20 sessions
0.45on the line (false)
obv
On-balance volume above its 20-day average
0.0598false
highbars
60-day high set within the last 5 sessions
0.55on the line (true)
rally5
A 5% rally within a month
0.67568% · likely

What it means

For NOW on the session of 2026-10-30: True now: More up days than down days in the whole history. Not true: On-balance volume above its 20-day average. On the line: Up days outnumber down days by more than 2 in 20 sessions; 60-day high set within the last 5 sessions. Forecasts: A 5% rally within a month 68%.

Steady up days with a fresh high describe a healthy comp; a single spike day reads as less durable.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NOW"
  },
  "questions": {
    "cum": {
      "type": "yes_no",
      "ask": "cum(C > C[-1]) > cum(C < C[-1])"
    },
    "sign": {
      "type": "yes_no",
      "ask": "sum(sign(C - C[-1]), 20) > 2"
    },
    "obv": {
      "type": "yes_no",
      "ask": "obv() > sma(obv(), 20)"
    },
    "highbars": {
      "type": "yes_no",
      "ask": "highestbars(H, 60) <= 5"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (NOW, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "cum": {
      "yes_no": 0.9463,
      "rule": "cum(C > C[-1]) > cum(C < C[-1])",
      "basis": "rule"
    },
    "sign": {
      "yes_no": 0.45,
      "rule": "sum(sign(C - C[-1]), 20) > 2",
      "basis": "rule"
    },
    "obv": {
      "yes_no": 0.0598,
      "rule": "obv() > sma(obv(), 20)",
      "basis": "rule"
    },
    "highbars": {
      "yes_no": 0.55,
      "rule": "highestbars(H, 60) <= 5",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.675
    }
  },
  "context": {
    "symbol": "NOW",
    "as_of": "2026-10-30"
  }
}

cum highestbars obv offset sign sma sum

VC / growth investor · example 12

Consumer internet comps: AMZN, NFLX, EBAY, SNAP

For a consumer app round, check how listed consumer internet names trade.

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

State

{"symbol":"AMZN"} then NFLX, EBAY, SNAP, 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
beatEnglish → ruleDid revenue beat estimates last quarter?

Answers

Symboltrendruleddrulebeatrule
AMZN0.30730.09470.1409
NFLX0.05370.94630.8591
EBAY0.94630.05370.8591
SNAP0.38580.94630.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 EBAY of 4. More than 20% off the 52-week high: true for NFLX, SNAP of 4. Did revenue beat estimates last quarter: true for NFLX, EBAY, SNAP of 4.

Leaders trending while smaller names sit in drawdowns says the market pays for scale, which matters for an early-stage exit path.

Request JSON (AMZN; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AMZN"
  },
  "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)"
    },
    "beat": {
      "type": "yes_no",
      "instructions": "Did revenue beat estimates last quarter?"
    }
  }
}
Response JSON (AMZN, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.3073,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "dd": {
      "yes_no": 0.0947,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "beat": {
      "yes_no": 0.1409,
      "rule": "beat_revenue_last > 0.5",
      "basis": "pattern"
    }
  },
  "context": {
    "symbol": "AMZN",
    "as_of": "2026-10-30"
  }
}

beat_revenue_last max sma

VC / growth investor · example 13

How did CRM's last report land?

The partner on a SaaS board wants the read on the largest comp's last quarter before a board meeting.

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

State

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

Questions

beatEnglish → ruleDid the stock beat EPS estimates last quarter?
surpriseEnglish → ruleDid EPS beat estimates by more than 5% last quarter?
moveEnglish → ruleWas the last earnings reaction bigger than 5%?
gapEnglish → ruleDid the stock gap up after its last earnings?
above_preruleC > pre_earnings_close
Holding above the pre-earnings close
beat_nextforecastWill the stock beat earnings next quarter?
Beating earnings next quarter

Answers

QuestionAnswerReading
beat
Did the stock beat EPS estimates last quarter
compiled to beat_eps_last > 0.5
0.8591true
surprise
Did EPS beat estimates by more than 5% last quarter
compiled to eps_surprise_pct > 5
0.9463true
move
Was the last earnings reaction bigger than 5%
compiled to abs(last_earnings_move) > 5
0.9463true
gap
Did the stock gap up after its last earnings
compiled to last_earnings_gap > 0
0.9463true
above_pre
Holding above the pre-earnings close
0.8829true
beat_next
Beating earnings next quarter
0.54855% · close to even

What it means

For CRM on the session of 2026-10-30: True now: Did the stock beat EPS estimates last quarter; Did EPS beat estimates by more than 5% last quarter; Was the last earnings reaction bigger than 5%; Did the stock gap up after its last earnings; Holding above the pre-earnings close. Forecasts: Beating earnings next quarter 55%.

A beat that sold off says the bar is about guidance, which is useful framing for a portfolio company's own plan.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "CRM"
  },
  "questions": {
    "beat": {
      "type": "yes_no",
      "instructions": "Did the stock beat EPS estimates last quarter?"
    },
    "surprise": {
      "type": "yes_no",
      "instructions": "Did EPS beat estimates by more than 5% last quarter?"
    },
    "move": {
      "type": "yes_no",
      "instructions": "Was the last earnings reaction bigger than 5%?"
    },
    "gap": {
      "type": "yes_no",
      "instructions": "Did the stock gap up after its last earnings?"
    },
    "above_pre": {
      "type": "yes_no",
      "ask": "C > pre_earnings_close"
    },
    "beat_next": {
      "type": "yes_no",
      "instructions": "Will the stock beat earnings next quarter?"
    }
  }
}
Response JSON (CRM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "beat": {
      "yes_no": 0.8591,
      "rule": "beat_eps_last > 0.5",
      "basis": "pattern"
    },
    "surprise": {
      "yes_no": 0.9463,
      "rule": "eps_surprise_pct > 5",
      "basis": "pattern"
    },
    "move": {
      "yes_no": 0.9463,
      "rule": "abs(last_earnings_move) > 5",
      "basis": "pattern"
    },
    "gap": {
      "yes_no": 0.9463,
      "rule": "last_earnings_gap > 0",
      "basis": "pattern"
    },
    "above_pre": {
      "yes_no": 0.8829,
      "rule": "C > pre_earnings_close",
      "basis": "rule"
    },
    "beat_next": {
      "yes_no": 0.548
    }
  },
  "context": {
    "symbol": "CRM",
    "as_of": "2026-10-30"
  }
}

abs beat_eps_last eps_surprise_pct last_earnings_gap last_earnings_move pre_earnings_close

VC / growth investor · example 14

Semiconductor cycle turn signals for a hardware fund

Hardware investments are cyclical; look for bottoming candles and momentum turns in SOXX.

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

State

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

Questions

morningrulemorning_star()
morning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first.
soldiersrulethree_white_soldiers()
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
invertedruleinverted_hammer()
inverted hammer candle: Shooting-star shape after a five-bar decline.
stochrulestochk(14) > stochd(14)
Stochastic %K above %D
macd_xEnglish → ruleDid MACD cross above its signal line today?
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
morning
morning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first.
0.0599false
soldiers
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
0.0537false
inverted
inverted hammer candle: Shooting-star shape after a five-bar decline.
0.0537false
stoch
Stochastic %K above %D
0.4207on the line (false)
macd_x
Did MACD cross above its signal line today
compiled to (macd(C) > macdsignal(C)) and (ref(macd(C), -1) <= ref(macdsignal(C), -1))
0.2359false
rally5
A 5% rally within a month
0.76977% · likely

What it means

For SOXX on the session of 2026-10-30: Not true: morning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first.; three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.; inverted hammer candle: Shooting-star shape after a five-bar decline.; Did MACD cross above its signal line today. On the line: Stochastic %K above %D. Forecasts: A 5% rally within a month 77%.

Bottoming candles with a MACD cross are early, not proof; the fund watches for the trend rules to follow.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SOXX"
  },
  "questions": {
    "morning": {
      "type": "yes_no",
      "ask": "morning_star()"
    },
    "soldiers": {
      "type": "yes_no",
      "ask": "three_white_soldiers()"
    },
    "inverted": {
      "type": "yes_no",
      "ask": "inverted_hammer()"
    },
    "stoch": {
      "type": "yes_no",
      "ask": "stochk(14) > stochd(14)"
    },
    "macd_x": {
      "type": "yes_no",
      "instructions": "Did MACD cross above its signal line today?"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (SOXX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "morning": {
      "yes_no": 0.0599,
      "rule": "morning_star()",
      "basis": "rule"
    },
    "soldiers": {
      "yes_no": 0.0537,
      "rule": "three_white_soldiers()",
      "basis": "rule"
    },
    "inverted": {
      "yes_no": 0.0537,
      "rule": "inverted_hammer()",
      "basis": "rule"
    },
    "stoch": {
      "yes_no": 0.4207,
      "rule": "stochk(14) > stochd(14)",
      "basis": "rule"
    },
    "macd_x": {
      "yes_no": 0.2359,
      "rule": "(macd(C) > macdsignal(C)) and (ref(macd(C), -1) <= ref(macdsignal(C), -1))",
      "basis": "comparison"
    },
    "rally5": {
      "yes_no": 0.769
    }
  },
  "context": {
    "symbol": "SOXX",
    "as_of": "2026-10-30"
  }
}

inverted_hammer macd macdsignal morning_star ref stochd stochk three_white_soldiers

VC / growth investor · example 15

Rates and growth valuations: TLT versus ARKK

Long-duration growth equity is rate sensitive; read the bond trend next to the growth fund trend.

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 ARKK, one request each. The server fills in the latest completed session.

Questions

trendEnglish → ruleIs the stock above its 50-day moving average?
momruleroc(C, 20) > 5
Up more than 5% in 20 sessions
emaruleC > ema(C, 100)
Above the 100-day exponential average
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symboltrendrulemomruleemaruleup_weekforecast
TLT0.84820.63970.56940.561
ARKK0.1010.07010.210.505

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 of 2. Up more than 5% in 20 sessions: true for TLT of 2. Above the 100-day exponential average: true for none of 2. Highest odds for “Higher in a week”: TLT at 56%.

Bonds and growth rising together point to falling discount rates, a tailwind for growth valuations.

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?"
    },
    "mom": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "ema": {
      "type": "yes_no",
      "ask": "C > ema(C, 100)"
    },
    "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"
    },
    "mom": {
      "yes_no": 0.6397,
      "rule": "roc(C, 20) > 5",
      "basis": "rule"
    },
    "ema": {
      "yes_no": 0.5694,
      "rule": "C > ema(C, 100)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.561
    }
  },
  "context": {
    "symbol": "TLT",
    "as_of": "2026-10-30"
  }
}

ema roc sma

VC / growth investor · example 16

Recent listing check: is a new issue holding its gains?

A peer company listed recently; check whether it holds above its early range or has broken down.

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

State

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

Questions

range_topEnglish → ruleIs the stock in the top 10% of its 20-day range?
breakdownruleC < lowest(L, 20)
Closed under the 20-day low
tweezerruletweezer_bottom()
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
spinrulespinning_top()
spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.
insideruleinside_bar()
inside bar candle: Today's high and low are inside yesterday's (equal counts).
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
range_top
Is the stock in the top 10% of its 20-day range
compiled to (C - min(L, 20)) / (max(H, 20) - min(L, 20)) >= 0.9
0.0557false
breakdown
Closed under the 20-day low
0.2515false
tweezer
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
0.0556false
spin
spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.
0.2503false
inside
inside bar candle: Today's high and low are inside yesterday's (equal counts).
0.0746false
drop10
A 10% drawdown within a month
0.75275% · likely

What it means

For SMCI on the session of 2026-10-30: Not true: Is the stock in the top 10% of its 20-day range; Closed under the 20-day low; tweezer bottom candle: Red then green, with lows within 0.1% of each other.; spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.; inside bar candle: Today's high and low are inside yesterday's (equal counts).. Forecasts: A 10% drawdown within a month 75%.

A new issue in the top of its range tells bankers the follow-on window is open for similar companies.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SMCI"
  },
  "questions": {
    "range_top": {
      "type": "yes_no",
      "instructions": "Is the stock in the top 10% of its 20-day range?"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "tweezer": {
      "type": "yes_no",
      "ask": "tweezer_bottom()"
    },
    "spin": {
      "type": "yes_no",
      "ask": "spinning_top()"
    },
    "inside": {
      "type": "yes_no",
      "ask": "inside_bar()"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  }
}
Response JSON (SMCI, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "range_top": {
      "yes_no": 0.0557,
      "rule": "(C - min(L, 20)) / (max(H, 20) - min(L, 20)) >= 0.9",
      "basis": "pattern"
    },
    "breakdown": {
      "yes_no": 0.2515,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "tweezer": {
      "yes_no": 0.0556,
      "rule": "tweezer_bottom()",
      "basis": "rule"
    },
    "spin": {
      "yes_no": 0.2503,
      "rule": "spinning_top()",
      "basis": "rule"
    },
    "inside": {
      "yes_no": 0.0746,
      "rule": "inside_bar()",
      "basis": "rule"
    },
    "drop10": {
      "yes_no": 0.752
    }
  },
  "context": {
    "symbol": "SMCI",
    "as_of": "2026-10-30"
  }
}

inside_bar lowest max min spinning_top tweezer_bottom

VC / growth investor · example 17

Secondary sale timing on a listed stake: PANW

The fund plans to sell part of a listed stake; prefer strength with good liquidity.

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

State

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

Questions

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
extEnglish → ruleIs price extended more than 2 ATR above its 20-day average?
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
liquid
Trades more than $100 million a day
0.9463true
trend
Stacked averages: close > 20 EMA > 50 > 200
0.2318false
ext
Is price extended more than 2 ATR above its 20-day average
compiled to C - sma(C, 20) > 2 * atr(14)
0.0666false
near_high
Within 2% of the 52-week high
0.0617false
drop5
A 5% drawdown within a month
0.72773% · likely

Actions

Rules on the answers decide what to send.

trend >= 0.6 and liquid >= 0.6 and ext < 0.5→Webhookzapier-lp-reporting
else→Slackpartners
What each action would send 1 of 2 fired · dry run, nothing sent
sell_windowrule false: skipped
waitwould send (dry run)Slack → partners
{
  "text": "PANW (2026-10-30): sale window not open (trend 23%, stretched 7%)."
}

What it means

For PANW on the session of 2026-10-30: True now: Trades more than $100 million a day. Not true: Stacked averages: close > 20 EMA > 50 > 200; Is price extended more than 2 ATR above its 20-day average; Within 2% of the 52-week high. Forecasts: A 5% drawdown within a month 73%. Fired: wait (Slack → partners).

A trending, liquid, not-stretched stock opens the window and logs it for LP reporting; otherwise the partners get a hold note.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "PANW"
  },
  "questions": {
    "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)"
    },
    "ext": {
      "type": "yes_no",
      "instructions": "Is price extended more than 2 ATR above its 20-day average?"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "sell_window",
      "when": "trend >= 0.6 and liquid >= 0.6 and ext < 0.5",
      "do": "webhook",
      "connection": "zapier-lp-reporting",
      "body": {
        "event": "sale_window_open",
        "symbol": "{{symbol}}",
        "p_trend": "{{trend}}",
        "p_liquid": "{{liquid}}",
        "p_drop5": "{{drop5}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "wait",
      "when": "else",
      "do": "slack",
      "connection": "partners",
      "message": "{{symbol}} ({{as_of}}): sale window not open (trend {{trend|pct}}, stretched {{ext|pct}})."
    }
  ],
  "dry_run": true
}
Response JSON (PANW, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "liquid": {
      "yes_no": 0.9463,
      "rule": "avg(C * V, 20) > 100000000",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.2318,
      "rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "ext": {
      "yes_no": 0.0666,
      "rule": "C - sma(C, 20) > 2 * atr(14)",
      "basis": "pattern"
    },
    "near_high": {
      "yes_no": 0.0617,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.727
    }
  },
  "context": {
    "symbol": "PANW",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "sell_window",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "wait",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "partners",
      "preview": {
        "text": "PANW (2026-10-30): sale window not open (trend 23%, stretched 7%)."
      }
    }
  ]
}

atr avg ema max sma

VC / growth investor · example 18

Emerging-market tech comps: KWEB, TSM, BABA

For a fund investing in Asia, check the listed tech names that set public comparables.

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

State

{"symbol":"KWEB"} then TSM, BABA, one request each. The server fills in the latest completed session.

Questions

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

Answers

Symboltrendrulemomruleddrule
KWEB0.05370.05370.9463
TSM0.71240.53870.1622
BABA0.05370.05410.9463

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 TSM of 3. Higher than three months ago: true for none of 3. More than 20% off the 52-week high: true for KWEB, BABA of 3.

Asian tech in an uptrend supports regional exit plans; drawdowns push exits toward US listings or trade sales.

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

max offset sma

VC / growth investor · example 19

Smoothed growth trend on QQQ for the quarterly letter

The quarterly LP letter describes the public backdrop; use slow, smoothed filters so the description does not flip each week.

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

State

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

Questions

recruleC > rec(C, self + 0.02 * (C - self))
Above a slow recursive trend line
ohlcruleohlc4() > sma(ohlc4(), 50)
Average bar price above its 50-day average
hl2rulehl2() > mean(hl2(), 100)
Bar midpoint above its 100-day mean
trendrulesma(C, 200) > ref(sma(C, 200), -20)
The 200-day average is rising
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
rec
Above a slow recursive trend line
0.0976false
ohlc
Average bar price above its 50-day average
0.0674false
hl2
Bar midpoint above its 100-day mean
0.0819false
trend
The 200-day average is rising
0.9463true
up_week
Higher in a week
0.56156% · close to even

What it means

For QQQ on the session of 2026-10-30: True now: The 200-day average is rising. Not true: Above a slow recursive trend line; Average bar price above its 50-day average; Bar midpoint above its 100-day mean. Forecasts: Higher in a week 56%.

Slow filters agreeing means the letter can describe the backdrop as an uptrend without hedging.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "QQQ"
  },
  "questions": {
    "rec": {
      "type": "yes_no",
      "ask": "C > rec(C, self + 0.02 * (C - self))"
    },
    "ohlc": {
      "type": "yes_no",
      "ask": "ohlc4() > sma(ohlc4(), 50)"
    },
    "hl2": {
      "type": "yes_no",
      "ask": "hl2() > mean(hl2(), 100)"
    },
    "trend": {
      "type": "yes_no",
      "ask": "sma(C, 200) > ref(sma(C, 200), -20)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (QQQ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "rec": {
      "yes_no": 0.0976,
      "rule": "C > rec(C, self + 0.02 * (C - self))",
      "basis": "rule"
    },
    "ohlc": {
      "yes_no": 0.0674,
      "rule": "ohlc4() > sma(ohlc4(), 50)",
      "basis": "rule"
    },
    "hl2": {
      "yes_no": 0.0819,
      "rule": "hl2() > mean(hl2(), 100)",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.9463,
      "rule": "sma(C, 200) > ref(sma(C, 200), -20)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.561
    }
  },
  "context": {
    "symbol": "QQQ",
    "as_of": "2026-10-30"
  }
}

hl2 mean ohlc4 rec ref sma

VC / growth investor · example 20

Volatility gate before pricing a growth round

Rounds priced during market stress get repriced later; check volatility first.

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

State

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

Questions

atrEnglish → ruleIs the 14-day ATR less than 2% of the price?
vol5English → ruleIs 5-day volatility higher than 20-day volatility?
shockrulezscore(C / C[-1] - 1, 20) < -2
A two-sigma down day
vol_upforecastWill volatility be higher over the next month?
Higher volatility next month

Answers

QuestionAnswerReading
atr
Is the 14-day ATR less than 2% of the price
compiled to atr(14) / C < 0.02
0.824true
vol5
Is 5-day volatility higher than 20-day volatility
compiled to std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)
0.9069true
shock
A two-sigma down day
0.6278true
vol_up
Higher volatility next month
0.52352% · close to even

Actions

Rules on the answers decide what to send.

atr >= 0.6 and shock < 0.5→Emailme
else→Emailme
What each action would send 1 of 2 fired · dry run, nothing sent
calmrule false: skipped
stressedwould send (dry run)Email → me
{
  "subject": "Pricing backdrop stressed (2026-10-30)",
  "text": "QQQ volatility elevated (5d over 20d 91%, shock 63%). Consider structure over headline price."
}

What it means

For QQQ on the session of 2026-10-30: True now: Is the 14-day ATR less than 2% of the price; Is 5-day volatility higher than 20-day volatility; A two-sigma down day. Forecasts: Higher volatility next month 52%. Fired: stressed (Email → me).

A stressed backdrop is a reason to negotiate structure rather than headline valuation.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "QQQ"
  },
  "questions": {
    "atr": {
      "type": "yes_no",
      "instructions": "Is the 14-day ATR less than 2% of the price?"
    },
    "vol5": {
      "type": "yes_no",
      "instructions": "Is 5-day volatility higher than 20-day volatility?"
    },
    "shock": {
      "type": "yes_no",
      "ask": "zscore(C / C[-1] - 1, 20) < -2"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    }
  },
  "actions": [
    {
      "id": "calm",
      "when": "atr >= 0.6 and shock < 0.5",
      "do": "email",
      "connection": "me",
      "subject": "Pricing backdrop calm ({{as_of}})",
      "message": "QQQ ATR under 2% ({{atr|pct}}), no return shock. Higher vol next month: {{vol_up|pct}}."
    },
    {
      "id": "stressed",
      "when": "else",
      "do": "email",
      "connection": "me",
      "subject": "Pricing backdrop stressed ({{as_of}})",
      "message": "QQQ volatility elevated (5d over 20d {{vol5|pct}}, shock {{shock|pct}}). Consider structure over headline price."
    }
  ],
  "dry_run": true
}
Response JSON (QQQ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "atr": {
      "yes_no": 0.824,
      "rule": "atr(14) / C < 0.02",
      "basis": "pattern"
    },
    "vol5": {
      "yes_no": 0.9069,
      "rule": "std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)",
      "basis": "pattern"
    },
    "shock": {
      "yes_no": 0.6278,
      "rule": "zscore(C / C[-1] - 1, 20) < -2",
      "basis": "rule"
    },
    "vol_up": {
      "yes_no": 0.523
    }
  },
  "context": {
    "symbol": "QQQ",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "calm",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "stressed",
      "fired": true,
      "status": "dry_run",
      "do": "email",
      "connection": "me",
      "preview": {
        "subject": "Pricing backdrop stressed (2026-10-30)",
        "text": "QQQ volatility elevated (5d over 20d 91%, shock 63%). Consider structure over headline price."
      }
    }
  ]
}

atr log offset sqrt std zscore

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, Private equity, Fund-of-funds allocator.

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