Use cases · Individuals
Commodities trader: 20 ways to use Ora
Gold, silver, oil, gas, metals and agriculture through their exchange-traded funds and producers. Each example is a complete, runnable request with the real answers it returned (35 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 (49)
sma 12ref 5roc 4avg 3highest 3offset 3swinglow 3rsi 3lowest 3ema 2atr_pct 2atr 2max 2swinghigh 2min 2adx 1log 1sqrt 1std 1tr 1obv 1crossup 1beat_eps_last 1div_yield_ttm 1years_of_growth 1dragonfly_doji 1hammer 1inverted_hammer 1macd 1macdsignal 1inside_bar 1abs 1beats_last4 1days_to_earnings 1last_earnings_gap 1last_earnings_move 1cut_last 1engulfing_bull 1harami_bull 1pays_dividend 1bblower 1percentrank 1stochd 1linreg 1rma 1wma 1engulfing_bear 1three_black_crows 1eps_growth_yoy 1
Examples 11–20 of 20 · page 2 of 2
Commodities trader · example 11
Platinum (PPLT): is it stuck in a range?
Range traders want a tight, quiet market. Check range width, NR7 and where the close sits in its 20-day range.
- StatePPLT
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"PPLT"} The server fills in the latest completed session.
Questions
tight | English → rule | Has the stock traded in a range of less than 5% over the last 10 sessions? |
nr7 | rule | (H - L) < lowest(H - L, 6)Narrowest range of the last seven sessions (NR7) |
range_pos | rule | (C - lowest(L, 20)) / (highest(H, 20) - lowest(L, 20)) < 0.3Close in the bottom 30% of the prior 20-day range |
inside | rule | inside_bar()inside bar candle: Today's high and low are inside yesterday's (equal counts). |
big_move | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
tightHas the stock traded in a range of less than 5% over the last 10 sessions compiled to max(H, 10) / min(L, 10) - 1 < 0.05 | 0.0537 | false |
nr7Narrowest range of the last seven sessions (NR7) | 0.2061 | false |
range_posClose in the bottom 30% of the prior 20-day range | 0.8824 | true |
insideinside bar candle: Today's high and low are inside yesterday's (equal counts). | 0.0917 | false |
big_moveA big move either way in 5 days | 0.353 | 35% · unlikely |
What it means
For PPLT on the session of 2026-10-30: True now: Close in the bottom 30% of the prior 20-day range. Not true: Has the stock traded in a range of less than 5% over the last 10 sessions; Narrowest range of the last seven sessions (NR7); inside bar candle: Today's high and low are inside yesterday's (equal counts).. Forecasts: A big move either way in 5 days 35%.
A tight range with the close near the bottom is a range-buy setup; the big-move forecast warns when the range may break.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "PPLT"
},
"questions": {
"tight": {
"type": "yes_no",
"instructions": "Has the stock traded in a range of less than 5% over the last 10 sessions?"
},
"nr7": {
"type": "yes_no",
"ask": "(H - L) < lowest(H - L, 6)"
},
"range_pos": {
"type": "yes_no",
"ask": "(C - lowest(L, 20)) / (highest(H, 20) - lowest(L, 20)) < 0.3"
},
"inside": {
"type": "yes_no",
"ask": "inside_bar()"
},
"big_move": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
}
}Response JSON (PPLT, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"tight": {
"yes_no": 0.0537,
"rule": "max(H, 10) / min(L, 10) - 1 < 0.05",
"basis": "pattern"
},
"nr7": {
"yes_no": 0.2061,
"rule": "(H - L) < lowest(H - L, 6)",
"basis": "rule"
},
"range_pos": {
"yes_no": 0.8824,
"rule": "(C - lowest(L, 20)) / (highest(H, 20) - lowest(L, 20)) < 0.3",
"basis": "rule"
},
"inside": {
"yes_no": 0.0917,
"rule": "inside_bar()",
"basis": "rule"
},
"big_move": {
"yes_no": 0.353
}
},
"context": {
"symbol": "PPLT",
"as_of": "2026-10-30"
}
}Commodities trader · example 12
Energy equities: OIH and XOP vs crude
Oil services and exploration stocks lead or lag crude. Compare their trend and momentum with USO.
- State3 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"OIH"} then XOP, USO, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
roc | rule | roc(C, 20) > 5Up more than 5% in 20 sessions |
rsi_hot | rule | rsi(C, 14) > 70RSI above 70 |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | trendrule | rocrule | rsi_hotrule | beat_spyforecast |
|---|---|---|---|---|
OIH | 0.745 | 0.6882 | 0.1605 | 0.54 |
XOP | 0.9204 | 0.8431 | 0.1585 | 0.547 |
USO | 0.9434 | 0.8727 | 0.2905 | 0.573 |
true false not known for rules; forecasts are odds. Hover a column for its question.
What it means
Session of 2026-10-30, 3 symbols: Above the 50-day average: true for OIH, XOP, USO of 3. Up more than 5% in 20 sessions: true for OIH, XOP, USO of 3. RSI above 70: true for none of 3. Highest odds for “Beating SPY over a month”: USO at 57%.
Equities leading crude is a sign the market expects higher prices to stick; equities lagging a crude rally doubts it.
Request JSON (OIH; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "OIH"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"roc": {
"type": "yes_no",
"ask": "roc(C, 20) > 5"
},
"rsi_hot": {
"type": "yes_no",
"ask": "rsi(C, 14) > 70"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (OIH, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.745,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"roc": {
"yes_no": 0.6882,
"rule": "roc(C, 20) > 5",
"basis": "rule"
},
"rsi_hot": {
"yes_no": 0.1605,
"rule": "rsi(C, 14) > 70",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.54
}
},
"context": {
"symbol": "OIH",
"as_of": "2026-10-30"
}
}Commodities trader · example 13
Safe-haven bid: gold up while stocks fall
Email when GLD makes a 20-day high on a day it rose on volume, the classic flight-to-safety print.
- StateGLD
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"GLD"} The server fills in the latest completed session.
Questions
high20 | rule | H > highest(H, 20)Took out the 20-day high intraday |
up_vol | English → rule | Did the stock rise on above-average volume? |
trend_day | rule | (O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))A trend day up: opened near the low, closed near the high |
vol_rise | forecast | Will volatility rise over the next 5 days? Volatility rising over 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
high20Took out the 20-day high intraday | 0.0732 | false |
up_volDid the stock rise on above-average volume compiled to (C > C[-1]) and (V > ref(avg(V, 20), -1)) | 0.064 | false |
trend_dayA trend day up: opened near the low, closed near the high | 0.0574 | false |
vol_riseVolatility rising over 5 days | 0.568 | 57% · close to even |
Actions
Rules on the answers decide what to send.
high20 >= 0.6 and up_vol >= 0.6→Emailmeelse→Emailme{
"subject": "GLD: no haven bid",
"text": "GLD (2026-10-30): no 20-day high on volume (high 7%, volume 6%)."
}What it means
For GLD on the session of 2026-10-30: Not true: Took out the 20-day high intraday; Did the stock rise on above-average volume; A trend day up: opened near the low, closed near the high. Forecasts: Volatility rising over 5 days 57%. Fired: quiet (Email → me).
One of two emails every time it runs: a haven-bid note or a no-signal line, so silence never means the check failed.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"questions": {
"high20": {
"type": "yes_no",
"ask": "H > highest(H, 20)"
},
"up_vol": {
"type": "yes_no",
"instructions": "Did the stock rise on above-average volume?"
},
"trend_day": {
"type": "yes_no",
"ask": "(O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))"
},
"vol_rise": {
"type": "yes_no",
"instructions": "Will volatility rise over the next 5 days?"
}
},
"actions": [
{
"id": "haven",
"when": "high20 >= 0.6 and up_vol >= 0.6",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: safe-haven bid ({{as_of}})",
"message": "{{symbol}} made a 20-day high on above-average volume. Trend day up {{trend_day|pct}}; volatility rising {{vol_rise|pct}}."
},
{
"id": "quiet",
"when": "else",
"do": "email",
"connection": "me",
"subject": "{{symbol}}: no haven bid",
"message": "{{symbol}} ({{as_of}}): no 20-day high on volume (high {{high20|pct}}, volume {{up_vol|pct}})."
}
],
"dry_run": true
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"high20": {
"yes_no": 0.0732,
"rule": "H > highest(H, 20)",
"basis": "rule"
},
"up_vol": {
"yes_no": 0.064,
"rule": "(C > C[-1]) and (V > ref(avg(V, 20), -1))",
"basis": "pattern"
},
"trend_day": {
"yes_no": 0.0574,
"rule": "(O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))",
"basis": "rule"
},
"vol_rise": {
"yes_no": 0.568
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "haven",
"fired": false,
"status": "skipped"
},
{
"id": "quiet",
"fired": true,
"status": "dry_run",
"do": "email",
"connection": "me",
"preview": {
"subject": "GLD: no haven bid",
"text": "GLD (2026-10-30): no 20-day high on volume (high 7%, volume 6%)."
}
}
]
}Commodities trader · example 14
Steel and aluminum: NUE and AA into earnings
Metals producers react hard to results. Check the report date, beat history and last reaction before holding through it.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NUE"} then AA, one request each. The server fills in the latest completed session.
Questions
earn_soon | rule | days_to_earnings <= 10Reports earnings within 10 days |
streak | English → rule | Has the stock beaten EPS estimates in at least 3 of the last 4 quarters? |
big | rule | abs(last_earnings_move) > 5Last earnings move bigger than 5% |
gap_after | English → rule | Did the stock gap up after its last earnings? |
big_move | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Symbol | earn_soonrule | streakrule | bigrule | gap_afterrule | big_moveforecast |
|---|---|---|---|---|---|
NUE | 0.0537 | 0.1409 | 0.9463 | 0.9083 | 0.257 |
AA | 0.0537 | 0.1409 | 0.0537 | 0.9463 | 0.258 |
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: Reports earnings within 10 days: true for none of 2. Has the stock beaten EPS estimates in at least 3 of the last 4 quarters: true for none of 2. Last earnings move bigger than 5%: true for NUE of 2. Did the stock gap up after its last earnings: true for NUE, AA of 2. Highest odds for “A big move either way in 5 days”: AA at 26%.
A report within days plus a history of big reactions is event risk to size for; the beat record is context, not a prediction.
Request JSON (NUE; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NUE"
},
"questions": {
"earn_soon": {
"type": "yes_no",
"ask": "days_to_earnings <= 10"
},
"streak": {
"type": "yes_no",
"instructions": "Has the stock beaten EPS estimates in at least 3 of the last 4 quarters?"
},
"big": {
"type": "yes_no",
"ask": "abs(last_earnings_move) > 5"
},
"gap_after": {
"type": "yes_no",
"instructions": "Did the stock gap up after its last earnings?"
},
"big_move": {
"type": "yes_no",
"instructions": "Will there be a big move in either direction in the next 5 days?"
}
}
}Response JSON (NUE, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"earn_soon": {
"yes_no": 0.0537,
"rule": "days_to_earnings <= 10",
"basis": "rule"
},
"streak": {
"yes_no": 0.1409,
"rule": "beats_last4 >= 3",
"basis": "pattern"
},
"big": {
"yes_no": 0.9463,
"rule": "abs(last_earnings_move) > 5",
"basis": "rule"
},
"gap_after": {
"yes_no": 0.9083,
"rule": "last_earnings_gap > 0",
"basis": "pattern"
},
"big_move": {
"yes_no": 0.257
}
},
"context": {
"symbol": "NUE",
"as_of": "2026-10-30"
}
}abs beats_last4 days_to_earnings last_earnings_gap last_earnings_move
Commodities trader · example 15
Close-of-day commodity digest: GLD, SLV, USO, UNG, DBA
Every weekday after the close, run the same three questions on five funds and post a Slack line for any breakdown.
- ScheduleMon–Fri at 17:00 ET
- State5 symbols
- Questions3 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"GLD"} then SLV, USO, UNG, DBA, one request each. The server fills in the latest completed session.
Questions
breakdown | rule | C < lowest(L, 20)Closed under the 20-day low |
trend | rule | C > sma(C, 50)Above the 50-day average |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | breakdownrule | trendrule | drop5forecast | Fired |
|---|---|---|---|---|
GLD | 0.7286 | 0.0807 | 0.435 | breakdown |
SLV | 0.7691 | 0.0607 | 0.612 | breakdown |
USO | 0.0537 | 0.9434 | 0.615 | none |
UNG | 0.5521 | 0.0642 | 0.632 | none |
DBA | 0.5978 | 0.0654 | 0.165 | 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.
breakdown >= 0.6→Slackcommodities-desk{
"text": "GLD (2026-10-30): closed under its 20-day low. Above the 50-day 8%; 5% drawdown odds 44%."
}{
"text": "SLV (2026-10-30): closed under its 20-day low. Above the 50-day 6%; 5% drawdown odds 61%."
}What it means
Session of 2026-10-30, 5 symbols: Closed under the 20-day low: true for GLD, SLV of 5. Above the 50-day average: true for USO of 5. Highest odds for “A 5% drawdown within a month”: UNG at 63%. breakdown fired for GLD, SLV.
A scheduled workflow: quiet days produce nothing, a breakdown in any fund produces one Slack line.
As a scheduled workflow (Mon–Fri at 17:00 ET)
Create it under Workflows in the console: it runs these questions for every symbol on the schedule and fires the actions per symbol. The answers above are what one run returned.
{
"name": "Close-of-day commodity digest: GLD, SLV, USO, UNG, DBA",
"symbols": "GLD SLV USO UNG DBA",
"days": [
1,
2,
3,
4,
5
],
"at_time": "17:00",
"model": "ora-fin-0.1.1",
"questions": {
"breakdown": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "breakdown",
"when": "breakdown >= 0.6",
"do": "slack",
"connection": "commodities-desk",
"message": "{{symbol}} ({{as_of}}): closed under its 20-day low. Above the 50-day {{trend|pct}}; 5% drawdown odds {{drop5|pct}}."
}
]
}Request JSON (GLD; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"questions": {
"breakdown": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "breakdown",
"when": "breakdown >= 0.6",
"do": "slack",
"connection": "commodities-desk",
"message": "{{symbol}} ({{as_of}}): closed under its 20-day low. Above the 50-day {{trend|pct}}; 5% drawdown odds {{drop5|pct}}."
}
],
"dry_run": true
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"breakdown": {
"yes_no": 0.7286,
"rule": "C < lowest(L, 20)",
"basis": "rule"
},
"trend": {
"yes_no": 0.0807,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.435
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "breakdown",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "commodities-desk",
"preview": {
"text": "GLD (2026-10-30): closed under its 20-day low. Above the 50-day 8%; 5% drawdown odds 44%."
}
}
]
}Commodities trader · example 16
NEM: gold producer trend, dividend and candles
Check Newmont against gold: trend, dividend facts and any engulfing or harami candles on the latest bars.
- StateNEM
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NEM"} The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
pays | rule | pays_dividend > 0.5Pays a dividend |
cut | English → rule | Did the stock cut its dividend last time? |
engulf | rule | engulfing_bull()engulfing bull candle: A green body that engulfs yesterday's red body. |
harami | rule | harami_bull()harami bull candle: A small green body inside yesterday's red body. |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
trendAbove the 50-day average | 0.1321 | false |
paysPays a dividend | 0.8591 | true |
cutDid the stock cut its dividend last time compiled to cut_last > 0.5 | 0.1409 | false |
engulfengulfing bull candle: A green body that engulfs yesterday's red body. | 0.0943 | false |
haramiharami bull candle: A small green body inside yesterday's red body. | 0.0776 | false |
up_weekHigher in a week | 0.515 | 52% · close to even |
What it means
For NEM on the session of 2026-10-30: True now: Pays a dividend. Not true: Above the 50-day average; Did the stock cut its dividend last time; engulfing bull candle: A green body that engulfs yesterday's red body.; harami bull candle: A small green body inside yesterday's red body.. Forecasts: Higher in a week 52%.
Producer dividends can be cut when gold falls; the candle checks are short-term timing on top of the trend.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "NEM"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"pays": {
"type": "yes_no",
"ask": "pays_dividend > 0.5"
},
"cut": {
"type": "yes_no",
"instructions": "Did the stock cut its dividend last time?"
},
"engulf": {
"type": "yes_no",
"ask": "engulfing_bull()"
},
"harami": {
"type": "yes_no",
"ask": "harami_bull()"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (NEM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.1321,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"pays": {
"yes_no": 0.8591,
"rule": "pays_dividend > 0.5",
"basis": "rule"
},
"cut": {
"yes_no": 0.1409,
"rule": "cut_last > 0.5",
"basis": "pattern"
},
"engulf": {
"yes_no": 0.0943,
"rule": "engulfing_bull()",
"basis": "rule"
},
"harami": {
"yes_no": 0.0776,
"rule": "harami_bull()",
"basis": "rule"
},
"up_week": {
"yes_no": 0.515
}
},
"context": {
"symbol": "NEM",
"as_of": "2026-10-30"
}
}Commodities trader · example 17
Is crude (USO) oversold enough to fade?
Short-term mean reversion in oil: RSI(2), percent-rank of the close and distance under the lower band.
- StateUSO
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"USO"} The server fills in the latest completed session.
Questions
rsi2 | rule | rsi(C, 2) < 10Two-day RSI under 10 |
rank | rule | percentrank(C, 60) < 10Close in the bottom 10% of the last 60 sessions |
band | English → rule | Did the stock close below the lower Bollinger Band? |
stoch_d | rule | stochd(14) < 20Stochastic %D under 20 |
bounce | forecast | Will it rally at least 5% at some point in the next month? A 5% rally within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
rsi2Two-day RSI under 10 | 0.0582 | false |
rankClose in the bottom 10% of the last 60 sessions | 0.0537 | false |
bandDid the stock close below the lower Bollinger Band compiled to C < bblower(C, 20) | 0.054 | false |
stoch_dStochastic %D under 20 | 0.0611 | false |
bounceA 5% rally within a month | 0.658 | 66% · likely |
What it means
For USO on the session of 2026-10-30: Not true: Two-day RSI under 10; Close in the bottom 10% of the last 60 sessions; Did the stock close below the lower Bollinger Band; Stochastic %D under 20. Forecasts: A 5% rally within a month 66%.
Several oversold readings together describe a washed-out market; the bounce forecast is the odds, not a target.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "USO"
},
"questions": {
"rsi2": {
"type": "yes_no",
"ask": "rsi(C, 2) < 10"
},
"rank": {
"type": "yes_no",
"ask": "percentrank(C, 60) < 10"
},
"band": {
"type": "yes_no",
"instructions": "Did the stock close below the lower Bollinger Band?"
},
"stoch_d": {
"type": "yes_no",
"ask": "stochd(14) < 20"
},
"bounce": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
}
}
}Response JSON (USO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"rsi2": {
"yes_no": 0.0582,
"rule": "rsi(C, 2) < 10",
"basis": "rule"
},
"rank": {
"yes_no": 0.0537,
"rule": "percentrank(C, 60) < 10",
"basis": "rule"
},
"band": {
"yes_no": 0.054,
"rule": "C < bblower(C, 20)",
"basis": "comparison"
},
"stoch_d": {
"yes_no": 0.0611,
"rule": "stochd(14) < 20",
"basis": "rule"
},
"bounce": {
"yes_no": 0.658
}
},
"context": {
"symbol": "USO",
"as_of": "2026-10-30"
}
}Commodities trader · example 18
Gold's long trend, measured several ways
Compare simple, Wilder and weighted averages and a regression line on IAU, so one indicator's quirk does not decide the trend.
- StateIAU
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"IAU"} The server fills in the latest completed session.
Questions
sma | rule | C > sma(C, 100)Above the 100-day SMA |
rma | rule | C > rma(C, 100)Above the 100-day Wilder average |
wma | rule | C > wma(C, 100)Above the 100-day WMA |
linreg | rule | linreg(C, 50) > ref(linreg(C, 50), -10)50-day regression line rising over two weeks |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
smaAbove the 100-day SMA | 0.0562 | false |
rmaAbove the 100-day Wilder average | 0.0619 | false |
wmaAbove the 100-day WMA | 0.066 | false |
linreg50-day regression line rising over two weeks | 0.177 | false |
drop5A 5% drawdown within a month | 0.425 | 43% · close to even |
What it means
For IAU on the session of 2026-10-30: Not true: Above the 100-day SMA; Above the 100-day Wilder average; Above the 100-day WMA; 50-day regression line rising over two weeks. Forecasts: A 5% drawdown within a month 43%.
When all four agree, the trend is not an artefact of one averaging method; disagreement means the trend is young or fading.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "IAU"
},
"questions": {
"sma": {
"type": "yes_no",
"ask": "C > sma(C, 100)"
},
"rma": {
"type": "yes_no",
"ask": "C > rma(C, 100)"
},
"wma": {
"type": "yes_no",
"ask": "C > wma(C, 100)"
},
"linreg": {
"type": "yes_no",
"ask": "linreg(C, 50) > ref(linreg(C, 50), -10)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (IAU, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"sma": {
"yes_no": 0.0562,
"rule": "C > sma(C, 100)",
"basis": "rule"
},
"rma": {
"yes_no": 0.0619,
"rule": "C > rma(C, 100)",
"basis": "rule"
},
"wma": {
"yes_no": 0.066,
"rule": "C > wma(C, 100)",
"basis": "rule"
},
"linreg": {
"yes_no": 0.177,
"rule": "linreg(C, 50) > ref(linreg(C, 50), -10)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.425
}
},
"context": {
"symbol": "IAU",
"as_of": "2026-10-30"
}
}Commodities trader · example 19
Metals & mining (XME): breakdown short signal
A breakdown below the 20-day low with a bearish candle sends a short signal to the order system; otherwise nothing.
- StateXME
- Questions5 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"XME"} The server fills in the latest completed session.
Questions
breakdown | rule | C < lowest(L, 20)Closed under the 20-day low |
crows | rule | three_black_crows()three black crows candle: Three red bars, each closing lower and opening inside the previous body. |
bear_engulf | English → rule | Is today a bearish engulfing candle? |
lower | English → rule | Is the stock making lower swing highs and lower swing lows? |
drop10 | forecast | Will it drop at least 10% at some point in the next month? A 10% drawdown within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
breakdownClosed under the 20-day low | 0.3233 | false |
crowsthree black crows candle: Three red bars, each closing lower and opening inside the previous body. | 0.0726 | false |
bear_engulfIs today a bearish engulfing candle compiled to engulfing_bear() | 0.0726 | false |
lowerIs the stock making lower swing highs and lower swing lows compiled to (swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2)) | 0.6865 | true |
drop10A 10% drawdown within a month | 0.529 | 53% · close to even |
Actions
Rules on the answers decide what to send.
breakdown >= 0.6 and (crows >= 0.6 or bear_engulf >= 0.6)→Webhookmy-omsWhat it means
For XME on the session of 2026-10-30: True now: Is the stock making lower swing highs and lower swing lows. Not true: Closed under the 20-day low; three black crows candle: Three red bars, each closing lower and opening inside the previous body.; Is today a bearish engulfing candle. Forecasts: A 10% drawdown within a month 53%. No action fired: every rule was false.
The short signal needs a breakdown and a bearish candle on the same day; lower swing highs and lows add context but do not trigger it.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "XME"
},
"questions": {
"breakdown": {
"type": "yes_no",
"ask": "C < lowest(L, 20)"
},
"crows": {
"type": "yes_no",
"ask": "three_black_crows()"
},
"bear_engulf": {
"type": "yes_no",
"instructions": "Is today a bearish engulfing candle?"
},
"lower": {
"type": "yes_no",
"instructions": "Is the stock making lower swing highs and lower swing lows?"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "short",
"when": "breakdown >= 0.6 and (crows >= 0.6 or bear_engulf >= 0.6)",
"do": "webhook",
"connection": "my-oms",
"body": {
"symbol": "{{symbol}}",
"side": "sell_short",
"signal": "breakdown_bear_candle",
"p_breakdown": "{{breakdown}}",
"p_crows": "{{crows}}",
"p_engulf": "{{bear_engulf}}",
"as_of": "{{as_of}}"
}
}
],
"dry_run": true
}Response JSON (XME, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"breakdown": {
"yes_no": 0.3233,
"rule": "C < lowest(L, 20)",
"basis": "rule"
},
"crows": {
"yes_no": 0.0726,
"rule": "three_black_crows()",
"basis": "rule"
},
"bear_engulf": {
"yes_no": 0.0726,
"rule": "engulfing_bear()",
"basis": "pattern"
},
"lower": {
"yes_no": 0.6865,
"rule": "(swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2))",
"basis": "pattern"
},
"drop10": {
"yes_no": 0.529
}
},
"context": {
"symbol": "XME",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "short",
"fired": false,
"status": "skipped"
}
]
}Commodities trader · example 20
COP and OXY: which oil producer is stronger?
Two US producers, identical questions: trend, momentum, earnings growth and the odds of beating SPY.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"COP"} then OXY, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)Stacked averages: close > 20 EMA > 50 > 200 |
roc | rule | roc(C, 20) > 5Up more than 5% in 20 sessions |
eps_g | rule | eps_growth_yoy > 10EPS up more than 10% on the year |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | trendrule | rocrule | eps_grule | beat_spyforecast |
|---|---|---|---|---|
COP | 0.9328 | 0.9299 | 0.9463 | 0.60 |
OXY | 0.8828 | 0.8349 | 0.9463 | 0.548 |
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: Stacked averages: close > 20 EMA > 50 > 200: true for COP, OXY of 2. Up more than 5% in 20 sessions: true for COP, OXY of 2. EPS up more than 10% on the year: true for COP, OXY of 2. Highest odds for “Beating SPY over a month”: COP at 60%.
Prefer the producer with more rules true and better relative odds; earnings growth explains part of any gap between them.
Request JSON (COP; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "COP"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
},
"roc": {
"type": "yes_no",
"ask": "roc(C, 20) > 5"
},
"eps_g": {
"type": "yes_no",
"ask": "eps_growth_yoy > 10"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (COP, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.9328,
"rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"roc": {
"yes_no": 0.9299,
"rule": "roc(C, 20) > 5",
"basis": "rule"
},
"eps_g": {
"yes_no": 0.9463,
"rule": "eps_growth_yoy > 10",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.6
}
},
"context": {
"symbol": "COP",
"as_of": "2026-10-30"
}
}Information, not investment advice. Rules answer from the latest completed daily session; forecasts are probabilities. Actions ran as dry runs: nothing was sent. More in Individuals: Retail investor, Active day trader, Swing trader, Options trader, Dividend investor, Long-term passive investor, Crypto trader, FX trader, Social trading community, Students and universities.