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

Retail investor: 20 ways to use Ora

Checks a handful of stocks before buying, adding or trimming, and wants alerts instead of screen time. Each example is a complete, runnable request with the real answers it returned (26 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 13rsi 5max 5lowest 4offset 4beat_eps_last 3div_yield_ttm 3atr 3ref 3abs 2years_of_growth 2avg 2highest 2min 2ema 2bbupper 2swinglow 2std 2beat_revenue_last 1days_to_earnings 1last_earnings_move 1next_report_amc 1cut_last 1pays_dividend 1obv 1zscore 1macd 1macdsignal 1days_since_split 1days_to_split 1last_split_ratio 1reverse_split_last 1splits_5y 1engulfing_bull 1hammer 1raised_last 1bblower 1bbmid 1roc 1days_since_ex_div 1days_to_ex_div 1div_count_ttm 1days_since_earnings 1eps_surprise_pct 1last_earnings_gap 1pre_earnings_close 1atr_pct 1log 1sqrt 1

Examples 1–10 of 20 · page 1 of 2

Retail investor · example 1

Is AAPL in an uptrend before I buy?

Before adding to a position, confirm the long-term trend, check that the stock is not overbought, and get the odds for the next week.

ora-fin-0.1.1AAPL4 questions
  1. StateAAPL
  2. Questions4 asked
  3. Answersreal, captured
  4. Actionsnone

State

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

Questions

above_200dEnglish → ruleIs the stock above its 200-day moving average?
goldenrulesma(C, 50) > sma(C, 200)
50-day above the 200-day
overboughtrulersi(C, 14) > 70
RSI above 70
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
above_200d
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.9463true
golden
50-day above the 200-day
0.9463true
overbought
RSI above 70
0.0657false
up_week
Higher in a week
0.5959% · close to even

What it means

For AAPL on the session of 2026-10-30: True now: Is the stock above its 200-day moving average; 50-day above the 200-day. Not true: RSI above 70. Forecasts: Higher in a week 59%.

Two trend checks that are true and an RSI that is not overbought say the buy is not chasing; the forecast is the odds for the coming week, not a promise.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "above_200d": {
      "type": "yes_no",
      "instructions": "Is the stock above its 200-day moving average?"
    },
    "golden": {
      "type": "yes_no",
      "ask": "sma(C, 50) > sma(C, 200)"
    },
    "overbought": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 70"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "above_200d": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "golden": {
      "yes_no": 0.9463,
      "rule": "sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "overbought": {
      "yes_no": 0.0657,
      "rule": "rsi(C, 14) > 70",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.59
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  }
}

rsi sma

Retail investor · example 2

Email me when MSFT dips inside its uptrend

Get one email when Microsoft pulls back (RSI under 40) while it is still above its 200-day average, the classic buy-the-dip setup.

ora-fin-0.1.1MSFT4 questions1 action
  1. StateMSFT
  2. Questions4 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

uptrendruleC > sma(C, 200) * 1.10
More than 10% above the 200-day
dipruleC > sma(C, 200) and rsi(C, 14) < 40
Pullback in an uptrend: above the 200-day, RSI under 40
rsi40English → ruleIs RSI below 40?
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
uptrend
More than 10% above the 200-day
0.9431true
dip
Pullback in an uptrend: above the 200-day, RSI under 40
0.1064false
rsi40
Is RSI below 40
compiled to rsi(C, 14) < 40
0.1064false
drop5
A 5% drawdown within a month
0.42242% · close to even

Actions

Rules on the answers decide what to send.

dip >= 0.6→Emailme
What each action would send 0 of 1 fired · dry run, nothing sent
dip_alertrule false: skipped

What it means

For MSFT on the session of 2026-10-30: True now: More than 10% above the 200-day. Not true: Pullback in an uptrend: above the 200-day, RSI under 40; Is RSI below 40. Forecasts: A 5% drawdown within a month 42%. No action fired: every rule was false.

