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.
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.
- StateNFLX
- Questions6 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NFLX"} The server fills in the latest completed session.
Questions
ss_high | rule | shooting_star() and H > highest(H, 20)Shooting star at a 20-day high |
ss | rule | shooting_star()shooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise. |
hanging | rule | hanging_man()hanging man candle: Hammer shape, closing above the close five bars back. |
inv | rule | inverted_hammer()inverted hammer candle: Shooting-star shape after a five-bar decline. |
harami_bear | rule | harami_bear()harami bear candle: A small red body inside yesterday's green body. |
down_week | forecast | Will the stock be lower in a week? Lower in a week |
Answers
| Question | Answer | Reading |
|---|---|---|
ss_highShooting star at a 20-day high | 0.0689 | false |
ssshooting star candle: Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise. | 0.1284 | false |
hanginghanging man candle: Hammer shape, closing above the close five bars back. | 0.1284 | false |
invinverted hammer candle: Shooting-star shape after a five-bar decline. | 0.15 | false |
harami_bearharami bear candle: A small red body inside yesterday's green body. | 0.2285 | false |
down_weekLower in a week | 0.492 | 49% · 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.
- StateXLU
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"XLU"} The server fills in the latest completed session.
Questions
hv_low | English → rule | Is 20-day historical volatility below 20%? |
nr7 | rule | (H - L) < lowest(H - L, 6)Narrowest range of the last seven sessions (NR7) |
calm | forecast | Will volatility calm down over the next 5 days? Volatility calming over 5 days |
vol_up | forecast | Will volatility be higher over the next month? Higher volatility next month |
Answers
| Question | Answer | Reading |
|---|---|---|
hv_lowIs 20-day historical volatility below 20% compiled to std(log(C / C[-1]), 20) * sqrt(20 / 19) * sqrt(252) < 0.2 | 0.9117 | true |
nr7Narrowest range of the last seven sessions (NR7) | 0.6522 | true |
calmVolatility calming over 5 days | 0.622 | 62% · likely |
vol_upHigher volatility next month | 0.456 | 46% · 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"
}
}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.
- StateSPY
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"SPY"} The server fills in the latest completed session.
Questions
trend_up | rule | (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_dn | rule | (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_wide | rule | tr() > 1.5 * ref(atr(14), -1)True range 1.5× yesterday's ATR |
move2 | forecast | Will the stock move more than 2% in either direction in 5 trading days? A 2%+ move either way in 5 days |
up_tmr | forecast | Will the stock be up tomorrow? Up tomorrow |
Answers
| Question | Answer | Reading |
|---|---|---|
trend_upA trend day up: opened near the low, closed near the high | 0.0537 | false |
trend_dnTrend day down (opened near the high, closed near the low) | 0.0669 | false |
tr_wideTrue range 1.5× yesterday's ATR | 0.943 | true |
move2A 2%+ move either way in 5 days | 0.394 | 39% · unlikely |
up_tmrUp tomorrow | 0.532 | 53% · 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"
}
}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.
- StateMSFT
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"MSFT"} The server fills in the latest completed session.
Questions
trend | rule | sma(C, 200) > ref(sma(C, 200), -20)The 200-day average is rising |
stack | rule | C > ema(C, 20) and ema(C, 20) > sma(C, 50) and sma(C, 50) > sma(C, 200)Stacked averages: close > 20 EMA > 50 > 200 |
beats | English → rule | Has the stock beaten EPS estimates in at least 3 of the last 4 quarters? |
eps_g | rule | eps_growth_yoy > 10EPS up more than 10% on the year |
rally10 | forecast | Will it rally at least 10% at some point in the next month? A 10% rally within a month |
Answers
| Question | Answer | Reading |
|---|---|---|
trendThe 200-day average is rising | 0.8991 | true |
stackStacked averages: close > 20 EMA > 50 > 200 | 0.3192 | false |
beatsHas the stock beaten EPS estimates in at least 3 of the last 4 quarters compiled to beats_last4 >= 3 | 0.8591 | true |
eps_gEPS up more than 10% on the year | 0.8327 | true |
rally10A 10% rally within a month | 0.495 | 50% · 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"
}
}Options trader · example 15
Wheel strategy candidates: KO, PEP, JNJ, PG
Pick names for selling puts then calls: liquid, steady, dividend-paying, not crashing.
- State4 symbols
- Questions5 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"KO"} then PEP, JNJ, PG, one request each. The server fills in the latest completed session.
Questions
liquid | English → rule | Does the stock trade more than $50 million a day on average? |
hv_low | English → rule | Is 20-day historical volatility below 20%? |
grower | rule | years_of_growth >= 10Ten years of dividend growth |
drawdown | rule | C < 0.8 * max(H, 252)More than 20% off the 52-week high |
drop5 | forecast | Will it drop at least 5% at some point in the next month? A 5% drawdown within a month |
Answers
| Symbol | liquidrule | hv_lowrule | growerrule | drawdownrule | drop5forecast |
|---|---|---|---|---|---|
KO | 0.9463 | 0.2605 | 0.9463 | 0.0537 | 0.361 |
PEP | 0.9463 | 0.0794 | 0.9463 | 0.1715 | 0.418 |
JNJ | 0.9463 | 0.0666 | 0.9463 | 0.0537 | 0.461 |
PG | 0.9463 | 0.0873 | 0.9463 | 0.0537 | 0.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"
}
}Options trader · example 16
Overnight gap risk on short options: TSLA
Before holding short options overnight, check gap habits and tomorrow's gap odds.
- StateTSLA
- Questions5 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"TSLA"} The server fills in the latest completed session.
Questions
gap_atr | rule | abs(O - C[-1]) > 0.5 * ref(atr(14), -1)Gap bigger than half an ATR |
unfilled | rule | L > H[-1]An unfilled gap up |
gap_up | forecast | Will it gap up tomorrow? A gap up tomorrow |
gap_dn | forecast | Will it gap down tomorrow? A gap down tomorrow |
big5 | forecast | Will there be a big move in either direction in the next 5 days? A big move either way in 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
gap_atrGap bigger than half an ATR | 0.8646 | true |
unfilledAn unfilled gap up | 0.0577 | false |
gap_upA gap up tomorrow | 0.224 | 22% · unlikely |
gap_dnA gap down tomorrow | 0.157 | 16% · unlikely |
big5A big move either way in 5 days | 0.248 | 25% · unlikely |
Actions
Rules on the answers decide what to send.
gap_up >= 0.1 or gap_dn >= 0.1→Slackoptions-deskelse→Slackoptions-desk{
"text": "TSLA (2026-10-30): overnight gap odds up 22% / down 16%. Close short premium."
}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"
}
]
}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.
- State3 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"NVDA"} then TSLA, AMZN, one request each. The server fills in the latest completed session.
Questions
split3y | rule | days_since_split <= 1095Split in the last three years |
ratio | rule | last_split_ratio >= 4Last split at least 4-for-1 |
announced | rule | days_to_split <= 365A split is announced |
multi | rule | splits_5y >= 2Two or more splits in five years |
Answers
| Symbol | split3yrule | ratiorule | announcedrule | multirule |
|---|---|---|---|---|
NVDA | 0.9463 | 0.9463 | 0.0537 | 0.1409 |
TSLA | 0.0537 | 0.0683 | 0.0537 | 0.1409 |
AMZN | 0.0537 | 0.9463 | 0.0537 | 0.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"
}
}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.
- StateIWM
- Questions4 asked
- Answersreal, captured
- Actions2 rules · dry run
State
{"symbol":"IWM"} The server fills in the latest completed session.
Questions
big | rule | abs(C - C[-1]) > 1.5 * atr(14)Today's move was bigger than 1.5 ATR |
up | rule | C > C[-1]Closed higher than yesterday |
move | rule | abs(C / C[-1] - 1) > 0.015Moved more than 1.5% today |
vol_rise | forecast | Will volatility rise over the next 5 days? Volatility rising over 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
bigToday's move was bigger than 1.5 ATR | 0.1815 | false |
upClosed higher than yesterday | 0.0707 | false |
moveMoved more than 1.5% today | 0.6739 | true |
vol_riseVolatility rising over 5 days | 0.408 | 41% · close to even |
Actions
Rules on the answers decide what to send.
move >= 0.6 and up >= 0.6→Webhookexec-systemmove >= 0.6→Webhookexec-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"
}
}
}
]
}Options trader · example 19
Long volatility products: UVXY and VXX trend
Volatility ETPs decay; only hold them while their own trend is up.
- State2 symbols
- Questions4 asked
- Answersreal, captured
- Actionsnone
State
{"symbol":"UVXY"} then VXX, one request each. The server fills in the latest completed session.
Questions
above20 | rule | C > sma(C, 20)Above the 20-day average |
crossup | rule | crossup(C, sma(C, 20))Crossed above the 20-day today |
bars | rule | barssince(crossup(C, sma(C, 20))) < 5Crossed above the 20-day within 5 sessions |
up_week | forecast | Will the stock be higher in a week? Higher in a week |
Answers
| Symbol | above20rule | crossuprule | barsrule | up_weekforecast |
|---|---|---|---|---|
UVXY | 0.9212 | 0.95 | 0.7515 | 0.486 |
VXX | 0.9313 | 0.95 | 0.7549 | 0.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"
}
}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.
- ScheduleMon–Fri at 15:30 ET
- StateJPM
- Questions4 asked
- Answersreal, captured
- Actions1 rule · dry run
State
{"symbol":"JPM"} The server fills in the latest completed session.
Questions
recent | rule | days_since_earnings <= 5Reported in the last 5 days |
small | rule | abs(last_earnings_move) < 3Last earnings reaction under 3% |
beat | English → rule | Did the stock beat EPS estimates last quarter? |
calm | forecast | Will volatility calm down over the next 5 days? Volatility calming over 5 days |
Answers
| Question | Answer | Reading |
|---|---|---|
recentReported in the last 5 days | 0.0537 | false |
smallLast earnings reaction under 3% | 0.9463 | true |
beatDid the stock beat EPS estimates last quarter compiled to beat_eps_last > 0.5 | 0.1409 | false |
calmVolatility calming over 5 days | 0.505 | 51% · close to even |
Actions
Rules on the answers decide what to send.
recent >= 0.6 and small >= 0.6→EmailmeWhat 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"
}
]
}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.