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 · Individuals

Social trading community: 20 ways to use Ora

A group that shares setups and wants the same checks, in the same words, posted to its channel. Each example is a complete, runnable request with the real answers it returned (31 requests, captured 2026-10-31), what they mean and, where it fits, the action it would send.

Answers were captured on ora-fin-0.1.1. Another model changes the request JSON and the Playground link; run it there to see its answers.
Rule functions and facts used by this player (50)

sma 10offset 7ref 6abs 5avg 4highest 3max 3swinghigh 3swinglow 3atr 3rsi 2macd 2macdsignal 2roc 2days_to_earnings 2log 2sqrt 2std 2sum 2ema 1doji 1gravestone_doji 1marubozu 1outside_bar 1spinning_top 1beat_streak 1last_earnings_move 1next_report_amc 1atr_pct 1zscore 1three_white_soldiers 1gap_down 1gap_up 1hanging_man 1highestbars 1shooting_star 1lowest 1tweezer_bottom 1hl2 1hlc3 1ohlc4 1barssince 1sign 1cut_last 1days_to_ex_div 1div_yield_ttm 1years_of_growth 1greatest 1iif 1lowestbars 1

Examples 1–10 of 20 · page 1 of 2

Social trading community · example 1

A Discord bot that posts volume breakouts in NVDA

The community wants one shared definition of a breakout. When NVDA closes at a 20-day high on 1.5x volume, the bot posts to Discord.

ora-fin-0.1.1NVDA4 questions1 action
  1. StateNVDA
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

breakoutEnglish → ruleIs this a breakout entry: a new 20-day closing high on 1.5x average volume?
near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
rsi_hotrulersi(C, 14) > 70
RSI above 70
new_highforecastWill it make a new 20-day high in the next week?
A new 20-day high next week

Answers

QuestionAnswerReading
breakout
Is this a breakout entry: a new 20-day closing high on 1.5x average volume
compiled to (C > highest(C, 20)) and (V > 1.5 * ref(avg(V, 20), -1))
0.0537false
near_high
Within 2% of the 52-week high
0.0537false
rsi_hot
RSI above 70
0.0537false
new_high
A new 20-day high next week
0.0273% · unlikely

Actions

Rules on the answers decide what to send.

breakout >= 0.6→Webhookcommunity-discord
What each action would send 0 of 1 fired · dry run, nothing sent
postrule false: skipped

What it means

For NVDA on the session of 2026-10-30: Not true: Is this a breakout entry: a new 20-day closing high on 1.5x average volume; Within 2% of the 52-week high; RSI above 70. Forecasts: A new 20-day high next week 3%. No action fired: every rule was false.

Everyone sees the same rule behind the post, so arguments are about the trade, not about what counts as a breakout.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NVDA"
  },
  "questions": {
    "breakout": {
      "type": "yes_no",
      "instructions": "Is this a breakout entry: a new 20-day closing high on 1.5x average volume?"
    },
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "rsi_hot": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 70"
    },
    "new_high": {
      "type": "yes_no",
      "instructions": "Will it make a new 20-day high in the next week?"
    }
  },
  "actions": [
    {
      "id": "post",
      "when": "breakout >= 0.6",
      "do": "webhook",
      "connection": "community-discord",
      "body": {
        "content": "Breakout: {{symbol}} ({{as_of}}) closed at a 20-day high on 1.5x volume ({{breakout|pct}}). Near the 52-week high {{near_high|pct}}, RSI over 70 {{rsi_hot|pct}}. Not advice: do your own work."
      }
    }
  ],
  "dry_run": true
}
Response JSON (NVDA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "breakout": {
      "yes_no": 0.0537,
      "rule": "(C > highest(C, 20)) and (V > 1.5 * ref(avg(V, 20), -1))",
      "basis": "pattern"
    },
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "rsi_hot": {
      "yes_no": 0.0537,
      "rule": "rsi(C, 14) > 70",
      "basis": "rule"
    },
    "new_high": {
      "yes_no": 0.027
    }
  },
  "context": {
    "symbol": "NVDA",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "post",
      "fired": false,
      "status": "skipped"
    }
  ]
}

