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.
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 1–10 of 20 · page 1 of 2
Crypto trader · example 1
Is the spot bitcoin ETF (IBIT) in an uptrend?
Read bitcoin's trend through IBIT, the listed spot ETF: averages, momentum and the odds for the coming week.
- StateIBIT
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"IBIT"} The server fills in the latest completed session.
Questions
above_50d | English → rule | Is the stock above its 50-day moving average? |
golden | rule | sma(C, 50) > sma(C, 200)50-day above the 200-day |
ema21 | rule | C > ema(C, 21)Close above the 21-day EMA |
macd | rule | macd(C) > macdsignal(C)MACD above its signal line |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
above_50dIs the stock above its 50-day moving average compiled to C > sma(C, 50) | 0.1649 | false |
golden50-day above the 200-day | 0.8747 | true |
ema21Close above the 21-day EMA | 0.1098 | false |
macdMACD above its signal line | 0.1377 | false |
up_weekHigher in a week | 0.528 | 53% · 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: Is the stock above its 50-day moving average; Close above the 21-day EMA; MACD above its signal line. Forecasts: Higher in a week 53%.
Trend rules true together describe an uptrend in the listed vehicle; the forecast is the odds for the week, and bitcoin can move on weekends while the ETF is closed.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IBIT"
},
"questions": {
"above_50d": {
"type": "yes_no",
"instructions": "Is the stock above its 50-day moving average?"
},
"golden": {
"type": "yes_no",
"ask": "sma(C, 50) > sma(C, 200)"
},
"ema21": {
"type": "yes_no",
"ask": "C > ema(C, 21)"
},
"macd": {
"type": "yes_no",
"ask": "macd(C) > macdsignal(C)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (IBIT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"above_50d": {
"yes_no": 0.1649,
"rule": "C > sma(C, 50)",
"basis": "comparison"
},
"golden": {
"yes_no": 0.8747,
"rule": "sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"ema21": {
"yes_no": 0.1098,
"rule": "C > ema(C, 21)",
"basis": "rule"
},
"macd": {
"yes_no": 0.1377,
"rule": "macd(C) > macdsignal(C)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.528
}
},
"context": {
"symbol": "IBIT",
"as_of": "2026-10-30"
}
}Crypto trader · example 2
Post IBIT breakouts to a crypto Discord
When IBIT closes at a 20-day high on heavy volume, post it to the group's Discord through a webhook; otherwise stay quiet.
- StateIBIT
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"IBIT"} The server fills in the latest completed session.
Questions
breakout | rule | C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)20-day breakout on 1.5× volume |
donchian | rule | C > highest(C, 55)55-day closing breakout |
rsi_hot | rule | rsi(C, 14) > 70RSI above 70 |
new_high | forecast | Will it make a new 20-day high in the next week? A new 20-day high next week |
Answers
| Question | Answer | Reading |
|---|---|---|
breakout20-day breakout on 1.5× volume | 0.0537 | false |
donchian55-day closing breakout | 0.0599 | false |
rsi_hotRSI above 70 | 0.0537 | false |
new_highA new 20-day high next week | 0.034 | 3% · unlikely |
Actions
Rules on the answers decide what to send.
breakout >= 0.6→Webhookcrypto-discordWhat it means
For IBIT on the session of 2026-10-30: Not true: 20-day breakout on 1.5× volume; 55-day closing breakout; RSI above 70. Forecasts: A new 20-day high next week 3%. No action fired: every rule was false.
The Discord post only goes out when the volume-confirmed breakout rule is true; the overbought check tells members whether the move is already stretched.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IBIT"
},
"questions": {
"breakout": {
"type": "yes_no",
"ask": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)"
},
"donchian": {
"type": "yes_no",
"ask": "C > highest(C, 55)"
},
"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": "discord_post",
"when": "breakout >= 0.6",
"do": "webhook",
"connection": "crypto-discord",
"body": {
"content": "{{symbol}} ({{as_of}}): 20-day closing high on 1.5x volume ({{breakout|pct}}). 55-day breakout {{donchian|pct}}, RSI over 70 {{rsi_hot|pct}}, new 20-day high next week {{new_high|pct}}."
}
}
],
"dry_run": true
}Response JSON (IBIT, 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": "rule"
},
"donchian": {
"yes_no": 0.0599,
"rule": "C > highest(C, 55)",
"basis": "rule"
},
"rsi_hot": {
"yes_no": 0.0537,
"rule": "rsi(C, 14) > 70",
"basis": "rule"
},
"new_high": {
"yes_no": 0.034
}
},
"context": {
"symbol": "IBIT",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "discord_post",
"fired": false,
"status": "skipped"
}
]
}Crypto trader · example 3
IBIT, FBTC, BITB and GBTC: do the bitcoin ETFs agree?
The same questions for four spot bitcoin ETFs, one request each. They hold the same asset, so their answers should line up; a gap points at fees or flows.
- State4 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"IBIT"} then FBTC, BITB, GBTC, one request each. The server fills in the latest completed session.
Questions
above_200d | English → rule | Is the stock above its 200-day moving average? |
rsi50 | rule | rsi(C, 14) > 50RSI above 50 |
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Symbol | above_200drule | rsi50rule | drawdownrule | drop10forecast |
|---|---|---|---|---|
IBIT | 0.7234 | 0.111 | 0.9082 | 0.566 |
FBTC | 0.7289 | 0.1125 | 0.9074 | 0.573 |
BITB | 0.7256 | 0.1128 | 0.9078 | 0.582 |
GBTC | 0.7066 | 0.1112 | 0.9163 | 0.573 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 4 symbols: Is the stock above its 200-day moving average: true for IBIT, FBTC, BITB, GBTC of 4. RSI above 50: true for none of 4. More than 20% off the 52-week high: true for IBIT, FBTC, BITB, GBTC of 4. Highest odds for “A 10% drawdown within a month”: BITB at 58%.
Four funds on one asset are a consistency check: if one disagrees with the rest, look at that fund rather than at bitcoin.
Request JSON (IBIT; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IBIT"
},
"questions": {
"above_200d": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"rsi50": {
"type": "yes_no",
"ask": "rsi(C, 14) > 50"
},
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
}
}Response JSON (IBIT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"above_200d": {
"yes_no": 0.7234,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"rsi50": {
"yes_no": 0.111,
"rule": "rsi(C, 14) > 50",
"basis": "rule"
},
"drawdown": {
"yes_no": 0.9082,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"drop10": {
"yes_no": 0.566
}
},
"context": {
"symbol": "IBIT",
"as_of": "2026-10-30"
}
}Crypto trader · example 4
Is ether (ETHA) oversold enough to start a position?
Look for an oversold read in the spot ether ETF: short-term RSI, a stretch below the band and a z-score low.
- StateETHA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"ETHA"} The server fills in the latest completed session.
Questions
rsi2 | rule | rsi(C, 2) < 10Two-day RSI under 10 |
below_band | rule | C < bblower(C, 20, 2)Closed under the lower Bollinger band |
zlow | rule | zscore(C, 20) < -2Two deviations under the 20-day mean |
willr_low | rule | willr(14) < -80Williams %R under -80 (oversold) |
bounce | forecast | Will it rally at least 5% at some point in the next month? A 5% rally within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
rsi2Two-day RSI under 10 | 0.5481 | on the line (true) |
below_bandClosed under the lower Bollinger band | 0.47 | on the line (false) |
zlowTwo deviations under the 20-day mean | 0.4485 | on the line (false) |
willr_lowWilliams %R under -80 (oversold) | 0.7011 | true |
bounceA 5% rally within a month | 0.716 | 72% · likely |
What it means
For ETHA on the session of 2026-10-30: True now: Williams %R under -80 (oversold). On the line: Two-day RSI under 10; Closed under the lower Bollinger band; Two deviations under the 20-day mean. Forecasts: A 5% rally within a month 72%.
Several oversold rules at once describe a washed-out market; the rally forecast is the odds of a bounce, not a floor.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "ETHA"
},
"questions": {
"rsi2": {
"type": "yes_no",
"ask": "rsi(C, 2) < 10"
},
"below_band": {
"type": "yes_no",
"ask": "C < bblower(C, 20, 2)"
},
"zlow": {
"type": "yes_no",
"ask": "zscore(C, 20) < -2"
},
"willr_low": {
"type": "yes_no",
"ask": "willr(14) < -80"
},
"bounce": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Response JSON (ETHA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"rsi2": {
"yes_no": 0.5481,
"rule": "rsi(C, 2) < 10",
"basis": "rule"
},
"below_band": {
"yes_no": 0.47,
"rule": "C < bblower(C, 20, 2)",
"basis": "rule"
},
"zlow": {
"yes_no": 0.4485,
"rule": "zscore(C, 20) < -2",
"basis": "rule"
},
"willr_low": {
"yes_no": 0.7011,
"rule": "willr(14) < -80",
"basis": "rule"
},
"bounce": {
"yes_no": 0.716
}
},
"context": {
"symbol": "ETHA",
"as_of": "2026-10-30"
}
}Crypto trader · example 5
MSTR: bitcoin proxy with an earnings date
MSTR trades like leveraged bitcoin but also reports earnings. Check the report date, the last reaction and the volatility before trading it.
- StateMSTR
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"MSTR"} The server fills in the latest completed session.
Questions
earn_soon | English → rule | Is earnings in the next 14 days? |
big_reaction | rule | abs(last_earnings_move) > 5Last earnings move bigger than 5% |
atr3 | rule | atr_pct(14) > 3A typical day moves more than 3% |
hv40 | rule | std(log(C / C[-1]), 20) * sqrt(252) > 0.4Annualized 20-day volatility above 40% |
big_move | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
earn_soonIs earnings in the next 14 days compiled to days_to_earnings <= 14 | 0.0537 | false |
big_reactionLast earnings move bigger than 5% | 0.9038 | true |
atr3A typical day moves more than 3% | 0.9463 | true |
hv40Annualized 20-day volatility above 40% | 0.9288 | true |
big_moveA big move either way in 5 days | 0.295 | 30% · unlikely |
Actions
Rules on the answers decide what to send.
earn_soon >= 0.6 and atr3 >= 0.6→Slackcrypto-deskatr3 >= 0.6→Slackcrypto-desk{
"text": "MSTR (2026-10-30): high-volatility regime (ATR over 3% 95%), no report close (5%). Big move in 5 days: 30%."
}What it means
For MSTR on the session of 2026-10-30: True now: Last earnings move bigger than 5%; A typical day moves more than 3%; Annualized 20-day volatility above 40%. Not true: Is earnings in the next 14 days. Forecasts: A big move either way in 5 days 30%. Fired: vol_only (Slack → crypto-desk).
Two branches: an earnings window on top of high volatility is the stronger warning; volatility alone still gets a note.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "MSTR"
},
"questions": {
"earn_soon": {
"type": "yes_no",
"instructions": "Is earnings in the next 14 days?"
},
"big_reaction": {
"type": "yes_no",
"ask": "abs(last_earnings_move) > 5"
},
"atr3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"hv40": {
"type": "yes_no",
"ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4"
},
"big_move": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
},
"actions": [
{
"id": "event_warning",
"when": "earn_soon >= 0.6 and atr3 >= 0.6",
"do": "slack",
"connection": "crypto-desk",
"message": "{{symbol}} ({{as_of}}): earnings within 14 days on top of ATR over 3% of price. Last reaction over 5%: {{big_reaction|pct}}. Size for both."
},
{
"id": "vol_only",
"when": "atr3 >= 0.6",
"do": "slack",
"connection": "crypto-desk",
"message": "{{symbol}} ({{as_of}}): high-volatility regime (ATR over 3% {{atr3|pct}}), no report close ({{earn_soon|pct}}). Big move in 5 days: {{big_move|pct}}."
}
],
"dry_run": true
}Response JSON (MSTR, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"earn_soon": {
"yes_no": 0.0537,
"rule": "days_to_earnings <= 14",
"basis": "pattern"
},
"big_reaction": {
"yes_no": 0.9038,
"rule": "abs(last_earnings_move) > 5",
"basis": "rule"
},
"atr3": {
"yes_no": 0.9463,
"rule": "atr_pct(14) > 3",
"basis": "rule"
},
"hv40": {
"yes_no": 0.9288,
"rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4",
"basis": "rule"
},
"big_move": {
"yes_no": 0.295
}
},
"context": {
"symbol": "MSTR",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "event_warning",
"fired": false,
"status": "skipped"
},
{
"id": "vol_only",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "crypto-desk",
"preview": {
"text": "MSTR (2026-10-30): high-volatility regime (ATR over 3% 95%), no report close (5%). Big move in 5 days: 30%."
}
}
]
}abs atr_pct days_to_earnings last_earnings_move log offset sqrt std
Crypto trader · example 6
Bitcoin miners RIOT and MARA: who has momentum?
Miners move with bitcoin but with more beta. Compare trend strength (ADX), direction and the odds of a 10% rally.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"RIOT"} then MARA, one request each. The server fills in the latest completed session.
Questions
adx_up | rule | adx(14) > 20 and diplus(14) > diminus(14)Trending up (ADX over 20 and +DI over −DI) |
di | rule | diplus(14) > diminus(14)+DI above -DI (buyers in control) |
roc | rule | roc(C, 20) > 5Up more than 5% in 20 sessions |
atr3 | rule | atr_pct(14) > 3A typical day moves more than 3% |
rally10 | forecast | Will it rally at least 10% at some point in the next month? A 10% rally within a month |
Answers
| Symbol | adx_uprule | dirule | rocrule | atr3rule | rally10forecast |
|---|---|---|---|---|---|
RIOT | 0.0793 | 0.0793 | 0.0663 | 0.9463 | 0.888 |
MARA | 0.0819 | 0.0819 | 0.0678 | 0.9463 | 0.89 |
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: Trending up (ADX over 20 and +DI over −DI): true for none of 2. +DI above -DI (buyers in control): true for none of 2. Up more than 5% in 20 sessions: true for none of 2. A typical day moves more than 3%: true for RIOT, MARA of 2. Highest odds for “A 10% rally within a month”: MARA at 89%.
ADX says whether there is a trend at all and the DI lines say which way; prefer the miner where both agree.
Request JSON (RIOT; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "RIOT"
},
"questions": {
"adx_up": {
"type": "yes_no",
"ask": "adx(14) > 20 and diplus(14) > diminus(14)"
},
"di": {
"type": "yes_no",
"ask": "diplus(14) > diminus(14)"
},
"roc": {
"type": "yes_no",
"ask": "roc(C, 20) > 5"
},
"atr3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"rally10": {
"type": "yes_no",
"instructions": "Will it rally at least 10% at some point in the next month?"
}
}
}Response JSON (RIOT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"adx_up": {
"yes_no": 0.0793,
"rule": "adx(14) > 20 and diplus(14) > diminus(14)",
"basis": "rule"
},
"di": {
"yes_no": 0.0793,
"rule": "diplus(14) > diminus(14)",
"basis": "rule"
},
"roc": {
"yes_no": 0.0663,
"rule": "roc(C, 20) > 5",
"basis": "rule"
},
"atr3": {
"yes_no": 0.9463,
"rule": "atr_pct(14) > 3",
"basis": "rule"
},
"rally10": {
"yes_no": 0.888
}
},
"context": {
"symbol": "RIOT",
"as_of": "2026-10-30"
}
}Crypto trader · example 7
Did a reversal candle print in IBIT after a selloff?
After a drop in bitcoin, look for a morning star, a hammer or a piercing line in the ETF's daily bars.
- StateIBIT
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"IBIT"} The server fills in the latest completed session.
Questions
morning | rule | morning_star()morning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first. |
hammer | rule | hammer()hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back. |
piercing | rule | piercing_line()piercing line candle: After a red day, opens below its close and closes above the middle of its body (but under its open). |
down3 | English → rule | Has the stock closed lower 3 days in a row? |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
morningmorning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first. | 0.0937 | false |
hammerhammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back. | 0.0751 | false |
piercingpiercing line candle: After a red day, opens below its close and closes above the middle of its body (but under its open). | 0.0723 | false |
down3Has the stock closed lower 3 days in a row compiled to (C < C[-1]) and (C[-1] < C[-2]) and (C[-2] < C[-3]) | 0.2769 | false |
up_weekHigher in a week | 0.528 | 53% · close to even |
What it means
For IBIT on the session of 2026-10-30: Not true: morning star candle: A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first.; hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back.; piercing line candle: After a red day, opens below its close and closes above the middle of its body (but under its open).; Has the stock closed lower 3 days in a row. Forecasts: Higher in a week 53%.
A reversal candle after a run of down closes is a reason to watch for follow-through; one candle on its own is not a trend change.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IBIT"
},
"questions": {
"morning": {
"type": "yes_no",
"ask": "morning_star()"
},
"hammer": {
"type": "yes_no",
"ask": "hammer()"
},
"piercing": {
"type": "yes_no",
"ask": "piercing_line()"
},
"down3": {
"type": "yes_no",
"instructions": "Has the stock closed lower 3 days in a row?"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (IBIT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"morning": {
"yes_no": 0.0937,
"rule": "morning_star()",
"basis": "rule"
},
"hammer": {
"yes_no": 0.0751,
"rule": "hammer()",
"basis": "rule"
},
"piercing": {
"yes_no": 0.0723,
"rule": "piercing_line()",
"basis": "rule"
},
"down3": {
"yes_no": 0.2769,
"rule": "(C < C[-1]) and (C[-1] < C[-2]) and (C[-2] < C[-3])",
"basis": "pattern"
},
"up_week": {
"yes_no": 0.528
}
},
"context": {
"symbol": "IBIT",
"as_of": "2026-10-30"
}
}Crypto trader · example 8
GBTC vs its own long average: discount fading or not?
Check GBTC's position against its 100-day mean and a linear-regression slope to see if the trend is steady or rolling over.
- StateGBTC
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GBTC"} The server fills in the latest completed session.
Questions
mean100 | rule | C > mean(C, 100)Close above its 100-day mean |
slope | rule | linreg(C, 20) > ref(linreg(C, 20), -5)20-day regression line rising over a week |
wma | rule | wma(C, 10) > wma(C, 30)10-day WMA above the 30-day WMA |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
mean100Close above its 100-day mean | 0.7924 | true |
slope20-day regression line rising over a week | 0.2434 | false |
wma10-day WMA above the 30-day WMA | 0.2093 | false |
drop5A 5% drawdown within a month | 0.573 | 57% · close to even |
What it means
For GBTC on the session of 2026-10-30: True now: Close above its 100-day mean. Not true: 20-day regression line rising over a week; 10-day WMA above the 30-day WMA. Forecasts: A 5% drawdown within a month 57%.
A rising regression line and a fast weighted average above the slow one describe a steady trend; when they flip, the trend is losing its slope.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GBTC"
},
"questions": {
"mean100": {
"type": "yes_no",
"ask": "C > mean(C, 100)"
},
"slope": {
"type": "yes_no",
"ask": "linreg(C, 20) > ref(linreg(C, 20), -5)"
},
"wma": {
"type": "yes_no",
"ask": "wma(C, 10) > wma(C, 30)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (GBTC, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"mean100": {
"yes_no": 0.7924,
"rule": "C > mean(C, 100)",
"basis": "rule"
},
"slope": {
"yes_no": 0.2434,
"rule": "linreg(C, 20) > ref(linreg(C, 20), -5)",
"basis": "rule"
},
"wma": {
"yes_no": 0.2093,
"rule": "wma(C, 10) > wma(C, 30)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.573
}
},
"context": {
"symbol": "GBTC",
"as_of": "2026-10-30"
}
}Crypto trader · example 9
Will IBIT gap on Monday after a weekend in bitcoin?
Bitcoin trades all weekend but the ETF does not. Before the Friday close, check the gap odds and how wide the recent days have been.
- ScheduleFri at 15:30 ET
- StateIBIT
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"IBIT"} The server fills in the latest completed session.
Questions
gap_up | forecast | Will it gap up tomorrow? A gap up tomorrow |
gap_down | forecast | Will it gap down tomorrow? A gap down tomorrow |
wide | rule | tr() > 1.5 * ref(atr(14), -1)True range 1.5× yesterday's ATR |
gap_atr | rule | abs(O - C[-1]) > 0.5 * ref(atr(14), -1)Gap bigger than half an ATR |
vol_rise | forecast | Will volatility rise over the next 5 days? Volatility rising over 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
gap_upA gap up tomorrow | 0.212 | 21% · unlikely |
gap_downA gap down tomorrow | 0.134 | 13% · unlikely |
wideTrue range 1.5× yesterday's ATR | 0.8948 | true |
gap_atrGap bigger than half an ATR | 0.9444 | true |
vol_riseVolatility rising over 5 days | 0.46 | 46% · close to even |
Actions
Rules on the answers decide what to send.
gap_up >= 0.2 or gap_down >= 0.2→Emailmeelse→Emailme{
"subject": "IBIT: weekend gap risk",
"text": "IBIT (2026-10-30): gap up 21%, gap down 13%. Recent wide day: 89%. Decide whether to hold through the weekend."
}What it means
For IBIT on the session of 2026-10-30: True now: True range 1.5× yesterday's ATR; Gap bigger than half an ATR. Forecasts: A gap up tomorrow 21%; A gap down tomorrow 13%; Volatility rising over 5 days 46%. Fired: weekend_note (Email → me).
The Friday workflow sends one of two emails: a gap-risk note or an all-clear, so holding through the weekend is a deliberate choice.
As a scheduled workflow (Fri at 15: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": "Will IBIT gap on Monday after a weekend in bitcoin?",
"symbols": "IBIT",
"days": [
5
],
"at_time": "15:30",
"model": "ora-fin-0.1.1",
"questions": {
"gap_up": {
"type": "yes_no",
"instructions": "Will it gap up tomorrow?"
},
"gap_down": {
"type": "yes_no",
"instructions": "Will it gap down tomorrow?"
},
"wide": {
"type": "yes_no",
"ask": "tr() > 1.5 * ref(atr(14), -1)"
},
"gap_atr": {
"type": "yes_no",
"ask": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)"
},
"vol_rise": {
"type": "yes_no",
"instructions": "Will volatility rise over the next 5 days?"
}
},
"actions": [
{
"id": "weekend_note",
"when": "gap_up >= 0.2 or gap_down >= 0.2",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: weekend gap risk",
"message": "{{symbol}} ({{as_of}}): gap up {{gap_up|pct}}, gap down {{gap_down|pct}}. Recent wide day: {{wide|pct}}. Decide whether to hold through the weekend."
},
{
"id": "calm",
"when": "else",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: no unusual weekend gap odds",
"message": "{{symbol}} ({{as_of}}): gap odds are low (up {{gap_up|pct}}, down {{gap_down|pct}})."
}
]
}Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IBIT"
},
"questions": {
"gap_up": {
"type": "yes_no",
"instructions": "Will it gap up tomorrow?"
},
"gap_down": {
"type": "yes_no",
"instructions": "Will it gap down tomorrow?"
},
"wide": {
"type": "yes_no",
"ask": "tr() > 1.5 * ref(atr(14), -1)"
},
"gap_atr": {
"type": "yes_no",
"ask": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)"
},
"vol_rise": {
"type": "yes_no",
"instructions": "Will volatility rise over the next 5 days?"
}
},
"actions": [
{
"id": "weekend_note",
"when": "gap_up >= 0.2 or gap_down >= 0.2",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: weekend gap risk",
"message": "{{symbol}} ({{as_of}}): gap up {{gap_up|pct}}, gap down {{gap_down|pct}}. Recent wide day: {{wide|pct}}. Decide whether to hold through the weekend."
},
{
"id": "calm",
"when": "else",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: no unusual weekend gap odds",
"message": "{{symbol}} ({{as_of}}): gap odds are low (up {{gap_up|pct}}, down {{gap_down|pct}})."
}
],
"dry_run": true
}Response JSON (IBIT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"gap_up": {
"yes_no": 0.212
},
"gap_down": {
"yes_no": 0.134
},
"wide": {
"yes_no": 0.8948,
"rule": "tr() > 1.5 * ref(atr(14), -1)",
"basis": "rule"
},
"gap_atr": {
"yes_no": 0.9444,
"rule": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)",
"basis": "rule"
},
"vol_rise": {
"yes_no": 0.46
}
},
"context": {
"symbol": "IBIT",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "weekend_note",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "me",
"preview": {
"subject": "IBIT: weekend gap risk",
"text": "IBIT (2026-10-30): gap up 21%, gap down 13%. Recent wide day: 89%. Decide whether to hold through the weekend."
}
},
{
"id": "calm",
"fired": false,
"status": "skipped"
}
]
}Crypto trader · example 10
BITO (bitcoin futures ETF): trend and volatility
BITO holds futures, not spot. Check whether it confirms the spot ETFs' trend and how volatile it is.
- StateBITO
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"BITO"} The server fills in the latest completed session.
Questions
above_50d | rule | C > sma(C, 50)Above the 50-day average |
hv | English → rule | Is 20-day historical volatility above 40%? |
pays | English → rule | Does the stock pay a dividend? |
atr_rising | rule | atr(14) > 1.2 * ref(atr(14), -10)ATR up 20% in two weeks |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
above_50dAbove the 50-day average | 0.157 | false |
hvIs 20-day historical volatility above 40% compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4 | 0.137 | false |
paysDoes the stock pay a dividend compiled to pays_dividend > 0.5 | 0.8591 | true |
atr_risingATR up 20% in two weeks | 0.1225 | false |
up_weekHigher in a week | 0.49 | 49% · close to even |
What it means
For BITO on the session of 2026-10-30: True now: Does the stock pay a dividend. Not true: Above the 50-day average; Is 20-day historical volatility above 40%; ATR up 20% in two weeks. Forecasts: Higher in a week 49%.
BITO pays distributions from futures roll income, so the dividend fact can be true even though bitcoin pays nothing.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "BITO"
},
"questions": {
"above_50d": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"hv": {
"type": "yes_no",
"instructions": "Is 20-day historical volatility above 40%?"
},
"pays": {
"type": "yes_no",
"instructions": "Does the stock pay a dividend?"
},
"atr_rising": {
"type": "yes_no",
"ask": "atr(14) > 1.2 * ref(atr(14), -10)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (BITO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"above_50d": {
"yes_no": 0.157,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"hv": {
"yes_no": 0.137,
"rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4",
"basis": "pattern"
},
"pays": {
"yes_no": 0.8591,
"rule": "pays_dividend > 0.5",
"basis": "pattern"
},
"atr_rising": {
"yes_no": 0.1225,
"rule": "atr(14) > 1.2 * ref(atr(14), -10)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.49
}
},
"context": {
"symbol": "BITO",
"as_of": "2026-10-30"
}
}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.