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

Social trading community · example 11

Tweezer bottom at support in BA?

A member calls a double-low reversal. Check the tweezer pattern, support and the trend it sits in.

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

State

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

Questions

tweezerruletweezer_bottom()
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
near_supruleC >= swinglow(5) and C <= 1.03 * swinglow(5)
Within 3% above the last swing low
failed_bdruleL < lowest(L, 20) and C > lowest(L, 20)
Undercut the 20-day low and closed back above it
below_200dEnglish → ruleIs the stock below its 200-day moving average?
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
tweezer
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
0.1092false
near_sup
Within 3% above the last swing low
0.1473false
failed_bd
Undercut the 20-day low and closed back above it
0.225false
below_200d
Is the stock below its 200-day moving average
compiled to C < sma(C, 200)
0.9446true
up_week
Higher in a week
0.35235% · unlikely

What it means

For BA on the session of 2026-10-30: True now: Is the stock below its 200-day moving average. Not true: tweezer bottom candle: Red then green, with lows within 0.1% of each other.; Within 3% above the last swing low; Undercut the 20-day low and closed back above it. Forecasts: Higher in a week 35%.

A tweezer at support with a failed breakdown is a cleaner reversal story than the candle alone; the trend rule keeps it honest.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "BA"
  },
  "questions": {
    "tweezer": {
      "type": "yes_no",
      "ask": "tweezer_bottom()"
    },
    "near_sup": {
      "type": "yes_no",
      "ask": "C >= swinglow(5) and C <= 1.03 * swinglow(5)"
    },
    "failed_bd": {
      "type": "yes_no",
      "ask": "L < lowest(L, 20) and C > lowest(L, 20)"
    },
    "below_200d": {
      "type": "yes_no",
      "instructions": "Is the stock below its 200-day moving average?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (BA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "tweezer": {
      "yes_no": 0.1092,
      "rule": "tweezer_bottom()",
      "basis": "rule"
    },
    "near_sup": {
      "yes_no": 0.1473,
      "rule": "C >= swinglow(5) and C <= 1.03 * swinglow(5)",
      "basis": "rule"
    },
    "failed_bd": {
      "yes_no": 0.225,
      "rule": "L < lowest(L, 20) and C > lowest(L, 20)",
      "basis": "rule"
    },
    "below_200d": {
      "yes_no": 0.9446,
      "rule": "C < sma(C, 200)",
      "basis": "comparison"
    },
    "up_week": {
      "yes_no": 0.352
    }
  },
  "context": {
    "symbol": "BA",
    "as_of": "2026-10-30"
  }
}

lowest sma swinglow tweezer_bottom

Social trading community · example 12

Review a member's trade idea in DIS before it gets posted

Moderators check every idea against the same risk rules: liquidity, stop distance and risk/reward. The verdict goes by email.

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

State

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

Questions

liquidruleavg(C * V, 20) > 100000000
Trades more than $100 million a day
stopEnglish → ruleIs a stop below yesterday's low less than 1 ATR away?
rrruleC > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))
At least 2:1 to the last swing high, stop at the last swing low
earn_clearruleC > sma(C, 50) and days_to_earnings > 5
Above the 50-day, no earnings in the next 5 days
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
stop
Is a stop below yesterday's low less than 1 ATR away
compiled to (C > L[-1]) and (C - L[-1] < 1 * atr(14))
0.6758true
rr
At least 2:1 to the last swing high, stop at the last swing low
0.1174false
earn_clear
Above the 50-day, no earnings in the next 5 days
0.8885true
drop5
A 5% drawdown within a month
0.32533% · unlikely

Actions

Rules on the answers decide what to send.

liquid >= 0.6 and rr >= 0.6→Emailmoderators
else→Emailmoderators
What each action would send 1 of 2 fired · dry run, nothing sent
approverule false: skipped
needs_workwould send (dry run)Email → moderators
{
  "subject": "Idea needs work: DIS",
  "text": "DIS (2026-10-30): risk/reward 12%, liquid 95%. Ask the member to adjust the stop or target."
}

What it means

