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

Crypto trader: 20 ways to use Ora

Trades crypto through listed vehicles: spot bitcoin and ether ETFs, miners and bitcoin-heavy treasuries. Each example is a complete, runnable request with the real answers it returned (29 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)

offset 8ref 7rsi 7sma 5atr 4abs 3ema 2avg 2highest 2bblower 2atr_pct 2log 2sqrt 2std 2roc 2pays_dividend 2percentrank 2macd 1macdsignal 1max 1willr 1zscore 1days_to_earnings 1last_earnings_move 1adx 1diminus 1diplus 1hammer 1morning_star 1piercing_line 1linreg 1mean 1wma 1tr 1crossup 1macdhist 1bbmid 1bbupper 1min 1swinglow 1between 1least 1median 1cum 1rec 1rma 1dark_cloud 1days_since_split 1last_split_ratio 1shooting_star 1

Examples 11–20 of 20 · page 2 of 2

Crypto trader · example 11

Did MSTR cross back above its 20-day EMA?

A momentum entry: the close crosses up through the 20-day EMA while the MACD histogram turns higher.

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

State

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

Questions

crossrulecrossup(C, ema(C, 20))
Close crossed above the 20-day EMA today
histrulemacdhist(C) > ref(macdhist(C), -1)
MACD histogram rising
rsi50rulersi(C, 14) > 50
RSI above 50
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
cross
Close crossed above the 20-day EMA today
0.05false
hist
MACD histogram rising
0.138false
rsi50
RSI above 50
0.1221false
drop10
A 10% drawdown within a month
0.77778% · likely

Actions

Rules on the answers decide what to send.

cross >= 0.6 and hist >= 0.6→Webhookmy-oms
What each action would send 0 of 1 fired · dry run, nothing sent
entryrule false: skipped

What it means

For MSTR on the session of 2026-10-30: Not true: Close crossed above the 20-day EMA today; MACD histogram rising; RSI above 50. Forecasts: A 10% drawdown within a month 78%. No action fired: every rule was false.

The order webhook fires only when the cross and the histogram agree on the same day; a cross alone is often noise.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MSTR"
  },
  "questions": {
    "cross": {
      "type": "yes_no",
      "ask": "crossup(C, ema(C, 20))"
    },
    "hist": {
      "type": "yes_no",
      "ask": "macdhist(C) > ref(macdhist(C), -1)"
    },
    "rsi50": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 50"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "entry",
      "when": "cross >= 0.6 and hist >= 0.6",
      "do": "webhook",
      "connection": "my-oms",
      "body": {
        "symbol": "{{symbol}}",
        "side": "buy",
        "signal": "ema20_reclaim",
        "p_cross": "{{cross}}",
        "p_hist": "{{hist}}",
        "p_drop10": "{{drop10}}",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (MSTR, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "cross": {
      "yes_no": 0.05,
      "rule": "crossup(C, ema(C, 20))",
      "basis": "rule"
    },
    "hist": {
      "yes_no": 0.138,
      "rule": "macdhist(C) > ref(macdhist(C), -1)",
      "basis": "rule"
    },
    "rsi50": {
      "yes_no": 0.1221,
      "rule": "rsi(C, 14) > 50",
      "basis": "rule"
    },
    "drop10": {
      "yes_no": 0.777
    }
  },
  "context": {
    "symbol": "MSTR",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "entry",
      "fired": false,
      "status": "skipped"
    }
  ]
}

crossup ema macdhist ref rsi

Crypto trader · example 12

Ether vs bitcoin ETFs: which is stronger this month?

ETHA and IBIT with identical questions: momentum, trend and the odds of beating SPY. Rotate toward the stronger one.

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

State

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

Questions

rocruleroc(C, 20) > 5
Up more than 5% in 20 sessions
three_monthruleC > C[-63]
Higher than three months ago
rsi50rulersi(C, 14) > 50
RSI above 50
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symbolrocrulethree_monthrulersi50rulebeat_spyforecast
ETHA0.09960.82780.12120.509
IBIT0.09820.85660.1110.516

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: Up more than 5% in 20 sessions: true for none of 2. Higher than three months ago: true for ETHA, IBIT of 2. RSI above 50: true for none of 2. Highest odds for “Beating SPY over a month”: IBIT at 52%.