avg highest max ref rsi

Social trading community · example 2

Setup of the day: TSLA bull or bear case

Members vote on a setup; the bot posts the facts for both sides first so the vote starts from the same data.

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

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
hh_hlEnglish → ruleIs the stock making higher swing highs and higher swing lows?
lh_llEnglish → ruleIs the stock making lower swing highs and lower swing lows?
up_weekforecastWill the stock be higher in a week?
Higher in a week
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

QuestionAnswerReading
trend
Above the 50-day average
0.8961true
hh_hl
Is the stock making higher swing highs and higher swing lows
compiled to (swinghigh(5, 1) > swinghigh(5, 2)) and (swinglow(5, 1) > swinglow(5, 2))
0.5439on the line (true)
lh_ll
Is the stock making lower swing highs and lower swing lows
compiled to (swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2))
0.4322on the line (false)
up_week
Higher in a week
0.48749% · close to even
down_week
Lower in a week
0.45546% · close to even

Actions

Rules on the answers decide what to send.

else→Webhookcommunity-discord
What each action would send 1 of 1 fired · dry run, nothing sent
pollwould send (dry run)Webhook → community-discord
{
  "content": "Vote: TSLA (2026-10-30). Above 50-day 90%. Higher highs and lows 54%, lower highs and lows 43%. Model: higher in a week 49%, lower 46%. Bull or bear?"
}

What it means

For TSLA on the session of 2026-10-30: True now: Above the 50-day average. On the line: Is the stock making higher swing highs and higher swing lows; Is the stock making lower swing highs and lower swing lows. Forecasts: Higher in a week 49%; Lower in a week 46%. Fired: poll (Webhook → community-discord).

A lone else branch always fires, so the poll post goes out every time with the latest facts in it.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TSLA"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "hh_hl": {
      "type": "yes_no",
      "instructions": "Is the stock making higher swing highs and higher swing lows?"
    },
    "lh_ll": {
      "type": "yes_no",
      "instructions": "Is the stock making lower swing highs and lower swing lows?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  },
  "actions": [
    {
      "id": "poll",
      "when": "else",
      "do": "webhook",
      "connection": "community-discord",
      "body": {
        "content": "Vote: {{symbol}} ({{as_of}}). Above 50-day {{trend|pct}}. Higher highs and lows {{hh_hl|pct}}, lower highs and lows {{lh_ll|pct}}. Model: higher in a week {{up_week|pct}}, lower {{down_week|pct}}. Bull or bear?"
      }
    }
  ],
  "dry_run": true
}
Response JSON (TSLA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8961,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "hh_hl": {
      "yes_no": 0.5439,
      "rule": "(swinghigh(5, 1) > swinghigh(5, 2)) and (swinglow(5, 1) > swinglow(5, 2))",
      "basis": "pattern"
    },
    "lh_ll": {
      "yes_no": 0.4322,
      "rule": "(swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2))",
      "basis": "pattern"
    },
    "up_week": {
      "yes_no": 0.487
    },
    "down_week": {
      "yes_no": 0.455
    }
  },
  "context": {
    "symbol": "TSLA",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "poll",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "community-discord",
      "preview": {
        "body": {
          "content": "Vote: TSLA (2026-10-30). Above 50-day 90%. Higher highs and lows 54%, lower highs and lows 43%. Model: higher in a week 49%, lower 46%. Bull or bear?"
        }
      }
    }
  ]
}

sma swinghigh swinglow

Social trading community · example 3

Community watchlist scan: AAPL, AMD, NFLX, JPM, XOM

The group's weekly watchlist, one request per name: trend, momentum and the odds of a 5% rally.

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

State