For DIS on the session of 2026-10-30: True now: Trades more than $100 million a day; Is a stop below yesterday's low less than 1 ATR away; Above the 50-day, no earnings in the next 5 days. Not true: At least 2:1 to the last swing high, stop at the last swing low. Forecasts: A 5% drawdown within a month 33%. Fired: needs_work (Email → moderators).

Moderators get a verdict either way, and the rules are the same for every member's idea.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "DIS"
  },
  "questions": {
    "liquid": {
      "type": "yes_no",
      "ask": "avg(C * V, 20) > 100000000"
    },
    "stop": {
      "type": "yes_no",
      "instructions": "Is a stop below yesterday's low less than 1 ATR away?"
    },
    "rr": {
      "type": "yes_no",
      "ask": "C > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))"
    },
    "earn_clear": {
      "type": "yes_no",
      "ask": "C > sma(C, 50) and days_to_earnings > 5"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "approve",
      "when": "liquid >= 0.6 and rr >= 0.6",
      "do": "email",
      "connection": "moderators",
      "subject": "Idea OK: {{symbol}}",
      "message": "{{symbol}} ({{as_of}}) passes: liquid, risk/reward at least 2:1 ({{rr|pct}}). Stop within 1 ATR {{stop|pct}}, clear of earnings {{earn_clear|pct}}."
    },
    {
      "id": "needs_work",
      "when": "else",
      "do": "email",
      "connection": "moderators",
      "subject": "Idea needs work: {{symbol}}",
      "message": "{{symbol}} ({{as_of}}): risk/reward {{rr|pct}}, liquid {{liquid|pct}}. Ask the member to adjust the stop or target."
    }
  ],
  "dry_run": true
}
Response JSON (DIS, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "liquid": {
      "yes_no": 0.9463,
      "rule": "avg(C * V, 20) > 100000000",
      "basis": "rule"
    },
    "stop": {
      "yes_no": 0.6758,
      "rule": "(C > L[-1]) and (C - L[-1] < 1 * atr(14))",
      "basis": "pattern"
    },
    "rr": {
      "yes_no": 0.1174,
      "rule": "C > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))",
      "basis": "rule"
    },
    "earn_clear": {
      "yes_no": 0.8885,
      "rule": "C > sma(C, 50) and days_to_earnings > 5",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.325
    }
  },
  "context": {
    "symbol": "DIS",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "approve",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "needs_work",
      "fired": true,
      "status": "dry_run",
      "do": "email",
      "connection": "moderators",
      "preview": {
        "subject": "Idea needs work: DIS",
        "text": "DIS (2026-10-30): risk/reward 12%, liquid 95%. Ask the member to adjust the stop or target."
      }
    }
  ]
}

atr avg days_to_earnings offset sma swinghigh swinglow

Social trading community · example 13

Trend-following club: is SPY still a hold?

The club's one rule is to hold SPY above the 200-day. Post the status every weekday after the close.

ora-fin-0.1.1SPY4 questions2 actionsworkflow · Mon–Fri at 16:20 ET
  1. ScheduleMon–Fri at 16:20 ET
  2. StateSPY
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions2 rules · dry run

State

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

Questions

above_200dEnglish → ruleIs the stock above its 200-day moving average?
days_uprulesum(C > sma(C, 200), 20) >= 15
Above the 200-day on at least 15 of the last 20 closes
sloperulesma(C, 200) > ref(sma(C, 200), -20)
The 200-day average is rising
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
above_200d
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.9451true
days_up
Above the 200-day on at least 15 of the last 20 closes
0.9418true
slope
The 200-day average is rising
0.9463true
drop5
A 5% drawdown within a month
0.20320% · unlikely

Actions

Rules on the answers decide what to send.

above_200d >= 0.6→Slackcommunity-general
else→Slackcommunity-general
What each action would send 1 of 2 fired · dry run, nothing sent
statuswould send (dry run)Slack → community-general
{
  "text": "SPY (2026-10-30): above the 200-day. Hold. (15 of 20 closes above: 94%)"
}
exitrule false: skipped

What it means

For SPY on the session of 2026-10-30: True now: Is the stock above its 200-day moving average; Above the 200-day on at least 15 of the last 20 closes; The 200-day average is rising. Forecasts: A 5% drawdown within a month 20%. Fired: status (Slack → community-general).

