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

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.

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

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

State

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

Questions

tightEnglish → ruleHas the stock traded in a range of less than 5% over the last 10 sessions?
nr7rule(H - L) < lowest(H - L, 6)
Narrowest range of the last seven sessions (NR7)
range_posrule(C - lowest(L, 20)) / (highest(H, 20) - lowest(L, 20)) < 0.3
Close in the bottom 30% of the prior 20-day range
insideruleinside_bar()
inside bar candle: Today's high and low are inside yesterday's (equal counts).
big_moveforecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
tight
Has 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.0537false
nr7
Narrowest range of the last seven sessions (NR7)
0.2061false
range_pos
Close in the bottom 30% of the prior 20-day range
0.8824true
inside
inside bar candle: Today's high and low are inside yesterday's (equal counts).
0.0917false
big_move
A big move either way in 5 days
0.35335% · 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"
  }
}

highest inside_bar lowest max min

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.

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

State

{"symbol":"OIH"} then XOP, USO, 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
rsi_hotrulersi(C, 14) > 70
RSI above 70
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulerocrulersi_hotrulebeat_spyforecast
OIH0.7450.68820.16050.54
XOP0.92040.84310.15850.547
USO0.94340.87270.29050.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"
  }
}

roc rsi sma

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.

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

State

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

Questions

high20ruleH > highest(H, 20)
Took out the 20-day high intraday
up_volEnglish → ruleDid the stock rise on above-average volume?
trend_dayrule(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_riseforecastWill volatility rise over the next 5 days?
Volatility rising over 5 days

Answers

QuestionAnswerReading
high20
Took out the 20-day high intraday
0.0732false
up_vol
Did the stock rise on above-average volume
compiled to (C > C[-1]) and (V > ref(avg(V, 20), -1))
0.064false
trend_day
A trend day up: opened near the low, closed near the high
0.0574false
vol_rise
Volatility rising over 5 days
0.56857% · close to even

Actions

Rules on the answers decide what to send.

high20 >= 0.6 and up_vol >= 0.6→Emailme
else→Emailme
What each action would send 1 of 2 fired · dry run, nothing sent
havenrule false: skipped
quietwould send (dry run)Email → me
{
  "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%)."
      }
    }
  ]
}

avg highest offset ref

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.

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

State

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

Questions

earn_soonruledays_to_earnings <= 10
Reports earnings within 10 days
streakEnglish → ruleHas the stock beaten EPS estimates in at least 3 of the last 4 quarters?
bigruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%
gap_afterEnglish → ruleDid the stock gap up after its last earnings?
big_moveforecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

Symbolearn_soonrulestreakrulebigrulegap_afterrulebig_moveforecast
NUE0.05370.14090.94630.90830.257
AA0.05370.14090.05370.94630.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.

ora-fin-0.1.15 symbols, one request each3 questions1 actionworkflow · Mon–Fri at 17:00 ET
  1. ScheduleMon–Fri at 17:00 ET
  2. State5 symbols
  3. Questions3 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

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

Questions

breakdownruleC < lowest(L, 20)
Closed under the 20-day low
trendruleC > sma(C, 50)
Above the 50-day average
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symbolbreakdownruletrendruledrop5forecastFired
GLD0.72860.08070.435breakdown
SLV0.76910.06070.612breakdown
USO0.05370.94340.615none
UNG0.55210.06420.632none
DBA0.59780.06540.165none

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
GLD 1 of 1 fired · dry run, nothing sent
breakdownwould send (dry run)Slack → commodities-desk
{
  "text": "GLD (2026-10-30): closed under its 20-day low. Above the 50-day 8%; 5% drawdown odds 44%."
}
SLV 1 of 1 fired · dry run, nothing sent
breakdownwould send (dry run)Slack → commodities-desk
{
  "text": "SLV (2026-10-30): closed under its 20-day low. Above the 50-day 6%; 5% drawdown odds 61%."
}
USO 0 of 1 fired · dry run, nothing sent
UNG 0 of 1 fired · dry run, nothing sent
DBA 0 of 1 fired · dry run, nothing sent

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

