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

Options trader: 20 ways to use Ora

Picks strategies by volatility regime, expected range and the event calendar. Each example is a complete, runnable request with the real answers it returned (30 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 (48)

offset 7atr 6std 6ref 6log 5sqrt 5abs 5sma 5bbupper 3max 3bblower 2min 2last_earnings_move 2pays_dividend 2adx 1between 1days_to_earnings 1last_earnings_gap 1next_report_amc 1macdhist 1rsi 1cut_last 1swinglow 1bbmid 1percentrank 1atr_pct 1days_since_ex_div 1days_to_ex_div 1hanging_man 1harami_bear 1highest 1inverted_hammer 1shooting_star 1lowest 1tr 1beats_last4 1ema 1eps_growth_yoy 1avg 1years_of_growth 1days_since_split 1days_to_split 1last_split_ratio 1splits_5y 1barssince 1crossup 1beat_eps_last 1days_since_earnings 1

Examples 11–20 of 20 · page 2 of 2

Options trader · example 11

Shooting star at a high: put spread on NFLX

A shooting star after a 20-day high is a short-term top signal often traded with a put spread.

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

State

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

Questions

ss_highruleshooting_star() and H > highest(H, 20)
Shooting star at a 20-day high
ssruleshooting_star()
shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.
hangingrulehanging_man()
hanging man candle: Hammer shape, closing above the close five bars back.
invruleinverted_hammer()
inverted hammer candle: Shooting-star shape after a five-bar decline.
harami_bearruleharami_bear()
harami bear candle: A small red body inside yesterday's green body.
down_weekforecastWill the stock be lower in a week?
Lower in a week

Answers

QuestionAnswerReading
ss_high
Shooting star at a 20-day high
0.0689false
ss
shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.
0.1284false
hanging
hanging man candle: Hammer shape, closing above the close five bars back.
0.1284false
inv
inverted hammer candle: Shooting-star shape after a five-bar decline.
0.15false
harami_bear
harami bear candle: A small red body inside yesterday's green body.
0.2285false
down_week
Lower in a week
0.49249% · close to even

What it means

For NFLX on the session of 2026-10-30: Not true: Shooting star at a 20-day high; shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.; hanging man candle: Hammer shape, closing above the close five bars back.; inverted hammer candle: Shooting-star shape after a five-bar decline.; harami bear candle: A small red body inside yesterday's green body.. Forecasts: Lower in a week 49%.

A shooting star at a fresh high is the trigger for a defined-risk put spread; a lone candle without the high is not.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NFLX"
  },
  "questions": {
    "ss_high": {
      "type": "yes_no",
      "ask": "shooting_star() and H > highest(H, 20)"
    },
    "ss": {
      "type": "yes_no",
      "ask": "shooting_star()"
    },
    "hanging": {
      "type": "yes_no",
      "ask": "hanging_man()"
    },
    "inv": {
      "type": "yes_no",
      "ask": "inverted_hammer()"
    },
    "harami_bear": {
      "type": "yes_no",
      "ask": "harami_bear()"
    },
    "down_week": {
      "type": "yes_no",
      "instructions": "Will the stock be lower in a week?"
    }
  }
}
Response JSON (NFLX, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "ss_high": {
      "yes_no": 0.0689,
      "rule": "shooting_star() and H > highest(H, 20)",
      "basis": "rule"
    },
    "ss": {
      "yes_no": 0.1284,
      "rule": "shooting_star()",
      "basis": "rule"
    },
    "hanging": {
      "yes_no": 0.1284,
      "rule": "hanging_man()",
      "basis": "rule"
    },
    "inv": {
      "yes_no": 0.15,
      "rule": "inverted_hammer()",
      "basis": "rule"
    },
    "harami_bear": {
      "yes_no": 0.2285,
      "rule": "harami_bear()",
      "basis": "rule"
    },
    "down_week": {
      "yes_no": 0.492
    }
  },
  "context": {
    "symbol": "NFLX",
    "as_of": "2026-10-30"
  }
}

hanging_man harami_bear highest inverted_hammer shooting_star

Options trader · example 12

Calendar spread in XLU: quiet now, livelier later

Calendars like low near-term movement and higher volatility later.

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

State

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

Questions