A simple, public rule posted every day keeps the club consistent; the forecast is shown for context only.

As a scheduled workflow (Mon–Fri at 16:20 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": "Trend-following club: is SPY still a hold?",
  "symbols": "SPY",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "16:20",
  "model": "ora-fin-0.1.1",
  "questions": {
    "above_200d": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "days_up": {
      "type": "yes_no",
      "ask": "sum(C > sma(C, 200), 20) >= 15"
    },
    "slope": {
      "type": "yes_no",
      "ask": "sma(C, 200) > ref(sma(C, 200), -20)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "status",
      "when": "above_200d >= 0.6",
      "do": "slack",
      "connection": "community-general",
      "message": "{{symbol}} ({{as_of}}): above the 200-day. Hold. (15 of 20 closes above: {{days_up|pct}})"
    },
    {
      "id": "exit",
      "when": "else",
      "do": "slack",
      "connection": "community-general",
      "message": "{{symbol}} ({{as_of}}): closed under the 200-day. The club rule says step aside."
    }
  ]
}
Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "above_200d": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "days_up": {
      "type": "yes_no",
      "ask": "sum(C > sma(C, 200), 20) >= 15"
    },
    "slope": {
      "type": "yes_no",
      "ask": "sma(C, 200) > ref(sma(C, 200), -20)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "status",
      "when": "above_200d >= 0.6",
      "do": "slack",
      "connection": "community-general",
      "message": "{{symbol}} ({{as_of}}): above the 200-day. Hold. (15 of 20 closes above: {{days_up|pct}})"
    },
    {
      "id": "exit",
      "when": "else",
      "do": "slack",
      "connection": "community-general",
      "message": "{{symbol}} ({{as_of}}): closed under the 200-day. The club rule says step aside."
    }
  ],
  "dry_run": true
}
Response JSON (SPY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "above_200d": {
      "yes_no": 0.9451,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "days_up": {
      "yes_no": 0.9418,
      "rule": "sum(C > sma(C, 200), 20) >= 15",
      "basis": "rule"
    },
    "slope": {
      "yes_no": 0.9463,
      "rule": "sma(C, 200) > ref(sma(C, 200), -20)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.203
    }
  },
  "context": {
    "symbol": "SPY",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "status",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "community-general",
      "preview": {
        "text": "SPY (2026-10-30): above the 200-day. Hold. (15 of 20 closes above: 94%)"
      }
    },
    {
      "id": "exit",
      "fired": false,
      "status": "skipped"
    }
  ]
}

ref sma sum

Social trading community · example 14

Pivot-style levels for QQQ from yesterday's bar

Members like pivot levels. Check where the close sits against the bar's midpoint, typical price and OHLC average.

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

above_midruleC > hl2()
Close above the bar's midpoint (H+L)/2
above_typruleC > hlc3()
Close above the typical price (H+L+C)/3
avg4ruleohlc4() > ref(ohlc4(), -1)
Today's OHLC average above yesterday's
close_toprule(C - L) / (H - L) > 0.75
Closed in the top quarter of the day's range
up_tomorrowforecastWill the stock be up tomorrow?
Up tomorrow

Answers

QuestionAnswerReading
above_mid
Close above the bar's midpoint (H+L)/2
0.3629false
above_typ
Close above the typical price (H+L+C)/3
0.3629false
avg4
Today's OHLC average above yesterday's
0.0537false
close_top
Closed in the top quarter of the day's range
0.1376false
up_tomorrow
Up tomorrow
0.53353% · close to even

What it means

For QQQ on the session of 2026-10-30: Not true: Close above the bar's midpoint (H+L)/2; Close above the typical price (H+L+C)/3; Today's OHLC average above yesterday's; Closed in the top quarter of the day's range. Forecasts: Up tomorrow 53%.

