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

Swing trader: 20 ways to use Ora

Holds for days to weeks: trend, pullback entries, swing structure, stops and risk/reward. 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 (47)

sma 8swinglow 8swinghigh 6highest 5ref 5atr 4ema 3offset 3min 3days_to_earnings 2adx 2avg 2diminus 2diplus 2rsi 2max 2roc 2linreg 1rma 1wma 1cci 1stochd 1stochk 1willr 1lowest 1bblower 1bbmid 1bbupper 1std 1engulfing_bull 1harami_bull 1piercing_line 1abs 1beat_streak 1last_earnings_move 1next_report_bmo 1mean 1rec 1barssince 1lowestbars 1crossdown 1dark_cloud 1engulfing_bear 1percentrank 1zscore 1cum 1log 1

Examples 11–20 of 20 · page 2 of 2

Swing trader · example 11

Hold or close a swing in NFLX before earnings

Swing traders often exit before a report; check the calendar and the stock's habit of big reactions.

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

soonruledays_to_earnings <= 10
Reports earnings within 10 days
bigruleabs(last_earnings_move) > 5
Last earnings move bigger than 5%
streakrulebeat_streak >= 4
Beat four quarters in a row
bmoEnglish → ruleDoes the stock report before the market opens next time?
big5forecastWill there be a big move in either direction in the next 5 days?
A big move either way in 5 days

Answers

QuestionAnswerReading
soon
Reports earnings within 10 days
0.0537false
big
Last earnings move bigger than 5%
0.9463true
streak
Beat four quarters in a row
0.55on the line (true)
bmo
Does the stock report before the market opens next time
compiled to next_report_bmo > 0.5
0.1409false
big5
A big move either way in 5 days
0.32533% · unlikely

Actions

Rules on the answers decide what to send.

soon >= 0.6 and big >= 0.6→Slackswing-desk
else→Slackswing-desk
What each action would send 1 of 2 fired · dry run, nothing sent
close_beforerule false: skipped
holdwould send (dry run)Slack → swing-desk
{
  "text": "NFLX (2026-10-30): no earnings conflict (within 10 days 5%). Hold to plan."
}

What it means

For NFLX on the session of 2026-10-30: True now: Last earnings move bigger than 5%. Not true: Reports earnings within 10 days; Does the stock report before the market opens next time. On the line: Beat four quarters in a row. Forecasts: A big move either way in 5 days 33%. Fired: hold (Slack → swing-desk).

If the report is within ten days and reactions are usually large, the swing is closed before the print.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NFLX"
  },
  "questions": {
    "soon": {
      "type": "yes_no",
      "ask": "days_to_earnings <= 10"
    },
    "big": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) > 5"
    },
    "streak": {
      "type": "yes_no",
      "ask": "beat_streak >= 4"
    },
    "bmo": {
      "type": "yes_no",
      "instructions": "Does the stock report before the market opens next time?"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "close_before",
      "when": "soon >= 0.6 and big >= 0.6",
      "do": "slack",
      "connection": "swing-desk",
      "message": "{{symbol}} ({{as_of}}): earnings within 10 days and the last reaction was over 5%. Close or hedge the swing."
    },
    {
      "id": "hold",
      "when": "else",
      "do": "slack",
      "connection": "swing-desk",
      "message": "{{symbol}} ({{as_of}}): no earnings conflict (within 10 days {{soon|pct}}). Hold to plan."
    }
  ],
  "dry_run": true
}
Response JSON (NFLX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "soon": {
      "yes_no": 0.0537,
      "rule": "days_to_earnings <= 10",
      "basis": "rule"
    },
    "big": {
      "yes_no": 0.9463,
      "rule": "abs(last_earnings_move) > 5",
      "basis": "rule"
    },
    "streak": {
      "yes_no": 0.55,
      "rule": "beat_streak >= 4",
      "basis": "rule"
    },
    "bmo": {
      "yes_no": 0.1409,
      "rule": "next_report_bmo > 0.5",
      "basis": "pattern"
    },
    "big5": {
      "yes_no": 0.325
    }
  },
  "context": {
    "symbol": "NFLX",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "close_before",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "hold",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "swing-desk",
      "preview": {
        "text": "NFLX (2026-10-30): no earnings conflict (within 10 days 5%). Hold to plan."
      }
    }
  ]
}