hv_lowEnglish → ruleIs 20-day historical volatility below 20%?
nr7rule(H - L) < lowest(H - L, 6)
Narrowest range of the last seven sessions (NR7)
calmforecastWill volatility calm down over the next 5 days?
Volatility calming over 5 days
vol_upforecastWill volatility be higher over the next month?
Higher volatility next month

Answers

QuestionAnswerReading
hv_low
Is 20-day historical volatility below 20%
compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2
0.9117true
nr7
Narrowest range of the last seven sessions (NR7)
0.6522true
calm
Volatility calming over 5 days
0.62262% · likely
vol_up
Higher volatility next month
0.45646% · close to even

What it means

For XLU on the session of 2026-10-30: True now: Is 20-day historical volatility below 20%; Narrowest range of the last seven sessions (NR7). Forecasts: Volatility calming over 5 days 62%; Higher volatility next month 46%.

Quiet now and higher-volatility odds for the month is the calendar setup.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "XLU"
  },
  "questions": {
    "hv_low": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "nr7": {
      "type": "yes_no",
      "ask": "(H - L) < lowest(H - L, 6)"
    },
    "calm": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    },
    "vol_up": {
      "type": "yes_no",
      "instructions": "Will volatility be higher over the next month?"
    }
  }
}
Response JSON (XLU, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "hv_low": {
      "yes_no": 0.9117,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "nr7": {
      "yes_no": 0.6522,
      "rule": "(H - L) < lowest(H - L, 6)",
      "basis": "rule"
    },
    "calm": {
      "yes_no": 0.622
    },
    "vol_up": {
      "yes_no": 0.456
    }
  },
  "context": {
    "symbol": "XLU",
    "as_of": "2026-10-30"
  }
}

log lowest offset sqrt std

Options trader · example 13

Same-day index options: is today a trend day in SPY

For short-dated index options, the type of day matters more than direction.

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

State

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

Questions

trend_uprule(O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))
A trend day up: opened near the low, closed near the high
trend_dnrule(H > L) and (O >= H - 0.2 * (H - L)) and (C <= L + 0.2 * (H - L))
Trend day down (opened near the high, closed near the low)
tr_wideruletr() > 1.5 * ref(atr(14), -1)
True range 1.5× yesterday's ATR
move2forecastWill the stock move more than 2% in either direction in 5 trading days?
A 2%+ move either way in 5 days
up_tmrforecastWill the stock be up tomorrow?
Up tomorrow

Answers

QuestionAnswerReading
trend_up
A trend day up: opened near the low, closed near the high
0.0537false
trend_dn
Trend day down (opened near the high, closed near the low)
0.0669false
tr_wide
True range 1.5× yesterday's ATR
0.943true
move2
A 2%+ move either way in 5 days
0.39439% · unlikely
up_tmr
Up tomorrow
0.53253% · close to even

What it means

For SPY on the session of 2026-10-30: True now: True range 1.5× yesterday's ATR. Not true: A trend day up: opened near the low, closed near the high; Trend day down (opened near the high, closed near the low). Forecasts: A 2%+ move either way in 5 days 39%; Up tomorrow 53%.

After a trend day the next day is often quieter, which favors selling same-day premium.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "SPY"
  },
  "questions": {
    "trend_up": {
      "type": "yes_no",
      "ask": "(O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))"
    },
    "trend_dn": {
      "type": "yes_no",
      "ask": "(H > L) and (O >= H - 0.2 * (H - L)) and (C <= L + 0.2 * (H - L))"
    },
    "tr_wide": {
      "type": "yes_no",
      "ask": "tr() > 1.5 * ref(atr(14), -1)"
    },
    "move2": {
      "type": "yes_no",
      "instructions": "Will the stock move more than 2% in either direction in 5 trading days?"
    },
    "up_tmr": {
      "type": "yes_no",
      "instructions": "Will the stock be up tomorrow?"
    }
  }
}
Response JSON (SPY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend_up": {
      "yes_no": 0.0537,
      "rule": "(O <= L + 0.2 * (H - L)) and (C >= H - 0.2 * (H - L))",
      "basis": "rule"
    },
    "trend_dn": {
      "yes_no": 0.0669,
      "rule": "(H > L) and (O >= H - 0.2 * (H - L)) and (C <= L + 0.2 * (H - L))",
      "basis": "rule"
    },
    "tr_wide": {
      "yes_no": 0.943,
      "rule": "tr() > 1.5 * ref(atr(14), -1)",
      "basis": "rule"
    },
    "move2": {
      "yes_no": 0.394
    },
    "up_tmr": {
      "yes_no": 0.532
    }
  },
  "context": {
    "symbol": "SPY",
    "as_of": "2026-10-30"
  }
}

