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 · Corporates

Financial journalist / media: 20 ways to use Ora

Fact-checked market color: what is true today, in plain words, with the rule behind it. Each example is a complete, runnable request with the real answers it returned (43 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 (51)

offset 11ref 7abs 5sma 5max 4avg 4beat_eps_last 3beat_revenue_last 3atr 3highest 2last_earnings_move 2years_of_growth 2highestbars 1beat_streak 1eps_growth_yoy 1eps_surprise_pct 1min 1zscore 1days_since_earnings 1last_earnings_gap 1pre_earnings_close 1cut_last 1days_since_ex_div 1div_change_pct 1pays_dividend 1days_since_split 1days_to_split 1last_split_ratio 1reverse_split_last 1dragonfly_doji 1engulfing_bear 1evening_star 1gap_up 1outside_bar 1roc 1adx 1days_to_earnings 1next_report_amc 1log 1sqrt 1std 1hlc3 1obv 1sum 1three_white_soldiers 1lowest 1rsi 1div_yield_ttm 1raised_last 1bbupper 1ema 1

Examples 11–20 of 20 · page 2 of 2

Financial journalist / media · example 11

Fact check: what kind of day did GLD have?

When a commodity story calls a session a "reversal", check the candle against defined patterns.

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

State

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

Questions

engulf_bearruleengulfing_bear()
engulfing bear candle: A red body that engulfs yesterday's green body.
eveningruleevening_star()
evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.
gap_uprulegap_up()
gap up candle: Today's whole range is above yesterday's high: an unfilled gap up.
dragonflyruledragonfly_doji()
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
outsideEnglish → ruleIs today an outside day?
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
engulf_bear
engulfing bear candle: A red body that engulfs yesterday's green body.
0.0907false
evening
evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.
0.1476false
gap_up
gap up candle: Today's whole range is above yesterday's high: an unfilled gap up.
0.0541false
dragonfly
dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.
0.0579false
outside
Is today an outside day
compiled to outside_bar()
0.0823false
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: engulfing bear candle: A red body that engulfs yesterday's green body.; evening star candle: A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.; gap up candle: Today's whole range is above yesterday's high: an unfilled gap up.; dragonfly doji candle: Doji with a long lower wick (60%+ of the range) and almost no upper wick.; Is today an outside day. Forecasts: A 5% drawdown within a month 44%.

If no reversal pattern is true, the story avoids the word; an outside day or engulfing candle supports it.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "GLD"
  },
  "questions": {
    "engulf_bear": {
      "type": "yes_no",
      "ask": "engulfing_bear()"
    },
    "evening": {
      "type": "yes_no",
      "ask": "evening_star()"
    },
    "gap_up": {
      "type": "yes_no",
      "ask": "gap_up()"
    },
    "dragonfly": {
      "type": "yes_no",
      "ask": "dragonfly_doji()"
    },
    "outside": {
      "type": "yes_no",
      "instructions": "Is today an outside day?"
    },
    "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": {
    "engulf_bear": {
      "yes_no": 0.0907,
      "rule": "engulfing_bear()",
      "basis": "rule"
    },
    "evening": {
      "yes_no": 0.1476,
      "rule": "evening_star()",
      "basis": "rule"
    },
    "gap_up": {
      "yes_no": 0.0541,
      "rule": "gap_up()",
      "basis": "rule"
    },
    "dragonfly": {
      "yes_no": 0.0579,
      "rule": "dragonfly_doji()",
      "basis": "rule"
    },
    "outside": {
      "yes_no": 0.0823,
      "rule": "outside_bar()",
      "basis": "pattern"
    },
    "drop5": {
      "yes_no": 0.435
    }
  },
  "context": {
    "symbol": "GLD",
    "as_of": "2026-10-30"
  }
}

dragonfly_doji engulfing_bear evening_star gap_up outside_bar

Financial journalist / media · example 12

Weekly sector wrap: which sector ETFs led?

For the Friday wrap, check each sector ETF's week and month so the leader board is factual.

ora-fin-0.1.16 symbols, one request each3 questions1 actionworkflow · Fri at 16:20 ET
  1. ScheduleFri at 16:20 ET
  2. State6 symbols
  3. Questions3 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