{"symbol":"AAPL"} then AMD, NFLX, JPM, XOM, 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
macdEnglish → ruleIs the MACD line above its signal line?
rocruleroc(C, 20) > 5
Up more than 5% in 20 sessions
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symboltrendrulemacdrulerocrulerally5forecast
AAPL0.70790.39620.31470.446
AMD0.10480.20760.09320.836
NFLX0.05370.15840.11190.645
JPM0.23090.880.18230.385
XOM0.94360.84590.92980.511

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

What it means

Session of 2026-10-30, 5 symbols: Stacked averages: close > 20 EMA > 50 > 200: true for AAPL, XOM of 5. Is the MACD line above its signal line: true for JPM, XOM of 5. Up more than 5% in 20 sessions: true for XOM of 5. Highest odds for “A 5% rally within a month”: AMD at 84%.

Identical questions on each name make the ranking transparent; members can rerun it themselves and get the same answers.

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

ema macd macdsignal roc sma

Social trading community · example 4

Candle check: did AMZN print a doji, a spinning top or a marubozu?

Members argue about candle names. Settle it with the exact definitions in the rule language.

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

State

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

Questions

dojiruledoji()
doji candle: Body at most 10% of the day's range.
spinningrulespinning_top()
spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.
marubozurulemarubozu()
marubozu candle: Body at least 90% of the range: almost no wicks.
gravestonerulegravestone_doji()
gravestone doji candle: Doji with a long upper wick and almost no lower wick.
outsideruleoutside_bar()
outside bar candle: Today's high above yesterday's and low below it.

Answers

QuestionAnswerReading
doji
doji candle: Body at most 10% of the day's range.
0.0537false
spinning
spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.
0.0592false
marubozu
marubozu candle: Body at least 90% of the range: almost no wicks.
0.0555false
gravestone
gravestone doji candle: Doji with a long upper wick and almost no lower wick.
0.0537false
outside
outside bar candle: Today's high above yesterday's and low below it.
0.0661false

What it means

For AMZN on the session of 2026-10-30: Not true: doji candle: Body at most 10% of the day's range.; spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.; marubozu candle: Body at least 90% of the range: almost no wicks.; gravestone doji candle: Doji with a long upper wick and almost no lower wick.; outside bar candle: Today's high above yesterday's and low below it..

Each candle function has one precise definition, so the answer is the same for every member who asks.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AMZN"
  },
  "questions": {
    "doji": {
      "type": "yes_no",
      "ask": "doji()"
    },
    "spinning": {
      "type": "yes_no",
      "ask": "spinning_top()"
    },
    "marubozu": {
      "type": "yes_no",
      "ask": "marubozu()"
    },
    "gravestone": {
      "type": "yes_no",
      "ask": "gravestone_doji()"
    },
    "outside": {
      "type": "yes_no",
      "ask": "outside_bar()"
    }
  }
}
Response JSON (AMZN, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "doji": {
      "yes_no": 0.0537,
      "rule": "doji()",
      "basis": "rule"
    },
    "spinning": {
      "yes_no": 0.0592,
      "rule": "spinning_top()",
      "basis": "rule"
    },
    "marubozu": {
      "yes_no": 0.0555,
      "rule": "marubozu()",
      "basis": "rule"
    },
    "gravestone": {
      "yes_no": 0.0537,
      "rule": "gravestone_doji()",
      "basis": "rule"
    },
    "outside": {
      "yes_no": 0.0661,
      "rule": "outside_bar()",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "AMZN",
    "as_of": "2026-10-30"
  }
}

doji gravestone_doji marubozu outside_bar spinning_top

Social trading community · example 5

Earnings thread: AMD before its report

Open an earnings thread with the facts: report date and time, beat streak, last reaction, and the model's view of the next quarter.

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

State

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

Questions