atr ref tr

Options trader · example 14

LEAPS on MSFT: long-term trend and earnings quality

Long-dated calls need a long-term trend and a business that keeps beating.

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

State

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

Questions

trendrulesma(C, 200) > ref(sma(C, 200), -20)
The 200-day average is rising
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
beatsEnglish → ruleHas the stock beaten EPS estimates in at least 3 of the last 4 quarters?
eps_gruleeps_growth_yoy > 10
EPS up more than 10% on the year
rally10forecastWill it rally at least 10% at some point in the next month?
A 10% rally within a month

Answers

QuestionAnswerReading
trend
The 200-day average is rising
0.8991true
stack
Stacked averages: close > 20 EMA > 50 > 200
0.3192false
beats
Has the stock beaten EPS estimates in at least 3 of the last 4 quarters
compiled to beats_last4 >= 3
0.8591true
eps_g
EPS up more than 10% on the year
0.8327true
rally10
A 10% rally within a month
0.49550% · close to even

What it means

For MSFT on the session of 2026-10-30: True now: The 200-day average is rising; Has the stock beaten EPS estimates in at least 3 of the last 4 quarters; EPS up more than 10% on the year. Not true: Stacked averages: close > 20 EMA > 50 > 200. Forecasts: A 10% rally within a month 50%.

Rising 200-day and steady beats support a LEAPS position; a broken trend or misses argue for stock or nothing.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "MSFT"
  },
  "questions": {
    "trend": {
      "type": "yes_no",
      "ask": "sma(C, 200) > ref(sma(C, 200), -20)"
    },
    "stack": {
      "type": "yes_no",
      "ask": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)"
    },
    "beats": {
      "type": "yes_no",
      "instructions": "Has the stock beaten EPS estimates in at least 3 of the last 4 quarters?"
    },
    "eps_g": {
      "type": "yes_no",
      "ask": "eps_growth_yoy > 10"
    },
    "rally10": {
      "type": "yes_no",
      "instructions": "Will it rally at least 10% at some point in the next month?"
    }
  }
}
Response JSON (MSFT, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "trend": {
      "yes_no": 0.8991,
      "rule": "sma(C, 200) > ref(sma(C, 200), -20)",
      "basis": "rule"
    },
    "stack": {
      "yes_no": 0.3192,
      "rule": "C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)",
      "basis": "rule"
    },
    "beats": {
      "yes_no": 0.8591,
      "rule": "beats_last4 >= 3",
      "basis": "pattern"
    },
    "eps_g": {
      "yes_no": 0.8327,
      "rule": "eps_growth_yoy > 10",
      "basis": "rule"
    },
    "rally10": {
      "yes_no": 0.495
    }
  },
  "context": {
    "symbol": "MSFT",
    "as_of": "2026-10-30"
  }
}

beats_last4 ema eps_growth_yoy ref sma

Options trader · example 15

Wheel strategy candidates: KO, PEP, JNJ, PG

Pick names for selling puts then calls: liquid, steady, dividend-paying, not crashing.

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

State

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

Questions

liquidEnglish → ruleDoes the stock trade more than $50 million a day on average?
hv_lowEnglish → ruleIs 20-day historical volatility below 20%?
growerruleyears_of_growth >= 10
Ten years of dividend growth
drawdownruleC < 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

Symbolliquidrulehv_lowrulegrowerruledrawdownruledrop5forecast
KO0.94630.26050.94630.05370.361
PEP0.94630.07940.94630.17150.418
JNJ0.94630.06660.94630.05370.461
PG0.94630.08730.94630.05370.357

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: Does the stock trade more than $50 million a day on average: true for KO, PEP, JNJ, PG of 4. Is 20-day historical volatility below 20%: true for none of 4. Ten years of dividend growth: true for KO, PEP, JNJ, PG of 4. More than 20% off the 52-week high: true for none of 4. Highest odds for “A 5% drawdown within a month”: JNJ at 46%.

Liquid, calm dividend growers without a deep drawdown are wheel candidates; the drawdown forecast sets strike distance.

