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 · Sell side

Prop trading firm: 20 ways to use Ora

Trader risk rules, setup scans and firm-wide kill switches on the daily data. Each example is a complete, runnable request with the real answers it returned (47 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 (40)

offset 11sma 8atr 4avg 4ref 4swinghigh 4swinglow 4std 3roc 3abs 2highest 2rsi 2atr_pct 2lowest 2log 2sqrt 2max 2zscore 1bblower 1crossup 1three_black_crows 1adx 1hammer 1inverted_hammer 1morning_star 1three_white_soldiers 1days_to_earnings 1last_earnings_move 1next_report_amc 1macd 1bbupper 1cci 1stochk 1min 1tweezer_bottom 1obv 1sign 1sum 1doji 1spinning_top 1

Examples 11–20 of 20 · page 2 of 2

Prop trading firm · example 11

No holding NVDA through earnings without sign-off

Remind traders to flatten or get approval when a held name reports within days.

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

State

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

Questions

earnruledays_to_earnings <= 10
Reports earnings within 10 days
amcEnglish → ruleDoes the stock report after the close next time?
bigruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%
clearruleC > sma(C, 50) and days_to_earnings > 5
Above the 50-day, no earnings in the next 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
earn
Reports earnings within 10 days
0.0563false
amc
Does the stock report after the close next time
compiled to next_report_amc > 0.5
0.8591true
big
Last earnings move bigger than 5%
0.9463true
clear
Above the 50-day, no earnings in the next 5 days
0.0746false
big5
A big move either way in 5 days
0.31832% · unlikely

Actions

Rules on the answers decide what to send.

earn >= 0.6→Slackrisk-floor
What each action would send 0 of 1 fired · dry run, nothing sent
remindrule false: skipped

What it means

For NVDA on the session of 2026-10-30: True now: Does the stock report after the close next time; Last earnings move bigger than 5%. Not true: Reports earnings within 10 days; Above the 50-day, no earnings in the next 5 days. Forecasts: A big move either way in 5 days 32%. No action fired: every rule was false.

The firm rule is simple: event risk needs a decision, and the alert makes sure it is made.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NVDA"
  },
  "questions": {
    "earn": {
      "type": "yes_no",
      "ask": "days_to_earnings <= 10"
    },
    "amc": {
      "type": "yes_no",
      "instructions": "Does the stock report after the close next time?"
    },
    "big": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) > 5"
    },
    "clear": {
      "type": "yes_no",
      "ask": "C > sma(C, 50) and days_to_earnings > 5"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "remind",
      "when": "earn >= 0.6",
      "do": "slack",
      "connection": "risk-floor",
      "message": "{{symbol}} reports within 10 days (after the close {{amc|pct}}, last reaction over 5% {{big|pct}}). Flatten or get risk sign-off."
    }
  ],
  "dry_run": true
}
Response JSON (NVDA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "earn": {
      "yes_no": 0.0563,
      "rule": "days_to_earnings <= 10",
      "basis": "rule"
    },
    "amc": {
      "yes_no": 0.8591,
      "rule": "next_report_amc > 0.5",
      "basis": "pattern"
    },
    "big": {
      "yes_no": 0.9463,
      "rule": "abs(last_earnings_move) > 5",
      "basis": "rule"
    },
    "clear": {
      "yes_no": 0.0746,
      "rule": "C > sma(C, 50) and days_to_earnings > 5",
      "basis": "rule"
    },
    "big5": {
      "yes_no": 0.318
    }
  },
  "context": {
    "symbol": "NVDA",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "remind",
      "fired": false,
      "status": "skipped"
    }
  ]
}

abs days_to_earnings last_earnings_move next_report_amc sma

Prop trading firm · example 12

Desk volatility regime: TSLA, MSTR, TQQQ, ARKK

Classify high-beta names into volatility regimes so traders size the day correctly.

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

State

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

Questions

hvrulestd(log(C / C[-1]), 20) * sqrt(252) > 0.6
20-day annualised volatility above 60%
atrruleatr_pct(14) > 3
A typical day moves more than 3%
vol5English → ruleIs 5-day volatility higher than 20-day volatility?
hv_nextforecastWill annualized volatility over the next 21 sessions exceed 30%?
Next-month volatility above 30%

