diff --git a/frontend/scanner.html b/frontend/scanner.html index f452483..78bdbb2 100644 --- a/frontend/scanner.html +++ b/frontend/scanner.html @@ -24,6 +24,10 @@ .ivrank-high { background: rgba(255, 212, 59, 0.18); color: #ffd43b; } .ivrank-vhigh{ background: rgba(255, 107, 107, 0.18); color: #ff6b6b; } .ivrank-na { color: #6c757d; } + .ivhv-cheap { color: #51cf66; font-weight:600; } + .ivhv-fair { color: #cbd3df; font-weight:600; } + .ivhv-rich { color: #ffd43b; font-weight:700; } + .ivhv-vrich { color: #ff6b6b; font-weight:800; } @@ -72,12 +76,15 @@

IV Spike Scanner

- A spike is flagged when current ATM IV is at least +30% - above the symbol's recent baseline (avg ATM IV of the last 30 days, falling back to HV30). - IV Rank (0-100) shows where current IV sits in its 1-year (min, max) range - from saved snapshots — ≥60 = expensive (sell premium), - ≤30 = cheap (buy premium). The yellow - BIG MOVE badge flags |today Δ| ≥ 3%. + Three richness signals — used together they tell you whether the market is paying you + to sell vol that isn't being realized. + + The green EDGE badge fires when IV Rank ≥ 60 AND IV/HV ≥ 1.2 — + that's the combined "sell-premium-now" signal. Blue BIG MOVE = |today Δ| ≥ 3%.
@@ -117,8 +124,8 @@
Scanned
+
EDGE setups
Spikes
-
High IV Rank (≥60)
Biggest mover
Highest IV Δ
@@ -140,6 +147,7 @@ Baseline IV IV Δ% IV Rank + IV/HV HV30 Flags Expiry @@ -167,8 +175,14 @@ + + EDGE SPIKE BIG MOVE @@ -294,6 +308,29 @@ return 'ivrank-low'; }, + ivHvClass(ratio) { + if (!ratio) return ''; + if (ratio >= 1.50) return 'ivhv-vrich'; + if (ratio >= 1.20) return 'ivhv-rich'; + if (ratio >= 0.95) return 'ivhv-fair'; + return 'ivhv-cheap'; + }, + + ivHvLabel(ratio) { + if (!ratio) return ''; + if (ratio >= 1.50) return 'VERY RICH (sell vol)'; + if (ratio >= 1.20) return 'RICH (sell-vol candidate)'; + if (ratio >= 0.95) return 'fair'; + return 'CHEAP (buy-vol candidate)'; + }, + + // EDGE: high IV Rank (premium expensive in own range) AND IV/HV >= 1.2 + // (premium is actually pricing more vol than the stock is realizing) — the + // combined signal for "options market is paying you for risk that isn't there". + hasEdge(r) { + return r && r.ivRankN >= 5 && r.ivRank >= 0.60 && r.ivHv >= 1.20; + }, + goChain(sym) { try { const v = ViewState.load('chain') || {}; v.symbol = sym; ViewState.save('chain', v); } catch {} window.location.href = '/chain.html'; }, goSurface(sym){ try { const v = ViewState.load('surface') || {}; v.symbol = sym; ViewState.save('surface', v); } catch {} window.location.href = '/surface.html'; }, };