soonEnglish → ruleIs earnings in the next 14 days?
amcEnglish → ruleDoes the stock report after the close next time?
streakEnglish → ruleHas the stock beaten EPS estimates 4 quarters in a row?
last_moveruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%
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.9463true
amc
Does the stock report after the close next time
compiled to next_report_amc > 0.5
0.8591true
streak
Has the stock beaten EPS estimates 4 quarters in a row
compiled to beat_streak >= 4
0.9463true
last_move
Last earnings move bigger than 5%
0.9463true
beat_next
Beating earnings next quarter
0.56356% · close to even

Actions

Rules on the answers decide what to send.

soon >= 0.6→Slackcommunity-earnings
What each action would send 1 of 1 fired · dry run, nothing sent
threadwould send (dry run)Slack → community-earnings
{
  "text": "Earnings thread: AMD reports within 14 days (2026-10-30). After the close 86%. 4-quarter beat streak 95%. Last reaction over 5% 95%. Model on beating next quarter: 56%."
}

What it means

For AMD on the session of 2026-10-30: True now: Is earnings in the next 14 days; Does the stock report after the close next time; Has the stock beaten EPS estimates 4 quarters in a row; Last earnings move bigger than 5%. Forecasts: Beating earnings next quarter 56%. Fired: thread (Slack → community-earnings).

Facts and the forecast are labelled differently in the post, so members can see which part is record and which part is odds.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AMD"
  },
  "questions": {
    "soon": {
      "type": "yes_no",
      "instructions": "Is earnings in the next 14 days?"
    },
    "amc": {
      "type": "yes_no",
      "instructions": "Does the stock report after the close next time?"
    },
    "streak": {
      "type": "yes_no",
      "instructions": "Has the stock beaten EPS estimates 4 quarters in a row?"
    },
    "last_move": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) > 5"
    },
    "beat_next": {
      "type": "yes_no",
      "instructions": "Will the stock beat earnings next quarter?"
    }
  },
  "actions": [
    {
      "id": "thread",
      "when": "soon >= 0.6",
      "do": "slack",
      "connection": "community-earnings",
      "message": "Earnings thread: {{symbol}} reports within 14 days ({{as_of}}). After the close {{amc|pct}}. 4-quarter beat streak {{streak|pct}}. Last reaction over 5% {{last_move|pct}}. Model on beating next quarter: {{beat_next|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (AMD, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "soon": {
      "yes_no": 0.9463,
      "rule": "days_to_earnings <= 14",
      "basis": "pattern"
    },
    "amc": {
      "yes_no": 0.8591,
      "rule": "next_report_amc > 0.5",
      "basis": "pattern"
    },
    "streak": {
      "yes_no": 0.9463,
      "rule": "beat_streak >= 4",
      "basis": "pattern"
    },
    "last_move": {
      "yes_no": 0.9463,
      "rule": "abs(last_earnings_move) > 5",
      "basis": "rule"
    },
    "beat_next": {
      "yes_no": 0.563
    }
  },
  "context": {
    "symbol": "AMD",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "thread",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "community-earnings",
      "preview": {
        "text": "Earnings thread: AMD reports within 14 days (2026-10-30). After the close 86%. 4-quarter beat streak 95%. Last reaction over 5% 95%. Model on beating next quarter: 56%."
      }
    }
  ]
}

abs beat_streak days_to_earnings last_earnings_move next_report_amc

Social trading community · example 6

Heads-up post: SMCI volatility is extreme

Warn newer members before they chase a volatile name: ATR, historical volatility and the size of today's move.

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

State

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

Questions

atr3ruleatr_pct(14) > 3
A typical day moves more than 3%
hvrulestd(log(C / C[-1]), 20) * sqrt(252) > 0.4
Annualized 20-day volatility above 40%
moveEnglish → ruleWas today's move bigger than 1.5 ATR?
shockrulezscore(C / C[-1] - 1, 20) < -2
A two-sigma down day
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
atr3
A typical day moves more than 3%
0.9463true
hv
Annualized 20-day volatility above 40%
0.9336true
move
Was today's move bigger than 1.5 ATR
compiled to abs(C - C[-1]) > 1.5 * atr(14)
0.0702false
shock
A two-sigma down day
0.099false
drop10
A 10% drawdown within a month
0.75275% · likely