Answers

Symbolhvruleatrrulevol5rulehv_nextforecast
TSLA0.06240.8480.73220.441
MSTR0.80750.94630.40120.454
TQQQ0.80540.94630.91130.51
ARKK0.05370.93690.91080.426

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: 20-day annualised volatility above 60%: true for MSTR, TQQQ of 4. A typical day moves more than 3%: true for TSLA, MSTR, TQQQ, ARKK of 4. Is 5-day volatility higher than 20-day volatility: true for TSLA, TQQQ, ARKK of 4. Highest odds for “Next-month volatility above 30%”: TQQQ at 51%.

Names in the top regime trade at a fraction of normal size until volatility falls.

Request JSON (TSLA; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TSLA"
  },
  "questions": {
    "hv": {
      "type": "yes_no",
      "ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.6"
    },
    "atr": {
      "type": "yes_no",
      "ask": "atr_pct(14) > 3"
    },
    "vol5": {
      "type": "yes_no",
      "instructions": "Is 5-day volatility higher than 20-day volatility?"
    },
    "hv_next": {
      "type": "yes_no",
      "instructions": "Will annualized volatility over the next 21 sessions exceed 30%?"
    }
  }
}
Response JSON (TSLA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "hv": {
      "yes_no": 0.0624,
      "rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.6",
      "basis": "rule"
    },
    "atr": {
      "yes_no": 0.848,
      "rule": "atr_pct(14) > 3",
      "basis": "rule"
    },
    "vol5": {
      "yes_no": 0.7322,
      "rule": "std(log(C / C[-1]), 5) * sqrt(5 / 4) > std(log(C / C[-1]), 20) * sqrt(20 / 19)",
      "basis": "pattern"
    },
    "hv_next": {
      "yes_no": 0.441
    }
  },
  "context": {
    "symbol": "TSLA",
    "as_of": "2026-10-30"
  }
}

atr_pct log offset sqrt std

Prop trading firm · example 13

QQQ pivots for tomorrow: swing high, swing low and mid-range

Check where price sits against the last swing pivots to plan tomorrow's levels.

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

State

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

Questions

above_shruleC > swinghigh(3, 1)
Close above the latest swing high (strength 3)
below_sl2ruleC < swinglow(3, 2)
Close below the second-latest swing low (strength 3)
near_resruleC <= swinghigh(5) and C >= 0.97 * swinghigh(5)
Within 3% under the last swing high
near_supruleC >= swinglow(5) and C <= 1.03 * swinglow(5)
Within 3% above the last swing low
breakforecastWill it break above resistance this week?
Breaking resistance this week

Answers

QuestionAnswerReading
above_sh
Close above the latest swing high (strength 3)
0.066false
below_sl2
Close below the second-latest swing low (strength 3)
0.8259true
near_res
Within 3% under the last swing high
0.0611false
near_sup
Within 3% above the last swing low
0.2731false
break
Breaking resistance this week
0.47247% · close to even

What it means

For QQQ on the session of 2026-10-30: True now: Close below the second-latest swing low (strength 3). Not true: Close above the latest swing high (strength 3); Within 3% under the last swing high; Within 3% above the last swing low. Forecasts: Breaking resistance this week 47%.

Pivot facts mark the levels on the plan; the forecast is the odds of breaking resistance this week.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "QQQ"
  },
  "questions": {
    "above_sh": {
      "type": "yes_no",
      "ask": "C > swinghigh(3, 1)"
    },
    "below_sl2": {
      "type": "yes_no",
      "ask": "C < swinglow(3, 2)"
    },
    "near_res": {
      "type": "yes_no",
      "ask": "C <= swinghigh(5) and C >= 0.97 * swinghigh(5)"
    },
    "near_sup": {
      "type": "yes_no",
      "ask": "C >= swinglow(5) and C <= 1.03 * swinglow(5)"
    },
    "break": {
      "type": "yes_no",
      "instructions": "Will it break above resistance this week?"
    }
  }
}
Response JSON (QQQ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "above_sh": {
      "yes_no": 0.066,
      "rule": "C > swinghigh(3, 1)",
      "basis": "rule"
    },
    "below_sl2": {
      "yes_no": 0.8259,
      "rule": "C < swinglow(3, 2)",
      "basis": "rule"
    },
    "near_res": {
      "yes_no": 0.0611,
      "rule": "C <= swinghigh(5) and C >= 0.97 * swinghigh(5)",
      "basis": "rule"
    },
    "near_sup": {
      "yes_no": 0.2731,
      "rule": "C >= swinglow(5) and C <= 1.03 * swinglow(5)",
      "basis": "rule"
    },
    "break": {
      "yes_no": 0.472
    }
  },
  "context": {
    "symbol": "QQQ",
    "as_of": "2026-10-30"
  }
}