abs beat_streak days_to_earnings last_earnings_move next_report_bmo

Swing trader · example 12

Adaptive average with rec(): is HD above its smoothed price

A recursive exponential smoother (10% per bar) as a trend line, written with rec().

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

State

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

Questions

above_recruleC > rec(C, self + 0.1 * (C - self))
Above a recursive 10%-per-bar smoother
above_emaruleC > ema(C, 20)
Above the 20-day EMA
mean100ruleC > mean(C, 100)
Above the 100-day mean
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
above_rec
Above a recursive 10%-per-bar smoother
0.9046true
above_ema
Above the 20-day EMA
0.9048true
mean100
Above the 100-day mean
0.699true
up_week
Higher in a week
0.55255% · close to even

What it means

For HD on the session of 2026-10-30: True now: Above a recursive 10%-per-bar smoother; Above the 20-day EMA; Above the 100-day mean. Forecasts: Higher in a week 55%.

Above the adaptive line and the 100-day mean is a trend to stay with; below both is no long swing.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "HD"
  },
  "questions": {
    "above_rec": {
      "type": "yes_no",
      "ask": "C > rec(C, self + 0.1 * (C - self))"
    },
    "above_ema": {
      "type": "yes_no",
      "ask": "C > ema(C, 20)"
    },
    "mean100": {
      "type": "yes_no",
      "ask": "C > mean(C, 100)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (HD, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "above_rec": {
      "yes_no": 0.9046,
      "rule": "C > rec(C, self + 0.1 * (C - self))",
      "basis": "rule"
    },
    "above_ema": {
      "yes_no": 0.9048,
      "rule": "C > ema(C, 20)",
      "basis": "rule"
    },
    "mean100": {
      "yes_no": 0.699,
      "rule": "C > mean(C, 100)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.552
    }
  },
  "context": {
    "symbol": "HD",
    "as_of": "2026-10-30"
  }
}

ema mean rec

Swing trader · example 13

Basing after an old breakout: CRM

Has it been more than 30 sessions since the last breakout, and is the base tight?

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

State

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

Questions

quietrulebarssince(C > highest(C, 20)) > 30
No 20-day breakout for 30 sessions
tightrule(max(H, 10) - min(L, 10)) / C < 0.05
A tight 10-day base (under 5% of price)
recent_lowrulelowestbars(L, 20) >= 15
The 20-day low is at least 15 bars old
base_volruleV < 0.6 * avg(V, 20)
Volume under 60% of normal
break_resforecastWill it break above resistance this week?
Breaking resistance this week

Answers

QuestionAnswerReading
quiet
No 20-day breakout for 30 sessions
0.0553false
tight
A tight 10-day base (under 5% of price)
0.1218false
recent_low
The 20-day low is at least 15 bars old
0.6005true
base_vol
Volume under 60% of normal
0.2454false
break_res
Breaking resistance this week
0.54454% · close to even

What it means

For CRM on the session of 2026-10-30: True now: The 20-day low is at least 15 bars old. Not true: No 20-day breakout for 30 sessions; A tight 10-day base (under 5% of price); Volume under 60% of normal. Forecasts: Breaking resistance this week 54%.

A long, quiet, tight base with drying volume is a stock to set an alert above; it is not yet a trade.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "CRM"
  },
  "questions": {
    "quiet": {
      "type": "yes_no",
      "ask": "barssince(C > highest(C, 20)) > 30"
    },
    "tight": {
      "type": "yes_no",
      "ask": "(max(H, 10) - min(L, 10)) / C < 0.05"
    },
    "recent_low": {
      "type": "yes_no",
      "ask": "lowestbars(L, 20) >= 15"
    },
    "base_vol": {
      "type": "yes_no",
      "ask": "V < 0.6 * avg(V, 20)"
    },
    "break_res": {
      "type": "yes_no",
      "instructions": "Will it break above resistance this week?"
    }
  }
}
Response JSON (CRM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "quiet": {
      "yes_no": 0.0553,
      "rule": "barssince(C > highest(C, 20)) > 30",
      "basis": "rule"
    },
    "tight": {
      "yes_no": 0.1218,
      "rule": "(max(H, 10) - min(L, 10)) / C < 0.05",
      "basis": "rule"
    },
    "recent_low": {
      "yes_no": 0.6005,
      "rule": "lowestbars(L, 20) >= 15",
      "basis": "rule"
    },
    "base_vol": {
      "yes_no": 0.2454,
      "rule": "V < 0.6 * avg(V, 20)",
      "basis": "rule"
    },
    "break_res": {
      "yes_no": 0.544
    }
  },
  "context": {
    "symbol": "CRM",
    "as_of": "2026-10-30"
  }
}