Actions

Rules on the answers decide what to send.

atr3 >= 0.6 or hv >= 0.6→Webhookcommunity-discord
What each action would send 1 of 1 fired · dry run, nothing sent
warnwould send (dry run)Webhook → community-discord
{
  "content": "Risk note on SMCI (2026-10-30): ATR over 3% 95%, HV over 40% 93%, 10% drawdown odds 75%. Size small if you trade it."
}

What it means

For SMCI on the session of 2026-10-30: True now: A typical day moves more than 3%; Annualized 20-day volatility above 40%. Not true: Was today's move bigger than 1.5 ATR; A two-sigma down day. Forecasts: A 10% drawdown within a month 75%. Fired: warn (Webhook → community-discord).

The warning goes out on volatility rules, not on direction, so it helps both bulls and bears size sensibly.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SMCI"
  },
  "questions": {
    "atr3": {
      "type": "yes_no",
      "ask": "atr_pct(14) > 3"
    },
    "hv": {
      "type": "yes_no",
      "ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4"
    },
    "move": {
      "type": "yes_no",
      "instructions": "Was today's move bigger than 1.5 ATR?"
    },
    "shock": {
      "type": "yes_no",
      "ask": "zscore(C / C[-1] - 1, 20) < -2"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "warn",
      "when": "atr3 >= 0.6 or hv >= 0.6",
      "do": "webhook",
      "connection": "community-discord",
      "body": {
        "content": "Risk note on {{symbol}} ({{as_of}}): ATR over 3% {{atr3|pct}}, HV over 40% {{hv|pct}}, 10% drawdown odds {{drop10|pct}}. Size small if you trade it."
      }
    }
  ],
  "dry_run": true
}
Response JSON (SMCI, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "atr3": {
      "yes_no": 0.9463,
      "rule": "atr_pct(14) > 3",
      "basis": "rule"
    },
    "hv": {
      "yes_no": 0.9336,
      "rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4",
      "basis": "rule"
    },
    "move": {
      "yes_no": 0.0702,
      "rule": "abs(C - C[-1]) > 1.5 * atr(14)",
      "basis": "pattern"
    },
    "shock": {
      "yes_no": 0.099,
      "rule": "zscore(C / C[-1] - 1, 20) < -2",
      "basis": "rule"
    },
    "drop10": {
      "yes_no": 0.752
    }
  },
  "context": {
    "symbol": "SMCI",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "warn",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "community-discord",
      "preview": {
        "body": {
          "content": "Risk note on SMCI (2026-10-30): ATR over 3% 95%, HV over 40% 93%, 10% drawdown odds 75%. Size small if you trade it."
        }
      }
    }
  ]
}

abs atr atr_pct log offset sqrt std zscore

Social trading community · example 7

Three white soldiers in MU?

A member spotted three strong green candles. Check the pattern, the volume behind it and where it sits against the 50-day.

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

State

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

Questions

soldiersrulethree_white_soldiers()
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
green3English → ruleWere the last 3 candles all green?
volumeruleV > avg(V, 20)
Volume above its 20-day average
above_50druleC > sma(C, 50)
Above the 50-day average
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
soldiers
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
0.0647false
green3
Were the last 3 candles all green
compiled to (C > O) and (C[-1] > O[-1]) and (C[-2] > O[-2])
0.1097false
volume
Volume above its 20-day average
0.7811true
above_50d
Above the 50-day average
0.1166false
up_week
Higher in a week
0.60661% · likely

What it means

For MU on the session of 2026-10-30: True now: Volume above its 20-day average. Not true: three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.; Were the last 3 candles all green; Above the 50-day average. Forecasts: Higher in a week 61%.