The email only goes out when the pullback rule is true; on most days it stays quiet, which is the point of an alert.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MSFT"
  },
  "questions": {
    "uptrend": {
      "type": "yes_no",
      "ask": "C > sma(C, 200) * 1.10"
    },
    "dip": {
      "type": "yes_no",
      "ask": "C > sma(C, 200) and rsi(C, 14) < 40"
    },
    "rsi40": {
      "type": "yes_no",
      "instructions": "Is RSI below 40?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "dip_alert",
      "when": "dip >= 0.6",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}}: dip in an uptrend ({{as_of}})",
      "message": "{{symbol}} pulled back inside its uptrend (rule {{dip|pct}}). Odds of a further 5% drop within a month: {{drop5|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (MSFT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "uptrend": {
      "yes_no": 0.9431,
      "rule": "C > sma(C, 200) * 1.10",
      "basis": "rule"
    },
    "dip": {
      "yes_no": 0.1064,
      "rule": "C > sma(C, 200) and rsi(C, 14) < 40",
      "basis": "rule"
    },
    "rsi40": {
      "yes_no": 0.1064,
      "rule": "rsi(C, 14) < 40",
      "basis": "comparison"
    },
    "drop5": {
      "yes_no": 0.422
    }
  },
  "context": {
    "symbol": "MSFT",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "dip_alert",
      "fired": false,
      "status": "skipped"
    }
  ]
}

rsi sma

Retail investor · example 3

Does NVDA report soon, and how did it react last time?

Avoid buying right before a report by accident: when is the next one, did the last quarter beat, and how big was the move.

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

State

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

Questions

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

Answers

QuestionAnswerReading
soon
Is earnings in the next 14 days
compiled to days_to_earnings <= 14
0.1033false
beat
Did the stock beat on both EPS and revenue last quarter
compiled to beat_eps_last > 0.5 and beat_revenue_last > 0.5
0.8591true
big_move
Last earnings move bigger than 5%
0.9463true
after_close
Does the stock report after the close next time
compiled to next_report_amc > 0.5
0.8591true
beat_next
Beating earnings next quarter
0.51652% · close to even

What it means

For NVDA on the session of 2026-10-30: True now: Did the stock beat on both EPS and revenue last quarter; Last earnings move bigger than 5%; Does the stock report after the close next time. Not true: Is earnings in the next 14 days. Forecasts: Beating earnings next quarter 52%.

If the report is close and the last reaction was large, a new position takes on that event risk; waiting a few days is a choice, not a forecast.

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

abs beat_eps_last beat_revenue_last days_to_earnings last_earnings_move next_report_amc

Retail investor · example 4

Is KO's dividend still safe to rely on?

For an income holding, check that it still pays, has not cut, keeps growing, and that the price trend under the payout is healthy.

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

State

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

Questions

paysrulepays_dividend > 0.5
Pays a dividend
no_cutrulecut_last < 0.5
Did not cut its last dividend
growerruleyears_of_growth >= 10
Ten years of dividend growth
trendrulediv_yield_ttm > 2 and C > sma(C, 200)
Yield above 2% and above the 200-day
raise_nextforecastWill the company raise its dividend next year?
Raising the dividend next year

Answers

QuestionAnswerReading
pays
Pays a dividend
0.8591true
no_cut
Did not cut its last dividend
0.8591true
grower
Ten years of dividend growth
0.9463true
trend
Yield above 2% and above the 200-day
0.9463true
raise_next
Raising the dividend next year
0.51752% · close to even

What it means

For KO on the session of 2026-10-30: True now: Pays a dividend; Did not cut its last dividend; Ten years of dividend growth; Yield above 2% and above the 200-day. Forecasts: Raising the dividend next year 52%.

Facts about the payout record answer from the dividend history; the raise-next-year question is a forecast and reads as odds.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "KO"
  },
  "questions": {
    "pays": {
      "type": "yes_no",
      "ask": "pays_dividend > 0.5"
    },
    "no_cut": {
      "type": "yes_no",
      "ask": "cut_last < 0.5"
    },
    "grower": {
      "type": "yes_no",
      "ask": "years_of_growth >= 10"
    },
    "trend": {
      "type": "yes_no",
      "ask": "div_yield_ttm > 2 and C > sma(C, 200)"
    },
    "raise_next": {
      "type": "yes_no",
      "instructions": "Will the company raise its dividend next year?"
    }
  }
}
Response JSON (KO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "pays": {
      "yes_no": 0.8591,
      "rule": "pays_dividend > 0.5",
      "basis": "rule"
    },
    "no_cut": {
      "yes_no": 0.8591,
      "rule": "cut_last < 0.5",
      "basis": "rule"
    },
    "grower": {
      "yes_no": 0.9463,
      "rule": "years_of_growth >= 10",
      "basis": "rule"
    },
    "trend": {
      "yes_no": 0.9463,
      "rule": "div_yield_ttm > 2 and C > sma(C, 200)",
      "basis": "rule"
    },
    "raise_next": {
      "yes_no": 0.517
    }
  },
  "context": {
    "symbol": "KO",
    "as_of": "2026-10-30"
  }
}