These are the building blocks of pivot levels, answered exactly; the tomorrow forecast is the model's odds, shown separately.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "QQQ"
  },
  "questions": {
    "above_mid": {
      "type": "yes_no",
      "ask": "C > hl2()"
    },
    "above_typ": {
      "type": "yes_no",
      "ask": "C > hlc3()"
    },
    "avg4": {
      "type": "yes_no",
      "ask": "ohlc4() > ref(ohlc4(), -1)"
    },
    "close_top": {
      "type": "yes_no",
      "ask": "(C - L) / (H - L) > 0.75"
    },
    "up_tomorrow": {
      "type": "yes_no",
      "instructions": "Will the stock be up tomorrow?"
    }
  }
}
Response JSON (QQQ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "above_mid": {
      "yes_no": 0.3629,
      "rule": "C > hl2()",
      "basis": "rule"
    },
    "above_typ": {
      "yes_no": 0.3629,
      "rule": "C > hlc3()",
      "basis": "rule"
    },
    "avg4": {
      "yes_no": 0.0537,
      "rule": "ohlc4() > ref(ohlc4(), -1)",
      "basis": "rule"
    },
    "close_top": {
      "yes_no": 0.1376,
      "rule": "(C - L) / (H - L) > 0.75",
      "basis": "rule"
    },
    "up_tomorrow": {
      "yes_no": 0.533
    }
  },
  "context": {
    "symbol": "QQQ",
    "as_of": "2026-10-30"
  }
}

hl2 hlc3 ohlc4 ref

Social trading community · example 15

Bear case on PYPL: lower highs and a broken average

Members post short ideas too. Check lower swing highs, a death-cross setup and selling on volume.

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

State

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

Questions

lower_highruleswinghigh(3, 1) < swinghigh(3, 2)
Latest swing high below the one before
deathrulesma(C, 50) < sma(C, 200)
50-day average below the 200-day
down_volruleC < C[-1] and V > 1.5 * ref(avg(V, 20), -1)
Down on heavy volume
below_50dEnglish → ruleIs the stock more than 5% below its 50-day moving average?
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
lower_high
Latest swing high below the one before
0.1377false
death
50-day average below the 200-day
0.0723false
down_vol
Down on heavy volume
0.3255false
below_50d
Is the stock more than 5% below its 50-day moving average
compiled to C < sma(C, 50) * 0.95
0.1591false
drop5
A 5% drawdown within a month
0.48348% · close to even

What it means

For PYPL on the session of 2026-10-30: Not true: Latest swing high below the one before; 50-day average below the 200-day; Down on heavy volume; Is the stock more than 5% below its 50-day moving average. Forecasts: A 5% drawdown within a month 48%.

The bear case is strongest when the structure (lower highs) and the averages agree; one without the other is a mixed picture.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "PYPL"
  },
  "questions": {
    "lower_high": {
      "type": "yes_no",
      "ask": "swinghigh(3, 1) < swinghigh(3, 2)"
    },
    "death": {
      "type": "yes_no",
      "ask": "sma(C, 50) < sma(C, 200)"
    },
    "down_vol": {
      "type": "yes_no",
      "ask": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)"
    },
    "below_50d": {
      "type": "yes_no",
      "instructions": "Is the stock more than 5% below its 50-day moving average?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (PYPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "lower_high": {
      "yes_no": 0.1377,
      "rule": "swinghigh(3, 1) < swinghigh(3, 2)",
      "basis": "rule"
    },
    "death": {
      "yes_no": 0.0723,
      "rule": "sma(C, 50) < sma(C, 200)",
      "basis": "rule"
    },
    "down_vol": {
      "yes_no": 0.3255,
      "rule": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "below_50d": {
      "yes_no": 0.1591,
      "rule": "C < sma(C, 50) * 0.95",
      "basis": "comparison"
    },
    "drop5": {
      "yes_no": 0.483
    }
  },
  "context": {
    "symbol": "PYPL",
    "as_of": "2026-10-30"
  }
}

avg offset ref sma swinghigh

Social trading community · example 16

How many days in a row has KO been up?

A fun stat members ask about: up-day streaks, net up days and how long since the last 20-day high.

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

State

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

Questions