avg barssince highest lowestbars max min

Swing trader · example 14

Rising weekly lows on COST

Each week's low above the week before is a clean swing uptrend in five-day blocks.

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

State

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

Questions

weekly_lowrulemin(L, 5) > ref(min(L, 5), -5)
This week's low is above last week's
range_exprule(max(H, 5) - min(L, 5)) > 1.5 * ref(max(H, 5) - min(L, 5), -5)
This week's range is 1.5× last week's
leaderruleroc(C, 63) > 10 and C >= 0.95 * max(H, 63)
Up more than 10% in a quarter, near the high
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
weekly_low
This week's low is above last week's
0.3501false
range_exp
This week's range is 1.5× last week's
0.2177false
leader
Up more than 10% in a quarter, near the high
0.2031false
up_week
Higher in a week
0.51952% · close to even

What it means

For COST on the session of 2026-10-30: Not true: This week's low is above last week's; This week's range is 1.5× last week's; Up more than 10% in a quarter, near the high. Forecasts: Higher in a week 52%.

Rising weekly lows and quarter leadership keep the swing on; a range expansion week against it is the warning.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "COST"
  },
  "questions": {
    "weekly_low": {
      "type": "yes_no",
      "ask": "min(L, 5) > ref(min(L, 5), -5)"
    },
    "range_exp": {
      "type": "yes_no",
      "ask": "(max(H, 5) - min(L, 5)) > 1.5 * ref(max(H, 5) - min(L, 5), -5)"
    },
    "leader": {
      "type": "yes_no",
      "ask": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (COST, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "weekly_low": {
      "yes_no": 0.3501,
      "rule": "min(L, 5) > ref(min(L, 5), -5)",
      "basis": "rule"
    },
    "range_exp": {
      "yes_no": 0.2177,
      "rule": "(max(H, 5) - min(L, 5)) > 1.5 * ref(max(H, 5) - min(L, 5), -5)",
      "basis": "rule"
    },
    "leader": {
      "yes_no": 0.2031,
      "rule": "roc(C, 63) > 10 and C >= 0.95 * max(H, 63)",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.519
    }
  },
  "context": {
    "symbol": "COST",
    "as_of": "2026-10-30"
  }
}

max min ref roc

Swing trader · example 15

Swing short setup in INTC: lower highs under the 50-day

Short only weak names: lower swing highs, below the 50-day, a bearish candle.

ora-fin-0.1.1INTC6 questions1 action
  1. StateINTC
  2. Questions6 asked
  3. Answersreal, captured
  4. Actions1 rule · dry run

State

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

Questions

lh_llEnglish → ruleIs the stock making lower swing highs and lower swing lows?
below50ruleC < sma(C, 50)
Below the 50-day
cross_dnrulecrossdown(sma(C, 20), sma(C, 50))
20-day crossed below the 50-day today
bearruleengulfing_bear()
engulfing bear candle: A red body that engulfs yesterday's green body.
darkruledark_cloud()
dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

QuestionAnswerReading
lh_ll
Is the stock making lower swing highs and lower swing lows
compiled to (swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2))
0.1552false
below50
Below the 50-day
0.9415true
cross_dn
20-day crossed below the 50-day today
0.05false
bear
engulfing bear candle: A red body that engulfs yesterday's green body.
0.0537false
dark
dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).
0.0537false
down_week
Lower in a week
0.54154% · close to even

Actions

Rules on the answers decide what to send.

lh_ll >= 0.6 and below50 >= 0.6 and (bear >= 0.6 or dark >= 0.6)→Emailme
What each action would send 0 of 1 fired · dry run, nothing sent
short_idearule false: skipped

What it means

For INTC on the session of 2026-10-30: True now: Below the 50-day. Not true: Is the stock making lower swing highs and lower swing lows; 20-day crossed below the 50-day today; engulfing bear candle: A red body that engulfs yesterday's green body.; dark cloud candle: After a green day, opens above its close and closes below the middle of its body (but above its open).. Forecasts: Lower in a week 54%. No action fired: every rule was false.