{"symbol":"XLK"} then XLE, XLF, XLV, XLY, XLU, one request each. The server fills in the latest completed session.

Questions

down_weekEnglish → ruleIs the stock down over the last week?
up_monthEnglish → ruleIs the stock up over the last month?
rocruleroc(C, 5) > 2
Up more than 2% over five sessions

Answers

Symboldown_weekruleup_monthrulerocruleFired
XLK0.78110.06540.1102none
XLE0.29340.94190.3082none
XLF0.20090.90090.2309none
XLV0.09730.94540.7409wrap_line
XLY0.12270.89440.5065none
XLU0.1620.92590.5131none

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.

roc >= 0.6→Emailweekend-editor
XLK 0 of 1 fired · dry run, nothing sent
XLE 0 of 1 fired · dry run, nothing sent
XLF 0 of 1 fired · dry run, nothing sent
XLV 1 of 1 fired · dry run, nothing sent
wrap_linewould send (dry run)Email → weekend-editor
{
  "subject": "Sector wrap: XLV up over 2% this week",
  "text": "XLV (2026-10-30): up more than 2% over five sessions (74%); up on the month 95%."
}
XLY 0 of 1 fired · dry run, nothing sent
XLU 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 6 symbols: Is the stock down over the last week: true for XLK of 6. Is the stock up over the last month: true for XLE, XLF, XLV, XLY, XLU of 6. Up more than 2% over five sessions: true for XLV of 6. wrap_line fired for XLV.

Only sectors with a verified weekly gain get a line, which becomes the lead of the weekend wrap.

As a scheduled workflow (Fri at 16:20 ET)

Create it under Workflows in the console: it runs these questions for every symbol on the schedule and fires the actions per symbol. The answers above are what one run returned.

{
  "name": "Weekly sector wrap: which sector ETFs led?",
  "symbols": "XLK XLE XLF XLV XLY XLU",
  "days": [
    5
  ],
  "at_time": "16:20",
  "model": "ora-fin-0.1.1",
  "questions": {
    "down_week": {
      "type": "yes_no",
      "instructions": "Is the stock down over the last week?"
    },
    "up_month": {
      "type": "yes_no",
      "instructions": "Is the stock up over the last month?"
    },
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 5) > 2"
    }
  },
  "actions": [
    {
      "id": "wrap_line",
      "when": "roc >= 0.6",
      "do": "email",
      "connection": "weekend-editor",
      "subject": "Sector wrap: {{symbol}} up over 2% this week",
      "message": "{{symbol}} ({{as_of}}): up more than 2% over five sessions ({{roc|pct}}); up on the month {{up_month|pct}}."
    }
  ]
}
Request JSON (XLK; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "XLK"
  },
  "questions": {
    "down_week": {
      "type": "yes_no",
      "instructions": "Is the stock down over the last week?"
    },
    "up_month": {
      "type": "yes_no",
      "instructions": "Is the stock up over the last month?"
    },
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 5) > 2"
    }
  },
  "actions": [
    {
      "id": "wrap_line",
      "when": "roc >= 0.6",
      "do": "email",
      "connection": "weekend-editor",
      "subject": "Sector wrap: {{symbol}} up over 2% this week",
      "message": "{{symbol}} ({{as_of}}): up more than 2% over five sessions ({{roc|pct}}); up on the month {{up_month|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (XLK, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "down_week": {
      "yes_no": 0.7811,
      "rule": "C < C[-5]",
      "basis": "pattern"
    },
    "up_month": {
      "yes_no": 0.0654,
      "rule": "C > C[-21]",
      "basis": "pattern"
    },
    "roc": {
      "yes_no": 0.1102,
      "rule": "roc(C, 5) > 2",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "XLK",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "wrap_line",
      "fired": false,
      "status": "skipped"
    }
  ]
}

offset roc

Financial journalist / media · example 13

Fact check: is oil (USO) breaking out?

A commodities reporter checks whether the oil fund broke out on volume before writing "surge".

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

State

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

Questions

breakoutruleC > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)
20-day breakout on 1.5× volume
high20ruleH > highest(H, 20)
Took out the 20-day high intraday
up2English → ruleDid the stock rise more than 2% today?
adxruleadx(14) > 25
Trending (ADX above 25)
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