up3English → ruleHas the stock closed higher 3 days in a row?
net_uprulesum(sign(C - C[-1]), 10) > 2
More than two net up days in the last ten
since_highrulebarssince(C > highest(C, 20)) > 10
More than 10 sessions since the last 20-day closing high
mostly_uprulesum(C > C[-1], 10) >= 6
Up on at least six of the last ten days
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
up3
Has the stock closed higher 3 days in a row
compiled to (C > C[-1]) and (C[-1] > C[-2]) and (C[-2] > C[-3])
0.768true
net_up
More than two net up days in the last ten
0.1928false
since_high
More than 10 sessions since the last 20-day closing high
0.289false
mostly_up
Up on at least six of the last ten days
0.1928false
up_week
Higher in a week
0.54955% · close to even

What it means

For KO on the session of 2026-10-30: True now: Has the stock closed higher 3 days in a row. Not true: More than two net up days in the last ten; More than 10 sessions since the last 20-day closing high; Up on at least six of the last ten days. Forecasts: Higher in a week 55%.

sign() turns each day into up or down and sum() counts them; barssince() says how stale the last breakout is.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "KO"
  },
  "questions": {
    "up3": {
      "type": "yes_no",
      "instructions": "Has the stock closed higher 3 days in a row?"
    },
    "net_up": {
      "type": "yes_no",
      "ask": "sum(sign(C - C[-1]), 10) > 2"
    },
    "since_high": {
      "type": "yes_no",
      "ask": "barssince(C > highest(C, 20)) > 10"
    },
    "mostly_up": {
      "type": "yes_no",
      "ask": "sum(C > C[-1], 10) >= 6"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (KO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "up3": {
      "yes_no": 0.768,
      "rule": "(C > C[-1]) and (C[-1] > C[-2]) and (C[-2] > C[-3])",
      "basis": "pattern"
    },
    "net_up": {
      "yes_no": 0.1928,
      "rule": "sum(sign(C - C[-1]), 10) > 2",
      "basis": "rule"
    },
    "since_high": {
      "yes_no": 0.289,
      "rule": "barssince(C > highest(C, 20)) > 10",
      "basis": "rule"
    },
    "mostly_up": {
      "yes_no": 0.1928,
      "rule": "sum(C > C[-1], 10) >= 6",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.549
    }
  },
  "context": {
    "symbol": "KO",
    "as_of": "2026-10-30"
  }
}

barssince highest offset sign sum

Social trading community · example 17

Dividend crew: PEP, JNJ and MO income check

The income channel tracks three payers: yield, growth record, ex-dates and any cut.

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

State

{"symbol":"PEP"} then JNJ, MO, one request each. The server fills in the latest completed session.

Questions

yield3rulediv_yield_ttm > 3
Yield above 3%
grow10English → ruleHas the stock grown its dividend for 10 years in a row?
ex_soonruledays_to_ex_div <= 30
Goes ex-dividend within 30 days
cutEnglish → ruleDid the stock cut its dividend last time?
raiseforecastWill the company raise its dividend next year?
Raising the dividend next year

Answers

Symbolyield3rulegrow10ruleex_soonrulecutruleraiseforecast
PEP0.94630.94630.05370.14090.496
JNJ0.06480.94630.91870.14090.495
MO0.94630.94630.05370.14090.551

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: Yield above 3%: true for PEP, MO of 3. Has the stock grown its dividend for 10 years in a row: true for PEP, JNJ, MO of 3. Goes ex-dividend within 30 days: true for JNJ of 3. Did the stock cut its dividend last time: true for none of 3. Highest odds for “Raising the dividend next year”: MO at 55%.

Dividend facts come from the payment record; the raise-next-year question is the model's odds and is shown as such.

Request JSON (PEP; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "PEP"
  },
  "questions": {
    "yield3": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 3"
    },
    "grow10": {
      "type": "yes_no",
      "instructions": "Has the stock grown its dividend for 10 years in a row?"
    },
    "ex_soon": {
      "type": "yes_no",
      "ask": "days_to_ex_div <= 30"
    },
    "cut": {
      "type": "yes_no",
      "instructions": "Did the stock cut its dividend last time?"
    },
    "raise": {
      "type": "yes_no",
      "instructions": "Will the company raise its dividend next year?"
    }
  }
}
Response JSON (PEP, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "yield3": {
      "yes_no": 0.9463,
      "rule": "div_yield_ttm > 3",
      "basis": "rule"
    },
    "grow10": {
      "yes_no": 0.9463,
      "rule": "years_of_growth >= 10",
      "basis": "pattern"
    },
    "ex_soon": {
      "yes_no": 0.0537,
      "rule": "days_to_ex_div <= 30",
      "basis": "rule"
    },
    "cut": {
      "yes_no": 0.1409,
      "rule": "cut_last > 0.5",
      "basis": "pattern"
    },
    "raise": {
      "yes_no": 0.496
    }
  },
  "context": {
    "symbol": "PEP",
    "as_of": "2026-10-30"
  }
}