Lower pivots below a falling average plus a bearish candle is the short entry; without the structure, no short.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "INTC"
  },
  "questions": {
    "lh_ll": {
      "type": "yes_no",
      "instructions": "Is the stock making lower swing highs and lower swing lows?"
    },
    "below50": {
      "type": "yes_no",
      "ask": "C < sma(C, 50)"
    },
    "cross_dn": {
      "type": "yes_no",
      "ask": "crossdown(sma(C, 20), sma(C, 50))"
    },
    "bear": {
      "type": "yes_no",
      "ask": "engulfing_bear()"
    },
    "dark": {
      "type": "yes_no",
      "ask": "dark_cloud()"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  },
  "actions": [
    {
      "id": "short_idea",
      "when": "lh_ll >= 0.6 and below50 >= 0.6 and (bear >= 0.6 or dark >= 0.6)",
      "do": "email",
      "connection": "me",
      "subject": "Short setup: {{symbol}}",
      "message": "{{symbol}} ({{as_of}}): lower swing highs and lows under the 50-day with a bearish candle. Lower in a week {{down_week|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (INTC, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "lh_ll": {
      "yes_no": 0.1552,
      "rule": "(swinghigh(5, 1) < swinghigh(5, 2)) and (swinglow(5, 1) < swinglow(5, 2))",
      "basis": "pattern"
    },
    "below50": {
      "yes_no": 0.9415,
      "rule": "C < sma(C, 50)",
      "basis": "rule"
    },
    "cross_dn": {
      "yes_no": 0.05,
      "rule": "crossdown(sma(C, 20), sma(C, 50))",
      "basis": "rule"
    },
    "bear": {
      "yes_no": 0.0537,
      "rule": "engulfing_bear()",
      "basis": "rule"
    },
    "dark": {
      "yes_no": 0.0537,
      "rule": "dark_cloud()",
      "basis": "rule"
    },
    "down_week": {
      "yes_no": 0.541
    }
  },
  "context": {
    "symbol": "INTC",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "short_idea",
      "fired": false,
      "status": "skipped"
    }
  ]
}

crossdown dark_cloud engulfing_bear sma swinghigh swinglow

Swing trader · example 16

Friday swing review: my watchlist after the close

Every Friday, the same setup questions over the swing watchlist, posted to Slack only where a setup exists.

ora-fin-0.1.16 symbols, one request each4 questions1 actionworkflow · Fri at 17:00 ET
  1. ScheduleFri at 17:00 ET
  2. State6 symbols
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

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

Questions

entryruleC > sma(C, 200) and C < sma(C, 20) and rsi(C, 14) > 40
Uptrend, under the 20-day, RSI still above 40
boruleC > highest(C, 20)
20-day closing breakout
rrruleC > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))
At least 2:1 to the last swing high, stop at the last swing low
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symbolentryruleborulerrruleup_weekforecastFired
AAPL0.32870.31460.40550.59none
MSFT0.74270.06040.27210.574setup
NVDA0.21840.05370.27360.527none
AMD0.47830.05370.52330.577none
AMZN0.30730.05450.32510.493none
JPM0.31490.18650.38770.558none

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.

entry >= 0.6 or bo >= 0.6→Slackswing-desk
AAPL 0 of 1 fired · dry run, nothing sent
MSFT 1 of 1 fired · dry run, nothing sent
setupwould send (dry run)Slack → swing-desk
{
  "text": "MSFT (2026-10-30): setup for next week. Pullback entry 74%, 20-day breakout 6%, 2:1 reward 27%, higher in a week 57%."
}
NVDA 0 of 1 fired · dry run, nothing sent
AMD 0 of 1 fired · dry run, nothing sent
AMZN 0 of 1 fired · dry run, nothing sent
JPM 0 of 1 fired · dry run, nothing sent

What it means

Session of 2026-10-30, 6 symbols: Uptrend, under the 20-day, RSI still above 40: true for MSFT of 6. 20-day closing breakout: true for none of 6. At least 2:1 to the last swing high, stop at the last swing low: true for none of 6. Highest odds for “Higher in a week”: AAPL at 59%. setup fired for MSFT.

The weekend list is whatever had an entry or a breakout; everything else waits a week.

As a scheduled workflow (Fri at 17:00 ET)

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