Symbolbreakoutrulehigh20ruleup2ruleadxrulerally5forecast
USO0.15780.64860.20350.84590.658
XLE0.06920.62260.4540.07080.491

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 breakout on 1.5× volume: true for none of 2. Took out the 20-day high intraday: true for USO, XLE of 2. Did the stock rise more than 2% today: true for none of 2. Trending (ADX above 25): true for USO of 2. Highest odds for “A 5% rally within a month”: USO at 66%.

"Breakout" needs the breakout rule; a 2% up day alone supports "rose", not "surged".

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) and V > 1.5 * ref(avg(V, 20), -1)"
    },
    "high20": {
      "type": "yes_no",
      "ask": "H > highest(H, 20)"
    },
    "up2": {
      "type": "yes_no",
      "instructions": "Did the stock rise more than 2% today?"
    },
    "adx": {
      "type": "yes_no",
      "ask": "adx(14) > 25"
    },
    "rally5": {
      "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": {
    "breakout": {
      "yes_no": 0.1578,
      "rule": "C > highest(C, 20) and V > 1.5 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "high20": {
      "yes_no": 0.6486,
      "rule": "H > highest(H, 20)",
      "basis": "rule"
    },
    "up2": {
      "yes_no": 0.2035,
      "rule": "C / C[-1] - 1 > 0.02",
      "basis": "pattern"
    },
    "adx": {
      "yes_no": 0.8459,
      "rule": "adx(14) > 25",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.658
    }
  },
  "context": {
    "symbol": "USO",
    "as_of": "2026-10-30"
  }
}

adx avg highest offset ref

Financial journalist / media · example 14

Earnings preview: who reports in the next two weeks?

Build the earnings-preview list from calendar facts, with last quarter's record for each name.

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

State

{"symbol":"AAPL"} then AMZN, MSFT, AMD, one request each. The server fills in the latest completed session.

Questions

soonEnglish → ruleIs earnings in the next 14 days?
amcEnglish → ruleDoes the stock report after the close next time?
beatEnglish → ruleDid the stock beat on both EPS and revenue last quarter?
bigruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%
beat_nextforecastWill the stock beat earnings next quarter?
Beating earnings next quarter

Answers

Symbolsoonruleamcrulebeatrulebigrulebeat_nextforecast
AAPL0.94630.85910.85910.94630.545
AMZN0.05370.85910.14090.05370.476
MSFT0.05370.85910.85910.05370.528
AMD0.94630.85910.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, 4 symbols: Is earnings in the next 14 days: true for AAPL, AMD of 4. Does the stock report after the close next time: true for AAPL, AMZN, MSFT, AMD of 4. Did the stock beat on both EPS and revenue last quarter: true for AAPL, MSFT, AMD of 4. Last earnings move bigger than 5%: true for AAPL, AMD of 4. Highest odds for “Beating earnings next quarter”: AMD at 56%.

The preview lists only names with a report inside the window, and labels the beat-next-quarter odds as a forecast.

Request JSON (AAPL; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "soon": {
      "type": "yes_no",
      "instructions": "Is earnings in the next 14 days?"
    },
    "amc": {
      "type": "yes_no",
      "instructions": "Does the stock report after the close next time?"
    },
    "beat": {
      "type": "yes_no",
      "instructions": "Did the stock beat on both EPS and revenue last quarter?"
    },
    "big": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) > 5"
    },
    "beat_next": {
      "type": "yes_no",
      "instructions": "Will the stock beat earnings next quarter?"
    }
  }
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "soon": {
      "yes_no": 0.9463,
      "rule": "days_to_earnings <= 14",
      "basis": "pattern"
    },
    "amc": {
      "yes_no": 0.8591,
      "rule": "next_report_amc > 0.5",
      "basis": "pattern"
    },
    "beat": {
      "yes_no": 0.8591,
      "rule": "beat_eps_last > 0.5 and beat_revenue_last > 0.5",
      "basis": "pattern"
    },
    "big": {
      "yes_no": 0.9463,
      "rule": "abs(last_earnings_move) > 5",
      "basis": "rule"
    },
    "beat_next": {
      "yes_no": 0.545
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  }
}