Request JSON (KO; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "KO"
  },
  "questions": {
    "liquid": {
      "type": "yes_no",
      "instructions": "Does the stock trade more than $50 million a day on average?"
    },
    "hv_low": {
      "type": "yes_no",
      "instructions": "Is 20-day historical volatility below 20%?"
    },
    "grower": {
      "type": "yes_no",
      "ask": "years_of_growth >= 10"
    },
    "drawdown": {
      "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 (KO, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "liquid": {
      "yes_no": 0.9463,
      "rule": "avg(C * V, 20) > 50000000",
      "basis": "pattern"
    },
    "hv_low": {
      "yes_no": 0.2605,
      "rule": "std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2",
      "basis": "pattern"
    },
    "grower": {
      "yes_no": 0.9463,
      "rule": "years_of_growth >= 10",
      "basis": "rule"
    },
    "drawdown": {
      "yes_no": 0.0537,
      "rule": "C < 0.8 * max(H, 252)",
      "basis": "rule"
    },
    "drop5": {
      "yes_no": 0.361
    }
  },
  "context": {
    "symbol": "KO",
    "as_of": "2026-10-30"
  }
}

avg log max offset sqrt std years_of_growth

Options trader · example 16

Overnight gap risk on short options: TSLA

Before holding short options overnight, check gap habits and tomorrow's gap odds.

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

State

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

Questions

gap_atrruleabs(O - C[-1]) > 0.5 * ref(atr(14), -1)
Gap bigger than half an ATR
unfilledruleL > H[-1]
An unfilled gap up
gap_upforecastWill it gap up tomorrow?
A gap up tomorrow
gap_dnforecastWill it gap down tomorrow?
A gap down tomorrow
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
Gap bigger than half an ATR
0.8646true
unfilled
An unfilled gap up
0.0577false
gap_up
A gap up tomorrow
0.22422% · unlikely
gap_dn
A gap down tomorrow
0.15716% · unlikely
big5
A big move either way in 5 days
0.24825% · unlikely

Actions

Rules on the answers decide what to send.

gap_up >= 0.1 or gap_dn >= 0.1→Slackoptions-desk
else→Slackoptions-desk
What each action would send 1 of 2 fired · dry run, nothing sent
close_shortwould send (dry run)Slack → options-desk
{
  "text": "TSLA (2026-10-30): overnight gap odds up 22% / down 16%. Close short premium."
}
hold_shortrule false: skipped

What it means

For TSLA on the session of 2026-10-30: True now: Gap bigger than half an ATR. Not true: An unfilled gap up. Forecasts: A gap up tomorrow 22%; A gap down tomorrow 16%; A big move either way in 5 days 25%. Fired: close_short (Slack → options-desk).

If gap odds are meaningful in either direction, short options are closed before the bell.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "TSLA"
  },
  "questions": {
    "gap_atr": {
      "type": "yes_no",
      "ask": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)"
    },
    "unfilled": {
      "type": "yes_no",
      "ask": "L > H[-1]"
    },
    "gap_up": {
      "type": "yes_no",
      "instructions": "Will it gap up tomorrow?"
    },
    "gap_dn": {
      "type": "yes_no",
      "instructions": "Will it gap down tomorrow?"
    },
    "big5": {
      "type": "yes_no",
      "instructions": "Will there be a big move in either direction in the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "close_short",
      "when": "gap_up >= 0.1 or gap_dn >= 0.1",
      "do": "slack",
      "connection": "options-desk",
      "message": "{{symbol}} ({{as_of}}): overnight gap odds up {{gap_up|pct}} / down {{gap_dn|pct}}. Close short premium."
    },
    {
      "id": "hold_short",
      "when": "else",
      "do": "slack",
      "connection": "options-desk",
      "message": "{{symbol}} ({{as_of}}): low gap odds; short premium can be held."
    }
  ],
  "dry_run": true
}
Response JSON (TSLA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "gap_atr": {
      "yes_no": 0.8646,
      "rule": "abs(O - C[-1]) > 0.5 * ref(atr(14), -1)",
      "basis": "rule"
    },
    "unfilled": {
      "yes_no": 0.0577,
      "rule": "L > H[-1]",
      "basis": "rule"
    },
    "gap_up": {
      "yes_no": 0.224
    },
    "gap_dn": {
      "yes_no": 0.157
    },
    "big5": {
      "yes_no": 0.248
    }
  },
  "context": {
    "symbol": "TSLA",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "close_short",
      "fired": true,
      "status": "dry_run",
      "do": "slack",
      "connection": "options-desk",
      "preview": {
        "text": "TSLA (2026-10-30): overnight gap odds up 22% / down 16%. Close short premium."
      }
    },
    {
      "id": "hold_short",
      "fired": false,
      "status": "skipped"
    }
  ]
}