Side-by-side answers make the rotation question concrete: the fund with more momentum rules true and better odds against SPY leads.

Request JSON (ETHA; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "ETHA"
  },
  "questions": {
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "three_month": {
      "type": "yes_no",
      "ask": "C > C[-63]"
    },
    "rsi50": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 50"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (ETHA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "roc": {
      "yes_no": 0.0996,
      "rule": "roc(C, 20) > 5",
      "basis": "rule"
    },
    "three_month": {
      "yes_no": 0.8278,
      "rule": "C > C[-63]",
      "basis": "rule"
    },
    "rsi50": {
      "yes_no": 0.1212,
      "rule": "rsi(C, 14) > 50",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.509
    }
  },
  "context": {
    "symbol": "ETHA",
    "as_of": "2026-10-30"
  }
}

offset roc rsi

Crypto trader · example 13

RIOT gapped up: did it hold or fade?

Miners gap on bitcoin's overnight moves. Check whether today's gap held, faded or filled.

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

State

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

Questions

gap1ruleO > C[-1] * 1.01
Opened more than 1% above yesterday's close
fadedruleO > C[-1] and C < C[-1]
Gapped up but closed under yesterday's close
filledEnglish → ruleDid today's gap up fill?
close_toprule(C - L) / (H - L) > 0.75
Closed in the top quarter of the day's range
gap_tomorrowforecastWill it gap up tomorrow?
A gap up tomorrow

Answers

QuestionAnswerReading
gap1
Opened more than 1% above yesterday's close
0.1048false
faded
Gapped up but closed under yesterday's close
0.1237false
filled
Did today's gap up fill
compiled to (O > C[-1] * 1) and (L <= C[-1])
0.1237false
close_top
Closed in the top quarter of the day's range
0.6069true
gap_tomorrow
A gap up tomorrow
0.41642% · close to even

What it means

For RIOT on the session of 2026-10-30: True now: Closed in the top quarter of the day's range. Not true: Opened more than 1% above yesterday's close; Gapped up but closed under yesterday's close; Did today's gap up fill. Forecasts: A gap up tomorrow 42%.

A gap that closes in the top quarter of the range held; a fade or a fill says sellers met the overnight move.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "RIOT"
  },
  "questions": {
    "gap1": {
      "type": "yes_no",
      "ask": "O > C[-1] * 1.01"
    },
    "faded": {
      "type": "yes_no",
      "ask": "O > C[-1] and C < C[-1]"
    },
    "filled": {
      "type": "yes_no",
      "instructions": "Did today's gap up fill?"
    },
    "close_top": {
      "type": "yes_no",
      "ask": "(C - L) / (H - L) > 0.75"
    },
    "gap_tomorrow": {
      "type": "yes_no",
      "instructions": "Will it gap up tomorrow?"
    }
  }
}
Response JSON (RIOT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "gap1": {
      "yes_no": 0.1048,
      "rule": "O > C[-1] * 1.01",
      "basis": "rule"
    },
    "faded": {
      "yes_no": 0.1237,
      "rule": "O > C[-1] and C < C[-1]",
      "basis": "rule"
    },
    "filled": {
      "yes_no": 0.1237,
      "rule": "(O > C[-1] * 1) and (L <= C[-1])",
      "basis": "pattern"
    },
    "close_top": {
      "yes_no": 0.6069,
      "rule": "(C - L) / (H - L) > 0.75",
      "basis": "rule"
    },
    "gap_tomorrow": {
      "yes_no": 0.416
    }
  },
  "context": {
    "symbol": "RIOT",
    "as_of": "2026-10-30"
  }
}

offset

Crypto trader · example 14

Is bitcoin volatility compressing before a move?

Bollinger width, ATR versus its past and NR7 in IBIT: a quiet coil often comes before a large move in crypto.

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

State

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

Questions