{
  "name": "Friday swing review: my watchlist after the close",
  "symbols": "AAPL MSFT NVDA AMD AMZN JPM",
  "days": [
    5
  ],
  "at_time": "17:00",
  "model": "ora-fin-0.1.1",
  "questions": {
    "entry": {
      "type": "yes_no",
      "ask": "C > sma(C, 200) and C < sma(C, 20) and rsi(C, 14) > 40"
    },
    "bo": {
      "type": "yes_no",
      "ask": "C > highest(C, 20)"
    },
    "rr": {
      "type": "yes_no",
      "ask": "C > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "setup",
      "when": "entry >= 0.6 or bo >= 0.6",
      "do": "slack",
      "connection": "swing-desk",
      "message": "{{symbol}} ({{as_of}}): setup for next week. Pullback entry {{entry|pct}}, 20-day breakout {{bo|pct}}, 2:1 reward {{rr|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": {
    "entry": {
      "type": "yes_no",
      "ask": "C > sma(C, 200) and C < sma(C, 20) and rsi(C, 14) > 40"
    },
    "bo": {
      "type": "yes_no",
      "ask": "C > highest(C, 20)"
    },
    "rr": {
      "type": "yes_no",
      "ask": "C > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  },
  "actions": [
    {
      "id": "setup",
      "when": "entry >= 0.6 or bo >= 0.6",
      "do": "slack",
      "connection": "swing-desk",
      "message": "{{symbol}} ({{as_of}}): setup for next week. Pullback entry {{entry|pct}}, 20-day breakout {{bo|pct}}, 2:1 reward {{rr|pct}}, higher in a week {{up_week|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (AAPL, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "entry": {
      "yes_no": 0.3287,
      "rule": "C > sma(C, 200) and C < sma(C, 20) and rsi(C, 14) > 40",
      "basis": "rule"
    },
    "bo": {
      "yes_no": 0.3146,
      "rule": "C > highest(C, 20)",
      "basis": "rule"
    },
    "rr": {
      "yes_no": 0.4055,
      "rule": "C > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.59
    }
  },
  "context": {
    "symbol": "AAPL",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "setup",
      "fired": false,
      "status": "skipped"
    }
  ]
}

highest rsi sma swinghigh swinglow

Swing trader · example 17

Percent-rank strength: is GS's 3-month return near the top of its year

Rank today's momentum against its own last year instead of a fixed threshold.

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

State

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

Questions

rankrulepercentrank(roc(C, 63), 252) > 80
3-month return in the top 20% of the past year
rocruleroc(C, 20) > 5
Up more than 5% in 20 sessions
zsrulezscore(C, 50) > 1
Close more than 1 standard deviation above its 50-day mean
rally5forecastWill it rally at least 5% at some point in the next month?
A 5% rally within a month

Answers

QuestionAnswerReading
rank
3-month return in the top 20% of the past year
0.0537false
roc
Up more than 5% in 20 sessions
0.1196false
zs
Close more than 1 standard deviation above its 50-day mean
0.0604false
rally5
A 5% rally within a month
0.61562% · likely

What it means

For GS on the session of 2026-10-30: Not true: 3-month return in the top 20% of the past year; Up more than 5% in 20 sessions; Close more than 1 standard deviation above its 50-day mean. Forecasts: A 5% rally within a month 62%.

Momentum in the top fifth of its own year is a leader to buy on pullbacks; a z-score above one says it is extended now.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "GS"
  },
  "questions": {
    "rank": {
      "type": "yes_no",
      "ask": "percentrank(roc(C, 63), 252) > 80"
    },
    "roc": {
      "type": "yes_no",
      "ask": "roc(C, 20) > 5"
    },
    "zs": {
      "type": "yes_no",
      "ask": "zscore(C, 50) > 1"
    },
    "rally5": {
      "type": "yes_no",
      "instructions": "Will it rally at least 5% at some point in the next month?"
    }
  }
}
Response JSON (GS, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "rank": {
      "yes_no": 0.0537,
      "rule": "percentrank(roc(C, 63), 252) > 80",
      "basis": "rule"
    },
    "roc": {
      "yes_no": 0.1196,
      "rule": "roc(C, 20) > 5",
      "basis": "rule"
    },
    "zs": {
      "yes_no": 0.0604,
      "rule": "zscore(C, 50) > 1",
      "basis": "rule"
    },
    "rally5": {
      "yes_no": 0.615
    }
  },
  "context": {
    "symbol": "GS",
    "as_of": "2026-10-30"
  }
}

