Show description
Options & 0DTE Radar – Cheat Sheet
Options & 0DTE Radar – Cheat Sheet
Options & 0DTE Radar
A one-page, dark-mode cheat sheet for remembering what calls, puts,
strike price, bid/ask, and 0DTE actually mean when you’re staring at
a real options chain.
Learning Mode
Calls vs Puts
Bid / Ask / Spread
0DTE Flow
Core Idea: What an Option Actually Is
foundation
An option is a contract that gives you the
right, but not the obligation, to buy or sell
100 shares of a stock or ETF at a specific
strike price on or before a certain date
(expiration).
Call = right to buy (bullish)
Put = right to sell (bearish)
1 contract ≙ 100 shares
You pay "premium"
The price of the option is the premium. If a
contract shows 1.25, it actually costs
1.25 × 100 = $125.
Call in one line
You pay premium now, hoping the stock ends up
above the strike. Profit potential is
(roughly) unlimited, loss is limited to the premium you paid.
Put in one line
You pay premium now, betting the stock will go
down. The lower it goes below the strike, the
more the put can be worth (until it hits zero).
Key memory hook
Calls up, puts down.
Calls want price up and above the strike.
Puts want price down and below the strike.
Strike Price & ITM / OTM
where price has to cross
The strike price is the level the underlying
needs to be above/below for the option to have intrinsic value
at expiration.
For calls
In The Money (ITM): stock price
above strike.
At The Money (ATM): stock price ≈ strike.
Out of The Money (OTM): stock price
below strike.
For puts
ITM: stock price
below strike.
ATM: stock price ≈ strike.
OTM: stock price
above strike.
Break-even (simple view)
Call: break-even ≈ strike + premium
Put: break-even ≈ strike − premium
Example
Stock = 11.22
Call strike = 10
Intrinsic now = 11.22 − 10 = 1.22
Bid, Ask & The Spread
how you actually get filled
Every option is constantly being quoted with two prices:
Bid: highest price someone will pay
right now.
Ask: lowest price someone will sell for
right now.
The difference between them is the
spread.…
Options & 0DTE Radar – Cheat Sheet
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Options & 0DTE Radar – Cheat Sheet</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
:root {
--bg: #050509;
--bg-alt: #101018;
--bg-card: #141422;
--accent: #32ffb0;
--accent-soft: rgba(50,255,176,0.12);
--accent2: #ff53c0;
--accent3: #4ecbff;
--danger: #ff4b81;
--text-main: #f4f4ff;
--text-muted: #9b9bb5;
--border-subtle: #2a2a3a;
--radius-lg: 18px;
--radius-sm: 8px;
--shadow-soft: 0 18px 45px rgba(0,0,0,0.65);
--font-main: system-ui, -apple-system, BlinkMacSystemFont, "SF Pro Text",
"Segoe UI", sans-serif;
--font-mono: "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
background: radial-gradient(circle at top, #1b1b3a 0, var(--bg) 40%, #000 100%);
color: var(--text-main);
font-family: var(--font-main);
min-height: 100vh;
}
.app-shell {
max-width: 1120px;
margin: 0 auto;
padding: 24px 16px 48px;
}
header.hero {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 16px;
margin-bottom: 24px;
}
.hero-title {
font-size: clamp(2rem, 3vw + 1rem, 2.9rem);
font-weight: 800;
letter-spacing: 0.03em;
text-transform: uppercase;
background: linear-gradient(120deg, var(--accent), var(--accent2), var(--accent3));
-webkit-background-clip: text;
color: transparent;
}
.hero-tagline {
color: var(--text-muted);
max-width: 520px;
line-height: 1.5;
}
.hero-chip-row {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 8px;
}
.chip {
border-radius: 999px;
padding: 4px 10px;
border: 1px solid var(--border-subtle);
background: rgba(10,10,20,0.8);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--text-muted);
}
.glow-chip {
border-color: var(--accent);
color: var(--accent);
box-shadow: 0 0 15px rgba(50,255,176,0.5);
}
.layout-main {
display: grid;
grid-template-columns: minmax(0, 3fr) minmax(0, 1.5fr);
gap: 20px;
}
@media (max-width: 900px) {
.layout-main {
grid-template-columns: 1fr;
}
}
.card {
background: linear-gradient(135deg, var(--bg-card), #12121e);
border-radius: var(--radius-lg);
border: 1px solid var(--border-subtle);
box-shadow: var(--shadow-soft);
padding: 18px 18px 16px;
position: relative;
overflow: hidden;
}
.card::before {
content: "";
position: absolute;
inset: -20%;
background:
radial-gradient(circle at 0 0, rgba(50,255,176,0.12), transparent 55%),
radial-gradient(circle at 100% 0, rgba(255,83,192,0.09), transparent 55%);
opacity: 0.7;
pointer-events: none;
}
.card > * {
position: relative;
z-index: 1;
}
.card-title-row {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 10px;
margin-bottom: 6px;
}
.card-title {
font-size: 1.1rem;
font-weight: 700;
}
.card-tag {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.16em;
color: var(--accent3);
}
.card-body {
font-size: 0.9rem;
color: var(--text-muted);
line-height: 1.6;
}
.pill-row {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin: 10px 0 6px;
}
.pill {
font-size: 11px;
border-radius: 999px;
padding: 2px 8px;
border: 1px solid rgba(255,255,255,0.08);
background: rgba(0,0,0,0.4);
color: var(--text-muted);
white-space: nowrap;
}
.pill.call {
border-color: var(--accent);
color: var(--accent);
}
.pill.put {
border-color: var(--danger);
color: var(--danger);
}
.mono {
font-family: var(--font-mono);
font-size: 0.86rem;
}
.grid-two {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
margin-top: 8px;
}
.mini-card {
background: rgba(5,5,16,0.85);
border-radius: var(--radius-sm);
border: 1px solid var(--border-subtle);
padding: 8px 9px;
font-size: 0.82rem;
color: var(--text-muted);
}
.mini-title {
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.12em;
color: var(--accent3);
margin-bottom: 3px;
}
.label {
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.18em;
color: var(--text-muted);
margin-top: 10px;
margin-bottom: 4px;
}
.bullets {
margin: 0;
padding-left: 18px;
}
.bullets li {
margin-bottom: 4px;
}
.badge {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 1px 7px;
border-radius: 999px;
font-size: 11px;
background: rgba(255,255,255,0.03);
border: 1px solid rgba(255,255,255,0.05);
color: var(--text-muted);
}
.badge-dot {
width: 7px;
height: 7px;
border-radius: 999px;
background: var(--accent);
}
.warning {
color: var(--danger);
font-weight: 500;
}
.accent-box {
margin-top: 10px;
padding: 8px 10px;
border-radius: var(--radius-sm);
background: radial-gradient(circle at 0 0, var(--accent-soft), transparent 60%);
border: 1px dashed rgba(50,255,176,0.4);
font-size: 0.85rem;
}
/* Right-hand sidebar */
.sidebar-card {
margin-bottom: 16px;
}
.nav-list {
list-style: none;
padding: 0;
margin: 6px 0 0;
font-size: 0.85rem;
}
.nav-list li {
margin: 3px 0;
}
.nav-list a {
color: var(--text-muted);
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 6px;
padding: 3px 4px;
border-radius: 999px;
}
.nav-list a::before {
content: "◆";
font-size: 9px;
color: var(--accent3);
opacity: 0.85;
}
.nav-list a:hover {
color: var(--accent);
background: rgba(50,255,176,0.08);
}
/* Simple accordion for "deep dive" */
.accordion {
border-radius: var(--radius-sm);
overflow: hidden;
border: 1px solid var(--border-subtle);
margin-top: 8px;
}
.accordion-item + .accordion-item {
border-top: 1px solid var(--border-subtle);
}
.accordion-header {
background: rgba(5,5,16,0.92);
padding: 7px 9px;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.86rem;
}
.accordion-header span {
color: var(--text-muted);
}
.accordion-header .chevron {
font-size: 12px;
color: var(--accent3);
transition: transform 0.16s ease;
}
.accordion-content {
max-height: 0;
overflow: hidden;
background: #060612;
padding: 0 9px;
font-size: 0.82rem;
color: var(--text-muted);
transition: max-height 0.18s ease-out, padding 0.18s ease-out;
}
.accordion-content.open {
padding: 7px 9px 9px;
}
.accordion-item.active .accordion-header .chevron {
transform: rotate(90deg);
}
/* Simple break-even calculator */
.calc-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
margin-top: 6px;
align-items: end;
}
.calc-grid label {
font-size: 0.78rem;
text-transform: uppercase;
letter-spacing: 0.12em;
color: var(--text-muted);
display: block;
margin-bottom: 3px;
}
.calc-grid input,
.calc-grid select {
width: 100%;
border-radius: 8px;
border: 1px solid var(--border-subtle);
padding: 6px 8px;
background: #05050b;
color: var(--text-main);
font-family: var(--font-mono);
font-size: 0.82rem;
outline: none;
}
.calc-grid input:focus,
.calc-grid select:focus {
border-color: var(--accent3);
box-shadow: 0 0 0 1px rgba(78,203,255,0.4);
}
.calc-output {
margin-top: 6px;
font-size: 0.85rem;
color: var(--accent);
font-family: var(--font-mono);
}
footer {
margin-top: 26px;
font-size: 0.75rem;
color: var(--text-muted);
text-align: center;
opacity: 0.7;
}
a.inline-link {
color: var(--accent3);
text-decoration: none;
}
a.inline-link:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<div class="app-shell">
<header class="hero">
<div>
<div class="hero-title">Options & 0DTE Radar</div>
<div class="hero-tagline">
A one-page, dark-mode cheat sheet for remembering what calls, puts,
strike price, bid/ask, and 0DTE actually mean when you’re staring at
a real options chain.
</div>
<div class="hero-chip-row">
<span class="chip glow-chip">Learning Mode</span>
<span class="chip">Calls vs Puts</span>
<span class="chip">Bid / Ask / Spread</span>
<span class="chip">0DTE Flow</span>
</div>
</div>
</header>
<div class="layout-main">
<!-- MAIN COLUMN -->
<main>
<!-- Core concepts -->
<section id="core" class="card">
<div class="card-title-row">
<div class="card-title">Core Idea: What an Option Actually Is</div>
<div class="card-tag">foundation</div>
</div>
<div class="card-body">
<p>
An <strong>option</strong> is a contract that gives you the
<em>right</em>, but not the obligation, to buy or sell
<strong>100 shares</strong> of a stock or ETF at a specific
<strong>strike price</strong> on or before a certain date
(<strong>expiration</strong>).
</p>
<div class="pill-row">
<span class="pill call">Call = right to buy (bullish)</span>
<span class="pill put">Put = right to sell (bearish)</span>
<span class="pill mono">1 contract ≙ 100 shares</span>
</div>
<p class="label">You pay "premium"</p>
<p>
The price of the option is the <strong>premium</strong>. If a
contract shows <span class="mono">1.25</span>, it actually costs
<span class="mono">1.25 × 100 = $125</span>.
</p>
<div class="grid-two">
<div class="mini-card">
<div class="mini-title">Call in one line</div>
<div>
You pay premium now, hoping the stock ends up
<strong>above the strike</strong>. Profit potential is
(roughly) unlimited, loss is limited to the premium you paid.
</div>
</div>
<div class="mini-card">
<div class="mini-title">Put in one line</div>
<div>
You pay premium now, betting the stock will go
<strong>down</strong>. The lower it goes below the strike, the
more the put can be worth (until it hits zero).
</div>
</div>
</div>
<div class="accent-box">
<span class="badge">
<span class="badge-dot"></span>
<span>Key memory hook</span>
</span>
<div style="margin-top:4px;">
<strong>Calls up, puts down.</strong>
Calls want price <strong>up and above</strong> the strike.
Puts want price <strong>down and below</strong> the strike.
</div>
</div>
</div>
</section>
<!-- Strike price / ITM / OTM -->
<section id="strike" class="card" style="margin-top:16px;">
<div class="card-title-row">
<div class="card-title">Strike Price & ITM / OTM</div>
<div class="card-tag">where price has to cross</div>
</div>
<div class="card-body">
<p>
The <strong>strike price</strong> is the level the underlying
needs to be above/below for the option to have intrinsic value
at expiration.
</p>
<p class="label">For calls</p>
<ul class="bullets">
<li>
<strong>In The Money (ITM):</strong> stock price
<strong>above</strong> strike.
</li>
<li>
<strong>At The Money (ATM):</strong> stock price ≈ strike.
</li>
<li>
<strong>Out of The Money (OTM):</strong> stock price
<strong>below</strong> strike.
</li>
</ul>
<p class="label">For puts</p>
<ul class="bullets">
<li>
<strong>ITM:</strong> stock price
<strong>below</strong> strike.
</li>
<li><strong>ATM:</strong> stock price ≈ strike.</li>
<li>
<strong>OTM:</strong> stock price
<strong>above</strong> strike.
</li>
</ul>
<div class="grid-two" style="margin-top:10px;">
<div class="mini-card">
<div class="mini-title">Break-even (simple view)</div>
<div class="mono">
Call: break-even ≈ strike + premium<br />
Put: break-even ≈ strike − premium
</div>
</div>
<div class="mini-card">
<div class="mini-title">Example</div>
<div class="mono">
Stock = 11.22<br />
Call strike = 10<br />
Intrinsic now = 11.22 − 10 = 1.22
</div>
</div>
</div>
</div>
</section>
<!-- Bid / Ask -->
<section id="bidask" class="card" style="margin-top:16px;">
<div class="card-title-row">
<div class="card-title">Bid, Ask & The Spread</div>
<div class="card-tag">how you actually get filled</div>
</div>
<div class="card-body">
<p>
Every option is constantly being quoted with two prices:
</p>
<ul class="bullets">
<li>
<strong>Bid:</strong> highest price someone will pay
<em>right now</em>.
</li>
<li>
<strong>Ask:</strong> lowest price someone will sell for
<em>right now</em>.
</li>
</ul>
<p>
The difference between them is the
<strong>spread</strong>. The <em>mid</em> is halfway between.
</p>
<div class="grid-two">
<div class="mini-card">
<div class="mini-title">Example call quote</div>
<div class="mono">
Bid = 0.62<br />
Ask = 2.01<br />
Mid ≈ (0.62 + 2.01)/2 ≈ 1.32
</div>
<div style="margin-top:4px;">
If you buy at the ask and immediately sell at the bid, you
donate the spread.
</div>
</div>
<div class="mini-card">
<div class="mini-title">Your actions</div>
<ul class="bullets">
<li><strong>Buy</strong> → you lift the ask.</li>
<li><strong>Sell</strong> → you hit the bid.</li>
<li>
<strong>Better:</strong> use limit orders near the
<em>mid</em>, especially with options.
</li>
</ul>
</div>
</div>
<div class="accent-box">
<strong>Rule of thumb:</strong> tight spreads are friendly.
Wide spreads are where small accounts go to die, slowly.
</div>
</div>
</section>
<!-- 0DTE -->
<section id="zero" class="card" style="margin-top:16px;">
<div class="card-title-row">
<div class="card-title">0DTE: Zero Days to Expiration</div>
<div class="card-tag">hyper-short term</div>
</div>
<div class="card-body">
<p>
<strong>0DTE</strong> means the options
<strong>expire today</strong>. On the chain, it’s simply the
expiration date that matches <em>today’s date</em>.
</p>
<div class="grid-two">
<div class="mini-card">
<div class="mini-title">Why it’s wild</div>
<ul class="bullets">
<li>Time is almost gone → very little time value.</li>
<li>
Option price becomes ultra-sensitive to small price moves.
</li>
<li>
Tiny move in the stock can cause massive % swings in the
option (up or down).
</li>
</ul>
</div>
<div class="mini-card">
<div class="mini-title">What traders try to do</div>
<ul class="bullets">
<li>Scalp intraday moves with calls/puts.</li>
<li>
Aim for quick +20–50% on the option while cutting losers
fast.
</li>
<li class="warning">
One stubborn trade can nuke the account.
</li>
</ul>
</div>
</div>
<div class="label">Key memory</div>
<p>
0DTE = you’re not buying “time,” you’re buying
<strong>leverage</strong> on today’s price move, with the clock
trying to kill the contract by the closing bell.
</p>
</div>
</section>
<!-- Flow of a trade + calculator -->
<section id="flow" class="card" style="margin-top:16px;">
<div class="card-title-row">
<div class="card-title">Flow of a Single Options Trade</div>
<div class="card-tag">from idea to exit</div>
</div>
<div class="card-body">
<ol class="bullets">
<li>
Pick a ticker (SPY, QQQ, TSLA, NVDA, etc.) and your
<strong>direction</strong> (up → call, down → put).
</li>
<li>
Choose <strong>DTE</strong> (days to expiration) and
<strong>strike</strong> (how aggressive vs conservative you want
to be).
</li>
<li>
Check <strong>bid/ask</strong> and volume. Avoid huge, ugly
spreads when learning.
</li>
<li>
Decide <strong>position size</strong> (how many contracts, how
much you’re willing to lose).
</li>
<li>
Set your <strong>plan</strong>:
<span class="mono">take profit at +X%</span>,
<span class="mono">cut loss at −Y%</span>.
</li>
<li>
Enter with a <strong>limit order</strong> near the mid, not a
random market slap.
</li>
<li>Stick to the plan. No “it’ll come back” heroics.</li>
</ol>
<div class="label">Mini break-even calculator</div>
<div class="calc-grid">
<div>
<label for="optType">Option type</label>
<select id="optType">
<option value="call">Call (bullish)</option>
<option value="put">Put (bearish)</option>
</select>
</div>
<div>
<label for="strikeInput">Strike price</label>
<input id="strikeInput" type="number" step="0.01" value="10" />
</div>
<div>
<label for="premInput">Premium (option price)</label>
<input id="premInput" type="number" step="0.01" value="1.25" />
</div>
<div>
<button id="calcBtn"
style="
width:100%;
border-radius:999px;
padding:7px 8px;
border:none;
background:linear-gradient(120deg,var(--accent3),var(--accent2));
color:#fff;
font-size:0.8rem;
text-transform:uppercase;
letter-spacing:0.14em;
cursor:pointer;
">
Compute Break-Even
</button>
</div>
</div>
<div id="calcOut" class="calc-output">
Break-even will appear here.
</div>
<div class="accent-box" style="margin-top:10px;">
<span class="warning">Important:</span>
break-even is a simple expiration concept. In real life, options
can be profitable before hitting break-even because of time value
and volatility — but this gives you a clean anchor.
</div>
</div>
</section>
<!-- Risk -->
<section id="risk" class="card" style="margin-top:16px;">
<div class="card-title-row">
<div class="card-title">Risk, Reality & Account Size</div>
<div class="card-tag">tuition, not magic</div>
</div>
<div class="card-body">
<p>
You can technically open an account with very little money, but
the smaller it is, the more each mistake hurts.
</p>
<ul class="bullets">
<li>
<strong>Mechanical minimum:</strong> enough to buy 1 contract
(e.g., a $0.40 option → $40).
</li>
<li>
<strong>Learning account:</strong> something like
<span class="mono">$300–$500</span> you are willing to treat as
<em>tuition</em>.
</li>
<li>
<strong>Risk per trade:</strong> many traders keep it to
<span class="mono">1–5%</span> of account, not all-in.
</li>
<li>
<strong>0DTE:</strong>
extremely volatile; best approached after you understand how
regular options behave.
</li>
</ul>
<div class="accordion">
<div class="accordion-item">
<div class="accordion-header">
<span>Why 95% win-rate screenshots are suspicious</span>
<span class="chevron">▶</span>
</div>
<div class="accordion-content">
<p>
Most “I win 95% of the time on 0DTE!” posts are in a small
window where the trader hasn’t yet hit the huge loss. With
leveraged options, one undisciplined trade can wipe out a
long streak of tiny wins. Screenshots rarely show the blown
accounts.
</p>
</div>
</div>
<div class="accordion-item">
<div class="accordion-header">
<span>Safer learning progression</span>
<span class="chevron">▶</span>
</div>
<div class="accordion-content">
<ol class="bullets">
<li>Paper trade to learn the mechanics.</li>
<li>
Start real money with small, liquid, non-0DTE calls/puts.
</li>
<li>
Use tight risk and log every trade and reason for entry /
exit.
</li>
<li>
Only experiment with 0DTE later, with size you can truly
afford to lose.
</li>
</ol>
</div>
</div>
</div>
</div>
</section>
</main>
<!-- SIDEBAR -->
<aside>
<div class="card sidebar-card">
<div class="card-title-row">
<div class="card-title">Quick Jump</div>
<div class="card-tag">sections</div>
</div>
<ul class="nav-list">
<li><a href="#core">Core Idea: What is an option?</a></li>
<li><a href="#strike">Strike & ITM / OTM</a></li>
<li><a href="#bidask">Bid / Ask / Spread</a></li>
<li><a href="#zero">0DTE Explained</a></li>
<li><a href="#flow">Trade Flow & Break-even</a></li>
<li><a href="#risk">Risk & Reality Check</a></li>
</ul>
</div>
<div class="card sidebar-card">
<div class="card-title-row">
<div class="card-title">Mental Flash Cards</div>
<div class="card-tag">memory hooks</div>
</div>
<div class="card-body">
<ul class="bullets">
<li><strong>Call:</strong> right to buy, wants price up.</li>
<li><strong>Put:</strong> right to sell, wants price down.</li>
<li>
<strong>Strike:</strong> the level where ITM/OTM flips. Calls
want above, puts want below (at expiration).
</li>
<li>
<strong>Bid/Ask:</strong> YOU hit bid when selling, YOU lift ask
when buying.
</li>
<li>
<strong>0DTE:</strong> expires today; pure leverage on today’s
move.
</li>
</ul>
</div>
</div>
</aside>
</div>
<footer>
Built as a personal options & 0DTE memory palace. Save this file,
tweak it, and keep adding your own notes as you learn.
</footer>
</div>
<script>
// Break-even calculator
function calcBreakeven() {
const type = document.getElementById("optType").value;
const strike = parseFloat(document.getElementById("strikeInput").value);
const prem = parseFloat(document.getElementById("premInput").value);
const out = document.getElementById("calcOut");
if (isNaN(strike) || isNaN(prem)) {
out.textContent = "Enter valid numbers for strike and premium.";
return;
}
let be;
if (type === "call") {
be = strike + prem;
out.textContent =
"Call break-even ≈ strike + premium = " +
strike.toFixed(2) +
" + " +
prem.toFixed(2) +
" = " +
be.toFixed(2);
} else {
be = strike - prem;
out.textContent =
"Put break-even ≈ strike − premium = " +
strike.toFixed(2) +
" − " +
prem.toFixed(2) +
" = " +
be.toFixed(2);
}
}
document.getElementById("calcBtn").addEventListener("click", calcBreakeven);
// Simple accordion behavior
document.querySelectorAll(".accordion-item").forEach(function (item) {
const header = item.querySelector(".accordion-header");
const content = item.querySelector(".accordion-content");
header.addEventListener("click", function () {
const isOpen = item.classList.contains("active");
document
.querySelectorAll(".accordion-item")
.forEach(function (other) {
other.classList.remove("active");
const c = other.querySelector(".accordion-content");
if (c) {
c.style.maxHeight = 0;
c.classList.remove("open");
}
});
if (!isOpen) {
item.classList.add("active");
content.classList.add("open");
content.style.maxHeight = content.scrollHeight + "px";
}
});
});
</script>
</body>
</html>