Ewan Li

info-E

0DTE end-of-day momentum option scalp

information onlybookforward-v5startedOct 2, 2026

What it is

The plain end-of-day momentum entry from protocol 3's search for a better entry under the owner's contract rule, with neither the 1-hour trend filter nor the sector breadth filter. On SPY and QQQ, a 0DTE option is bought at 15:00 in the direction of a large move from the previous close. The nightly log prices each trade on the real 1-minute option bars; no order is sent. Logged nightly for information only; it will not be evaluated.

The rule

  • Levels: the previous session's high and low from 04:00 to 19:59 ET, its 09:30 open and its last regular-hours close, this session's pre-market high and low, and up to four spike-and-reverse wicks on the last 10 sessions' 1-hour bars. Taken in order of price, a level joins a zone while it is within one tolerance of the zone's lowest level, and the zone sits at the mean of its levels. The tolerance is 0.05 times the 14-day average true range as of the previous session. Here the levels only set the room.
  • Signal: at 15:00 ET, the 1-minute close that ends then, against the previous close: up by more than half the daily SD buys a call, down by more than half a put. The daily SD is the standard deviation of the last 14 daily log returns, through the previous session; the previous close is the last regular-hours 1-minute close of the session before, unadjusted.
  • Filters: none: neither the 1-hour trend filter nor the sector breadth filter.
  • Entries: one decision a session, at 15:00 ET, with at least $1 of room to the next zone in the trade's direction.
  • Contract: 0DTE, at the $1 strike nearest the price $1 out of the money. Its last trade must be at most 5 minutes old and from $0.05 to $0.40.
  • Fill: bought at the open of the contract's first 1-minute bar from the decision, if it starts within 3 minutes.
  • Exit: a stop at 75% of the price paid. At twice the price paid, half is sold and the stop moves to the price paid; at three times, half the rest is sold and the stop moves to twice the price paid; each further multiple raises the stop to the one below it. Only the stop is checked on the entry bar, and a raised stop applies from the next bar. A stop sells at the lower of the stop and the bar's open. What is left is sold at 15:55, at the open of the contract's 15:55 bar or its last trade before then.
  • Costs: bought $0.01 above the bar's price and sold $0.01 below it, and $0.65 a contract a side; a ladder sale is at its level, once a bar's high is $0.01 above it. The log also records each trade at no costs, and at $0.02 a side with the same commission.
  • Sessions: none on a session that closes early, or when the underlying's bars cover fewer than 300 regular-hours minutes of the session, or of the session before it unless that one closed early.
NameValueUnitWhere it livesPinned by
configE-1500-t0.5—lab/forward_v5.py:66—
tol_atr0.05of the previous session's 14-day ATRodte/rules.py:16tests/test_signals_contracts.py:110
window_start15:00ETlab/configs.py:13—
trendnone—lab/configs.py:14—
breadthnone—lab/configs.py:14—
room_late1USDlab/engine.py:50tests/test_lab.py:65
dte0daysodte/rules.py:38tests/test_signals_contracts.py:110
otm_late1USDlab/engine.py:59tests/test_lab.py:65
cap_late0.4USDlab/engine.py:61tests/test_lab.py:65
floor0.05USDlab/engine.py:62—
stale_min5minutesodte/rules.py:47—
fill_wait_min3minutesodte/rules.py:52—
ladderL1—lab/engine.py:53tests/test_lab.py:65
stop_frac0.75of the price paidlab/engine.py:52tests/test_lab.py:65
exit_time15:55ETlab/engine.py:55tests/test_lab.py:65
exit_ruleladder—lab/engine.py:56tests/test_lab.py:65
costs.base.slip0.01USD a sideodte/backtest.py:24—
costs.base.commission0.65USD a contract a sideodte/backtest.py:24—
costs.stress.slip0.02USD a sideodte/backtest.py:24—
MIN_RTH_MINUTES300regular-hours minutesodte/backtest.py:25—

Its read

What is read
—
Read on
—
Trades needed
—
Trades logged
—
Hard stop
—
Shipped on
—
Deployed commit
bc9b659

Record so far

This rule is logged for information: its record is shown only as rows, never added up.

Record Forward log
Cost model

$0.01 a side and $0.65 a contract a side, on 1-minute OPRA bars; a ladder sale is at its level; also logged at no costs and at $0.02 a side

Signals

Each signal as the log wrote it, a table a session. Nothing here is added up.

Tue, Oct 13, 2026

Time (ET)SymbolSideOutcomeContractExitExit byNet
15:00QQQputENTRYP741 at 0.1415:05 ETstop−41.4%

Mon, Oct 12, 2026

Time (ET)SymbolSideOutcomeContractExitExit byNet
15:00QQQputENTRYP744 at 0.1615:01 ETstop−39.4%

Fri, Oct 9, 2026

Time (ET)SymbolSideOutcomeContractExitExit byNet
15:00SPYcallENTRYC780 at 0.1415:05 ETstop−41.4%

Tue, Oct 6, 2026

Time (ET)SymbolSideOutcomeContractExitExit byNet
15:00SPYcallENTRYC781 at 0.1315:07 ETstop−42.7%

Mon, Oct 5, 2026

Time (ET)SymbolSideOutcomeContractExitExit byNet
15:00QQQcallENTRYC757 at 0.1415:24 ETstop+113.9%
15:00SPYcallENTRYC777 at 0.1115:08 ETstop+33.6%

Fri, Oct 2, 2026

Time (ET)SymbolSideOutcomeContractExitExit byNet
15:00QQQcallENTRYC750 at 0.2315:06 ETstop−35.0%
15:00SPYcallENTRYC770 at 0.2515:03 ETstop−34.2%

Where the research is

  • Protocol 3's finalists and forward log (findings tr-odte-option-scalp/DESIGN/21)
  • Protocol 3's plan and entry families (findings tr-odte-option-scalp/DESIGN/20)