abs atr offset ref

Options trader · example 17

Split check before reading old option strikes: NVDA, TSLA, AMZN

Past splits change strikes and contract sizes; check split history before comparing chains.

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

State

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

Questions

split3yruledays_since_split <= 1095
Split in the last three years
ratiorulelast_split_ratio >= 4
Last split at least 4-for-1
announcedruledays_to_split <= 365
A split is announced
multirulesplits_5y >= 2
Two or more splits in five years

Answers

Symbolsplit3yruleratioruleannouncedrulemultirule
NVDA0.94630.94630.05370.1409
TSLA0.05370.06830.05370.1409
AMZN0.05370.94630.05370.1409

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

What it means

Session of 2026-10-30, 3 symbols: Split in the last three years: true for NVDA of 3. Last split at least 4-for-1: true for NVDA, AMZN of 3. A split is announced: true for none of 3. Two or more splits in five years: true for none of 3.

If a split happened recently, old strikes and open interest must be adjusted before any comparison.

Request JSON (NVDA; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "NVDA"
  },
  "questions": {
    "split3y": {
      "type": "yes_no",
      "ask": "days_since_split <= 1095"
    },
    "ratio": {
      "type": "yes_no",
      "ask": "last_split_ratio >= 4"
    },
    "announced": {
      "type": "yes_no",
      "ask": "days_to_split <= 365"
    },
    "multi": {
      "type": "yes_no",
      "ask": "splits_5y >= 2"
    }
  }
}
Response JSON (NVDA, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "split3y": {
      "yes_no": 0.9463,
      "rule": "days_since_split <= 1095",
      "basis": "rule"
    },
    "ratio": {
      "yes_no": 0.9463,
      "rule": "last_split_ratio >= 4",
      "basis": "rule"
    },
    "announced": {
      "yes_no": 0.0537,
      "rule": "days_to_split <= 365",
      "basis": "rule"
    },
    "multi": {
      "yes_no": 0.1409,
      "rule": "splits_5y >= 2",
      "basis": "rule"
    }
  },
  "context": {
    "symbol": "NVDA",
    "as_of": "2026-10-30"
  }
}

days_since_split days_to_split last_split_ratio splits_5y

Options trader · example 18

Delta-hedge trigger for a long straddle in IWM

Rebalance the hedge after a large move; send the instruction to the execution system.

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

State

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

Questions

bigruleabs(C - C[-1]) > 1.5 * atr(14)
Today's move was bigger than 1.5 ATR
upruleC > C[-1]
Closed higher than yesterday
moveruleabs(C / C[-1] - 1) > 0.015
Moved more than 1.5% today
vol_riseforecastWill volatility rise over the next 5 days?
Volatility rising over 5 days

Answers

QuestionAnswerReading
big
Today's move was bigger than 1.5 ATR
0.1815false
up
Closed higher than yesterday
0.0707false
move
Moved more than 1.5% today
0.6739true
vol_rise
Volatility rising over 5 days
0.40841% · close to even

Actions

Rules on the answers decide what to send.

move >= 0.6 and up >= 0.6→Webhookexec-system
move >= 0.6→Webhookexec-system
What each action would send 1 of 2 fired · dry run, nothing sent
rehedge_sellrule false: skipped
rehedge_buywould send (dry run)Webhook → exec-system
{
  "underlying": "IWM",
  "action": "buy_shares_to_rehedge",
  "p_move": 0.6739,
  "as_of": "2026-10-30"
}

What it means

For IWM on the session of 2026-10-30: True now: Moved more than 1.5% today. Not true: Today's move was bigger than 1.5 ATR; Closed higher than yesterday. Forecasts: Volatility rising over 5 days 41%. Fired: rehedge_buy (Webhook → exec-system).