swinghigh swinglow

Prop trading firm · example 14

XLF vs KRE: is the regional bank leg weaker?

Compare the large-bank and regional-bank ETFs on trend and momentum for a pairs trade.

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

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
rocruleroc(C, 20) > 5
Up more than 5% in 20 sessions
macdEnglish → ruleIs MACD above zero?
extruleC > sma(C, 200) * 1.10
More than 10% above the 200-day
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulerocrulemacdruleextrulebeat_spyforecast
XLF0.66920.6060.76250.10180.448
KRE0.51190.13710.71230.08040.479

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: Above the 50-day average: true for XLF of 2. Up more than 5% in 20 sessions: true for XLF of 2. Is MACD above zero: true for XLF, KRE of 2. More than 10% above the 200-day: true for none of 2. Highest odds for “Beating SPY over a month”: KRE at 48%.

If KRE fails rules XLF passes, the pair is long XLF short KRE; identical answers mean no edge.

Request JSON (XLF; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "XLF"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "macd": {
      "type": "yes_no",
      "instructions": "Is MACD above zero?"
    },
    "ext": {
      "type": "yes_no",
      "ask": "C > sma(C, 200) * 1.10"
    },
    "beat_spy": {
      "type": "yes_no",
      "instructions": "Will it beat SPY over the next month?"
    }
  }
}
Response JSON (XLF, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.6692,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "roc": {
      "yes_no": 0.606,
      "rule": "roc(C, 20) > 5",
      "basis": "rule"
    },
    "macd": {
      "yes_no": 0.7625,
      "rule": "macd(C) > 0",
      "basis": "pattern"
    },
    "ext": {
      "yes_no": 0.1018,
      "rule": "C > sma(C, 200) * 1.10",
      "basis": "rule"
    },
    "beat_spy": {
      "yes_no": 0.448
    }
  },
  "context": {
    "symbol": "XLF",
    "as_of": "2026-10-30"
  }
}

macd roc sma

Prop trading firm · example 15

Fade check: is LLY overbought on several measures?

Look for agreement across RSI, stochastic, CCI and Bollinger Bands before a counter-trend short.

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

State

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

Questions

rsiEnglish → ruleIs the stock overbought on RSI, above 70?
stochEnglish → ruleIs the stock overbought on the stochastic, above 80?
ccirulecci(20) > 200
CCI(20) above 200
bbEnglish → ruleDid the stock close above the upper Bollinger Band?
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
rsi
Is the stock overbought on RSI, above 70
compiled to rsi(C, 14) > 70
0.8226true
stoch
Is the stock overbought on the stochastic, above 80
compiled to stochk(14, 3, 3) > 80
0.6126true
cci
CCI(20) above 200
0.5194on the line (true)
bb
Did the stock close above the upper Bollinger Band
compiled to C > bbupper(C, 20)
0.7663true
drop5
A 5% drawdown within a month
0.58358% · close to even

What it means

For LLY on the session of 2026-10-30: True now: Is the stock overbought on RSI, above 70; Is the stock overbought on the stochastic, above 80; Did the stock close above the upper Bollinger Band. On the line: CCI(20) above 200. Forecasts: A 5% drawdown within a month 58%.