abs beat_eps_last beat_revenue_last days_to_earnings last_earnings_move next_report_amc

Financial journalist / media · example 15

Fact check: are the bitcoin ETFs (IBIT, FBTC) at highs or in a slump?

A crypto reporter checks the listed bitcoin funds before describing the market.

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

State

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

Questions

near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
drawdownruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
trendEnglish → ruleIs the stock above its 50-day moving average?
hvEnglish → ruleIs 20-day historical volatility above 40%?
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

Symbolnear_highruledrawdownruletrendrulehvrulebig5forecast
IBIT0.05370.90820.16490.13830.363
FBTC0.05370.90740.16930.13140.394

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: Within 2% of the 52-week high: true for none of 2. More than 20% off the 52-week high: true for IBIT, FBTC of 2. Is the stock above its 50-day moving average: true for none of 2. Is 20-day historical volatility above 40%: true for none of 2. Highest odds for “A big move either way in 5 days”: FBTC at 39%.

Both funds should agree; the article describes the state the rules support and keeps the forecast as odds.

Request JSON (IBIT; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IBIT"
  },
  "questions": {
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "drawdown": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "trend": {
      "type": "yes_no",
      "instructions": "Is the stock above its 50-day moving average?"
    },
    "hv": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility above 40%?"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  }
}
Response JSON (IBIT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "near_high": {
      "yes_no": 0.0537,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "drawdown": {
      "yes_no": 0.9082,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.1649,
      "rule": "C > sma(C, 50)",
      "basis": "comparison"
    },
    "hv": {
      "yes_no": 0.1383,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) > 0.4",
      "basis": "pattern"
    },
    "big5": {
      "yes_no": 0.363
    }
  },
  "context": {
    "symbol": "IBIT",
    "as_of": "2026-10-30"
  }
}

log max offset sma sqrt std

Financial journalist / media · example 16

Breaking-news desk: alert on large opening gaps

Post to the newsroom's Teams channel when a widely-held stock gapped more than one ATR at the open.

ora-fin-0.1.1AAPL5 questions2 actions
  1. StateAAPL
  2. Questions5 asked
  3. Answersreal, captured
  4. Actions2 rules · dry run

State

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

Questions

gap_atrruleabs(O - C[-1]) > ref(atr(14), -1)
Opened more than one ATR away from yesterday's close
gap_upruleO > C[-1] * 1.01
Opened more than 1% above yesterday's close
gap_dnruleO < C[-1] * 0.99
Opened more than 1% below yesterday's close
fadedruleO > C[-1] and C < C[-1]
Gapped up but closed under yesterday's close
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
gap_atr
Opened more than one ATR away from yesterday's close
0.0637false
gap_up
Opened more than 1% above yesterday's close
0.06false
gap_dn
Opened more than 1% below yesterday's close
0.2378false
faded
Gapped up but closed under yesterday's close
0.1532false
big5
A big move either way in 5 days
0.40941% · close to even

Actions

Rules on the answers decide what to send.

gap_atr >= 0.6→Webhookteams-newsroom
else→Slackmarkets-desk
What each action would send 1 of 2 fired · dry run, nothing sent
teams_alertrule false: skipped
quietwould send (dry run)Slack → markets-desk
{
  "text": "AAPL (2026-10-30): normal open (gap over 1 ATR 6%)."
}

What it means

For AAPL on the session of 2026-10-30: Not true: Opened more than one ATR away from yesterday's close; Opened more than 1% above yesterday's close; Opened more than 1% below yesterday's close; Gapped up but closed under yesterday's close. Forecasts: A big move either way in 5 days 41%. Fired: quiet (Slack → markets-desk).

