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

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

State

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

Questions

above_200dEnglish → ruleIs the stock above its 200-day moving average?
sma200_uprulesma(C, 200) > ref(sma(C, 200), -20)
The 200-day average is rising
stackedruleC > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)
Stacked averages: close > 20 EMA > 50 > 200
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
above_200d
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.0537false
sma200_up
The 200-day average is rising
0.085false
stacked
Stacked averages: close > 20 EMA > 50 > 200
0.0537false
rally5
A 5% rally within a month
0.50350% · close to even
drop5
A 5% drawdown within a month
0.43544% · 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"
  }
}

ema ref sma

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.

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

State

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

Questions

rocruleroc(C, 20) > 5
Up more than 5% in 20 sessions
atr3ruleatr_pct(14) > 3
A typical day moves more than 3%
trendruleC > sma(C, 50)
Above the 50-day average
beat_spyforecastWill it beat SPY over the next month?
Beating SPY over a month

Answers

Symbolrocruleatr3ruletrendrulebeat_spyforecast
GLD0.08390.05370.08070.544
SLV0.06560.94630.06070.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"
  }
}

atr_pct roc sma

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.

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

State

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

Questions

breakoutruleC > highest(C, 20)
20-day closing breakout
volumeruleC > C[-1] and V > 1.5 * ref(avg(V, 20), -1)
Up on heavy volume
adxruleadx(14) > 25
Trending (ADX above 25)
new_highforecastWill it make a new 20-day high in the next week?
A new 20-day high next week

Answers

Symbolbreakoutrulevolumeruleadxrulenew_highforecast
USO0.43620.15780.84590.551
BNO0.62150.27290.890.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"
  }
}

adx avg highest offset ref

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.

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

State

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

Questions

hvEnglish → ruleIs 20-day historical volatility above 40%?
atr3ruleatr_pct(14) > 3
A typical day moves more than 3%
tr_wideruletr() > 2 * ref(atr(14), -1)
Today's true range more than twice yesterday's ATR
drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
drop10forecastWill it drop at least 10% at some point in the next month?
A 10% drawdown within a month

Answers

QuestionAnswerReading
hv
Is 20-day historical volatility above 40%
compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4
0.3218false
atr3
A typical day moves more than 3%
0.9298true
tr_wide
Today's true range more than twice yesterday's ATR
0.0537false
drawdown
More than 20% off the 52-week high
0.9463true
drop10
A 10% drawdown within a month
0.63263% · likely

Actions

Rules on the answers decide what to send.

hv >= 0.6 or atr3 >= 0.6→Slackcommodities-desk
What each action would send 1 of 1 fired · dry run, nothing sent
size_downwould send (dry run)Slack → commodities-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."
      }
    }
  ]
}

atr atr_pct log max offset ref sqrt std tr

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.

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

State

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

Questions

trendrulesma(C, 50) > sma(C, 200)
50-day above the 200-day
momentumruleroc(C, 20) > 5 and V > avg(V, 50) and C > sma(C, 50)
Momentum with participation
obvruleobv() > sma(obv(), 20)
On-balance volume above its 20-day average
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month

Answers

Symboltrendrulemomentumruleobvrulerally10forecast
GDX0.64590.10250.20830.649
GDXJ0.37490.09160.16650.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"
  }
}

avg obv roc sma

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.

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

State

{"symbol":"COPX"} then FCX, SCCO, one request each. The server fills in the latest completed session.

Questions

higher_lowsruleswinglow(3) > swinglow(3, 2)
Higher swing lows
reclaimrulecrossup(C, sma(C, 50))
Crossed above the 50-day today
hh_hlEnglish → ruleIs the stock making higher swing highs and higher swing lows?
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symbolhigher_lowsrulereclaimrulehh_hlruleup_weekforecast
COPX0.08420.050.23470.561
FCX0.26580.050.43760.575
SCCO0.10540.050.44860.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"
  }
}

crossup sma swinghigh swinglow

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.

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

State

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

Questions

yield3rulediv_yield_ttm > 3
Yield above 3%
growerruleyears_of_growth >= 10
Ten years of dividend growth
beatEnglish → ruleDid the stock beat EPS estimates last quarter?
trendEnglish → ruleIs the stock above its 200-day moving average?
raiseforecastWill the company raise its dividend next year?
Raising the dividend next year

Answers

Symbolyield3rulegrowerrulebeatruletrendruleraiseforecast
XOM0.05370.05370.85910.94630.569
CVX0.49060.14090.85910.94630.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"
  }
}

beat_eps_last div_yield_ttm sma years_of_growth

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.

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

State

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

Questions

hammerrulehammer()
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_hammerruleinverted_hammer()
inverted hammer candle: Shooting-star shape after a five-bar decline.
dragonflyruledragonfly_doji()
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
near_lowruleC < 1.03 * min(L, 60)
Within 3% of the 60-day low
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
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.
0.0779false
inv_hammer
inverted hammer candle: Shooting-star shape after a five-bar decline.
0.0858false
dragonfly
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
0.0614false
near_low
Within 3% of the 60-day low
0.8378true
up_week
Higher in a week
0.6262% · 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"
  }
}

dragonfly_doji hammer inverted_hammer min

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.

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

State

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

Questions

trendruleC > sma(C, 50)
Above the 50-day average
longEnglish → ruleIs the stock above its 200-day moving average?
macdrulemacd(C) > macdsignal(C)
MACD above its signal line
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

Symboltrendrulelongrulemacdruledrop5forecast
DBC0.88880.94630.30990.351
PDBC0.88110.94630.30590.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"
  }
}

macd macdsignal sma

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.

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

State

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

Questions

entryrule(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)
stopEnglish → ruleIs a stop below the last swing low less than 1.5 ATR away?
rsi_dipruleC > sma(C, 200) and rsi(C, 14) < 40
Pullback in an uptrend: above the 200-day, RSI under 40
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
entry
Uptrend pullback to the 20-day (entry zone)
0.0537false
stop
Is 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.0916false
rsi_dip
Pullback in an uptrend: above the 200-day, RSI under 40
0.0537false
drop5
A 5% drawdown within a month
0.69169% · likely

Actions

Rules on the answers decide what to send.

entry >= 0.6 and stop >= 0.6→Webhookmy-oms
rsi_dip >= 0.6→Slackcommodities-desk
What each action would send 0 of 2 fired · dry run, nothing sent
orderrule false: skipped
watchrule false: skipped

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

atr rsi sma swinglow

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.