A fade needs several overbought readings at once; one alone is just a strong stock.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "LLY"
  },
  "questions": {
    "rsi": {
      "type": "yes_no",
      "instructions": "Is the stock overbought on RSI, above 70?"
    },
    "stoch": {
      "type": "yes_no",
      "instructions": "Is the stock overbought on the stochastic, above 80?"
    },
    "cci": {
      "type": "yes_no",
      "ask": "cci(20) > 200"
    },
    "bb": {
      "type": "yes_no",
      "instructions": "Did the stock close above the upper Bollinger Band?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (LLY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "rsi": {
      "yes_no": 0.8226,
      "rule": "rsi(C, 14) > 70",
      "basis": "pattern"
    },
    "stoch": {
      "yes_no": 0.6126,
      "rule": "stochk(14, 3, 3) > 80",
      "basis": "pattern"
    },
    "cci": {
      "yes_no": 0.5194,
      "rule": "cci(20) > 200",
      "basis": "rule"
    },
    "bb": {
      "yes_no": 0.7663,
      "rule": "C > bbupper(C, 20)",
      "basis": "comparison"
    },
    "drop5": {
      "yes_no": 0.583
    }
  },
  "context": {
    "symbol": "LLY",
    "as_of": "2026-10-30"
  }
}

bbupper cci rsi stochk

Prop trading firm · example 16

Weekly commodity book review: USO, UNG, SLV, GDX

Every Friday, email the commodity traders how each instrument closed the week and its volatility outlook.

ora-fin-0.1.14 symbols, one request each4 questions1 actionworkflow · Fri at 16:45 ET
  1. ScheduleFri at 16:45 ET
  2. State4 symbols
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"USO"} then UNG, SLV, GDX, one request each. The server fills in the latest completed session.

Questions

week_dnEnglish → ruleIs the stock down over the last week?
range_wkrule(max(H, 5) - min(L, 5)) > 1.5 * ref(max(H, 5) - min(L, 5), -5)
This week's range is 1.5× last week's
hvrulestd(log(C / C[-1]), 20) * sqrt(252) > 0.4
Annualized 20-day volatility above 40%
vol_upforecastWill volatility be higher over the next month?
Higher volatility next month

Answers

Symbolweek_dnrulerange_wkrulehvrulevol_upforecastFired
USO0.56280.05920.10750.669weekly
UNG0.84450.07250.27340.463weekly
SLV0.90670.16410.75610.455weekly
GDX0.75060.13560.72160.495weekly

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.

hv >= 0→Emailcommodity-desk
USO 1 of 1 fired · dry run, nothing sent
weeklywould send (dry run)Email → commodity-desk
{
  "subject": "USO week to 2026-10-30",
  "text": "USO: down on the week 56%, weekly range expanding 6%, 20-day vol over 40% 11%. Higher volatility next month: 67%."
}
UNG 1 of 1 fired · dry run, nothing sent
weeklywould send (dry run)Email → commodity-desk
{
  "subject": "UNG week to 2026-10-30",
  "text": "UNG: down on the week 84%, weekly range expanding 7%, 20-day vol over 40% 27%. Higher volatility next month: 46%."
}
SLV 1 of 1 fired · dry run, nothing sent
weeklywould send (dry run)Email → commodity-desk
{
  "subject": "SLV week to 2026-10-30",
  "text": "SLV: down on the week 91%, weekly range expanding 16%, 20-day vol over 40% 76%. Higher volatility next month: 46%."
}
GDX 1 of 1 fired · dry run, nothing sent
weeklywould send (dry run)Email → commodity-desk
{
  "subject": "GDX week to 2026-10-30",
  "text": "GDX: down on the week 75%, weekly range expanding 14%, 20-day vol over 40% 72%. Higher volatility next month: 50%."
}

What it means

Session of 2026-10-30, 4 symbols: Is the stock down over the last week: true for UNG, SLV, GDX of 4. This week's range is 1.5× last week's: true for none of 4. Annualized 20-day volatility above 40%: true for SLV, GDX of 4. Highest odds for “Higher volatility next month”: USO at 67%. weekly fired for USO, UNG, SLV, GDX.

A short weekly digest per instrument; the volatility outlook sets next week's size.