The pattern function is stricter than three green candles (each opens inside the last body); the volume rule says whether it had participation.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MU"
  },
  "questions": {
    "soldiers": {
      "type": "yes_no",
      "ask": "three_white_soldiers()"
    },
    "green3": {
      "type": "yes_no",
      "instructions": "Were the last 3 candles all green?"
    },
    "volume": {
      "type": "yes_no",
      "ask": "V > avg(V, 20)"
    },
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (MU, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "soldiers": {
      "yes_no": 0.0647,
      "rule": "three_white_soldiers()",
      "basis": "rule"
    },
    "green3": {
      "yes_no": 0.1097,
      "rule": "(C > O) and (C[-1] > O[-1]) and (C[-2] > O[-2])",
      "basis": "pattern"
    },
    "volume": {
      "yes_no": 0.7811,
      "rule": "V > avg(V, 20)",
      "basis": "rule"
    },
    "above_50d": {
      "yes_no": 0.1166,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.606
    }
  },
  "context": {
    "symbol": "MU",
    "as_of": "2026-10-30"
  }
}

avg offset sma three_white_soldiers

Social trading community · example 8

Gap recap: did INTC gap up or down, and did it hold?

A morning recap post: unfilled gap patterns, gap size against ATR and whether the gap reclaimed or faded by the close.

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

State

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

Questions

gap_uprulegap_up()
gap up candle: Today's whole range is above yesterday's high: an unfilled gap up.
gap_downrulegap_down()
gap down candle: Today's whole range is below yesterday's low.
gap_atrruleabs(O - C[-1]) > 0.5 * ref(atr(14), -1)
Gap bigger than half an ATR
fadedruleO > C[-1] and C < C[-1]
Gapped up but closed under yesterday's close
reclaimedruleO < L[-1] and C > C[-1]
Opened under yesterday's low, closed up on the day
gap_tomorrowforecastWill it gap down tomorrow?
A gap down tomorrow

Answers

QuestionAnswerReading
gap_up
gap up candle: Today's whole range is above yesterday's high: an unfilled gap up.
0.0537false
gap_down
gap down candle: Today's whole range is below yesterday's low.
0.9463true
gap_atr
Gap bigger than half an ATR
0.9463true
faded
Gapped up but closed under yesterday's close
0.0537false
reclaimed
Opened under yesterday's low, closed up on the day
0.0537false
gap_tomorrow
A gap down tomorrow
0.31932% · unlikely

What it means

For INTC on the session of 2026-10-30: True now: gap down candle: Today's whole range is below yesterday's low.; Gap bigger than half an ATR. Not true: gap up candle: Today's whole range is above yesterday's high: an unfilled gap up.; Gapped up but closed under yesterday's close; Opened under yesterday's low, closed up on the day. Forecasts: A gap down tomorrow 32%.

gap_up() and gap_down() are unfilled gaps (the whole range beyond yesterday); the fade and reclaim rules describe what happened during the day.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "INTC"
  },
  "questions": {
    "gap_up": {
      "type": "yes_no",
      "ask": "gap_up()"
    },
    "gap_down": {
      "type": "yes_no",
      "ask": "gap_down()"
    },
    "gap_atr": {
      "type": "yes_no",
      "ask": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)"
    },
    "faded": {
      "type": "yes_no",
      "ask": "O > C[-1] and C < C[-1]"
    },
    "reclaimed": {
      "type": "yes_no",
      "ask": "O < L[-1] and C > C[-1]"
    },
    "gap_tomorrow": {
      "type": "yes_no",
      "instructions": "Will it gap down tomorrow?"
    }
  }
}
Response JSON (INTC, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "gap_up": {
      "yes_no": 0.0537,
      "rule": "gap_up()",
      "basis": "rule"
    },
    "gap_down": {
      "yes_no": 0.9463,
      "rule": "gap_down()",
      "basis": "rule"
    },
    "gap_atr": {
      "yes_no": 0.9463,
      "rule": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)",
      "basis": "rule"
    },
    "faded": {
      "yes_no": 0.0537,
      "rule": "O > C[-1] and C < C[-1]",
      "basis": "rule"
    },
    "reclaimed": {
      "yes_no": 0.0537,
      "rule": "O < L[-1] and C > C[-1]",
      "basis": "rule"
    },
    "gap_tomorrow": {
      "yes_no": 0.319
    }
  },
  "context": {
    "symbol": "INTC",
    "as_of": "2026-10-30"
  }
}