squeezerule(bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06
Bollinger bands narrower than 6% of price
bbw_lowEnglish → ruleIs Bollinger Band width at its lowest in 120 sessions?
nr7English → ruleIs today an NR7 day, the narrowest range of the last 7 sessions?
pr_atrrulepercentrank(atr(14), 100) < 20
ATR in the bottom fifth of the last 100 sessions
big_moveforecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
squeeze
Bollinger bands narrower than 6% of price
0.3238false
bbw_low
Is Bollinger Band width at its lowest in 120 sessions
compiled to ((bbupper(C, 20) - bblower(C, 20)) / bbmid(C, 20)) <= ref(min(((bbupper(C, 20) - bblower(C, 20)) / bbmid(C, 20)), 119), -1)
0.2793false
nr7
Is today an NR7 day, the narrowest range of the last 7 sessions
compiled to (H > L) and ((H - L) <= ref(min(H - L, 6), -1))
0.1347false
pr_atr
ATR in the bottom fifth of the last 100 sessions
0.1407false
big_move
A big move either way in 5 days
0.36336% · unlikely

What it means

For IBIT on the session of 2026-10-30: Not true: Bollinger bands narrower than 6% of price; Is Bollinger Band width at its lowest in 120 sessions; Is today an NR7 day, the narrowest range of the last 7 sessions; ATR in the bottom fifth of the last 100 sessions. Forecasts: A big move either way in 5 days 36%.

Compression rules say the market is quiet now; the big-move forecast says whether that is likely to change soon, not in which direction.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IBIT"
  },
  "questions": {
    "squeeze": {
      "type": "yes_no",
      "ask": "(bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06"
    },
    "bbw_low": {
      "type": "yes_no",
      "instructions": "Is Bollinger Band width at its lowest in 120 sessions?"
    },
    "nr7": {
      "type": "yes_no",
      "instructions": "Is today an NR7 day, the narrowest range of the last 7 sessions?"
    },
    "pr_atr": {
      "type": "yes_no",
      "ask": "percentrank(atr(14), 100) < 20"
    },
    "big_move": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  }
}
Response JSON (IBIT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "squeeze": {
      "yes_no": 0.3238,
      "rule": "(bbupper(C, 20, 2) - bblower(C, 20, 2)) / bbmid(C, 20) < 0.06",
      "basis": "rule"
    },
    "bbw_low": {
      "yes_no": 0.2793,
      "rule": "((bbupper(C, 20) - bblower(C, 20)) / bbmid(C, 20)) <= ref(min(((bbupper(C, 20) - bblower(C, 20)) / bbmid(C, 20)), 119), -1)",
      "basis": "pattern"
    },
    "nr7": {
      "yes_no": 0.1347,
      "rule": "(H > L) and ((H - L) <= ref(min(H - L, 6), -1))",
      "basis": "pattern"
    },
    "pr_atr": {
      "yes_no": 0.1407,
      "rule": "percentrank(atr(14), 100) < 20",
      "basis": "rule"
    },
    "big_move": {
      "yes_no": 0.363
    }
  },
  "context": {
    "symbol": "IBIT",
    "as_of": "2026-10-30"
  }
}

atr bblower bbmid bbupper min percentrank ref

Crypto trader · example 15

Is the stop hit on my MSTR position?

A chandelier stop and a swing-low break as exact rules, with the drawdown odds. Exit on the stop, warn on the forecast.

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

State

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

Questions

chandelierruleC < highest(H, 22) - 3 * atr(22)
Chandelier exit: 3 ATR under the 22-day high
swing_breakruleC < swinglow(5, 1)
Close under the last swing low
lower_lowsruleswinglow(5, 1) < swinglow(5, 2)
Latest swing low below the one before
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
chandelier
Chandelier exit: 3 ATR under the 22-day high
0.8807true
swing_break
Close under the last swing low
0.5889on the line (true)
lower_lows
Latest swing low below the one before
0.8788true
drop10
A 10% drawdown within a month
0.77778% · likely

Actions

Rules on the answers decide what to send.