As a scheduled workflow (Fri at 16:45 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": "Weekly commodity book review: USO, UNG, SLV, GDX",
  "symbols": "USO UNG SLV GDX",
  "days": [
    5
  ],
  "at_time": "16:45",
  "model": "ora-fin-0.1.1",
  "questions": {
    "week_dn": {
      "type": "yes_no",
      "instructions": "Is the stock down over the last week?"
    },
    "range_wk": {
      "type": "yes_no",
      "ask": "(max(H, 5) - min(L, 5)) > 1.5 * ref(max(H, 5) - min(L, 5), -5)"
    },
    "hv": {
      "type": "yes_no",
      "ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    }
  },
  "actions": [
    {
      "id": "weekly",
      "when": "hv >= 0",
      "do": "email",
      "connection": "commodity-desk",
      "subject": "{{symbol}} week to {{as_of}}",
      "message": "{{symbol}}: down on the week {{week_dn|pct}}, weekly range expanding {{range_wk|pct}}, 20-day vol over 40% {{hv|pct}}. Higher volatility next month: {{vol_up|pct}}."
    }
  ]
}
Request JSON (USO; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "USO"
  },
  "questions": {
    "week_dn": {
      "type": "yes_no",
      "instructions": "Is the stock down over the last week?"
    },
    "range_wk": {
      "type": "yes_no",
      "ask": "(max(H, 5) - min(L, 5)) > 1.5 * ref(max(H, 5) - min(L, 5), -5)"
    },
    "hv": {
      "type": "yes_no",
      "ask": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    }
  },
  "actions": [
    {
      "id": "weekly",
      "when": "hv >= 0",
      "do": "email",
      "connection": "commodity-desk",
      "subject": "{{symbol}} week to {{as_of}}",
      "message": "{{symbol}}: down on the week {{week_dn|pct}}, weekly range expanding {{range_wk|pct}}, 20-day vol over 40% {{hv|pct}}. Higher volatility next month: {{vol_up|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (USO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "week_dn": {
      "yes_no": 0.5628,
      "rule": "C < C[-5]",
      "basis": "pattern"
    },
    "range_wk": {
      "yes_no": 0.0592,
      "rule": "(max(H, 5) - min(L, 5)) > 1.5 * ref(max(H, 5) - min(L, 5), -5)",
      "basis": "rule"
    },
    "hv": {
      "yes_no": 0.1075,
      "rule": "std(log(C / C[-1]), 20) * sqrt(252) > 0.4",
      "basis": "rule"
    },
    "vol_up": {
      "yes_no": 0.669
    }
  },
  "context": {
    "symbol": "USO",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "weekly",
      "fired": true,
      "status": "dry_run",
      "do": "email",
      "connection": "commodity-desk",
      "preview": {
        "subject": "USO week to 2026-10-30",
        "text": "USO: down on the week 56%, weekly range expanding 6%, 20-day vol over 40% 11%. Higher volatility next month: 67%."
      }
    }
  ]
}

log max min offset ref sqrt std

Prop trading firm · example 17

HD failed breakdown: long setup with defined risk

Find a failed breakdown (undercut the 20-day low and closed back above) with a nearby stop.

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

State

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

Questions

failedruleL < lowest(L, 20) and C > lowest(L, 20)
Undercut the 20-day low and closed back above it
key_revEnglish → ruleDid the stock make a new 10-day low and close up on the day?
stopEnglish → ruleIs a stop below yesterday's low less than 1 ATR away?
tweezerruletweezer_bottom()
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
failed
Undercut the 20-day low and closed back above it
0.0537false
key_rev
Did the stock make a new 10-day low and close up on the day
compiled to (L < lowest(L, 10)) and (C > C[-1])
0.0698false
stop
Is a stop below yesterday's low less than 1 ATR away
compiled to (C > L[-1]) and (C - L[-1] < 1 * atr(14))
0.5766on the line (true)
tweezer
tweezer bottom candle: Red then green, with lows within 0.1% of each other.
0.0661false
up_week
Higher in a week
0.55255% · close to even

What it means

For HD on the session of 2026-10-30: Not true: Undercut the 20-day low and closed back above it; Did the stock make a new 10-day low and close up on the day; tweezer bottom candle: Red then green, with lows within 0.1% of each other.. On the line: Is a stop below yesterday's low less than 1 ATR away. Forecasts: Higher in a week 55%.