A move larger than the hedge band sends a re-hedge order in the opposite direction of the move.

Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "IWM"
  },
  "questions": {
    "big": {
      "type": "yes_no",
      "ask": "abs(C - C[-1]) > 1.5 * atr(14)"
    },
    "up": {
      "type": "yes_no",
      "ask": "C > C[-1]"
    },
    "move": {
      "type": "yes_no",
      "ask": "abs(C / C[-1] - 1) > 0.015"
    },
    "vol_rise": {
      "type": "yes_no",
      "instructions": "Will volatility rise over the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "rehedge_sell",
      "when": "move >= 0.6 and up >= 0.6",
      "do": "webhook",
      "connection": "exec-system",
      "body": {
        "underlying": "{{symbol}}",
        "action": "sell_shares_to_rehedge",
        "p_move": "{{move}}",
        "as_of": "{{as_of}}"
      }
    },
    {
      "id": "rehedge_buy",
      "when": "move >= 0.6",
      "do": "webhook",
      "connection": "exec-system",
      "body": {
        "underlying": "{{symbol}}",
        "action": "buy_shares_to_rehedge",
        "p_move": "{{move}}",
        "as_of": "{{as_of}}"
      }
    }
  ],
  "dry_run": true
}
Response JSON (IWM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "big": {
      "yes_no": 0.1815,
      "rule": "abs(C - C[-1]) > 1.5 * atr(14)",
      "basis": "rule"
    },
    "up": {
      "yes_no": 0.0707,
      "rule": "C > C[-1]",
      "basis": "rule"
    },
    "move": {
      "yes_no": 0.6739,
      "rule": "abs(C / C[-1] - 1) > 0.015",
      "basis": "rule"
    },
    "vol_rise": {
      "yes_no": 0.408
    }
  },
  "context": {
    "symbol": "IWM",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "rehedge_sell",
      "fired": false,
      "status": "skipped"
    },
    {
      "id": "rehedge_buy",
      "fired": true,
      "status": "dry_run",
      "do": "webhook",
      "connection": "exec-system",
      "preview": {
        "body": {
          "underlying": "IWM",
          "action": "buy_shares_to_rehedge",
          "p_move": 0.6739,
          "as_of": "2026-10-30"
        }
      }
    }
  ]
}

abs atr offset

Options trader · example 19

Long volatility products: UVXY and VXX trend

Volatility ETPs decay; only hold them while their own trend is up.

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

State

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

Questions

above20ruleC > sma(C, 20)
Above the 20-day average
crossuprulecrossup(C, sma(C, 20))
Crossed above the 20-day today
barsrulebarssince(crossup(C, sma(C, 20))) < 5
Crossed above the 20-day within 5 sessions
up_weekforecastWill the stock be higher in a week?
Higher in a week

Answers

Symbolabove20rulecrossuprulebarsruleup_weekforecast
UVXY0.92120.950.75150.486
VXX0.93130.950.75490.434

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

What it means

Session of 2026-10-30, 2 symbols: Above the 20-day average: true for UVXY, VXX of 2. Crossed above the 20-day today: true for UVXY, VXX of 2. Crossed above the 20-day within 5 sessions: true for UVXY, VXX of 2. Highest odds for “Higher in a week”: UVXY at 49%.

A fresh cross above the 20-day is the only time to hold these; below it, decay wins.

Request JSON (UVXY; the others differ only in the symbol)
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "UVXY"
  },
  "questions": {
    "above20": {
      "type": "yes_no",
      "ask": "C > sma(C, 20)"
    },
    "crossup": {
      "type": "yes_no",
      "ask": "crossup(C, sma(C, 20))"
    },
    "bars": {
      "type": "yes_no",
      "ask": "barssince(crossup(C, sma(C, 20))) < 5"
    },
    "up_week": {
      "type": "yes_no",
      "instructions": "Will the stock be higher in a week?"
    }
  }
}
Response JSON (UVXY, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "above20": {
      "yes_no": 0.9212,
      "rule": "C > sma(C, 20)",
      "basis": "rule"
    },
    "crossup": {
      "yes_no": 0.95,
      "rule": "crossup(C, sma(C, 20))",
      "basis": "rule"
    },
    "bars": {
      "yes_no": 0.7515,
      "rule": "barssince(crossup(C, sma(C, 20))) < 5",
      "basis": "rule"
    },
    "up_week": {
      "yes_no": 0.486
    }
  },
  "context": {
    "symbol": "UVXY",
    "as_of": "2026-10-30"
  }
}