chandelier >= 0.6 or swing_break >= 0.6→Webhookmy-oms
drop10 >= 0.4→Slackcrypto-desk
What each action would send 2 of 2 fired · dry run, nothing sent
exitwould send (dry run)Webhook → my-oms
{
  "symbol": "MSTR",
  "decision": "exit_long",
  "p_chandelier": 0.8807,
  "p_swing_break": 0.5889,
  "as_of": "2026-10-30"
}
warnwould send (dry run)Slack → crypto-desk
{
  "text": "MSTR (2026-10-30): stop not hit, but 10% drawdown odds are 78%. Lower swing lows: 88%."
}

What it means

For MSTR on the session of 2026-10-30: True now: Chandelier exit: 3 ATR under the 22-day high; Latest swing low below the one before. On the line: Close under the last swing low. Forecasts: A 10% drawdown within a month 78%. Fired: exit (Webhook → my-oms), warn (Slack → crypto-desk).

Exits come from the exact stop rules; the forecast only produces a warning, so a probability never closes a position by itself.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MSTR"
  },
  "questions": {
    "chandelier": {
      "type": "yes_no",
      "ask": "C < highest(H, 22) - 3 * atr(22)"
    },
    "swing_break": {
      "type": "yes_no",
      "ask": "C < swinglow(5, 1)"
    },
    "lower_lows": {
      "type": "yes_no",
      "ask": "swinglow(5, 1) < swinglow(5, 2)"
    },
    "drop10": {
      "type": "yes_no",
      "instructions": "Will it drop at least 10% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "exit",
      "when": "chandelier >= 0.6 or swing_break >= 0.6",
      "do": "webhook",
      "connection": "my-oms",
      "body": {
        "symbol": "{{symbol}}",
        "decision": "exit_long",
        "p_chandelier": "{{chandelier}}",
        "p_swing_break": "{{swing_break}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "warn",
      "when": "drop10 >= 0.4",
      "do": "slack",
      "connection": "crypto-desk",
      "message": "{{symbol}} ({{as_of}}): stop not hit, but 10% drawdown odds are {{drop10|pct}}. Lower swing lows: {{lower_lows|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (MSTR, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "chandelier": {
      "yes_no": 0.8807,
      "rule": "C < highest(H, 22) - 3 * atr(22)",
      "basis": "rule"
    },
    "swing_break": {
      "yes_no": 0.5889,
      "rule": "C < swinglow(5, 1)",
      "basis": "rule"
    },
    "lower_lows": {
      "yes_no": 0.8788,
      "rule": "swinglow(5, 1) < swinglow(5, 2)",
      "basis": "rule"
    },
    "drop10": {
      "yes_no": 0.777
    }
  },
  "context": {
    "symbol": "MSTR",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "exit",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "my-oms",
      "preview": {
        "body": {
          "symbol": "MSTR",
          "decision": "exit_long",
          "p_chandelier": 0.8807,
          "p_swing_break": 0.5889,
          "as_of": "2026-10-30"
        }
      }
    },
    {
      "id": "warn",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "crypto-desk",
      "preview": {
        "text": "MSTR (2026-10-30): stop not hit, but 10% drawdown odds are 78%. Lower swing lows: 88%."
      }
    }
  ]
}

atr highest swinglow

Crypto trader · example 16

Pre-open crypto digest: IBIT, ETHA, MSTR, MARA

Every weekday before the open, the same checks for four crypto vehicles, with a Slack line for each one above its 50-day.

ora-fin-0.1.14 symbols, one request each4 questions1 actionworkflow · Mon–Fri at 09:00 ET
  1. ScheduleMon–Fri at 09:00 ET
  2. State4 symbols
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"IBIT"} then ETHA, MSTR, MARA, one request each. The server fills in the latest completed session.

Questions

above_50druleC > sma(C, 50)
Above the 50-day average
rsi_hotrulersi(C, 14) > 70
RSI above 70
vol_riseforecastWill volatility rise over the next 5 days?
Volatility rising over 5 days
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symbolabove_50drulersi_hotrulevol_riseforecastup_weekforecastFired
IBIT0.16490.05370.460.528none
ETHA0.12630.05690.4860.537none
MSTR0.18830.05370.3570.547none
MARA0.06740.05370.5590.621none

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.