cut_last div_yield_ttm pays_dividend sma years_of_growth

Retail investor · example 5

A Friday email for my five stocks

Every Friday after the close, the same three questions for each stock on the watchlist, and one email per stock that is breaking down.

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

State

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

Questions

above_50druleC > sma(C, 50)
Above the 50-day average
breakdownruleC < lowest(L, 20)
Closed under the 20-day low
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symbolabove_50drulebreakdownruleup_weekforecastFired
AAPL0.91190.07440.59none
MSFT0.70880.3650.574none
AMZN0.09640.54180.493none
COST0.93360.05530.519none
JNJ0.83090.05370.525none

true false not known for rules; forecasts are odds. Hover a column for its question.

Actions

Rules on the answers decide what to send. Each symbol runs its own request, so each one can fire.

breakdown >= 0.6→Emailme
AAPL 0 of 1 fired · dry run, nothing sent
MSFT 0 of 1 fired · dry run, nothing sent
AMZN 0 of 1 fired · dry run, nothing sent
COST 0 of 1 fired · dry run, nothing sent
JNJ 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 5 symbols: Above the 50-day average: true for AAPL, MSFT, COST, JNJ of 5. Closed under the 20-day low: true for none of 5. Highest odds for “Higher in a week”: AAPL at 59%. breaking_down fired for none.

A workflow runs this list on a schedule; each symbol gets its own answers, and only a breakdown sends mail.

As a scheduled workflow (Fri at 16:30 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": "A Friday email for my five stocks",
  "symbols": "AAPL MSFT AMZN COST JNJ",
  "days": [
    5
  ],
  "at_time": "16:30",
  "model": "ora-fin-0.1.1",
  "questions": {
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "breaking_down",
      "when": "breakdown >= 0.6",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}} closed under its 20-day low",
      "message": "{{symbol}} ({{as_of}}) broke its 20-day low. Above the 50-day: {{above_50d|pct}}. Higher in a week: {{up_week|pct}}."
    }
  ]
}
Request JSON (AAPL; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AAPL"
  },
  "questions": {
    "above_50d": {
      "type": "yes_no",
      "ask": "C > sma(C, 50)"
    },
    "breakdown": {
      "type": "yes_no",
      "ask": "C < lowest(L, 20)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "breaking_down",
      "when": "breakdown >= 0.6",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}} closed under its 20-day low",
      "message": "{{symbol}} ({{as_of}}) broke its 20-day low. Above the 50-day: {{above_50d|pct}}. Higher in a week: {{up_week|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "above_50d": {
      "yes_no": 0.9119,
      "rule": "C > sma(C, 50)",
      "basis": "rule"
    },
    "breakdown": {
      "yes_no": 0.0744,
      "rule": "C < lowest(L, 20)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.59
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "breaking_down",
      "fired": false,
      "status": "skipped"
    }
  ]
}

lowest sma

Retail investor · example 6

Is COST near its 52-week high, and is volume confirming?

Decide whether a strong stock is breaking out with participation or drifting up on light volume.

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

State

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

Questions

near_highruleC >= 0.98 * max(H, 252)
Within 2% of the 52-week high
new_highEnglish → ruleDid the stock make a new 52-week high today?
volumeruleV > avg(V, 20)
Volume above its 20-day average
obvruleobv() > sma(obv(), 20)
On-balance volume above its 20-day average
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
near_high
Within 2% of the 52-week high
0.0786false
new_high
Did the stock make a new 52-week high today
compiled to H > highest(H, 252)
0.0669false
volume
Volume above its 20-day average
0.9297true
obv
On-balance volume above its 20-day average
0.793true
rally5
A 5% rally within a month
0.35335% · unlikely

What it means

