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

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.

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 (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.

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

State

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

Questions

atr3ruleatr_pct(14) > 3
A typical day moves more than 3%
widerule(H - L) > 2 * avg(H - L, 20)
Range more than twice the 20-day average range
gap_atrruleabs(O - C[-1]) > 0.5 * ref(atr(14), -1)
Gap bigger than half an ATR
vol_riseforecastWill volatility rise over the next 5 days?
Volatility rising over 5 days
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
atr3
A typical day moves more than 3%
0.9463true
wide
Range more than twice the 20-day average range
0.0943false
gap_atr
Gap bigger than half an ATR
0.9349true
vol_rise
Volatility rising over 5 days
0.35736% · unlikely
big5
A big move either way in 5 days
0.29530% · unlikely

Actions

Rules on the answers decide what to send.

atr3 >= 0.6→Slackdaytrade-room
What each action would send 1 of 1 fired · dry run, nothing sent
size_downwould send (dry run)Slack → daytrade-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%."
      }
    }
  ]
}

abs atr atr_pct avg offset ref

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.

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

State

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

Questions

dojiruledoji()
doji candle: Body at most 10% of the day's range.
spinrulespinning_top()
spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.
after_runruledoji() and roc(C, 20) > 10
Doji after a 10% month
range_midrulebetween((C - L) / (H - L), 0.4, 0.6)
Closed in the middle fifth of the day's range
move2forecastWill the stock move more than 2% in either direction in 5 trading days?
A 2%+ move either way in 5 days

Answers

QuestionAnswerReading
doji
doji candle: Body at most 10% of the day's range.
0.0698false
spin
spinning top candle: Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.
0.0932false
after_run
Doji after a 10% month
0.0537false
range_mid
Closed in the middle fifth of the day's range
0.95true
move2
A 2%+ move either way in 5 days
0.32232% · 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"
  }
}

between doji roc spinning_top

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.

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

State

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

Questions

vwap20ruleC > sum(hlc3() * V, 20) / sum(V, 20)
Above its 20-day volume-weighted price
vwap5English → ruleIs the stock above its 5-day volume-weighted average price?
nearruleabs(C / (sum(hlc3() * V, 20) / sum(V, 20)) - 1) < 0.01
Within 1% of the 20-day VWAP
trendruleC > sma(C, 50)
Above the 50-day average
up_tmrforecastWill the stock be up tomorrow?
Up tomorrow

Answers

QuestionAnswerReading
vwap20
Above its 20-day volume-weighted price
0.248false
vwap5
Is the stock above its 5-day volume-weighted average price
compiled to C > sum((H + L + C) / 3 * V, 5) / sum(V, 5)
0.1531false
near
Within 1% of the 20-day VWAP
0.3835false
trend
Above the 50-day average
0.7088true
up_tmr
Up tomorrow
0.54855% · 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"
  }
}

abs hlc3 sma sum

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.

ora-fin-0.1.12 symbols, one request each4 questions1 action
  1. State2 symbols
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

fadedruleO > C[-1] and C < C[-1]
Gapped up but closed under yesterday's close
gap1ruleO > C[-1] * 1.01
Opened more than 1% above yesterday's close
engulf_bearruleengulfing_bear()
engulfing bear candle: A red body that engulfs yesterday's green body.
dn_tmrforecastWill it gap down tomorrow?
A gap down tomorrow

Answers

Symbolfadedrulegap1ruleengulf_bearruledn_tmrforecastFired
MARA0.11970.09760.11970.307none
RIOT0.12370.10480.12370.334none

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→Emailme
MARA 0 of 1 fired · dry run, nothing sent
RIOT 0 of 1 fired · dry run, nothing sent

What 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"
    }
  ]
}

engulfing_bear offset

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.

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

State

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

Questions

mstarrulemorning_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.
estarruleevening_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.
crowsrulethree_black_crows()
three black crows candle: Three red bars, each closing lower and opening inside the previous body.
soldiersrulethree_white_soldiers()
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
up_tmrforecastWill the stock be up tomorrow?
Up tomorrow

Answers

QuestionAnswerReading
mstar
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.
0.057false
estar
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.
0.1092false
crows
three black crows candle: Three red bars, each closing lower and opening inside the previous body.
0.107false
soldiers
three white soldiers candle: Three green bars, each closing higher and opening inside the previous body.
0.2024false
up_tmr
Up tomorrow
0.3434% · 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.

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

State

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

Questions