above_50d >= 0.6→Slackcrypto-desk
IBIT 0 of 1 fired · dry run, nothing sent
ETHA 0 of 1 fired · dry run, nothing sent
MSTR 0 of 1 fired · dry run, nothing sent
MARA 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 4 symbols: Above the 50-day average: true for none of 4. RSI above 70: true for none of 4. Highest odds for “Volatility rising over 5 days”: MARA at 56%. trend_line fired for none.

A workflow repeats the request for each symbol; only the names in an uptrend produce a Slack line.

As a scheduled workflow (Mon–Fri at 09:00 ET)

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

{
  "name": "Pre-open crypto digest: IBIT, ETHA, MSTR, MARA",
  "symbols": "IBIT ETHA MSTR MARA",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "09:00",
  "model": "ora-fin-0.1.1",
  "questions": {
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "rsi_hot": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 70"
    },
    "vol_rise": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "trend_line",
      "when": "above_50d >= 0.6",
      "do": "slack",
      "connection": "crypto-desk",
      "message": "{{symbol}} ({{as_of}}): above the 50-day. RSI over 70 {{rsi_hot|pct}}, higher in a week {{up_week|pct}}, volatility rising {{vol_rise|pct}}."
    }
  ]
}
Request JSON (IBIT; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IBIT"
  },
  "questions": {
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "rsi_hot": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 70"
    },
    "vol_rise": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "trend_line",
      "when": "above_50d >= 0.6",
      "do": "slack",
      "connection": "crypto-desk",
      "message": "{{symbol}} ({{as_of}}): above the 50-day. RSI over 70 {{rsi_hot|pct}}, higher in a week {{up_week|pct}}, volatility rising {{vol_rise|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (IBIT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "above_50d": {
      "yes_no": 0.1649,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "rsi_hot": {
      "yes_no": 0.0537,
      "rule": "rsi(C, 14) > 70",
      "basis": "rule"
    },
    "vol_rise": {
      "yes_no": 0.46
    },
    "up_week": {
      "yes_no": 0.528
    }
  },
  "context": {
    "symbol": "IBIT",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "trend_line",
      "fired": false,
      "status": "skipped"
    }
  ]
}

rsi sma

Crypto trader · example 17

Is IBIT pulling back into a buy zone?

In an uptrend, wait for a pullback between the 20-day and the 50-day, with RSI back between 40 and 60.

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

State

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

Questions

zoneruleC < sma(C, 20) and C > sma(C, 50)
Between the 20-day and the 50-day average
rsi_midrulebetween(rsi(C, 14), 40, 60)
RSI between 40 and 60
trendrulesma(C, 50) > sma(C, 200)
50-day above the 200-day
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
zone
Between the 20-day and the 50-day average
0.1649false
rsi_mid
RSI between 40 and 60
0.05false
trend
50-day above the 200-day
0.8747true
drop5
A 5% drawdown within a month
0.56657% · close to even

What it means

For IBIT on the session of 2026-10-30: True now: 50-day above the 200-day. Not true: Between the 20-day and the 50-day average; RSI between 40 and 60. Forecasts: A 5% drawdown within a month 57%.

The zone and the mid-range RSI together describe a calm pullback inside a trend; the drawdown odds say how deep it could still go.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IBIT"
  },
  "questions": {
    "zone": {
      "type": "yes_no",
      "ask": "C < sma(C, 20) and C > sma(C, 50)"
    },
    "rsi_mid": {
      "type": "yes_no",
      "ask": "between(rsi(C, 14), 40, 60)"
    },
    "trend": {
      "type": "yes_no",
      "ask": "sma(C, 50) > sma(C, 200)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (IBIT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "zone": {
      "yes_no": 0.1649,
      "rule": "C < sma(C, 20) and C > sma(C, 50)",
      "basis": "rule"
    },
    "rsi_mid": {
      "yes_no": 0.05,
      "rule": "between(rsi(C, 14), 40, 60)",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.8747,
      "rule": "sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.566
    }
  },
  "context": {
    "symbol": "IBIT",
    "as_of": "2026-10-30"
  }
}

between rsi sma