For COST on the session of 2026-10-30: True now: Volume above its 20-day average; On-balance volume above its 20-day average. Not true: Within 2% of the 52-week high; Did the stock make a new 52-week high today. Forecasts: A 5% rally within a month 35%.

A new high with rising on-balance volume is the stronger read; near the high on thin volume is a reason to wait for confirmation.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "COST"
  },
  "questions": {
    "near_high": {
      "type": "yes_no",
      "ask": "C >= 0.98 * max(H, 252)"
    },
    "new_high": {
      "type": "yes_no",
      "instructions": "Did the stock make a new 52-week high today?"
    },
    "volume": {
      "type": "yes_no",
      "ask": "V > avg(V, 20)"
    },
    "obv": {
      "type": "yes_no",
      "ask": "obv() > sma(obv(), 20)"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (COST, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "near_high": {
      "yes_no": 0.0786,
      "rule": "C >= 0.98 * max(H, 252)",
      "basis": "rule"
    },
    "new_high": {
      "yes_no": 0.0669,
      "rule": "H > highest(H, 252)",
      "basis": "pattern"
    },
    "volume": {
      "yes_no": 0.9297,
      "rule": "V > avg(V, 20)",
      "basis": "rule"
    },
    "obv": {
      "yes_no": 0.793,
      "rule": "obv() > sma(obv(), 20)",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.353
    }
  },
  "context": {
    "symbol": "COST",
    "as_of": "2026-10-30"
  }
}

avg highest max obv sma

Retail investor · example 7

Was today's drop in TSLA unusual?

After a red day, check whether the move was big for this stock (in ATR and in standard deviations) before reacting.

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

State

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

Questions

big_atrruleabs(C - C[-1]) > 1.5 * atr(14)
Today's move was bigger than 1.5 ATR
shockrulezscore(C / C[-1] - 1, 20) < -2
A two-sigma down day
down_volruleC < C[-1] and V > 1.5 * ref(avg(V, 20), -1)
Down on heavy volume
worst20English → ruleWas today the worst day of the last 20 sessions?
big_move5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
big_atr
Today's move was bigger than 1.5 ATR
0.054false
shock
A two-sigma down day
0.0945false
down_vol
Down on heavy volume
0.1309false
worst20
Was today the worst day of the last 20 sessions
compiled to (C < C[-1]) and (C / C[-1] - 1 < ref(min(C / C[-1] - 1, 19), -1))
0.2631false
big_move5
A big move either way in 5 days
0.24825% · unlikely

What it means

For TSLA on the session of 2026-10-30: Not true: Today's move was bigger than 1.5 ATR; A two-sigma down day; Down on heavy volume; Was today the worst day of the last 20 sessions. Forecasts: A big move either way in 5 days 25%.

If none of the size rules is true, the drop was ordinary for a volatile stock; a return shock on heavy volume is the case worth a closer look.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TSLA"
  },
  "questions": {
    "big_atr": {
      "type": "yes_no",
      "ask": "abs(C - C[-1]) > 1.5 * atr(14)"
    },
    "shock": {
      "type": "yes_no",
      "ask": "zscore(C / C[-1] - 1, 20) < -2"
    },
    "down_vol": {
      "type": "yes_no",
      "ask": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)"
    },
    "worst20": {
      "type": "yes_no",
      "instructions": "Was today the worst day of the last 20 sessions?"
    },
    "big_move5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  }
}
Response JSON (TSLA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "big_atr": {
      "yes_no": 0.054,
      "rule": "abs(C - C[-1]) > 1.5 * atr(14)",
      "basis": "rule"
    },
    "shock": {
      "yes_no": 0.0945,
      "rule": "zscore(C / C[-1] - 1, 20) < -2",
      "basis": "rule"
    },
    "down_vol": {
      "yes_no": 0.1309,
      "rule": "C < C[-1] and V > 1.5 * ref(avg(V, 20), -1)",
      "basis": "rule"
    },
    "worst20": {
      "yes_no": 0.2631,
      "rule": "(C < C[-1]) and (C / C[-1] - 1 < ref(min(C / C[-1] - 1, 19), -1))",
      "basis": "pattern"
    },
    "big_move5": {
      "yes_no": 0.248
    }
  },
  "context": {
    "symbol": "TSLA",
    "as_of": "2026-10-30"
  }
}