abs atr gap_down gap_up offset ref

Social trading community · example 9

Weekly momentum leaderboard: QQQ, SMH, XLE, XLF, XLV, XLU

Rank sector ETFs every Friday by momentum and trend, posted as one line per fund to the community Slack.

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

State

{"symbol":"QQQ"} then SMH, XLE, XLF, XLV, XLU, one request each. The server fills in the latest completed session.

Questions

rocruleroc(C, 20) > 5
Up more than 5% in 20 sessions
quarterruleroc(C, 63) > 10 and C >= 0.95 * max(H, 63)
Up more than 10% in a quarter, near the high
trendruleC > sma(C, 50)
Above the 50-day average
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symbolrocrulequarterruletrendrulebeat_spyforecastFired
QQQ0.05370.05370.06530.525line
SMH0.0540.05930.08290.538line
XLE0.8970.93360.94320.55line
XLF0.6060.07850.66920.448line
XLV0.91570.83220.94470.534line
XLU0.82820.05490.88650.445line

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.

else→Slackcommunity-general
QQQ 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Slack → community-general
{
  "text": "QQQ (2026-10-30): 20-day ROC over 5% 5%, quarter leader 5%, above 50-day 7%, beats SPY next month 52%."
}
SMH 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Slack → community-general
{
  "text": "SMH (2026-10-30): 20-day ROC over 5% 5%, quarter leader 6%, above 50-day 8%, beats SPY next month 54%."
}
XLE 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Slack → community-general
{
  "text": "XLE (2026-10-30): 20-day ROC over 5% 90%, quarter leader 93%, above 50-day 94%, beats SPY next month 55%."
}
XLF 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Slack → community-general
{
  "text": "XLF (2026-10-30): 20-day ROC over 5% 61%, quarter leader 8%, above 50-day 67%, beats SPY next month 45%."
}
XLV 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Slack → community-general
{
  "text": "XLV (2026-10-30): 20-day ROC over 5% 92%, quarter leader 83%, above 50-day 94%, beats SPY next month 53%."
}
XLU 1 of 1 fired · dry run, nothing sent
linewould send (dry run)Slack → community-general
{
  "text": "XLU (2026-10-30): 20-day ROC over 5% 83%, quarter leader 5%, above 50-day 89%, beats SPY next month 44%."
}

What it means

Session of 2026-10-30, 6 symbols: Up more than 5% in 20 sessions: true for XLE, XLF, XLV, XLU of 6. Up more than 10% in a quarter, near the high: true for XLE, XLV of 6. Above the 50-day average: true for XLE, XLF, XLV, XLU of 6. Highest odds for “Beating SPY over a month”: XLE at 55%. line fired for QQQ, SMH, XLE, XLF, XLV, XLU.

Every fund gets a line every Friday; the leaderboard is just the order members read them in.

