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 1–10 of 20 · page 1 of 2
Commodities trader · example 1
Is gold (GLD) in a long-term uptrend?
Read gold's trend through GLD: averages, slope and the odds of a 5% rally or drawdown within a month.
- StateGLD
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GLD"} The server fills in the latest completed session.
Questions
above_200d | English → rule | Is the stock above its 200-day moving average? |
sma200_up | rule | sma(C, 200) > ref(sma(C, 200), -20)The 200-day average is rising |
stacked | 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 |
rally5 | forecast | Will it rally at least 5% at some point in the next month? A 5% rally within a month |
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 |
|---|---|---|
above_200dIs the stock above its 200-day moving average compiled to C > sma(C, 200) | 0.0537 | false |
sma200_upThe 200-day average is rising | 0.085 | false |
stackedStacked averages: close > 20 EMA > 50 > 200 | 0.0537 | false |
rally5A 5% rally within a month | 0.503 | 50% · close to even |
drop5A 5% drawdown within a month | 0.435 | 44% · close to even |
What it means
For GLD on the session of 2026-10-30: Not true: Is the stock above its 200-day moving average; The 200-day average is rising; Stacked averages: close > 20 EMA > 50 > 200. Forecasts: A 5% rally within a month 50%; A 5% drawdown within a month 44%.
Trend rules describe the regime; the two forecasts frame the month as upside odds against downside odds.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"questions": {
"above_200d": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"sma200_up": {
"type": "yes_no",
"ask": "sma(C, 200) > ref(sma(C, 200), -20)"
},
"stacked": {
"type": "yes_no",
"ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
},
"rally5": {
"type": "yes_no",
"instructions": "Will it rally at least 5% at some point in the next month?"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"above_200d": {
"yes_no": 0.0537,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"sma200_up": {
"yes_no": 0.085,
"rule": "sma(C, 200) > ref(sma(C, 200), -20)",
"basis": "rule"
},
"stacked": {
"yes_no": 0.0537,
"rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"rally5": {
"yes_no": 0.503
},
"drop5": {
"yes_no": 0.435
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
}
}Commodities trader · example 2
Gold or silver: GLD vs SLV momentum
Silver moves more than gold in both directions. Compare momentum, volatility and trend before choosing which to hold.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GLD"} then SLV, one request each. The server fills in the latest completed session.
Questions
roc | rule | roc(C, 20) > 5Up more than 5% in 20 sessions |
atr3 | rule | atr_pct(14) > 3A typical day moves more than 3% |
trend | rule | C > sma(C, 50)Above the 50-day average |
beat_spy | forecast | Will it beat SPY over the next month? Beating SPY over a month |
Answers
| Symbol | rocrule | atr3rule | trendrule | beat_spyforecast |
|---|---|---|---|---|
GLD | 0.0839 | 0.0537 | 0.0807 | 0.544 |
SLV | 0.0656 | 0.9463 | 0.0607 | 0.466 |
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: Up more than 5% in 20 sessions: true for none of 2. A typical day moves more than 3%: true for SLV of 2. Above the 50-day average: true for none of 2. Highest odds for “Beating SPY over a month”: GLD at 54%.
If silver leads on momentum with gold also in trend, precious metals are in a risk-on phase; silver lagging is the defensive version.
Request JSON (GLD; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GLD"
},
"questions": {
"roc": {
"type": "yes_no",
"ask": "roc(C, 20) > 5"
},
"atr3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"beat_spy": {
"type": "yes_no",
"instructions": "Will it beat SPY over the next month?"
}
}
}Response JSON (GLD, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"roc": {
"yes_no": 0.0839,
"rule": "roc(C, 20) > 5",
"basis": "rule"
},
"atr3": {
"yes_no": 0.0537,
"rule": "atr_pct(14) > 3",
"basis": "rule"
},
"trend": {
"yes_no": 0.0807,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"beat_spy": {
"yes_no": 0.544
}
},
"context": {
"symbol": "GLD",
"as_of": "2026-10-30"
}
}Commodities trader · example 3
Crude oil breakout in USO, confirmed by Brent (BNO)?
A 20-day breakout in WTI is stronger when Brent confirms. Same questions, one request per fund.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"USO"} then BNO, one request each. The server fills in the latest completed session.
Questions
breakout | rule | C > highest(C, 20)20-day closing breakout |
volume | rule | C > C[-1] and V > 1.5 * ref(avg(V, 20), -1)Up on heavy volume |
adx | rule | adx(14) > 25Trending (ADX above 25) |
new_high | forecast | Will it make a new 20-day high in the next week? A new 20-day high next week |
Answers
| Symbol | breakoutrule | volumerule | adxrule | new_highforecast |
|---|---|---|---|---|
USO | 0.4362 | 0.1578 | 0.8459 | 0.551 |
BNO | 0.6215 | 0.2729 | 0.89 | 0.706 |
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: 20-day closing breakout: true for BNO of 2. Up on heavy volume: true for none of 2. Trending (ADX above 25): true for USO, BNO of 2. Highest odds for “A new 20-day high next week”: BNO at 71%.
Both funds breaking out together says the move is in global crude, not in a single contract or storage story.
Request JSON (USO; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "USO"
},
"questions": {
"breakout": {
"type": "yes_no",
"ask": "C > highest(C, 20)"
},
"volume": {
"type": "yes_no",
"ask": "C > C[-1] and V > 1.5 * ref(avg(V, 20), -1)"
},
"adx": {
"type": "yes_no",
"ask": "adx(14) > 25"
},
"new_high": {
"type": "yes_no",
"instructions": "Will it make a new 20-day high in the next week?"
}
}
}Response JSON (USO, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"breakout": {
"yes_no": 0.4362,
"rule": "C > highest(C, 20)",
"basis": "rule"
},
"volume": {
"yes_no": 0.1578,
"rule": "C > C[-1] and V > 1.5 * ref(avg(V, 20), -1)",
"basis": "rule"
},
"adx": {
"yes_no": 0.8459,
"rule": "adx(14) > 25",
"basis": "rule"
},
"new_high": {
"yes_no": 0.551
}
},
"context": {
"symbol": "USO",
"as_of": "2026-10-30"
}
}Commodities trader · example 4
Natural gas (UNG): how wild is it right now?
UNG is among the most volatile funds. Measure its volatility before sizing a trade, and the odds of a 10% drop.
- StateUNG
- Questions5 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"UNG"} The server fills in the latest completed session.
Questions
hv | English → rule | Is 20-day historical volatility above 40%? |
atr3 | rule | atr_pct(14) > 3A typical day moves more than 3% |
tr_wide | rule | tr() > 2 * ref(atr(14), -1)Today's true range more than twice yesterday's ATR |
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
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 |
|---|---|---|
hvIs 20-day historical volatility above 40% compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4 | 0.3218 | false |
atr3A typical day moves more than 3% | 0.9298 | true |
tr_wideToday's true range more than twice yesterday's ATR | 0.0537 | false |
drawdownMore than 20% off the 52-week high | 0.9463 | true |
drop10A 10% drawdown within a month | 0.632 | 63% · likely |
Actions
Rules on the answers decide what to send.
hv >= 0.6 or atr3 >= 0.6→Slackcommodities-desk{
"text": "UNG (2026-10-30): high volatility (HV over 40% 32%, ATR over 3% 93%). 10% drop odds 63%. Cut size."
}What it means
For UNG on the session of 2026-10-30: True now: A typical day moves more than 3%; More than 20% off the 52-week high. Not true: Is 20-day historical volatility above 40%; Today's true range more than twice yesterday's ATR. Forecasts: A 10% drawdown within a month 63%. Fired: size_down (Slack → commodities-desk).
When either volatility rule is true, the desk is told to size down; the drawdown rule shows how far the fund already sits from its high.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "UNG"
},
"questions": {
"hv": {
"type": "yes_no",
"instructions": "Is 20-day historical volatility above 40%?"
},
"atr3": {
"type": "yes_no",
"ask": "atr_pct(14) > 3"
},
"tr_wide": {
"type": "yes_no",
"ask": "tr() > 2 * ref(atr(14), -1)"
},
"drawdown": {
"type": "yes_no",
"ask": "C < 0.8 * max(H, 252)"
},
"drop10": {
"type": "yes_no",
"instructions": "Will it drop at least 10% at some point in the next month?"
}
},
"actions": [
{
"id": "size_down",
"when": "hv >= 0.6 or atr3 >= 0.6",
"do": "slack",
"connection": "commodities-desk",
"message": "{{symbol}} ({{as_of}}): high volatility (HV over 40% {{hv|pct}}, ATR over 3% {{atr3|pct}}). 10% drop odds {{drop10|pct}}. Cut size."
}
],
"dry_run": true
}Response JSON (UNG, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"hv": {
"yes_no": 0.3218,
"rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4",
"basis": "pattern"
},
"atr3": {
"yes_no": 0.9298,
"rule": "atr_pct(14) > 3",
"basis": "rule"
},
"tr_wide": {
"yes_no": 0.0537,
"rule": "tr() > 2 * ref(atr(14), -1)",
"basis": "rule"
},
"drawdown": {
"yes_no": 0.9463,
"rule": "C < 0.8 * max(H, 252)",
"basis": "rule"
},
"drop10": {
"yes_no": 0.632
}
},
"context": {
"symbol": "UNG",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "size_down",
"fired": true,
"status": "dry_run",
"do": "slack",
"connection": "commodities-desk",
"preview": {
"text": "UNG (2026-10-30): high volatility (HV over 40% 32%, ATR over 3% 93%). 10% drop odds 63%. Cut size."
}
}
]
}Commodities trader · example 5
Gold miners GDX and GDXJ: leverage to gold working?
Miners should beat gold when gold rises. Check the miners' trend, momentum and volume behind the move.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"GDX"} then GDXJ, one request each. The server fills in the latest completed session.
Questions
trend | rule | sma(C, 50) > sma(C, 200)50-day above the 200-day |
momentum | rule | roc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)Momentum with participation |
obv | rule | obv() > sma(obv(), 20)On-balance volume above its 20-day average |
rally10 | forecast | Will it rally at least 10% at some point in the next month? A 10% rally within a month |
Answers
| Symbol | trendrule | momentumrule | obvrule | rally10forecast |
|---|---|---|---|---|
GDX | 0.6459 | 0.1025 | 0.2083 | 0.649 |
GDXJ | 0.3749 | 0.0916 | 0.1665 | 0.741 |
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: 50-day above the 200-day: true for GDX of 2. Momentum with participation: true for none of 2. On-balance volume above its 20-day average: true for none of 2. Highest odds for “A 10% rally within a month”: GDXJ at 74%.
Miners in trend with rising on-balance volume confirm a gold rally; miners lagging a rising gold price is a warning about the move.
Request JSON (GDX; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "GDX"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "sma(C, 50) > sma(C, 200)"
},
"momentum": {
"type": "yes_no",
"ask": "roc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)"
},
"obv": {
"type": "yes_no",
"ask": "obv() > sma(obv(), 20)"
},
"rally10": {
"type": "yes_no",
"instructions": "Will it rally at least 10% at some point in the next month?"
}
}
}Response JSON (GDX, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.6459,
"rule": "sma(C, 50) > sma(C, 200)",
"basis": "rule"
},
"momentum": {
"yes_no": 0.1025,
"rule": "roc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)",
"basis": "rule"
},
"obv": {
"yes_no": 0.2083,
"rule": "obv() > sma(obv(), 20)",
"basis": "rule"
},
"rally10": {
"yes_no": 0.649
}
},
"context": {
"symbol": "GDX",
"as_of": "2026-10-30"
}
}Commodities trader · example 6
Copper (COPX, FCX, SCCO): is the cycle turning up?
Copper is a read on industry. Check miners for higher swing lows, a reclaim of the 50-day and momentum.
- State3 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"COPX"} then FCX, SCCO, one request each. The server fills in the latest completed session.
Questions
higher_lows | rule | swinglow(3) > swinglow(3, 2)Higher swing lows |
reclaim | rule | crossup(C, sma(C, 50))Crossed above the 50-day today |
hh_hl | English → rule | Is the stock making higher swing highs and higher swing lows? |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Symbol | higher_lowsrule | reclaimrule | hh_hlrule | up_weekforecast |
|---|---|---|---|---|
COPX | 0.0842 | 0.05 | 0.2347 | 0.561 |
FCX | 0.2658 | 0.05 | 0.4376 | 0.575 |
SCCO | 0.1054 | 0.05 | 0.4486 | 0.589 |
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: Higher swing lows: true for none of 3. Crossed above the 50-day today: true for none of 3. Is the stock making higher swing highs and higher swing lows: true for none of 3. Highest odds for “Higher in a week”: SCCO at 59%.
Higher swing lows across all three is the early sign of a cycle turn; a reclaim of the 50-day adds confirmation.
Request JSON (COPX; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "COPX"
},
"questions": {
"higher_lows": {
"type": "yes_no",
"ask": "swinglow(3) > swinglow(3, 2)"
},
"reclaim": {
"type": "yes_no",
"ask": "crossup(C, sma(C, 50))"
},
"hh_hl": {
"type": "yes_no",
"instructions": "Is the stock making higher swing highs and higher swing lows?"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (COPX, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"higher_lows": {
"yes_no": 0.0842,
"rule": "swinglow(3) > swinglow(3, 2)",
"basis": "rule"
},
"reclaim": {
"yes_no": 0.05,
"rule": "crossup(C, sma(C, 50))",
"basis": "rule"
},
"hh_hl": {
"yes_no": 0.2347,
"rule": "(swinghigh(5, 1) > swinghigh(5, 2)) and (swinglow(5, 1) > swinglow(5, 2))",
"basis": "pattern"
},
"up_week": {
"yes_no": 0.561
}
},
"context": {
"symbol": "COPX",
"as_of": "2026-10-30"
}
}Commodities trader · example 7
XOM and CVX: dividends, earnings and trend
For an energy income position, check the dividend record, the last earnings and the price trend of the two majors.
- State2 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"XOM"} then CVX, one request each. The server fills in the latest completed session.
Questions
yield3 | rule | div_yield_ttm > 3Yield above 3% |
grower | rule | years_of_growth >= 10Ten years of dividend growth |
beat | English → rule | Did the stock beat EPS estimates last quarter? |
trend | English → rule | Is the stock above its 200-day moving average? |
raise | forecast | Will the company raise its dividend next year? Raising the dividend next year |
Answers
| Symbol | yield3rule | growerrule | beatrule | trendrule | raiseforecast |
|---|---|---|---|---|---|
XOM | 0.0537 | 0.0537 | 0.8591 | 0.9463 | 0.569 |
CVX | 0.4906 | 0.1409 | 0.8591 | 0.9463 | 0.563 |
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: Yield above 3%: true for none of 2. Ten years of dividend growth: true for none of 2. Did the stock beat EPS estimates last quarter: true for XOM, CVX of 2. Is the stock above its 200-day moving average: true for XOM, CVX of 2. Highest odds for “Raising the dividend next year”: XOM at 57%.
Dividend facts and earnings facts come from the records; the trend says whether the market agrees with the income case.
Request JSON (XOM; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "XOM"
},
"questions": {
"yield3": {
"type": "yes_no",
"ask": "div_yield_ttm > 3"
},
"grower": {
"type": "yes_no",
"ask": "years_of_growth >= 10"
},
"beat": {
"type": "yes_no",
"instructions": "Did the stock beat EPS estimates last quarter?"
},
"trend": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"raise": {
"type": "yes_no",
"instructions": "Will the company raise its dividend next year?"
}
}
}Response JSON (XOM, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"yield3": {
"yes_no": 0.0537,
"rule": "div_yield_ttm > 3",
"basis": "rule"
},
"grower": {
"yes_no": 0.0537,
"rule": "years_of_growth >= 10",
"basis": "rule"
},
"beat": {
"yes_no": 0.8591,
"rule": "beat_eps_last > 0.5",
"basis": "pattern"
},
"trend": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"raise": {
"yes_no": 0.569
}
},
"context": {
"symbol": "XOM",
"as_of": "2026-10-30"
}
}Commodities trader · example 8
Agriculture (DBA): reversal candles at the lows
Look for bottoming candles in the agriculture fund after a decline: hammer, inverted hammer, dragonfly doji.
- StateDBA
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"DBA"} The server fills in the latest completed session.
Questions
hammer | rule | hammer()hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back. |
inv_hammer | rule | inverted_hammer()inverted hammer candle: Shooting-star shape after a five-bar decline. |
dragonfly | rule | dragonfly_doji()dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick. |
near_low | rule | C < 1.03 * min(L, 60)Within 3% of the 60-day low |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
hammerhammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back. | 0.0779 | false |
inv_hammerinverted hammer candle: Shooting-star shape after a five-bar decline. | 0.0858 | false |
dragonflydragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick. | 0.0614 | false |
near_lowWithin 3% of the 60-day low | 0.8378 | true |
up_weekHigher in a week | 0.62 | 62% · likely |
What it means
For DBA on the session of 2026-10-30: True now: Within 3% of the 60-day low. Not true: hammer candle: Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back.; inverted hammer candle: Shooting-star shape after a five-bar decline.; dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.. Forecasts: Higher in a week 62%.
A bottoming candle near the low is worth watching; without the low nearby, the same candle means little.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "DBA"
},
"questions": {
"hammer": {
"type": "yes_no",
"ask": "hammer()"
},
"inv_hammer": {
"type": "yes_no",
"ask": "inverted_hammer()"
},
"dragonfly": {
"type": "yes_no",
"ask": "dragonfly_doji()"
},
"near_low": {
"type": "yes_no",
"ask": "C < 1.03 * min(L, 60)"
},
"up_week": {
"type": "yes_no",
"instructions": "Will the stock be higher in a week?"
}
}
}Response JSON (DBA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"hammer": {
"yes_no": 0.0779,
"rule": "hammer()",
"basis": "rule"
},
"inv_hammer": {
"yes_no": 0.0858,
"rule": "inverted_hammer()",
"basis": "rule"
},
"dragonfly": {
"yes_no": 0.0614,
"rule": "dragonfly_doji()",
"basis": "rule"
},
"near_low": {
"yes_no": 0.8378,
"rule": "C < 1.03 * min(L, 60)",
"basis": "rule"
},
"up_week": {
"yes_no": 0.62
}
},
"context": {
"symbol": "DBA",
"as_of": "2026-10-30"
}
}Commodities trader · example 9
Broad commodities (DBC, PDBC): risk-on or risk-off?
Two broad baskets with identical questions, to read whether commodities as a group are trending.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"DBC"} then PDBC, one request each. The server fills in the latest completed session.
Questions
trend | rule | C > sma(C, 50)Above the 50-day average |
long | English → rule | Is the stock above its 200-day moving average? |
macd | rule | macd(C) > macdsignal(C)MACD above its signal line |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | trendrule | longrule | macdrule | drop5forecast |
|---|---|---|---|---|
DBC | 0.8888 | 0.9463 | 0.3099 | 0.351 |
PDBC | 0.8811 | 0.9463 | 0.3059 | 0.331 |
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 DBC, PDBC of 2. Is the stock above its 200-day moving average: true for DBC, PDBC of 2. MACD above its signal line: true for none of 2. Highest odds for “A 5% drawdown within a month”: DBC at 35%.
Both baskets above both averages is a commodity bull regime; mixed answers usually mean energy and metals disagree.
Request JSON (DBC; the others differ only in the symbol)
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "DBC"
},
"questions": {
"trend": {
"type": "yes_no",
"ask": "C > sma(C, 50)"
},
"long": {
"type": "yes_no",
"instructions": "Is the stock above its 200-day moving average?"
},
"macd": {
"type": "yes_no",
"ask": "macd(C) > macdsignal(C)"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
}
}Response JSON (DBC, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"trend": {
"yes_no": 0.8888,
"rule": "C > sma(C, 50)",
"basis": "rule"
},
"long": {
"yes_no": 0.9463,
"rule": "C > sma(C, 200)",
"basis": "comparison"
},
"macd": {
"yes_no": 0.3099,
"rule": "macd(C) > macdsignal(C)",
"basis": "rule"
},
"drop5": {
"yes_no": 0.351
}
},
"context": {
"symbol": "DBC",
"as_of": "2026-10-30"
}
}Commodities trader · example 10
Uranium (URA): buy the pullback in a trend?
A pullback-in-uptrend entry for the uranium ETF, with a stop distance check before ordering.
- StateURA
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"URA"} The server fills in the latest completed session.
Questions
entry | rule | (C > sma(C, 50)) and (sma(C, 50) > sma(C, 200)) and (L <= sma(C, 20) * 1.01) and (C >= sma(C, 20))Uptrend pullback to the 20-day (entry zone) |
stop | English → rule | Is a stop below the last swing low less than 1.5 ATR away? |
rsi_dip | rule | C > sma(C, 200) and rsi(C, 14) < 40Pullback in an uptrend: above the 200-day, RSI under 40 |
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 |
|---|---|---|
entryUptrend pullback to the 20-day (entry zone) | 0.0537 | false |
stopIs a stop below the last swing low less than 1.5 ATR away compiled to (C > swinglow(5, 1)) and (C - swinglow(5, 1) < 1.5 * atr(14)) | 0.0916 | false |
rsi_dipPullback in an uptrend: above the 200-day, RSI under 40 | 0.0537 | false |
drop5A 5% drawdown within a month | 0.691 | 69% · likely |
Actions
Rules on the answers decide what to send.
entry >= 0.6 and stop >= 0.6→Webhookmy-omsrsi_dip >= 0.6→Slackcommodities-deskWhat it means
For URA on the session of 2026-10-30: Not true: Uptrend pullback to the 20-day (entry zone); Is a stop below the last swing low less than 1.5 ATR away; Pullback in an uptrend: above the 200-day, RSI under 40. Forecasts: A 5% drawdown within a month 69%. No action fired: every rule was false.
An order goes out only when the entry zone and a close stop line up; a dip without both is a watch note.
Request JSON
{
"model": "ora-fin-0.1.1",
"state": {
"symbol": "URA"
},
"questions": {
"entry": {
"type": "yes_no",
"ask": "(C > sma(C, 50)) and (sma(C, 50) > sma(C, 200)) and (L <= sma(C, 20) * 1.01) and (C >= sma(C, 20))"
},
"stop": {
"type": "yes_no",
"instructions": "Is a stop below the last swing low less than 1.5 ATR away?"
},
"rsi_dip": {
"type": "yes_no",
"ask": "C > sma(C, 200) and rsi(C, 14) < 40"
},
"drop5": {
"type": "yes_no",
"instructions": "Will it drop at least 5% at some point in the next month?"
}
},
"actions": [
{
"id": "order",
"when": "entry >= 0.6 and stop >= 0.6",
"do": "webhook",
"connection": "my-oms",
"body": {
"symbol": "{{symbol}}",
"side": "buy",
"type": "limit",
"signal": "pullback_entry",
"p_entry": "{{entry}}",
"p_stop_close": "{{stop}}",
"as_of": "{{as_of}}"
}
},
{
"id": "watch",
"when": "rsi_dip >= 0.6",
"do": "slack",
"connection": "commodities-desk",
"message": "{{symbol}} ({{as_of}}): dip in an uptrend, but no clean entry yet (entry {{entry|pct}}, stop close {{stop|pct}})."
}
],
"dry_run": true
}Response JSON (URA, real)
{
"model": "ora-fin-0.1.1",
"answers": {
"entry": {
"yes_no": 0.0537,
"rule": "(C > sma(C, 50)) and (sma(C, 50) > sma(C, 200)) and (L <= sma(C, 20) * 1.01) and (C >= sma(C, 20))",
"basis": "rule"
},
"stop": {
"yes_no": 0.0916,
"rule": "(C > swinglow(5, 1)) and (C - swinglow(5, 1) < 1.5 * atr(14))",
"basis": "pattern"
},
"rsi_dip": {
"yes_no": 0.0537,
"rule": "C > sma(C, 200) and rsi(C, 14) < 40",
"basis": "rule"
},
"drop5": {
"yes_no": 0.691
}
},
"context": {
"symbol": "URA",
"as_of": "2026-10-30"
},
"actions": [
{
"id": "order",
"fired": false,
"status": "skipped"
},
{
"id": "watch",
"fired": false,
"status": "skipped"
}
]
}Information, not investment advice. Rules answer from the latest completed daily session; forecasts are probabilities. Actions ran as dry runs: nothing was sent. More in Individuals: Retail investor, Active day trader, Swing trader, Options trader, Dividend investor, Long-term passive investor, Crypto trader, FX trader, Social trading community, Students and universities.