abs atr avg min offset ref zscore

Retail investor · example 8

Is my core index fund in a healthy trend?

A once-a-month look at VOO: trend, momentum and drawdown, without watching the market every day.

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

State

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

Questions

trendEnglish → ruleIs the stock above its 200-day moving average?
sma200_uprulesma(C, 200) > ref(sma(C, 200), -20)
The 200-day average is rising
three_monthruleC > C[-63]
Higher than three months ago
drawdown20ruleC < 0.8 * max(H, 252)
More than 20% off the 52-week high
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
trend
Is the stock above its 200-day moving average
compiled to C > sma(C, 200)
0.9463true
sma200_up
The 200-day average is rising
0.9463true
three_month
Higher than three months ago
0.5147on the line (true)
drawdown20
More than 20% off the 52-week high
0.0537false
drop5
A 5% drawdown within a month
0.19419% · unlikely

What it means

For VOO on the session of 2026-10-30: True now: Is the stock above its 200-day moving average; The 200-day average is rising. Not true: More than 20% off the 52-week high. On the line: Higher than three months ago. Forecasts: A 5% drawdown within a month 19%.

Trend rules true and no 20% drawdown means the core position needs nothing; the forecast is context for the month ahead.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "VOO"
  },
  "questions": {
    "trend": {
      "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)"
    },
    "three_month": {
      "type": "yes_no",
      "ask": "C > C[-63]"
    },
    "drawdown20": {
      "type": "yes_no",
      "ask": "C < 0.8 * max(H, 252)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  }
}
Response JSON (VOO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.9463,
      "rule": "C > sma(C, 200)",
      "basis": "comparison"
    },
    "sma200_up": {
      "yes_no": 0.9463,
      "rule": "sma(C, 200) > ref(sma(C, 200), -20)",
      "basis": "rule"
    },
    "three_month": {
      "yes_no": 0.5147,
      "rule": "C > C[-63]",
      "basis": "rule"
    },
    "drawdown20": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.194
    }
  },
  "context": {
    "symbol": "VOO",
    "as_of": "2026-10-30"
  }
}

max offset ref sma

Retail investor · example 9

Did AMD just make a golden cross?

Check the moving-average story people talk about: did the 50-day cross the 200-day today, and is the stock above both.

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

State

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

Questions

cross_todayEnglish → ruleDid a golden cross happen today?
setupEnglish → ruleIs the 50-day moving average above the 200-day?
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
macdrulemacd(C) > macdsignal(C)
MACD above its signal line
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
cross_today
Did a golden cross happen today
compiled to (sma(C, 50) > sma(C, 200)) and (ref(sma(C, 50), -1) <= ref(sma(C, 200), -1))
0.0537false
setup
Is the 50-day moving average above the 200-day
compiled to sma(C, 50) > sma(C, 200)
0.9463true
stacked
Stacked averages: close > 20 EMA > 50 > 200
0.1048false
macd
MACD above its signal line
0.2076false
up_week
Higher in a week
0.57758% · close to even

What it means

For AMD on the session of 2026-10-30: True now: Is the 50-day moving average above the 200-day. Not true: Did a golden cross happen today; Stacked averages: close > 20 EMA > 50 > 200; MACD above its signal line. Forecasts: Higher in a week 58%.

The cross itself is a one-day event and is usually false; the setup (50-day above 200-day) is the state that lasts.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "AMD"
  },
  "questions": {
    "cross_today": {
      "type": "yes_no",
      "instructions": "Did a golden cross happen today?"
    },
    "setup": {
      "type": "yes_no",
      "instructions": "Is the 50-day moving average above the 200-day?"
    },
    "stacked": {
      "type": "yes_no",
      "ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
    },
    "macd": {
      "type": "yes_no",
      "ask": "macd(C) > macdsignal(C)"
    },
    "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": {
    "cross_today": {
      "yes_no": 0.0537,
      "rule": "(sma(C, 50) > sma(C, 200)) and (ref(sma(C, 50), -1) <= ref(sma(C, 200), -1))",
      "basis": "pattern"
    },
    "setup": {
      "yes_no": 0.9463,
      "rule": "sma(C, 50) > sma(C, 200)",
      "basis": "comparison"
    },
    "stacked": {
      "yes_no": 0.1048,
      "rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "macd": {
      "yes_no": 0.2076,
      "rule": "macd(C) > macdsignal(C)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.577
    }
  },
  "context": {
    "symbol": "AMD",
    "as_of": "2026-10-30"
  }
}