Crypto trader · example 18

Was today a volume climax in MARA?

A huge-volume down day can mark capitulation. Compare volume with its median and rank, and check where the close sits in the range.

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

State

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

Questions

vol_medruleV > 2 * median(V, 20)
Volume over twice its 20-day median
vol_rankrulepercentrank(V, 50) > 90
Volume in the top tenth of 50 sessions
down_volEnglish → ruleDid the stock fall on above-average volume?
lower_wickruleleast(O, C) - L > 2 * abs(C - O)
Lower wick more than twice the body
vol_spikeforecastWill volume spike tomorrow?
A volume spike tomorrow

Answers

QuestionAnswerReading
vol_med
Volume over twice its 20-day median
0.0668false
vol_rank
Volume in the top tenth of 50 sessions
0.1888false
down_vol
Did the stock fall on above-average volume
compiled to (C < C[-1]) and (V > ref(avg(V, 20), -1))
0.7475true
lower_wick
Lower wick more than twice the body
0.7144true
vol_spike
A volume spike tomorrow
0.0596% · unlikely

What it means

For MARA on the session of 2026-10-30: True now: Did the stock fall on above-average volume; Lower wick more than twice the body. Not true: Volume over twice its 20-day median; Volume in the top tenth of 50 sessions. Forecasts: A volume spike tomorrow 6%.

Heavy volume with a long lower wick is the capitulation picture; heavy volume closing on the low is just selling.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MARA"
  },
  "questions": {
    "vol_med": {
      "type": "yes_no",
      "ask": "V > 2 * median(V, 20)"
    },
    "vol_rank": {
      "type": "yes_no",
      "ask": "percentrank(V, 50) > 90"
    },
    "down_vol": {
      "type": "yes_no",
      "instructions": "Did the stock fall on above-average volume?"
    },
    "lower_wick": {
      "type": "yes_no",
      "ask": "least(O, C) - L > 2 * abs(C - O)"
    },
    "vol_spike": {
      "type": "yes_no",
      "instructions": "Will volume spike tomorrow?"
    }
  }
}
Response JSON (MARA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "vol_med": {
      "yes_no": 0.0668,
      "rule": "V > 2 * median(V, 20)",
      "basis": "rule"
    },
    "vol_rank": {
      "yes_no": 0.1888,
      "rule": "percentrank(V, 50) > 90",
      "basis": "rule"
    },
    "down_vol": {
      "yes_no": 0.7475,
      "rule": "(C < C[-1]) and (V > ref(avg(V, 20), -1))",
      "basis": "pattern"
    },
    "lower_wick": {
      "yes_no": 0.7144,
      "rule": "least(O, C) - L > 2 * abs(C - O)",
      "basis": "rule"
    },
    "vol_spike": {
      "yes_no": 0.059
    }
  },
  "context": {
    "symbol": "MARA",
    "as_of": "2026-10-30"
  }
}

abs avg least median offset percentrank ref

Crypto trader · example 19

Has IBIT had more up days than down days since listing?

A long-view question: count up closes against down closes over the fund's history, and check its smoothed trend.

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

State

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

Questions

more_uprulecum(C > C[-1]) > cum(C < C[-1])
More up closes than down closes since the first bar
smoothruleC > rec(C, self + 0.1 * (C - self))
Close above its own exponential smoothing (alpha 0.1)
rmaruleC > rma(C, 50)
Close above the 50-day Wilder average
up_monthEnglish → ruleIs the stock up over the last month?
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month

Answers

QuestionAnswerReading
more_up
More up closes than down closes since the first bar
0.0537false
smooth
Close above its own exponential smoothing (alpha 0.1)
0.1066false
rma
Close above the 50-day Wilder average
0.475on the line (false)
up_month
Is the stock up over the last month
compiled to C > C[-21]
0.1145false
rally10
A 10% rally within a month
0.6464% · likely

What it means

For IBIT on the session of 2026-10-30: Not true: More up closes than down closes since the first bar; Close above its own exponential smoothing (alpha 0.1); Is the stock up over the last month. On the line: Close above the 50-day Wilder average. Forecasts: A 10% rally within a month 64%.

