TSLA · Weekly straddle under a cheap four-week strangle, with rolls

Four-week cycles. At the start of a cycle the page buys 100 TSLA calls $30 above the price and 100 puts $30 below it, expiring at the end of week 4. Every week it sells 100 calls and 100 puts at the current price, expiring that Friday, and buys them back on Friday at 15:45. When the price moves $20 away from the strike sold, the bought options of that side go deep in the money (to the price ∓ $50), so that their delta answers the losing short, and the short of the other side moves $10 towards the price; when the price comes back $10, the bought options return to their strike and that short is bought back. Down moves mirror up moves. Every trade is priced from the real quote of that minute.

Real NBBO quotes and minute prices: 01 Jan 2025 — 31 Dec 2025, cycles: 13, sessions: 248 · New York time · built 02 Oct 2026.

Every variant of 2025

Cumulative result

Cash of the trades plus the open legs at 15:45 of each session, from zero at the start of the period. Hover, or focus the chart and use the arrow keys; a click opens the session in the table.

Cycles

Every session

How it is calculated
  • Cycle. Four calendar weeks, one cycle every four weeks from the first Monday of the year (the cycles of the existing TSLA monthly-protection page). At 09:35 of the first session: buy the long calls at the strike nearest to the price + the protection and the long puts at the price − the protection, expiring at the last session of week 4 (a Friday, or the Thursday before a Friday holiday).
  • Weekly sale. At 09:35 of each week’s first session: sell the call and the put at the strike nearest to the price that has both, expiring at the end of that week; at 15:45 of its last session buy back whatever short is left, at the ask.
  • Rolls. The price is the close of the last finished minute; it is checked every minute from 09:35 to 15:45 (or once a day at 15:45). Price ≥ the week’s short strike + the trigger: the long calls are sold and calls at the strike nearest to the price − $50 bought; the short put is bought back and a put at its strike + $10 sold. From the price of that roll, $10 down: the deep calls are sold, the calls at the cycle’s first strike bought back, the short put bought back. Price ≤ short strike − the trigger, and $10 up from there: the mirror image with the puts (price + $50) and the short call ($10 down). A side rolled deep stays so over the weekends and the next weeks until it comes back; it rolls at most once until then, and its return buys back the other side’s short of the current week (after a weekend, the new week’s one, whatever its result). Over a night or a weekend the price can gap past a level: the roll is then at the first check of the next session.
  • End of the cycle. At 15:45 of the last session of week 4 the shorts are bought back and the longs sold at the bid; a long out of the money without a bid is left to expire.
  • Prices and data. Massive: the NBBO in force at the moment, at most 60 seconds old, otherwise the session’s last (marked stale); the listed contracts as of the day; TSLA minute bars. Purchases at the ask and sales at the bid, or the middle of the quote when chosen. The fee is charged on every contract bought or sold; an expiring worthless option has none. Every session the open legs are valued at 15:45 (bought at the bid, sold at the ask, or the middle): the daily P&L is the change of cash plus that value.
  • Variants. The description’s levels are protection $30, trigger $20, deep $50, step $10, back $10, checked every minute; the variants table marks them “as described”. The page also has the protection $20 and $40, the trigger $15 and $30 and the check once a day; each variant is its own path of trades. A year opens on its most stable variant: the largest result without its three best sessions, at the ask/bid, 100 contracts and $0.65 (picked on the same year it is shown on). The number of contracts, the fee and the prices are recalculated in the browser from the same path.
  • Limits. Quotes do not prove fills, sizes are not respected, latency is not modelled, the margin is not checked. The best variant is chosen on the same year it is shown on.
  • Reproduction. python -B scripts/build_tsla_rolls_page.py --years 2025 (the engine app/tsla_rolls/engine.py; historical responses are cached in the project’s database).