percentrank roc zscore

Swing trader · example 18

Cumulative up-vs-down days on PEP

Over the whole history loaded, have up days outnumbered down days, and is the recent stretch stronger?

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

State

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

Questions

cumrulecum(C > C[-1]) > cum(C < C[-1])
Up days outnumber down days over the loaded history
two_upruleC > C[-1] and C[-1] > C[-2]
Two higher closes in a row
log_uprulelog(C / C[-20]) > 0.03
Log return over 20 sessions above 3%
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

QuestionAnswerReading
cum
Up days outnumber down days over the loaded history
0.9463true
two_up
Two higher closes in a row
0.8044true
log_up
Log return over 20 sessions above 3%
0.8685true
up_week
Higher in a week
0.50551% · close to even

What it means

For PEP on the session of 2026-10-30: True now: Up days outnumber down days over the loaded history; Two higher closes in a row; Log return over 20 sessions above 3%. Forecasts: Higher in a week 51%.

A long-run up-day surplus with a rising month supports a swing long in a defensive name.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "PEP"
  },
  "questions": {
    "cum": {
      "type": "yes_no",
      "ask": "cum(C > C[-1]) > cum(C < C[-1])"
    },
    "two_up": {
      "type": "yes_no",
      "ask": "C > C[-1] and C[-1] > C[-2]"
    },
    "log_up": {
      "type": "yes_no",
      "ask": "log(C / C[-20]) > 0.03"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (PEP, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "cum": {
      "yes_no": 0.9463,
      "rule": "cum(C > C[-1]) > cum(C < C[-1])",
      "basis": "rule"
    },
    "two_up": {
      "yes_no": 0.8044,
      "rule": "C > C[-1] and C[-1] > C[-2]",
      "basis": "rule"
    },
    "log_up": {
      "yes_no": 0.8685,
      "rule": "log(C / C[-20]) > 0.03",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.505
    }
  },
  "context": {
    "symbol": "PEP",
    "as_of": "2026-10-30"
  }
}

cum log offset

Swing trader · example 19

Risk/reward check sent to my journal (Zapier)

Log every planned swing with its reward-to-risk check to a trading journal through a Zapier webhook.

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

State

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

Questions

rrruleC > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))
At least 2:1 to the last swing high, stop at the last swing low
stopruleC > swinglow(5) and C - swinglow(5) < 1.5 * atr(14)
A stop under the last swing low is within 1.5 ATR
entryEnglish → ruleIs the stock in an uptrend with a pullback to the 20-day (entry zone)?
up_weekforecastWill the stock be higher in a week?
Higher in a week
drop5forecastWill it drop at least 5% at some point in the next month?
A 5% drawdown within a month

Answers

QuestionAnswerReading
rr
At least 2:1 to the last swing high, stop at the last swing low
0.1345false
stop
A stop under the last swing low is within 1.5 ATR
0.1081false
entry
Is the stock in an uptrend with a pullback to the 20-day (entry zone)
compiled to (C > sma(C, 50)) and (sma(C, 50) > sma(C, 200)) and (L <= sma(C, 20) * 1.01) and (C >= sma(C, 20))
0.3632false
up_week
Higher in a week
0.48549% · close to even
drop5
A 5% drawdown within a month
0.42843% · close to even

Actions

Rules on the answers decide what to send.

rr >= 0 →Webhookzapier-journal
What each action would send 1 of 1 fired · dry run, nothing sent
journalwould send (dry run)Webhook → zapier-journal
{
  "symbol": "UNH",
  "date": "2026-10-30",
  "reward_2to1": 0.1345,
  "stop_within_1_5_atr": 0.1081,
  "entry_zone": 0.3632,
  "p_up_week": 0.485,
  "p_drop5": 0.428
}

What it means

For UNH on the session of 2026-10-30: Not true: At least 2:1 to the last swing high, stop at the last swing low; A stop under the last swing low is within 1.5 ATR; Is the stock in an uptrend with a pullback to the 20-day (entry zone). Forecasts: Higher in a week 49%; A 5% drawdown within a month 43%. Fired: journal (Webhook → zapier-journal).