barssince crossup sma

Options trader · example 20

After the report: sell volatility on JPM?

Once the report is out, implied volatility usually drops; check that the report happened and the move was small.

ora-fin-0.1.1JPM4 questions1 actionworkflow · Mon–Fri at 15:30 ET
  1. ScheduleMon–Fri at 15:30 ET
  2. StateJPM
  3. Questions4 asked
  4. Answersreal, captured
  5. Actions1 rule · dry run

State

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

Questions

recentruledays_since_earnings <= 5
Reported in the last 5 days
smallruleabs(last_earnings_move) < 3
Last earnings reaction under 3%
beatEnglish → ruleDid the stock beat EPS estimates last quarter?
calmforecastWill volatility calm down over the next 5 days?
Volatility calming over 5 days

Answers

QuestionAnswerReading
recent
Reported in the last 5 days
0.0537false
small
Last earnings reaction under 3%
0.9463true
beat
Did the stock beat EPS estimates last quarter
compiled to beat_eps_last > 0.5
0.1409false
calm
Volatility calming over 5 days
0.50551% · close to even

Actions

Rules on the answers decide what to send.

recent >= 0.6 and small >= 0.6→Emailme
What each action would send 0 of 1 fired · dry run, nothing sent
sell_volrule false: skipped

What it means

For JPM on the session of 2026-10-30: True now: Last earnings reaction under 3%. Not true: Reported in the last 5 days; Did the stock beat EPS estimates last quarter. Forecasts: Volatility calming over 5 days 51%. No action fired: every rule was false.

Reported, small reaction and calming volatility odds is the window to sell short-dated premium.

As a scheduled workflow (Mon–Fri at 15: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": "After the report: sell volatility on JPM?",
  "symbols": "JPM",
  "days": [
    1,
    2,
    3,
    4,
    5
  ],
  "at_time": "15:30",
  "model": "ora-fin-0.1.1",
  "questions": {
    "recent": {
      "type": "yes_no",
      "ask": "days_since_earnings <= 5"
    },
    "small": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) < 3"
    },
    "beat": {
      "type": "yes_no",
      "instructions": "Did the stock beat EPS estimates last quarter?"
    },
    "calm": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "sell_vol",
      "when": "recent >= 0.6 and small >= 0.6",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}}: post-earnings premium window",
      "message": "{{symbol}} ({{as_of}}) reported within 5 days with a small reaction. Calming odds {{calm|pct}}."
    }
  ]
}
Request JSON
{
  "model": "ora-fin-0.1.1",
  "state": {
    "symbol": "JPM"
  },
  "questions": {
    "recent": {
      "type": "yes_no",
      "ask": "days_since_earnings <= 5"
    },
    "small": {
      "type": "yes_no",
      "ask": "abs(last_earnings_move) < 3"
    },
    "beat": {
      "type": "yes_no",
      "instructions": "Did the stock beat EPS estimates last quarter?"
    },
    "calm": {
      "type": "yes_no",
      "instructions": "Will volatility calm down over the next 5 days?"
    }
  },
  "actions": [
    {
      "id": "sell_vol",
      "when": "recent >= 0.6 and small >= 0.6",
      "do": "email",
      "connection": "me",
      "subject": "{{symbol}}: post-earnings premium window",
      "message": "{{symbol}} ({{as_of}}) reported within 5 days with a small reaction. Calming odds {{calm|pct}}."
    }
  ],
  "dry_run": true
}
Response JSON (JPM, real)
{
  "model": "ora-fin-0.1.1",
  "answers": {
    "recent": {
      "yes_no": 0.0537,
      "rule": "days_since_earnings <= 5",
      "basis": "rule"
    },
    "small": {
      "yes_no": 0.9463,
      "rule": "abs(last_earnings_move) < 3",
      "basis": "rule"
    },
    "beat": {
      "yes_no": 0.1409,
      "rule": "beat_eps_last > 0.5",
      "basis": "pattern"
    },
    "calm": {
      "yes_no": 0.505
    }
  },
  "context": {
    "symbol": "JPM",
    "as_of": "2026-10-30"
  },
  "actions": [
    {
      "id": "sell_vol",
      "fired": false,
      "status": "skipped"
    }
  ]
}

abs beat_eps_last days_since_earnings last_earnings_move

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