A failed breakdown with a stop under the low inside one ATR gives a clear risk; without it the setup is skipped.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "HD"
  },
  "questions": {
    "failed": {
      "type": "yes_no",
      "ask": "L < lowest(L, 20) and C > lowest(L, 20)"
    },
    "key_rev": {
      "type": "yes_no",
      "instructions": "Did the stock make a new 10-day low and close up on the day?"
    },
    "stop": {
      "type": "yes_no",
      "instructions": "Is a stop below yesterday's low less than 1 ATR away?"
    },
    "tweezer": {
      "type": "yes_no",
      "ask": "tweezer_bottom()"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (HD, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "failed": {
      "yes_no": 0.0537,
      "rule": "L < lowest(L, 20) and C > lowest(L, 20)",
      "basis": "rule"
    },
    "key_rev": {
      "yes_no": 0.0698,
      "rule": "(L < lowest(L, 10)) and (C > C[-1])",
      "basis": "pattern"
    },
    "stop": {
      "yes_no": 0.5766,
      "rule": "(C > L[-1]) and (C - L[-1] < 1 * atr(14))",
      "basis": "pattern"
    },
    "tweezer": {
      "yes_no": 0.0661,
      "rule": "tweezer_bottom()",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.552
    }
  },
  "context": {
    "symbol": "HD",
    "as_of": "2026-10-30"
  }
}

atr lowest offset tweezer_bottom

Prop trading firm · example 18

Momentum with participation: COST, LLY, NFLX, GE

Find names up over a month on rising volume and above their 50-day for the momentum book.

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

State

{"symbol":"COST"} then LLY, NFLX, GE, one request each. The server fills in the latest completed session.

Questions

mpruleroc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)
Momentum with participation
quarterruleroc(C, 63) > 10 and C >= 0.95 * max(H, 63)
Up more than 10% in a quarter, near the high
obvruleobv() > sma(obv(), 20)
On-balance volume above its 20-day average
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symbolmprulequarterruleobvrulerally5forecast
COST0.84680.20310.7930.353
LLY0.94540.82460.94590.603
NFLX0.07230.05370.11470.645
GE0.11160.05420.36390.618

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: Momentum with participation: true for COST, LLY of 4. Up more than 10% in a quarter, near the high: true for LLY of 4. On-balance volume above its 20-day average: true for COST, LLY of 4. Highest odds for “A 5% rally within a month”: NFLX at 65%.

Names passing the participation rule rank above those rising on thin volume.

Request JSON (COST; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "COST"
  },
  "questions": {
    "mp": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)"
    },
    "quarter": {
      "type": "yes_no",
      "ask": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)"
    },
    "obv": {
      "type": "yes_no",
      "ask": "obv() > sma(obv(), 20)"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (COST, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "mp": {
      "yes_no": 0.8468,
      "rule": "roc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)",
      "basis": "rule"
    },
    "quarter": {
      "yes_no": 0.2031,
      "rule": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)",
      "basis": "rule"
    },
    "obv": {
      "yes_no": 0.793,
      "rule": "obv() > sma(obv(), 20)",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.353
    }
  },
  "context": {
    "symbol": "COST",
    "as_of": "2026-10-30"
  }
}

avg max obv roc sma

Prop trading firm · example 19

AAPL up-day persistence with sign and sum

Measure how persistent buying has been with counts of up closes, for a trader's trend journal.

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

State

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

Questions

signsrulesum(sign(C - C[-1]), 10) > 2
Up closes outnumber down closes by more than two in ten sessions
up6rulesum(C > C[-1], 10) >= 6
Up on at least six of the last ten days
two_upruleC > C[-1] and C[-1] > C[-2]
Two higher closes in a row
hhruleH > H[-1] and L > L[-1]
Higher high and higher low
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
signs
Up closes outnumber down closes by more than two in ten sessions
0.0615false
up6
Up on at least six of the last ten days
0.0615false
two_up
Two higher closes in a row
0.127false
hh
Higher high and higher low
0.0537false
up_week
Higher in a week
0.5959% · close to even

What it means

For AAPL on the session of 2026-10-30: Not true: Up closes outnumber down closes by more than two in ten sessions; Up on at least six of the last ten days; Two higher closes in a row; Higher high and higher low. Forecasts: Higher in a week 59%.