Every run is logged; the journal shows later whether 2:1 setups worked better than the rest.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "UNH"
  },
  "questions": {
    "rr": {
      "type": "yes_no",
      "ask": "C > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))"
    },
    "stop": {
      "type": "yes_no",
      "ask": "C > swinglow(5) and C - swinglow(5) < 1.5 * atr(14)"
    },
    "entry": {
      "type": "yes_no",
      "instructions": "Is the stock in an uptrend with a pullback to the 20-day (entry zone)?"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    },
    "drop5": {
      "type": "yes_no",
      "instructions": "Will it drop at least 5% at some point in the next month?"
    }
  },
  "actions": [
    {
      "id": "journal",
      "when": "rr >= 0 ",
      "do": "webhook",
      "connection": "zapier-journal",
      "body": {
        "symbol": "{{symbol}}",
        "date": "{{as_of}}",
        "reward_2to1": "{{rr}}",
        "stop_within_1_5_atr": "{{stop}}",
        "entry_zone": "{{entry}}",
        "p_up_week": "{{up_week}}",
        "p_drop5": "{{drop5}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (UNH, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "rr": {
      "yes_no": 0.1345,
      "rule": "C > swinglow(5) and C < swinghigh(5) and swinghigh(5) - C >= 2 * (C - swinglow(5))",
      "basis": "rule"
    },
    "stop": {
      "yes_no": 0.1081,
      "rule": "C > swinglow(5) and C - swinglow(5) < 1.5 * atr(14)",
      "basis": "rule"
    },
    "entry": {
      "yes_no": 0.3632,
      "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": "pattern"
    },
    "up_week": {
      "yes_no": 0.485
    },
    "drop5": {
      "yes_no": 0.428
    }
  },
  "context": {
    "symbol": "UNH",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "journal",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "zapier-journal",
      "preview": {
        "body": {
          "symbol": "UNH",
          "date": "2026-10-30",
          "reward_2to1": 0.1345,
          "stop_within_1_5_atr": 0.1081,
          "entry_zone": 0.3632,
          "p_up_week": 0.485,
          "p_drop5": 0.428
        }
      }
    }
  ]
}

atr sma swinghigh swinglow

Swing trader · example 20

Monthly and weekly trend agree on GE

Swing trades work best when the month and the week point the same way.

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

State

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

Questions

monthruleC > C[-21]
Higher than a month ago
weekruleC > C[-5]
Higher than a week ago
stackruleC > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)
Stacked averages: close > 20 EMA > 50 > 200
hhEnglish → 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

QuestionAnswerReading
month
Higher than a month ago
0.2586false
week
Higher than a week ago
0.9062true
stack
Stacked averages: close > 20 EMA > 50 > 200
0.1106false
hh
Is the stock making higher swing highs and higher swing lows
compiled to (swinghigh(5, 1) > swinghigh(5, 2)) and (swinglow(5, 1) > swinglow(5, 2))
0.1895false
up_week
Higher in a week
0.49650% · close to even

What it means

For GE on the session of 2026-10-30: True now: Higher than a week ago. Not true: Higher than a month ago; Stacked averages: close > 20 EMA > 50 > 200; Is the stock making higher swing highs and higher swing lows. Forecasts: Higher in a week 50%.

When both the month and week are up and averages stack, the trader takes long swings only.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "GE"
  },
  "questions": {
    "month": {
      "type": "yes_no",
      "ask": "C > C[-21]"
    },
    "week": {
      "type": "yes_no",
      "ask": "C > C[-5]"
    },
    "stack": {
      "type": "yes_no",
      "ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
    },
    "hh": {
      "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 (GE, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "month": {
      "yes_no": 0.2586,
      "rule": "C > C[-21]",
      "basis": "rule"
    },
    "week": {
      "yes_no": 0.9062,
      "rule": "C > C[-5]",
      "basis": "rule"
    },
    "stack": {
      "yes_no": 0.1106,
      "rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "hh": {
      "yes_no": 0.1895,
      "rule": "(swinghigh(5, 1) > swinghigh(5, 2)) and (swinglow(5, 1) > swinglow(5, 2))",
      "basis": "pattern"
    },
    "up_week": {
      "yes_no": 0.496
    }
  },
  "context": {
    "symbol": "GE",
    "as_of": "2026-10-30"
  }
}

ema offset sma swinghigh 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, 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.