cut_last days_to_ex_div div_yield_ttm years_of_growth

Social trading community · example 18

Relay community signals to a Microsoft Teams channel

Some members follow on Teams. Send the same MACD-cross signal on ORCL to a Teams incoming webhook.

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

State

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

Questions

macd_xEnglish → ruleDid MACD cross above its signal line today?
zeroEnglish → ruleIs MACD above zero?
trendruleC > sma(C, 50)
Above the 50-day average
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
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.2101false
zero
Is MACD above zero
compiled to macd(C) > 0
0.1486false
trend
Above the 50-day average
0.1242false
up_week
Higher in a week
0.40741% · close to even

Actions

Rules on the answers decide what to send.

macd_x >= 0.6→Webhookcommunity-teams
macd_x >= 0.6→Webhookcommunity-discord
What each action would send 0 of 2 fired · dry run, nothing sent
teamsrule false: skipped
discordrule false: skipped

What it means

For ORCL on the session of 2026-10-30: Not true: Did MACD cross above its signal line today; Is MACD above zero; Above the 50-day average. Forecasts: Higher in a week 41%. No action fired: every rule was false.

One rule, two destinations: the Teams body uses text and the Discord body uses content, each shaped the way the platform expects.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "ORCL"
  },
  "questions": {
    "macd_x": {
      "type": "yes_no",
      "instructions": "Did MACD cross above its signal line today?"
    },
    "zero": {
      "type": "yes_no",
      "instructions": "Is MACD above zero?"
    },
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "teams",
      "when": "macd_x >= 0.6",
      "do": "webhook",
      "connection": "community-teams",
      "body": {
        "text": "{{symbol}} ({{as_of}}): MACD crossed above its signal. Above zero {{zero|pct}}, above 50-day {{trend|pct}}, higher in a week {{up_week|pct}}."
      }
    },
    {
      "id": "discord",
      "when": "macd_x >= 0.6",
      "do": "webhook",
      "connection": "community-discord",
      "body": {
        "content": "{{symbol}} MACD cross-up ({{as_of}}). Higher in a week {{up_week|pct}}."
      }
    }
  ],
  "dry_run": true
}
Response JSON (ORCL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "macd_x": {
      "yes_no": 0.2101,
      "rule": "(macd(C) > macdsignal(C)) and (ref(macd(C), -1) <= ref(macdsignal(C), -1))",
      "basis": "comparison"
    },
    "zero": {
      "yes_no": 0.1486,
      "rule": "macd(C) > 0",
      "basis": "pattern"
    },
    "trend": {
      "yes_no": 0.1242,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.407
    }
  },
  "context": {
    "symbol": "ORCL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "teams",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "discord",
      "fired": false,
      "status": "skipped"
    }
  ]
}

macd macdsignal ref sma

Social trading community · example 19

Oversold, adjusted for the trend: CRM

The community's oversold rule uses a looser RSI line in uptrends and a stricter one in downtrends.

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

State

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

Questions

regime_osrulersi(C, 14) < iif(C > sma(C, 200), 40, 30)
RSI under 40 in an uptrend, under 30 in a downtrend
regime_librule(C > sma(C, 200) and rsi(C, 14) < 40) or (C < sma(C, 200) and rsi(C, 14) < 25)
Oversold, with the line set by the trend
upper_wickruleH - greatest(O, C) > 2 * abs(C - O)
Upper wick more than twice the body
bounceforecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
regime_os
RSI under 40 in an uptrend, under 30 in a downtrend
0.3687false
regime_lib
Oversold, with the line set by the trend
0.3598false
upper_wick
Upper wick more than twice the body
0.4089on the line (false)
bounce
A 5% rally within a month
0.73373% · likely