As a scheduled workflow (Fri at 16: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": "Weekly momentum leaderboard: QQQ, SMH, XLE, XLF, XLV, XLU",
  "symbols": "QQQ SMH XLE XLF XLV XLU",
  "days": [
    5
  ],
  "at_time": "16:30",
  "model": "ora-fin-0.1.1",
  "questions": {
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "quarter": {
      "type": "yes_no",
      "ask": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)"
    },
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  },
  "actions": [
    {
      "id": "line",
      "when": "else",
      "do": "slack",
      "connection": "community-general",
      "message": "{{symbol}} ({{as_of}}): 20-day ROC over 5% {{roc|pct}}, quarter leader {{quarter|pct}}, above 50-day {{trend|pct}}, beats SPY next month {{beat_spy|pct}}."
    }
  ]
}
Request JSON (QQQ; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "QQQ"
  },
  "questions": {
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "quarter": {
      "type": "yes_no",
      "ask": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)"
    },
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  },
  "actions": [
    {
      "id": "line",
      "when": "else",
      "do": "slack",
      "connection": "community-general",
      "message": "{{symbol}} ({{as_of}}): 20-day ROC over 5% {{roc|pct}}, quarter leader {{quarter|pct}}, above 50-day {{trend|pct}}, beats SPY next month {{beat_spy|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (QQQ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "roc": {
      "yes_no": 0.0537,
      "rule": "roc(C, 20) > 5",
      "basis": "rule"
    },
    "quarter": {
      "yes_no": 0.0537,
      "rule": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.0653,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.525
    }
  },
  "context": {
    "symbol": "QQQ",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "line",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "community-general",
      "preview": {
        "text": "QQQ (2026-10-30): 20-day ROC over 5% 5%, quarter leader 5%, above 50-day 7%, beats SPY next month 52%."
      }
    }
  ]
}

max roc sma

Social trading community · example 10

Hanging man at the highs in COST?

Check a warning candle after a run, and whether the stock is actually at its highs when it prints.

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

State

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

Questions

hangingrulehanging_man()
hanging man candle: Hammer shape, closing above the close five bars back.
shootingruleshooting_star() and H > highest(H, 20)
Shooting star at a 20-day high
near_highEnglish → ruleIs the stock within 5% of its 52-week high?
recent_highrulehighestbars(H, 20) <= 3
Set its 20-day high in the last four sessions
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
hanging
hanging man candle: Hammer shape, closing above the close five bars back.
0.0612false
shooting
Shooting star at a 20-day high
0.0924false
near_high
Is the stock within 5% of its 52-week high
compiled to abs(C / max(H, 252) - 1) <= 0.05
0.1824false
recent_high
Set its 20-day high in the last four sessions
0.7184true
drop5
A 5% drawdown within a month
0.31932% · unlikely

What it means

For COST on the session of 2026-10-30: True now: Set its 20-day high in the last four sessions. Not true: hanging man candle: Hammer shape, closing above the close five bars back.; Shooting star at a 20-day high; Is the stock within 5% of its 52-week high. Forecasts: A 5% drawdown within a month 32%.

A hanging man only matters near a high; the recent-high rule (highestbars) says how many bars ago the top was.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "COST"
  },
  "questions": {
    "hanging": {
      "type": "yes_no",
      "ask": "hanging_man()"
    },
    "shooting": {
      "type": "yes_no",
      "ask": "shooting_star() and H > highest(H, 20)"
    },
    "near_high": {
      "type": "yes_no",
      "instructions": "Is the stock within 5% of its 52-week high?"
    },
    "recent_high": {
      "type": "yes_no",
      "ask": "highestbars(H, 20) <= 3"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (COST, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "hanging": {
      "yes_no": 0.0612,
      "rule": "hanging_man()",
      "basis": "rule"
    },
    "shooting": {
      "yes_no": 0.0924,
      "rule": "shooting_star() and H > highest(H, 20)",
      "basis": "rule"
    },
    "near_high": {
      "yes_no": 0.1824,
      "rule": "abs(C / max(H, 252) - 1) <= 0.05",
      "basis": "comparison"
    },
    "recent_high": {
      "yes_no": 0.7184,
      "rule": "highestbars(H, 20) <= 3",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.319
    }
  },
  "context": {
    "symbol": "COST",
    "as_of": "2026-10-30"
  }
}

abs hanging_man highest highestbars max shooting_star

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 Individuals: Retail investor, Active day trader, Swing trader, Options trader, Dividend investor, Long-term passive investor, Crypto trader, FX trader, Commodities trader, Students and universities.

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