ema macd macdsignal ref sma

Retail investor · example 10

Should I trim NFLX after a big run?

Check whether the stock is stretched above its averages before taking some profit.

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

State

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

Questions

ext_200dEnglish → ruleIs the stock more than 10% above its 200-day moving average?
stretchedruleC > sma(C, 20) + 2 * atr(14)
Stretched: more than 2 ATR above the 20-day
rsi70rulersi(C, 14) > 70
RSI above 70
bb_upruleC > bbupper(C, 20, 2)
Closed above the upper Bollinger band
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
ext_200d
Is the stock more than 10% above its 200-day moving average
compiled to C > sma(C, 200) * 1.1
0.0537false
stretched
Stretched: more than 2 ATR above the 20-day
0.061false
rsi70
RSI above 70
0.0537false
bb_up
Closed above the upper Bollinger band
0.057false
drop5
A 5% drawdown within a month
0.62763% · likely

Actions

Rules on the answers decide what to send.

stretched >= 0.6 and rsi70 >= 0.6→Emailme
else→Emailme
What each action would send 1 of 2 fired · dry run, nothing sent
trim_noterule false: skipped
hold_notewould send (dry run)Email → me
{
  "subject": "NFLX: no trim signal",
  "text": "NFLX (2026-10-30): not stretched (rule 6%), RSI over 70 5%."
}

What it means

For NFLX on the session of 2026-10-30: Not true: Is the stock more than 10% above its 200-day moving average; Stretched: more than 2 ATR above the 20-day; RSI above 70; Closed above the upper Bollinger band. Forecasts: A 5% drawdown within a month 63%. Fired: hold_note (Email → me).

The trim email fires only when both stretch rules agree; otherwise the else branch confirms there is nothing to do.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NFLX"
  },
  "questions": {
    "ext_200d": {
      "type": "yes_no",
      "instructions": "Is the stock more than 10% above its 200-day moving average?"
    },
    "stretched": {
      "type": "yes_no",
      "ask": "C > sma(C, 20) + 2 * atr(14)"
    },
    "rsi70": {
      "type": "yes_no",
      "ask": "rsi(C, 14) > 70"
    },
    "bb_up": {
      "type": "yes_no",
      "ask": "C > bbupper(C, 20, 2)"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "trim_note",
      "when": "stretched >= 0.6 and rsi70 >= 0.6",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}} looks stretched",
      "message": "{{symbol}} ({{as_of}}) is 2 ATR above its 20-day and RSI is over 70. Consider trimming. 5% drawdown odds: {{drop5|pct}}."
    },
    {
      "id": "hold_note",
      "when": "else",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}}: no trim signal",
      "message": "{{symbol}} ({{as_of}}): not stretched (rule {{stretched|pct}}), RSI over 70 {{rsi70|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (NFLX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "ext_200d": {
      "yes_no": 0.0537,
      "rule": "C > sma(C, 200) * 1.1",
      "basis": "comparison"
    },
    "stretched": {
      "yes_no": 0.061,
      "rule": "C > sma(C, 20) + 2 * atr(14)",
      "basis": "rule"
    },
    "rsi70": {
      "yes_no": 0.0537,
      "rule": "rsi(C, 14) > 70",
      "basis": "rule"
    },
    "bb_up": {
      "yes_no": 0.057,
      "rule": "C > bbupper(C, 20, 2)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.627
    }
  },
  "context": {
    "symbol": "NFLX",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "trim_note",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "hold_note",
      "fired": true,
      "status": "dry_run",
      "do": "email",
      "connection": "me",
      "preview": {
        "subject": "NFLX: no trim signal",
        "text": "NFLX (2026-10-30): not stretched (rule 6%), RSI over 70 5%."
      }
    }
  ]
}

atr bbupper rsi sma

Information, not investment advice. Rules answer from the latest completed daily session; forecasts are probabilities. Actions ran as dry runs: nothing was sent. More in Individuals: Active day trader, Swing trader, Options trader, Dividend investor, Long-term passive investor, Crypto trader, FX trader, Commodities 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.