Large gaps usually mean news; the alert sends reporters looking for it.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "gap_atr": {
      "type": "yes_no",
      "ask": "abs(O - C[-1]) > ref(atr(14), -1)"
    },
    "gap_up": {
      "type": "yes_no",
      "ask": "O > C[-1] * 1.01"
    },
    "gap_dn": {
      "type": "yes_no",
      "ask": "O < C[-1] * 0.99"
    },
    "faded": {
      "type": "yes_no",
      "ask": "O > C[-1] and C < C[-1]"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "teams_alert",
      "when": "gap_atr >= 0.6",
      "do": "webhook",
      "connection": "teams-newsroom",
      "body": {
        "text": "{{symbol}} ({{as_of}}): opening gap larger than 1 ATR. Up 1% {{gap_up|pct}}, down 1% {{gap_dn|pct}}, faded {{faded|pct}}."
      }
    },
    {
      "id": "quiet",
      "when": "else",
      "do": "slack",
      "connection": "markets-desk",
      "message": "{{symbol}} ({{as_of}}): normal open (gap over 1 ATR {{gap_atr|pct}})."
    }
  ],
  "dry_run": true
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "gap_atr": {
      "yes_no": 0.0637,
      "rule": "abs(O - C[-1]) > ref(atr(14), -1)",
      "basis": "rule"
    },
    "gap_up": {
      "yes_no": 0.06,
      "rule": "O > C[-1] * 1.01",
      "basis": "rule"
    },
    "gap_dn": {
      "yes_no": 0.2378,
      "rule": "O < C[-1] * 0.99",
      "basis": "rule"
    },
    "faded": {
      "yes_no": 0.1532,
      "rule": "O > C[-1] and C < C[-1]",
      "basis": "rule"
    },
    "big5": {
      "yes_no": 0.409
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "teams_alert",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "quiet",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "markets-desk",
      "preview": {
        "text": "AAPL (2026-10-30): normal open (gap over 1 ATR 6%)."
      }
    }
  ]
}

abs atr offset ref

Financial journalist / media · example 17

Fact check: is AMD's rally broad or a one-day pop?

Check whether a rally has persistence: several up days, price above its typical-price average and rising OBV.

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

State

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

Questions

mostly_uprulesum(C > C[-1], 10) >= 6
Up on at least six of the last ten days
hlc3rulehlc3() > sma(hlc3(), 20)
Typical price above its 20-day average
obvEnglish → ruleIs on-balance volume higher than 20 sessions ago?
soldiersEnglish → ruleAre the last three candles three white soldiers?
bestEnglish → ruleWas today the best day of the last 20 sessions?
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
mostly_up
Up on at least six of the last ten days
0.55on the line (true)
hlc3
Typical price above its 20-day average
0.1082false
obv
Is on-balance volume higher than 20 sessions ago
compiled to obv() > ref(obv(), -20)
0.1504false
soldiers
Are the last three candles three white soldiers
compiled to three_white_soldiers()
0.0537false
best
Was today the best day of the last 20 sessions
compiled to (C > C[-1]) and (C / C[-1] - 1 > ref(max(C / C[-1] - 1, 19), -1))
0.0537false
up_week
Higher in a week
0.57758% · close to even

What it means

For AMD on the session of 2026-10-30: Not true: Typical price above its 20-day average; Is on-balance volume higher than 20 sessions ago; Are the last three candles three white soldiers; Was today the best day of the last 20 sessions. On the line: Up on at least six of the last ten days. Forecasts: Higher in a week 58%.

"Extends its rally" needs persistence rules true; a best-day rule alone supports "jumped".

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AMD"
  },
  "questions": {
    "mostly_up": {
      "type": "yes_no",
      "ask": "sum(C > C[-1], 10) >= 6"
    },
    "hlc3": {
      "type": "yes_no",
      "ask": "hlc3() > sma(hlc3(), 20)"
    },
    "obv": {
      "type": "yes_no",
      "instructions": "Is on-balance volume higher than 20 sessions ago?"
    },
    "soldiers": {
      "type": "yes_no",
      "instructions": "Are the last three candles three white soldiers?"
    },
    "best": {
      "type": "yes_no",
      "instructions": "Was today the best day of the last 20 sessions?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (AMD, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "mostly_up": {
      "yes_no": 0.55,
      "rule": "sum(C > C[-1], 10) >= 6",
      "basis": "rule"
    },
    "hlc3": {
      "yes_no": 0.1082,
      "rule": "hlc3() > sma(hlc3(), 20)",
      "basis": "rule"
    },
    "obv": {
      "yes_no": 0.1504,
      "rule": "obv() > ref(obv(), -20)",
      "basis": "pattern"
    },
    "soldiers": {
      "yes_no": 0.0537,
      "rule": "three_white_soldiers()",
      "basis": "pattern"
    },
    "best": {
      "yes_no": 0.0537,
      "rule": "(C > C[-1]) and (C / C[-1] - 1 > ref(max(C / C[-1] - 1, 19), -1))",
      "basis": "pattern"
    },
    "up_week": {
      "yes_no": 0.577
    }
  },
  "context": {
    "symbol": "AMD",
    "as_of": "2026-10-30"
  }
}