lowest sma

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.

ora-fin-0.1.1NEM6 questions
  1. StateNEM
  2. Questions6 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
paysrulepays_dividend > 0.5
Pays a dividend
cutEnglish → ruleDid the stock cut its dividend last time?
engulfruleengulfing_bull()
engulfing bull candle: A green body that engulfs yesterday's red body.
haramiruleharami_bull()
harami bull candle: A small green body inside yesterday's red body.
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
trend
Above the 50-day average
0.1321false
pays
Pays a dividend
0.8591true
cut
Did the stock cut its dividend last time
compiled to cut_last > 0.5
0.1409false
engulf
engulfing bull candle: A green body that engulfs yesterday's red body.
0.0943false
harami
harami bull candle: A small green body inside yesterday's red body.
0.0776false
up_week
Higher in a week
0.51552% · 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"
  }
}

cut_last engulfing_bull harami_bull pays_dividend sma

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.

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

State

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

Questions

rsi2rulersi(C, 2) < 10
Two-day RSI under 10
rankrulepercentrank(C, 60) < 10
Close in the bottom 10% of the last 60 sessions
bandEnglish → ruleDid the stock close below the lower Bollinger Band?
stoch_drulestochd(14) < 20
Stochastic %D under 20
bounceforecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
rsi2
Two-day RSI under 10
0.0582false
rank
Close in the bottom 10% of the last 60 sessions
0.0537false
band
Did the stock close below the lower Bollinger Band
compiled to C < bblower(C, 20)
0.054false
stoch_d
Stochastic %D under 20
0.0611false
bounce
A 5% rally within a month
0.65866% · 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"
  }
}

bblower percentrank rsi stochd

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.

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

State

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

Questions

smaruleC > sma(C, 100)
Above the 100-day SMA
rmaruleC > rma(C, 100)
Above the 100-day Wilder average
wmaruleC > wma(C, 100)
Above the 100-day WMA
linregrulelinreg(C, 50) > ref(linreg(C, 50), -10)
50-day regression line rising over two weeks
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
sma
Above the 100-day SMA
0.0562false
rma
Above the 100-day Wilder average
0.0619false
wma
Above the 100-day WMA
0.066false
linreg
50-day regression line rising over two weeks
0.177false
drop5
A 5% drawdown within a month
0.42543% · 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"
  }
}

linreg ref rma sma wma

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.

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

State

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

Questions

breakdownruleC < lowest(L, 20)
Closed under the 20-day low
crowsrulethree_black_crows()
three black crows candle: Three red bars, each closing lower and opening inside the previous body.
bear_engulfEnglish → ruleIs today a bearish engulfing candle?
lowerEnglish → ruleIs the stock making lower swing highs and lower swing lows?
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
breakdown
Closed under the 20-day low
0.3233false
crows
three black crows candle: Three red bars, each closing lower and opening inside the previous body.
0.0726false
bear_engulf
Is today a bearish engulfing candle
compiled to engulfing_bear()
0.0726false
lower
Is 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.6865true
drop10
A 10% drawdown within a month
0.52953% · 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-oms
What each action would send 0 of 1 fired · dry run, nothing sent
shortrule false: skipped

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

engulfing_bear lowest swinghigh swinglow three_black_crows

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.

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

State

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

Questions

trendruleC > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)
Stacked averages: close > 20 EMA > 50 > 200
rocruleroc(C, 20) > 5
Up more than 5% in 20 sessions
eps_gruleeps_growth_yoy > 10
EPS up more than 10% on the year
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symboltrendrulerocruleeps_grulebeat_spyforecast
COP0.93280.92990.94630.60
OXY0.88280.83490.94630.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"
  }
}

ema eps_growth_yoy roc sma

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.

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