Use cases · Individuals
Active day trader: 20 ways to use Ora
Plans each session from the daily bar: gaps, ranges, volume and the levels that matter tomorrow. 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.
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 (46)
offset 12ref 8abs 6atr 6avg 4lowest 3sum 3atr_pct 2max 2min 2engulfing_bear 2gap_down 1gap_up 1inside_bar 1median 1percentrank 1hammer 1lowestbars 1tr 1hl2 1outside_bar 1marubozu 1ohlc4 1between 1doji 1roc 1spinning_top 1hlc3 1sma 1evening_star 1morning_star 1three_black_crows 1three_white_soldiers 1dragonfly_doji 1gravestone_doji 1greatest 1least 1sign 1swinghigh 1swinglow 1tweezer_bottom 1tweezer_top 1log 1sqrt 1std 1zscore 1
Examples 11–20 of 20 · page 2 of 2
Active day trader · example 11
MSTR intraday volatility check before trading it
A bitcoin-heavy stock moves several percent a day: check ATR, true range and gap size before choosing size.
- StateMSTR
- Questions5 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"MSTR"} The server fills in the latest completed session.
Questions
atr3 | rule | atr_pct(14) > 3A typical day moves more than 3% |
wide | rule | (H - L) > 2 * avg(H - L, 20)Range more than twice the 20-day average range |
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 |
big5 | 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 |
|---|---|---|
atr3A typical day moves more than 3% | 0.9463 | true |
wideRange more than twice the 20-day average range | 0.0943 | false |
gap_atrGap bigger than half an ATR | 0.9349 | true |
vol_riseVolatility rising over 5 days | 0.357 | 36% · unlikely |
big5A big move either way in 5 days | 0.295 | 30% · unlikely |
Actions
Rules on the answers decide what to send.
atr3 >= 0.6→Slackdaytrade-room{
"text": "MSTR (2026-10-30): ATR over 3% of price; trade half size. Volatility rising 36%."
}What it means
For MSTR on the session of 2026-10-30: True now: A typical day moves more than 3%; Gap bigger than half an ATR. Not true: Range more than twice the 20-day average range. Forecasts: Volatility rising over 5 days 36%; A big move either way in 5 days 30%. Fired: size_down (Slack → daytrade-room).
When ATR is above 3% of price the trader cuts size so a normal stop is still one fixed dollar risk.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "MSTR"
},
"questions": {
"atr3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"wide": {
"type": "yes_no",
"ask": "(H - L) > 2 * avg(H - L, 20)"
},
"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?"
},
"big5": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
},
"actions": [
{
"id": "size_down",
"when": "atr3 >= 0.6",
"do": "slack",
"connection": "daytrade-room",
"message": "{{symbol}} ({{as_of}}): ATR over 3% of price; trade half size. Volatility rising {{vol_rise|pct}}."
}
],
"dry_run": true
}Response JSON (MSTR, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"atr3": {
"yes_no": 0.9463,
"rule": "atr_pct(14) > 3",
"basis": "rule"
},
"wide": {
"yes_no": 0.0943,
"rule": "(H - L) > 2 * avg(H - L, 20)",
"basis": "rule"
},
"gap_atr": {
"yes_no": 0.9349,
"rule": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)",
"basis": "rule"
},
"vol_rise": {
"yes_no": 0.357
},
"big5": {
"yes_no": 0.295
}
},
"context": {
"symbol": "MSTR",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "size_down",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "daytrade-room",
"preview": {
"text": "MSTR (2026-10-30): ATR over 3% of price; trade half size. Volatility rising 36%."
}
}
]
}Active day trader · example 12
IWM doji or spinning top: indecision before the next session
Small-body candles say neither side won; check for a doji or spinning top after a run.
- StateIWM
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"IWM"} The server fills in the latest completed session.
Questions
doji | rule | doji()doji candle: Body at most 10% of the day's range. |
spin | rule | spinning_top()spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides. |
after_run | rule | doji() and roc(C, 20) > 10Doji after a 10% month |
range_mid | rule | between((C - L) / (H - L), 0.4, 0.6)Closed in the middle fifth of the day's range |
move2 | forecast | Will the stock move more than 2% in either direction in 5 trading days? A 2%+ move either way in 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
dojidoji candle: Body at most 10% of the day's range. | 0.0698 | false |
spinspinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides. | 0.0932 | false |
after_runDoji after a 10% month | 0.0537 | false |
range_midClosed in the middle fifth of the day's range | 0.95 | true |
move2A 2%+ move either way in 5 days | 0.322 | 32% · unlikely |
What it means
For IWM on the session of 2026-10-30: True now: Closed in the middle fifth of the day's range. Not true: doji candle: Body at most 10% of the day's range.; spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.; Doji after a 10% month. Forecasts: A 2%+ move either way in 5 days 32%.
Indecision after a run is a reason to tighten stops on longs rather than add; with no run behind it, the candle is noise.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IWM"
},
"questions": {
"doji": {
"type": "yes_no",
"ask": "doji()"
},
"spin": {
"type": "yes_no",
"ask": "spinning_top()"
},
"after_run": {
"type": "yes_no",
"ask": "doji() and roc(C, 20) > 10"
},
"range_mid": {
"type": "yes_no",
"ask": "between((C - L) / (H - L), 0.4, 0.6)"
},
"move2": {
"type": "yes_no",
"instructions": "Will the stock move more than 2% in either direction in 5 trading days?"
}
}
}Response JSON (IWM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"doji": {
"yes_no": 0.0698,
"rule": "doji()",
"basis": "rule"
},
"spin": {
"yes_no": 0.0932,
"rule": "spinning_top()",
"basis": "rule"
},
"after_run": {
"yes_no": 0.0537,
"rule": "doji() and roc(C, 20) > 10",
"basis": "rule"
},
"range_mid": {
"yes_no": 0.95,
"rule": "between((C - L) / (H - L), 0.4, 0.6)",
"basis": "rule"
},
"move2": {
"yes_no": 0.322
}
},
"context": {
"symbol": "IWM",
"as_of": "2026-10-30"
}
}Active day trader · example 13
MSFT first pullback to the rolling VWAP
After a strong move, is price pulling back to its 20-day volume-weighted price, a common area to rejoin a trend.
- StateMSFT
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"MSFT"} The server fills in the latest completed session.
Questions
vwap20 | rule | C > sum(hlc3() * V, 20) / sum(V, 20)Above its 20-day volume-weighted price |
vwap5 | English → rule | Is the stock above its 5-day volume-weighted average price? |
near | rule | abs(C / (sum(hlc3() * V, 20) / sum(V, 20)) - 1) < 0.01Within 1% of the 20-day VWAP |
trend | rule | C > sma(C, 50)Above the 50-day average |
up_tmr | forecast | Will the stock be up tomorrow? Up tomorrow |
Answers
| Question | Answer | Reading |
|---|---|---|
vwap20Above its 20-day volume-weighted price | 0.248 | false |
vwap5Is the stock above its 5-day volume-weighted average price compiled to C > sum((H + L + C) / 3 * V, 5) / sum(V, 5) | 0.1531 | false |
nearWithin 1% of the 20-day VWAP | 0.3835 | false |
trendAbove the 50-day average | 0.7088 | true |
up_tmrUp tomorrow | 0.548 | 55% · close to even |
What it means
For MSFT on the session of 2026-10-30: True now: Above the 50-day average. Not true: Above its 20-day volume-weighted price; Is the stock above its 5-day volume-weighted average price; Within 1% of the 20-day VWAP. Forecasts: Up tomorrow 55%.
Within one percent of the rolling VWAP in an uptrend is the area to look for an entry; far from it, the trader waits.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "MSFT"
},
"questions": {
"vwap20": {
"type": "yes_no",
"ask": "C > sum(hlc3() * V, 20) / sum(V, 20)"
},
"vwap5": {
"type": "yes_no",
"instructions": "Is the stock above its 5-day volume-weighted average price?"
},
"near": {
"type": "yes_no",
"ask": "abs(C / (sum(hlc3() * V, 20) / sum(V, 20)) - 1) < 0.01"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"up_tmr": {
"type": "yes_no",
"instructions": "Will the stock be up tomorrow?"
}
}
}Response JSON (MSFT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"vwap20": {
"yes_no": 0.248,
"rule": "C > sum(hlc3() * V, 20) / sum(V, 20)",
"basis": "rule"
},
"vwap5": {
"yes_no": 0.1531,
"rule": "C > sum((H + L + C) / 3 * V, 5) / sum(V, 5)",
"basis": "pattern"
},
"near": {
"yes_no": 0.3835,
"rule": "abs(C / (sum(hlc3() * V, 20) / sum(V, 20)) - 1) < 0.01",
"basis": "rule"
},
"trend": {
"yes_no": 0.7088,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"up_tmr": {
"yes_no": 0.548
}
},
"context": {
"symbol": "MSFT",
"as_of": "2026-10-30"
}
}Active day trader · example 14
Email me when a gap up fades in bitcoin miners MARA and RIOT
Crypto miners gap often; get one email when a gap up closes below the prior close.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"MARA"} then RIOT, one request each. The server fills in the latest completed session.
Questions
faded | rule | O > C[-1] and C < C[-1]Gapped up but closed under yesterday's close |
gap1 | rule | O > C[-1] * 1.01Opened more than 1% above yesterday's close |
engulf_bear | rule | engulfing_bear()engulfing bear candle: A red body that engulfs yesterday's green body. |
dn_tmr | forecast | Will it gap down tomorrow? A gap down tomorrow |
Answers
| Symbol | fadedrule | gap1rule | engulf_bearrule | dn_tmrforecast | Fired |
|---|---|---|---|---|---|
MARA | 0.1197 | 0.0976 | 0.1197 | 0.307 | none |
RIOT | 0.1237 | 0.1048 | 0.1237 | 0.334 | none |
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.
faded >= 0.6→EmailmeWhat it means
Session of 2026-10-30, 2 symbols: Gapped up but closed under yesterday's close: true for none of 2. Opened more than 1% above yesterday's close: true for none of 2. engulfing bear candle: A red body that engulfs yesterday's green body.: true for none of 2. Highest odds for “A gap down tomorrow”: RIOT at 33%. gap_faded fired for none.
A faded gap is a short idea for the next morning; the email only arrives when it happens.
Request JSON (MARA; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "MARA"
},
"questions": {
"faded": {
"type": "yes_no",
"ask": "O > C[-1] and C < C[-1]"
},
"gap1": {
"type": "yes_no",
"ask": "O > C[-1] * 1.01"
},
"engulf_bear": {
"type": "yes_no",
"ask": "engulfing_bear()"
},
"dn_tmr": {
"type": "yes_no",
"instructions": "Will it gap down tomorrow?"
}
},
"actions": [
{
"id": "gap_faded",
"when": "faded >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: gap up faded ({{as_of}})",
"message": "{{symbol}} opened up and closed below yesterday's close (rule {{faded|pct}}). Gap down tomorrow: {{dn_tmr|pct}}."
}
],
"dry_run": true
}Response JSON (MARA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"faded": {
"yes_no": 0.1197,
"rule": "O > C[-1] and C < C[-1]",
"basis": "rule"
},
"gap1": {
"yes_no": 0.0976,
"rule": "O > C[-1] * 1.01",
"basis": "rule"
},
"engulf_bear": {
"yes_no": 0.1197,
"rule": "engulfing_bear()",
"basis": "rule"
},
"dn_tmr": {
"yes_no": 0.307
}
},
"context": {
"symbol": "MARA",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "gap_faded",
"fired": false,
"status": "skipped"
}
]
}Active day trader · example 15
Three-bar reversal: morning star or evening star in BA
Three-candle reversals at the end of a move: check both directions at once.
- StateBA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"BA"} The server fills in the latest completed session.
Questions
mstar | 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. |
estar | rule | evening_star()evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first. |
crows | rule | three_black_crows()three black crows candle: Three red bars, each closing lower and opening inside the previous body. |
soldiers | rule | three_white_soldiers()three white soldiers candle: Three green bars, each closing higher and opening inside the previous body. |
up_tmr | forecast | Will the stock be up tomorrow? Up tomorrow |
Answers
| Question | Answer | Reading |
|---|---|---|
mstarmorning 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.057 | false |
estarevening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first. | 0.1092 | false |
crowsthree black crows candle: Three red bars, each closing lower and opening inside the previous body. | 0.107 | false |
soldiersthree white soldiers candle: Three green bars, each closing higher and opening inside the previous body. | 0.2024 | false |
up_tmrUp tomorrow | 0.34 | 34% · unlikely |
What it means
For BA 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.; evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.; three black crows candle: Three red bars, each closing lower and opening inside the previous body.; three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.. Forecasts: Up tomorrow 34%.
A morning star is a long idea, an evening star a short idea; three soldiers or crows confirm the direction instead of reversing it.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "BA"
},
"questions": {
"mstar": {
"type": "yes_no",
"ask": "morning_star()"
},
"estar": {
"type": "yes_no",
"ask": "evening_star()"
},
"crows": {
"type": "yes_no",
"ask": "three_black_crows()"
},
"soldiers": {
"type": "yes_no",
"ask": "three_white_soldiers()"
},
"up_tmr": {
"type": "yes_no",
"instructions": "Will the stock be up tomorrow?"
}
}
}Response JSON (BA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"mstar": {
"yes_no": 0.057,
"rule": "morning_star()",
"basis": "rule"
},
"estar": {
"yes_no": 0.1092,
"rule": "evening_star()",
"basis": "rule"
},
"crows": {
"yes_no": 0.107,
"rule": "three_black_crows()",
"basis": "rule"
},
"soldiers": {
"yes_no": 0.2024,
"rule": "three_white_soldiers()",
"basis": "rule"
},
"up_tmr": {
"yes_no": 0.34
}
},
"context": {
"symbol": "BA",
"as_of": "2026-10-30"
}
}evening_star morning_star three_black_crows three_white_soldiers
Active day trader · example 16
Long lower wick rejection in GLD
A long lower wick shows buyers rejected lower prices during the session.
- StateGLD
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GLD"} The server fills in the latest completed session.
Questions
lower_wick | rule | least(O, C) - L > 2 * abs(C - O)Lower wick more than twice the body |
upper_wick | rule | H - greatest(O, C) > 2 * abs(C - O)Upper wick more than twice the body |
dragonfly | rule | dragonfly_doji()dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick. |
gravestone | rule | gravestone_doji()gravestone doji candle: Doji with a long upper wick and almost no lower wick. |
up_tmr | forecast | Will the stock be up tomorrow? Up tomorrow |
Answers
| Question | Answer | Reading |
|---|---|---|
lower_wickLower wick more than twice the body | 0.0618 | false |
upper_wickUpper wick more than twice the body | 0.0584 | false |
dragonflydragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick. | 0.0579 | false |
gravestonegravestone doji candle: Doji with a long upper wick and almost no lower wick. | 0.0548 | false |
up_tmrUp tomorrow | 0.521 | 52% · close to even |
What it means
For GLD on the session of 2026-10-30: Not true: Lower wick more than twice the body; Upper wick more than twice the body; dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.; gravestone doji candle: Doji with a long upper wick and almost no lower wick.. Forecasts: Up tomorrow 52%.
A lower-wick rejection favors longs at the open; an upper-wick rejection or gravestone doji favors shorts.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"questions": {
"lower_wick": {
"type": "yes_no",
"ask": "least(O, C) - L > 2 * abs(C - O)"
},
"upper_wick": {
"type": "yes_no",
"ask": "H - greatest(O, C) > 2 * abs(C - O)"
},
"dragonfly": {
"type": "yes_no",
"ask": "dragonfly_doji()"
},
"gravestone": {
"type": "yes_no",
"ask": "gravestone_doji()"
},
"up_tmr": {
"type": "yes_no",
"instructions": "Will the stock be up tomorrow?"
}
}
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"lower_wick": {
"yes_no": 0.0618,
"rule": "least(O, C) - L > 2 * abs(C - O)",
"basis": "rule"
},
"upper_wick": {
"yes_no": 0.0584,
"rule": "H - greatest(O, C) > 2 * abs(C - O)",
"basis": "rule"
},
"dragonfly": {
"yes_no": 0.0579,
"rule": "dragonfly_doji()",
"basis": "rule"
},
"gravestone": {
"yes_no": 0.0548,
"rule": "gravestone_doji()",
"basis": "rule"
},
"up_tmr": {
"yes_no": 0.521
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
}
}Active day trader · example 17
Post big movers to our Discord: TSLA, NVDA, AMD
After the close, post any name that moved more than 1.5 ATR to the community's Discord channel.
- ScheduleMon–Fri at 16:15 ET
- State3 symbols
- Questions5 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"TSLA"} then NVDA, AMD, one request each. The server fills in the latest completed session.
Questions
big | rule | abs(C - C[-1]) > 1.5 * atr(14)Today's move was bigger than 1.5 ATR |
up | rule | C > C[-1]Closed higher than yesterday |
best20 | English → rule | Was today the best day of the last 20 sessions? |
worst20 | English → rule | Was today the worst day of the last 20 sessions? |
big5 | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Symbol | bigrule | uprule | best20rule | worst20rule | big5forecast | Fired |
|---|---|---|---|---|---|---|
TSLA | 0.054 | 0.2949 | 0.0632 | 0.2631 | 0.248 | none |
NVDA | 0.4404 | 0.0732 | 0.0706 | 0.4498 | 0.318 | none |
AMD | 0.8922 | 0.0537 | 0.0537 | 0.8079 | 0.28 | discord |
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.
big >= 0.6→Webhookdiscord-movers{
"content": "AMD (2026-10-30) moved more than 1.5 ATR today. Up close 5%, best day in 20 5%, worst 81%."
}What it means
Session of 2026-10-30, 3 symbols: Today's move was bigger than 1.5 ATR: true for AMD of 3. Closed higher than yesterday: true for none of 3. Was today the best day of the last 20 sessions: true for none of 3. Was today the worst day of the last 20 sessions: true for AMD of 3. Highest odds for “A big move either way in 5 days”: NVDA at 32%. discord fired for AMD.
Only outsized moves get posted; the direction comes from the up-close rule.
As a scheduled workflow (Mon–Fri at 16:15 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": "Post big movers to our Discord: TSLA, NVDA, AMD",
"symbols": "TSLA NVDA AMD",
"days": [
1,
2,
3,
4,
5
],
"at_time": "16:15",
"model": "ora-fin-0.1.1",
"questions": {
"big": {
"type": "yes_no",
"ask": "abs(C - C[-1]) > 1.5 * atr(14)"
},
"up": {
"type": "yes_no",
"ask": "C > C[-1]"
},
"best20": {
"type": "yes_no",
"instructions": "Was today the best day of the last 20 sessions?"
},
"worst20": {
"type": "yes_no",
"instructions": "Was today the worst day of the last 20 sessions?"
},
"big5": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
},
"actions": [
{
"id": "discord",
"when": "big >= 0.6",
"do": "webhook",
"connection": "discord-movers",
"body": {
"content": "{{symbol}} ({{as_of}}) moved more than 1.5 ATR today. Up close {{up|pct}}, best day in 20 {{best20|pct}}, worst {{worst20|pct}}."
}
}
]
}Request JSON (TSLA; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "TSLA"
},
"questions": {
"big": {
"type": "yes_no",
"ask": "abs(C - C[-1]) > 1.5 * atr(14)"
},
"up": {
"type": "yes_no",
"ask": "C > C[-1]"
},
"best20": {
"type": "yes_no",
"instructions": "Was today the best day of the last 20 sessions?"
},
"worst20": {
"type": "yes_no",
"instructions": "Was today the worst day of the last 20 sessions?"
},
"big5": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
},
"actions": [
{
"id": "discord",
"when": "big >= 0.6",
"do": "webhook",
"connection": "discord-movers",
"body": {
"content": "{{symbol}} ({{as_of}}) moved more than 1.5 ATR today. Up close {{up|pct}}, best day in 20 {{best20|pct}}, worst {{worst20|pct}}."
}
}
],
"dry_run": true
}Response JSON (TSLA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"big": {
"yes_no": 0.054,
"rule": "abs(C - C[-1]) > 1.5 * atr(14)",
"basis": "rule"
},
"up": {
"yes_no": 0.2949,
"rule": "C > C[-1]",
"basis": "rule"
},
"best20": {
"yes_no": 0.0632,
"rule": "(C > C[-1]) and (C / C[-1] - 1 > ref(max(C / C[-1] - 1, 19), -1))",
"basis": "pattern"
},
"worst20": {
"yes_no": 0.2631,
"rule": "(C < C[-1]) and (C / C[-1] - 1 < ref(min(C / C[-1] - 1, 19), -1))",
"basis": "pattern"
},
"big5": {
"yes_no": 0.248
}
},
"context": {
"symbol": "TSLA",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "discord",
"fired": false,
"status": "skipped"
}
]
}Active day trader · example 18
Up-day count with sign(): is JPM grinding higher
Count up days minus down days over two weeks to see a steady grind that a single bar hides.
- StateJPM
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"JPM"} The server fills in the latest completed session.
Questions
grind | rule | sum(sign(C - C[-1]), 10) > 2Up days outnumber down days by 3+ over 10 sessions |
mostly | rule | sum(C > C[-1], 10) >= 6Up on at least six of the last ten days |
hh | rule | H > H[-1] and L > L[-1]Higher high and higher low |
up_tmr | forecast | Will the stock be up tomorrow? Up tomorrow |
Answers
| Question | Answer | Reading |
|---|---|---|
grindUp days outnumber down days by 3+ over 10 sessions | 0.45 | on the line (false) |
mostlyUp on at least six of the last ten days | 0.55 | on the line (true) |
hhHigher high and higher low | 0.0679 | false |
up_tmrUp tomorrow | 0.526 | 53% · close to even |
What it means
For JPM on the session of 2026-10-30: Not true: Higher high and higher low. On the line: Up days outnumber down days by 3+ over 10 sessions; Up on at least six of the last ten days. Forecasts: Up tomorrow 53%.
A positive count means dips have been bought; the day trader leans long on morning weakness.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "JPM"
},
"questions": {
"grind": {
"type": "yes_no",
"ask": "sum(sign(C - C[-1]), 10) > 2"
},
"mostly": {
"type": "yes_no",
"ask": "sum(C > C[-1], 10) >= 6"
},
"hh": {
"type": "yes_no",
"ask": "H > H[-1] and L > L[-1]"
},
"up_tmr": {
"type": "yes_no",
"instructions": "Will the stock be up tomorrow?"
}
}
}Response JSON (JPM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"grind": {
"yes_no": 0.45,
"rule": "sum(sign(C - C[-1]), 10) > 2",
"basis": "rule"
},
"mostly": {
"yes_no": 0.55,
"rule": "sum(C > C[-1], 10) >= 6",
"basis": "rule"
},
"hh": {
"yes_no": 0.0679,
"rule": "H > H[-1] and L > L[-1]",
"basis": "rule"
},
"up_tmr": {
"yes_no": 0.526
}
},
"context": {
"symbol": "JPM",
"as_of": "2026-10-30"
}
}Active day trader · example 19
Tweezer top or bottom in SLV
Matching highs or lows on two days mark a level the market defended.
- StateSLV
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SLV"} The server fills in the latest completed session.
Questions
tw_bot | rule | tweezer_bottom()tweezer bottom candle: Red then green, with lows within 0.1% of each other. |
tw_top | rule | tweezer_top()tweezer top candle: Green then red, with highs within 0.1%. |
near_sup | rule | C >= swinglow(5) and C <= 1.03 * swinglow(5)Within 3% above the last swing low |
near_res | rule | C <= swinghigh(5) and C >= 0.97 * swinghigh(5)Within 3% under the last swing high |
up_tmr | forecast | Will the stock be up tomorrow? Up tomorrow |
Answers
| Question | Answer | Reading |
|---|---|---|
tw_bottweezer bottom candle: Red then green, with lows within 0.1% of each other. | 0.0537 | false |
tw_toptweezer top candle: Green then red, with highs within 0.1%. | 0.0537 | false |
near_supWithin 3% above the last swing low | 0.1121 | false |
near_resWithin 3% under the last swing high | 0.0735 | false |
up_tmrUp tomorrow | 0.479 | 48% · close to even |
What it means
For SLV on the session of 2026-10-30: Not true: tweezer bottom candle: Red then green, with lows within 0.1% of each other.; tweezer top candle: Green then red, with highs within 0.1%.; Within 3% above the last swing low; Within 3% under the last swing high. Forecasts: Up tomorrow 48%.
A tweezer bottom at support is a long level for tomorrow; a tweezer top at resistance is a short level.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SLV"
},
"questions": {
"tw_bot": {
"type": "yes_no",
"ask": "tweezer_bottom()"
},
"tw_top": {
"type": "yes_no",
"ask": "tweezer_top()"
},
"near_sup": {
"type": "yes_no",
"ask": "C >= swinglow(5) and C <= 1.03 * swinglow(5)"
},
"near_res": {
"type": "yes_no",
"ask": "C <= swinghigh(5) and C >= 0.97 * swinghigh(5)"
},
"up_tmr": {
"type": "yes_no",
"instructions": "Will the stock be up tomorrow?"
}
}
}Response JSON (SLV, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"tw_bot": {
"yes_no": 0.0537,
"rule": "tweezer_bottom()",
"basis": "rule"
},
"tw_top": {
"yes_no": 0.0537,
"rule": "tweezer_top()",
"basis": "rule"
},
"near_sup": {
"yes_no": 0.1121,
"rule": "C >= swinglow(5) and C <= 1.03 * swinglow(5)",
"basis": "rule"
},
"near_res": {
"yes_no": 0.0735,
"rule": "C <= swinghigh(5) and C >= 0.97 * swinghigh(5)",
"basis": "rule"
},
"up_tmr": {
"yes_no": 0.479
}
},
"context": {
"symbol": "SLV",
"as_of": "2026-10-30"
}
}Active day trader · example 20
Stop trading for the day: SPY volatility kill switch
Before the session, check whether the market itself is in a shock state, and tell the trader to stand down via Teams.
- StateSPY
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"SPY"} The server fills in the latest completed session.
Questions
shock | rule | zscore(C / C[-1] - 1, 20) < -2A two-sigma down day |
hv | rule | std(log(C / C[-1]), 20) * sqrt(252) > 0.4Annualized 20-day volatility above 40% |
atr_exp | rule | atr(14) > 1.2 * ref(atr(14), -10)ATR up 20% in two weeks |
big5 | 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 |
|---|---|---|
shockA two-sigma down day | 0.6995 | true |
hvAnnualized 20-day volatility above 40% | 0.0537 | false |
atr_expATR up 20% in two weeks | 0.2117 | false |
big5A big move either way in 5 days | 0.425 | 43% · close to even |
Actions
Rules on the answers decide what to send.
shock >= 0.6 or (atr_exp >= 0.6 and big5 >= 0.5)→Webhookteams-deskelse→Webhookteams-desk{
"text": "SPY (2026-10-30): market volatility is elevated (shock 70%, ATR expanding 21%). Half size today."
}What it means
For SPY on the session of 2026-10-30: True now: A two-sigma down day. Not true: Annualized 20-day volatility above 40%; ATR up 20% in two weeks. Forecasts: A big move either way in 5 days 43%. Fired: teams_standdown (Webhook → teams-desk).
If the index is in a return shock or volatility is expanding, the trader trades smaller or not at all.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "SPY"
},
"questions": {
"shock": {
"type": "yes_no",
"ask": "zscore(C / C[-1] - 1, 20) < -2"
},
"hv": {
"type": "yes_no",
"ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4"
},
"atr_exp": {
"type": "yes_no",
"ask": "atr(14) > 1.2 * ref(atr(14), -10)"
},
"big5": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
},
"actions": [
{
"id": "teams_standdown",
"when": "shock >= 0.6 or (atr_exp >= 0.6 and big5 >= 0.5)",
"do": "webhook",
"connection": "teams-desk",
"body": {
"text": "{{symbol}} ({{as_of}}): market volatility is elevated (shock {{shock|pct}}, ATR expanding {{atr_exp|pct}}). Half size today."
}
},
{
"id": "teams_ok",
"when": "else",
"do": "webhook",
"connection": "teams-desk",
"body": {
"text": "{{symbol}} ({{as_of}}): normal volatility. Standard size."
}
}
],
"dry_run": true
}Response JSON (SPY, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"shock": {
"yes_no": 0.6995,
"rule": "zscore(C / C[-1] - 1, 20) < -2",
"basis": "rule"
},
"hv": {
"yes_no": 0.0537,
"rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4",
"basis": "rule"
},
"atr_exp": {
"yes_no": 0.2117,
"rule": "atr(14) > 1.2 * ref(atr(14), -10)",
"basis": "rule"
},
"big5": {
"yes_no": 0.425
}
},
"context": {
"symbol": "SPY",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "teams_standdown",
"fired": true,
"status": "dry_run",
"do": "webhook",
"connection": "teams-desk",
"preview": {
"body": {
"text": "SPY (2026-10-30): market volatility is elevated (shock 70%, ATR expanding 21%). Half size today."
}
}
},
{
"id": "teams_ok",
"fired": false,
"status": "skipped"
}
]
}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, Swing trader, Options trader, Dividend investor, Long-term passive investor, Crypto trader, FX trader, Commodities trader, Social trading community, Students and universities.