hlc3 max obv offset ref sma sum three_white_soldiers

Financial journalist / media · example 18

Fact check: are long bonds (TLT) at multi-month lows?

Before writing that bond prices hit lows, check the window and the size of the move.

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

State

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

Questions

low20English → ruleDid the stock make a new 20-day low today?
low55ruleC < lowest(C, 55)
Closed under every close of the last 55 sessions
down_monthEnglish → ruleIs the stock down more than 5% over the last month?
rsi_lowEnglish → ruleIs the stock oversold on RSI, below 30?
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

Symbollow20rulelow55ruledown_monthrulersi_lowruledown_weekforecast
TLT0.05370.05370.05370.05460.504
IEF0.05370.05370.05370.05370.413

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: Did the stock make a new 20-day low today: true for none of 2. Closed under every close of the last 55 sessions: true for none of 2. Is the stock down more than 5% over the last month: true for none of 2. Is the stock oversold on RSI, below 30: true for none of 2. Highest odds for “Lower in a week”: TLT at 50%.

"Lowest close in nearly three months" needs the 55-session rule; a 20-day low supports a weaker claim.

Request JSON (TLT; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TLT"
  },
  "questions": {
    "low20": {
      "type": "yes_no",
      "instructions": "Did the stock make a new 20-day low today?"
    },
    "low55": {
      "type": "yes_no",
      "ask": "C < lowest(C, 55)"
    },
    "down_month": {
      "type": "yes_no",
      "instructions": "Is the stock down more than 5% over the last month?"
    },
    "rsi_low": {
      "type": "yes_no",
      "instructions": "Is the stock oversold on RSI, below 30?"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  }
}
Response JSON (TLT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "low20": {
      "yes_no": 0.0537,
      "rule": "L < lowest(L, 20)",
      "basis": "pattern"
    },
    "low55": {
      "yes_no": 0.0537,
      "rule": "C < lowest(C, 55)",
      "basis": "rule"
    },
    "down_month": {
      "yes_no": 0.0537,
      "rule": "C / C[-21] - 1 < -0.05",
      "basis": "pattern"
    },
    "rsi_low": {
      "yes_no": 0.0546,
      "rule": "rsi(C, 14) < 30",
      "basis": "pattern"
    },
    "down_week": {
      "yes_no": 0.504
    }
  },
  "context": {
    "symbol": "TLT",
    "as_of": "2026-10-30"
  }
}

lowest offset rsi

Financial journalist / media · example 19

Fact check: has JNJ raised its dividend for 25+ years?

"Dividend aristocrat" claims need a growth record; check it from the payment history.

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

State

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

Questions

y25English → ruleHas the stock grown its dividend for 25 years in a row?
y10English → ruleHas the stock grown its dividend for 10 years in a row?
raisedEnglish → ruleDid the stock raise its dividend last time?
yieldEnglish → ruleIs the dividend yield above 3%?

Answers

Symboly25ruley10ruleraisedruleyieldrule
JNJ0.94630.94630.14090.0648
KO0.06830.94630.14090.0537

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: Has the stock grown its dividend for 25 years in a row: true for JNJ of 2. Has the stock grown its dividend for 10 years in a row: true for JNJ, KO of 2. Did the stock raise its dividend last time: true for none of 2. Is the dividend yield above 3%: true for none of 2.

Calendar-year totals can break a streak in years with an extra payment, so the article cites the rule's definition when the answer surprises.