lower_wickruleleast(O, C) - L > 2 * abs(C - O)
Lower wick more than twice the body
upper_wickruleH - greatest(O, C) > 2 * abs(C - O)
Upper wick more than twice the body
dragonflyruledragonfly_doji()
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
gravestonerulegravestone_doji()
gravestone doji candle: Doji with a long upper wick and almost no lower wick.
up_tmrforecastWill the stock be up tomorrow?
Up tomorrow

Answers

QuestionAnswerReading
lower_wick
Lower wick more than twice the body
0.0618false
upper_wick
Upper wick more than twice the body
0.0584false
dragonfly
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
0.0579false
gravestone
gravestone doji candle: Doji with a long upper wick and almost no lower wick.
0.0548false
up_tmr
Up tomorrow
0.52152% · 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"
  }
}

abs dragonfly_doji gravestone_doji greatest least

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.

ora-fin-0.1.13 symbols, one request each5 questions1 actionworkflow · Mon–Fri at 16:15 ET
  1. ScheduleMon–Fri at 16:15 ET
  2. State3 symbols
  3. Questions5 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"TSLA"} then NVDA, AMD, one request each. The server fills in the latest completed session.

Questions

bigruleabs(C - C[-1]) > 1.5 * atr(14)
Today's move was bigger than 1.5 ATR
upruleC > C[-1]
Closed higher than yesterday
best20English → ruleWas today the best day of the last 20 sessions?
worst20English → ruleWas today the worst day of the last 20 sessions?
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

Symbolbigruleuprulebest20ruleworst20rulebig5forecastFired
TSLA0.0540.29490.06320.26310.248none
NVDA0.44040.07320.07060.44980.318none
AMD0.89220.05370.05370.80790.28discord

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
TSLA 0 of 1 fired · dry run, nothing sent
NVDA 0 of 1 fired · dry run, nothing sent
AMD 1 of 1 fired · dry run, nothing sent
discordwould send (dry run)Webhook → discord-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"
    }
  ]
}

abs atr max min offset ref

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.

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

State

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

Questions

grindrulesum(sign(C - C[-1]), 10) > 2
Up days outnumber down days by 3+ over 10 sessions
mostlyrulesum(C > C[-1], 10) >= 6
Up on at least six of the last ten days
hhruleH > H[-1] and L > L[-1]
Higher high and higher low
up_tmrforecastWill the stock be up tomorrow?
Up tomorrow

Answers

QuestionAnswerReading
grind
Up days outnumber down days by 3+ over 10 sessions
0.45on the line (false)
mostly
Up on at least six of the last ten days
0.55on the line (true)
hh
Higher high and higher low
0.0679false
up_tmr
Up tomorrow
0.52653% · 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"
  }
}

offset sign sum

Active day trader · example 19

Tweezer top or bottom in SLV

Matching highs or lows on two days mark a level the market defended.

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

State

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

Questions

tw_botruletweezer_bottom()
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
tw_topruletweezer_top()
tweezer top candle: Green then red, with highs within 0.1%.
near_supruleC >= swinglow(5) and C <= 1.03 * swinglow(5)
Within 3% above the last swing low
near_resruleC <= swinghigh(5) and C >= 0.97 * swinghigh(5)
Within 3% under the last swing high
up_tmrforecastWill the stock be up tomorrow?
Up tomorrow

Answers

QuestionAnswerReading
tw_bot
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
0.0537false
tw_top
tweezer top candle: Green then red, with highs within 0.1%.
0.0537false
near_sup
Within 3% above the last swing low
0.1121false
near_res
Within 3% under the last swing high
0.0735false
up_tmr
Up tomorrow
0.47948% · 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"
  }
}

swinghigh swinglow tweezer_bottom tweezer_top

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.

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

State

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

Questions

shockrulezscore(C / C[-1] - 1, 20) < -2
A two-sigma down day
hvrulestd(log(C / C[-1]), 20) * sqrt(252) > 0.4
Annualized 20-day volatility above 40%
atr_expruleatr(14) > 1.2 * ref(atr(14), -10)
ATR up 20% in two weeks
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
shock
A two-sigma down day
0.6995true
hv
Annualized 20-day volatility above 40%
0.0537false
atr_exp
ATR up 20% in two weeks
0.2117false
big5
A big move either way in 5 days
0.42543% · 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-desk
else→Webhookteams-desk
What each action would send 1 of 2 fired · dry run, nothing sent
teams_standdownwould send (dry run)Webhook → teams-desk
{
  "text": "SPY (2026-10-30): market volatility is elevated (shock 70%, ATR expanding 21%). Half size today."
}
teams_okrule false: skipped

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"
    }
  ]
}

atr log offset ref sqrt std zscore

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.

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