Persistence rules describe the trend's texture; the journal records them next to each trade.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "signs": {
      "type": "yes_no",
      "ask": "sum(sign(C - C[-1]), 10) > 2"
    },
    "up6": {
      "type": "yes_no",
      "ask": "sum(C > C[-1], 10) >= 6"
    },
    "two_up": {
      "type": "yes_no",
      "ask": "C > C[-1] and C[-1] > C[-2]"
    },
    "hh": {
      "type": "yes_no",
      "ask": "H > H[-1] and L > L[-1]"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "signs": {
      "yes_no": 0.0615,
      "rule": "sum(sign(C - C[-1]), 10) > 2",
      "basis": "rule"
    },
    "up6": {
      "yes_no": 0.0615,
      "rule": "sum(C > C[-1], 10) >= 6",
      "basis": "rule"
    },
    "two_up": {
      "yes_no": 0.127,
      "rule": "C > C[-1] and C[-1] > C[-2]",
      "basis": "rule"
    },
    "hh": {
      "yes_no": 0.0537,
      "rule": "H > H[-1] and L > L[-1]",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.59
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  }
}

offset sign sum

Prop trading firm · example 20

SMH: doji after a run, trim winners

Tell traders to trim when an indecision candle prints after a strong month.

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

State

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

Questions

doji_runruledoji() and roc(C, 20) > 10
Doji after a 10% month
dojiEnglish → ruleIs today's candle a doji?
spinEnglish → ruleIs today's candle a spinning top?
stretchruleC > sma(C, 20) + 2 * atr(14)
Stretched: more than 2 ATR above the 20-day
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
doji_run
Doji after a 10% month
0.0537false
doji
Is today's candle a doji
compiled to doji()
0.0727false
spin
Is today's candle a spinning top
compiled to spinning_top()
0.0889false
stretch
Stretched: more than 2 ATR above the 20-day
0.0547false
drop5
A 5% drawdown within a month
0.64164% · likely

Actions

Rules on the answers decide what to send.

doji_run >= 0.6 or (stretch >= 0.6 and drop5 >= 0.4)→Slackprop-ideas
What each action would send 0 of 1 fired · dry run, nothing sent
trimrule false: skipped

What it means

For SMH on the session of 2026-10-30: Not true: Doji after a 10% month; Is today's candle a doji; Is today's candle a spinning top; Stretched: more than 2 ATR above the 20-day. Forecasts: A 5% drawdown within a month 64%. No action fired: every rule was false.

Indecision after a run is a reason to take some profit, not to reverse.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SMH"
  },
  "questions": {
    "doji_run": {
      "type": "yes_no",
      "ask": "doji() and roc(C, 20) > 10"
    },
    "doji": {
      "type": "yes_no",
      "instructions": "Is today's candle a doji?"
    },
    "spin": {
      "type": "yes_no",
      "instructions": "Is today's candle a spinning top?"
    },
    "stretch": {
      "type": "yes_no",
      "ask": "C > sma(C, 20) + 2 * atr(14)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "trim",
      "when": "doji_run >= 0.6 or (stretch >= 0.6 and drop5 >= 0.4)",
      "do": "slack",
      "connection": "prop-ideas",
      "message": "{{symbol}} ({{as_of}}): indecision after a run (doji after a 10% month {{doji_run|pct}}, stretched {{stretch|pct}}). Consider trimming winners."
    }
  ],
  "dry_run": true
}
Response JSON (SMH, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "doji_run": {
      "yes_no": 0.0537,
      "rule": "doji() and roc(C, 20) > 10",
      "basis": "rule"
    },
    "doji": {
      "yes_no": 0.0727,
      "rule": "doji()",
      "basis": "pattern"
    },
    "spin": {
      "yes_no": 0.0889,
      "rule": "spinning_top()",
      "basis": "pattern"
    },
    "stretch": {
      "yes_no": 0.0547,
      "rule": "C > sma(C, 20) + 2 * atr(14)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.641
    }
  },
  "context": {
    "symbol": "SMH",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "trim",
      "fired": false,
      "status": "skipped"
    }
  ]
}

atr doji roc sma spinning_top

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 Sell side: Equity research analyst, Sell-side sales trader, Execution trader / desk, Market maker, Compliance officer.

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