Request JSON (JNJ; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "JNJ"
  },
  "questions": {
    "y25": {
      "type": "yes_no",
      "instructions": "Has the stock grown its dividend for 25 years in a row?"
    },
    "y10": {
      "type": "yes_no",
      "instructions": "Has the stock grown its dividend for 10 years in a row?"
    },
    "raised": {
      "type": "yes_no",
      "instructions": "Did the stock raise its dividend last time?"
    },
    "yield": {
      "type": "yes_no",
      "instructions": "Is the dividend yield above 3%?"
    }
  }
}
Response JSON (JNJ, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "y25": {
      "yes_no": 0.9463,
      "rule": "years_of_growth >= 25",
      "basis": "pattern"
    },
    "y10": {
      "yes_no": 0.9463,
      "rule": "years_of_growth >= 10",
      "basis": "pattern"
    },
    "raised": {
      "yes_no": 0.1409,
      "rule": "raised_last > 0.5",
      "basis": "pattern"
    },
    "yield": {
      "yes_no": 0.0648,
      "rule": "div_yield_ttm > 3",
      "basis": "pattern"
    }
  },
  "context": {
    "symbol": "JNJ",
    "as_of": "2026-10-30"
  }
}

div_yield_ttm raised_last years_of_growth

Financial journalist / media · example 20

Fact check: is volatility rising (VXX)?

Check the volatility ETF before writing that fear is rising, and separate today's facts from forecasts.

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

State

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

Questions

up2English → ruleDid the stock rise more than 2% today?
above_bandEnglish → ruleDid the stock close above the upper Bollinger Band?
spikeruleV > 2 * ref(avg(V, 20), -1)
Volume more than twice the previous 20-day average
emaruleC > ema(C, 10)
Above its 10-day exponential average
vol_riseforecastWill volatility rise over the next 5 days?
Volatility rising over 5 days
calmforecastWill volatility calm down over the next 5 days?
Volatility calming over 5 days

Answers

QuestionAnswerReading
up2
Did the stock rise more than 2% today
compiled to C / C[-1] - 1 > 0.02
0.9463true
above_band
Did the stock close above the upper Bollinger Band
compiled to C > bbupper(C, 20)
0.599on the line (true)
spike
Volume more than twice the previous 20-day average
0.9357true
ema
Above its 10-day exponential average
0.9398true
vol_rise
Volatility rising over 5 days
0.25425% · unlikely
calm
Volatility calming over 5 days
0.62162% · likely

What it means

For VXX on the session of 2026-10-30: True now: Did the stock rise more than 2% today; Volume more than twice the previous 20-day average; Above its 10-day exponential average. On the line: Did the stock close above the upper Bollinger Band. Forecasts: Volatility rising over 5 days 25%; Volatility calming over 5 days 62%.

Today's rules support "volatility rose"; the two forecasts are odds that point in opposite directions and are reported as such, if at all.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VXX"
  },
  "questions": {
    "up2": {
      "type": "yes_no",
      "instructions": "Did the stock rise more than 2% today?"
    },
    "above_band": {
      "type": "yes_no",
      "instructions": "Did the stock close above the upper Bollinger Band?"
    },
    "spike": {
      "type": "yes_no",
      "ask": "V > 2 * ref(avg(V, 20), -1)"
    },
    "ema": {
      "type": "yes_no",
      "ask": "C > ema(C, 10)"
    },
    "vol_rise": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    },
    "calm": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    }
  }
}
Response JSON (VXX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "up2": {
      "yes_no": 0.9463,
      "rule": "C / C[-1] - 1 > 0.02",
      "basis": "pattern"
    },
    "above_band": {
      "yes_no": 0.599,
      "rule": "C > bbupper(C, 20)",
      "basis": "comparison"
    },
    "spike": {
      "yes_no": 0.9357,
      "rule": "V > 2 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "ema": {
      "yes_no": 0.9398,
      "rule": "C > ema(C, 10)",
      "basis": "rule"
    },
    "vol_rise": {
      "yes_no": 0.254
    },
    "calm": {
      "yes_no": 0.621
    }
  },
  "context": {
    "symbol": "VXX",
    "as_of": "2026-10-30"
  }
}

avg bbupper ema offset ref

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 Corporates: Investor relations team, Corporate treasury, CFO office, Bank credit analyst.

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