cum() counts over the whole history and rec() builds a custom smoothing step by step; both show the language goes beyond fixed indicators.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IBIT"
  },
  "questions": {
    "more_up": {
      "type": "yes_no",
      "ask": "cum(C > C[-1]) > cum(C < C[-1])"
    },
    "smooth": {
      "type": "yes_no",
      "ask": "C > rec(C, self + 0.1 * (C - self))"
    },
    "rma": {
      "type": "yes_no",
      "ask": "C > rma(C, 50)"
    },
    "up_month": {
      "type": "yes_no",
      "instructions": "Is the stock up over the last month?"
    },
    "rally10": {
      "type": "yes_no",
      "instructions": "Will it rally at least 10% at some point in the next month?"
    }
  }
}
Response JSON (IBIT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "more_up": {
      "yes_no": 0.0537,
      "rule": "cum(C > C[-1]) > cum(C < C[-1])",
      "basis": "rule"
    },
    "smooth": {
      "yes_no": 0.1066,
      "rule": "C > rec(C, self + 0.1 * (C - self))",
      "basis": "rule"
    },
    "rma": {
      "yes_no": 0.475,
      "rule": "C > rma(C, 50)",
      "basis": "rule"
    },
    "up_month": {
      "yes_no": 0.1145,
      "rule": "C > C[-21]",
      "basis": "pattern"
    },
    "rally10": {
      "yes_no": 0.64
    }
  },
  "context": {
    "symbol": "IBIT",
    "as_of": "2026-10-30"
  }
}

cum offset rec rma

Crypto trader · example 20

MSTR and the bitcoin ETFs: splits, dividends and events

Before using MSTR as a bitcoin proxy, check its corporate-action record (splits, dividends) next to the ETF it is compared with.

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

State

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

Questions

split_3yruledays_since_split <= 1095
Split in the last three years
ratioEnglish → ruleWas the last split at least 2-for-1?
paysrulepays_dividend > 0.5
Pays a dividend
shootingruleshooting_star()
shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.
darkruledark_cloud()
dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symbolsplit_3yruleratiorulepaysruleshootingruledarkruleup_weekforecast
MSTR0.94630.94630.14090.05370.06060.547
IBIT0.05370.500.14090.10660.0580.528

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: Split in the last three years: true for MSTR of 2. Was the last split at least 2-for-1: true for MSTR of 2. Pays a dividend: true for none of 2. shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.: true for none of 2. Highest odds for “Higher in a week”: MSTR at 55%.

Corporate-action facts explain jumps in old price history and whether a proxy pays anything; the top-reversal candles are a short-term warning only.

Request JSON (MSTR; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MSTR"
  },
  "questions": {
    "split_3y": {
      "type": "yes_no",
      "ask": "days_since_split <= 1095"
    },
    "ratio": {
      "type": "yes_no",
      "instructions": "Was the last split at least 2-for-1?"
    },
    "pays": {
      "type": "yes_no",
      "ask": "pays_dividend > 0.5"
    },
    "shooting": {
      "type": "yes_no",
      "ask": "shooting_star()"
    },
    "dark": {
      "type": "yes_no",
      "ask": "dark_cloud()"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (MSTR, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "split_3y": {
      "yes_no": 0.9463,
      "rule": "days_since_split <= 1095",
      "basis": "rule"
    },
    "ratio": {
      "yes_no": 0.9463,
      "rule": "last_split_ratio >= 2",
      "basis": "pattern"
    },
    "pays": {
      "yes_no": 0.1409,
      "rule": "pays_dividend > 0.5",
      "basis": "rule"
    },
    "shooting": {
      "yes_no": 0.0537,
      "rule": "shooting_star()",
      "basis": "rule"
    },
    "dark": {
      "yes_no": 0.0606,
      "rule": "dark_cloud()",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.547
    }
  },
  "context": {
    "symbol": "MSTR",
    "as_of": "2026-10-30"
  }
}

dark_cloud days_since_split last_split_ratio pays_dividend 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, FX trader, Commodities trader, Social trading community, Students and universities.

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