What it means

For CRM on the session of 2026-10-30: Not true: RSI under 40 in an uptrend, under 30 in a downtrend; Oversold, with the line set by the trend. On the line: Upper wick more than twice the body. Forecasts: A 5% rally within a month 73%.

iif() picks the threshold by trend inside one rule; the long upper wick check guards against buying into selling pressure.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "CRM"
  },
  "questions": {
    "regime_os": {
      "type": "yes_no",
      "ask": "rsi(C, 14) < iif(C > sma(C, 200), 40, 30)"
    },
    "regime_lib": {
      "type": "yes_no",
      "ask": "(C > sma(C, 200) and rsi(C, 14) < 40) or (C < sma(C, 200) and rsi(C, 14) < 25)"
    },
    "upper_wick": {
      "type": "yes_no",
      "ask": "H - greatest(O, C) > 2 * abs(C - O)"
    },
    "bounce": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (CRM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "regime_os": {
      "yes_no": 0.3687,
      "rule": "rsi(C, 14) < iif(C > sma(C, 200), 40, 30)",
      "basis": "rule"
    },
    "regime_lib": {
      "yes_no": 0.3598,
      "rule": "(C > sma(C, 200) and rsi(C, 14) < 40) or (C < sma(C, 200) and rsi(C, 14) < 25)",
      "basis": "rule"
    },
    "upper_wick": {
      "yes_no": 0.4089,
      "rule": "H - greatest(O, C) > 2 * abs(C - O)",
      "basis": "rule"
    },
    "bounce": {
      "yes_no": 0.733
    }
  },
  "context": {
    "symbol": "CRM",
    "as_of": "2026-10-30"
  }
}

abs greatest iif rsi sma

Social trading community · example 20

What is NFLX's annualized volatility, really?

A member asks how volatility is calculated. Show the log-return formula as a rule next to the English question.

ora-fin-0.1.1NFLX4 questions
  1. StateNFLX
  2. Questions4 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

hv_rulerulestd(log(C / C[-1]), 20) * sqrt(252) > 0.3
20-day annualized volatility above 30% (log returns)
hv_enEnglish → ruleIs 20-day historical volatility above 40%?
low_barsrulelowestbars(L, 20) >= 15
The 20-day low is at least 15 bars old
vol_upforecastWill volatility be higher over the next month?
Higher volatility next month

Answers

QuestionAnswerReading
hv_rule
20-day annualized volatility above 30% (log returns)
0.8865true
hv_en
Is 20-day historical volatility above 40%
compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4
0.0786false
low_bars
The 20-day low is at least 15 bars old
0.0771false
vol_up
Higher volatility next month
0.4545% · close to even

What it means

For NFLX on the session of 2026-10-30: True now: 20-day annualized volatility above 30% (log returns). Not true: Is 20-day historical volatility above 40%; The 20-day low is at least 15 bars old. Forecasts: Higher volatility next month 45%.

The English question compiles to nearly the same formula as the hand-written rule; posting both shows members exactly what was measured.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NFLX"
  },
  "questions": {
    "hv_rule": {
      "type": "yes_no",
      "ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.3"
    },
    "hv_en": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility above 40%?"
    },
    "low_bars": {
      "type": "yes_no",
      "ask": "lowestbars(L, 20) >= 15"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    }
  }
}
Response JSON (NFLX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "hv_rule": {
      "yes_no": 0.8865,
      "rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.3",
      "basis": "rule"
    },
    "hv_en": {
      "yes_no": 0.0786,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4",
      "basis": "pattern"
    },
    "low_bars": {
      "yes_no": 0.0771,
      "rule": "lowestbars(L, 20) >= 15",
      "basis": "rule"
    },
    "vol_up": {
      "yes_no": 0.45
    }
  },
  "context": {
    "symbol": "NFLX",
    "as_of": "2026-10-30"
  }
}

log lowestbars offset sqrt std

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.