$TICKER/SCAN
v1.1.1.6
updated · 2026-09-08 01:40
A single-file, browser-only workbench that turns a brokerage / holdings CSV into a view of stock tickers and their option positions — with net-premium math, an exact expiration payoff engine (options-only or entire-position including your shares), a full-featured Analyze workspace, optional live market data, a saved-ideas ledger, and side-by-side file comparison. It runs entirely in your browser; the only things that leave your machine are the optional live-data lookups you trigger yourself.
Revision history
- v1.1.1.6 · 2026-09-08 — Option links (shared leg table, so Analyze pane + expanded rows): the Active/Expired badge now links to the ticker's OptionCharts expected-move page for that expiry; each leg's Strike and Expiry link to that contract's Barchart price-history page. The existing Sell/Buy link now also points at Barchart's historical page (uppercase P/C).
- v1.1.1.5 · 2026-09-08 — Table UX (Scanner, Saved ideas, Synced ideas): the expand toggle is now [+] (collapsed) / [−] (expanded) instead of a triangle; the Range column shows the low–high strikes beneath the span; and Normalize mode now correctly hides the net-premium column on Synced ideas (it was missing from the rule). (This build also repairs a text-encoding slip from the prior save.)
- v1.1.1.4 · 2026-09-08 — Default table order (Scanner, Saved ideas, Synced ideas) is now by Range % (highest first); once live prices are fetched (Live Move / cached), tables re-sort by Move descending (biggest gainers on top). Clicking any column header takes over manual sorting as before.
- v1.1.1.3 · 2026-09-08 — Table UX (Scanner, Saved ideas, Synced ideas): the signal pill now sits on its own line below the company name, and multiple pills stack vertically. When a position's live price has crossed its strike range, a second pill shows how far — “▲ above High by $x (y%)” or “▼ below Low by $a (b%)” — measured against the highest/lowest strike.
- v1.1.1.2 · 2026-09-07 — Fixed drill-through from Synced ideas: clicking a row now opens it in Analyze (and the OHLC reference lines and per-row option refresh work there too). Symbol lookup for Analyze now also searches synced ideas, not just the Scanner and Saved ideas.
- v1.1.1.1 · 2026-09-07 — Synced ideas now mirrors Saved ideas: the three stat cards (Ideas / Have options / Net premium), the filter box with All/Options/Active/Expired/Short/Long quick filters and a live count, Normalize mode, Expand/Collapse all options, Live Move, and Refresh — plus Remove ideas, which rewrites the cloud copy keeping the survivors. Load / Open / Push stay off it (those are local-file actions).
- v1.1.1.0 · 2026-09-07 — New Synced ideas tab. Your saved ideas can now live in a private cloud store (Cloudflare KV) behind your Access login, readable on any device. On your authoring machine, open Saved ideas and click ☁ Push to cloud; then open Synced ideas anywhere to view or download them (same CSV format, so nothing is locked in). Fully additive — Saved ideas stays local and unchanged, and the tab degrades gracefully to “sync isn’t available” if no backend is deployed.
- v1.1.0.8 · 2026-09-07 — Analyze tab: the “Trade at a glance” status strip now shows the same structure-aware trade signal as the tables. A second row under the profit-zone line carries a Signal pill (covered-call / short-put / protective-put / collar / naked-call / long-option, with a Buy Low / Trim-Reduce fallback) plus a plain-language rationale (heuristic, not advice).
- v1.1.0.7 · 2026-09-07 — Scanner & Saved ideas: the row signal is now structure-aware — it reads the position (stock + option legs) and live price to flag covered-call assignment, short-put assignment risk, protective-put hedge, collar cap/floor, naked-call risk, and long-option gains, falling back to Buy Low / Trim-Reduce by net direction (heuristic, shown in the tooltip). Renamed “Expected Range” to “Range” and removed the Rows column.
- v1.1.0.6 · 2026-09-07 — Scanner & Saved ideas: added a Current column (the live fetched price) with a colored ▲/▼ percentage-change badge vs the snapshot; appears once Live Move / Refresh has run and reuses that fetch (no extra API call).
- v1.1.0.5 · 2026-09-07 — Option Visualize: switching between leg contracts while the chart is open now keeps it visible and swaps in the new contract’s data in place, instead of collapsing the chart.
- v1.1.0.4 · 2026-09-07 — Option OHLCV Visualize gains a stock overlay (Off / Line / Mountain / Candle, default Off) drawn on a dual right-hand $ axis, plus a second stacked stock-volume lane; the underlying is matched by date from the cached stock history.
- v1.1.0.3 · 2026-09-07 — Scanner & Saved ideas: once a latest price is fetched, rows are flagged “Buy Low” (price below the strike-range low, shaded green) or “Sell High” (above the range high, shaded red) with a pill next to the security name; Saved ideas gains a Refresh button that pulls the latest stock prices.
- v1.1.0.2 · 2026-09-06 — Position Map: added a prominent dashed vertical divider on each Friday (week boundary) with faint alternating per-week background bands, making week groupings easy to read.
- v1.1.0.1 · 2026-09-02 — Baseline release. Consolidates the v1.0.0.x series: a full-width Analyze workspace (Trade at a glance, price gauge, four chart modes, live data, Save), Normalize mode across all tables, Short/Long filters, an exact expiration payoff engine (options-only and entire-position incl. stock), toast notifications, and Position Map / OHLCV history. See “What’s in this baseline (v1.1.0.1)” below.
- v1.0.0.48 · 2026-09-02 — Position Map adds 3W and 2M window options; the chart modes are reordered to Options position · Entire Position · Position Map · OHLCV, and the former “Expiration” mode is renamed “Options position”.
- v1.0.0.47 · 2026-09-02 — Added an “Entire Position” main-chart mode: the expiration payoff including the stock holding (shares × (price − snapshot cost), signed & normalize-aware), so the curve, max profit/loss, breakevens and status reflect options + shares together.
- v1.0.0.46 · 2026-09-02 — Fixed share counts under Normalize mode: shares are now divided by the position’s option-leg GCD with the sign preserved (e.g. -1,400 shares against 14/28/14 legs → -100), instead of a flat unsigned 100. The “Entire Position” optioncharts link uses the same normalized, signed share count.
- v1.0.0.45 · 2026-09-02 — Renamed the optioncharts.io link to “Profit / loss Options only” and added “Profit / loss Entire Position”, which adds the stock holding (buy/sell × shares at the snapshot price) so the payoff includes the underlying shares.
- v1.0.0.44 · 2026-09-02 — Added the Normalize-mode toggle to the Saved ideas toolbar (reduces each position to its smallest whole-lot ratio and hides net premium), staying in sync with the Scanner’s toggle.
- v1.0.0.43 · 2026-09-02 — Added Short / Long quick-filters to the Scanner and Saved ideas tables (Short = negative shares / sold short, Long = positive shares / held long; keyed on the stock-holding sign).
- v1.0.0.42 · 2026-09-02 — Analyze: the Save button now disables (shows “Saved ✓”) when the ticker is already in your saved ideas; and the Latest / Fetch / Normalize controls moved up into the header row beside Save.
- v1.0.0.41 · 2026-09-02 — The Option OHLCV bars table’s Date/Time column now shows the weekday (Mon/Tue/…), matching the Stock OHLCV table.
- v1.0.0.40 · 2026-09-02 — Renamed the collapsible table to “Stock OHLCV Price History (last 100 days)” and gave it its own 10 / 30 / 60 / Max window selector (independent of the OHLCV chart window).
- v1.0.0.39 · 2026-09-02 — Analyze: the OHLCV main chart now fills the full width; the Options / position section is collapsible (expanded by default); and the Stock OHLCV data table returns below it in a collapsible block (collapsed by default).
- v1.0.0.38 · 2026-09-02 — Analyze main chart gains a third mode, OHLCV (candlestick + volume with window / O-H-L-C line toggles, crosshair and Range/Snapshot reference lines); the mode selector and per-mode controls moved into a strip directly above the chart. The duplicate Price-history chart section was removed.
- v1.0.0.37 · 2026-09-02 — Analyze: Expiry shows “Expired” for past-dated positions; added a Save button that appends the position straight to your ideas CSV; and the Position / Market Context card fields now sit on a single line each.
- v1.0.0.36 · 2026-09-02 — Analyze redesign: a “Trade at a glance” block with POSITION (Max profit / Breakevens / Max loss / Expiry + DTE) and MARKET CONTEXT (Snapshot / Latest / Range low / Range high / Spread) cards, plus a plain-language status strip (inside/outside profit zone vs breakeven). The old Snapshot/LO/HI chips row was removed; Latest / Fetch / Normalize controls remain.
- v1.0.0.35 · 2026-09-01 — Analyze tab gets its own Normalize toggle that rescales the entire view — leg quantities, the hidden net-premium column, and the payoff chart / Max Profit-Loss / breakeven dollars — to the smallest whole-lot ratio; stays in sync with the Scanner’s toggle.
- v1.0.0.34 · 2026-09-01 — Renamed “Share mode” to “Normalize mode” (same behaviour: reduces each position to its smallest whole-lot ratio and hides net premium).
- v1.0.0.33 · 2026-09-01 — Position Map snapshot line is now solid deep-violet (high contrast on white); its date is realigned to the trading session whose close matches the snapshot price (falling back to the nearest prior session on/before the CSV date), so the line lands on the real price date (usually Friday) rather than the download day.
- v1.0.0.32 · 2026-09-01 — Analyze tab: added a read-only horizontal price gauge under the chips row (shown in both Expiration and Position Map) that plots LO / HI strike-range, Snapshot and Current price as markers on one track with the LO–HI band; it updates live when you Fetch or type a latest price.
- v1.0.0.31 · 2026-09-01 — Position Map: chart now fills its container (960px wide), date labels rotated 60° so they never overlap, and a 1W / 2W / 1M / All time-window selector lets you zoom into the most recent days.
- v1.0.0.30 \u00b7 2026-09-01 \u2014 Saved ideas: options now start collapsed (use Expand all to open); added a Live Move button that fetches each idea ticker\u2019s live price and fills the Move column, with batched progress toast.
- v1.0.0.29 · 2026-09-01 — Position Map now overlays the stock’s last-100-day closing-price line from the cached Finnhub/Alpha Vantage history (Fetch first); the time X-axis extends back across those sessions so the price path reads left-to-right into the expiry markers.
- v1.0.0.28 · 2026-09-01 — Expiration payoff chart now draws clear labeled reference lines for LOW / HIGH strike-range, Snapshot, NOW (current price) and each Breakeven, with staggered top labels; plain per-strike lines were dropped since LOW/HIGH mark the extreme strikes.
- v1.0.0.27 · 2026-08-31 — Payoff chart polish: the x-domain now pads 20% around the position’s used price range (instead of a fixed ±18%), the x-axis uses evenly spaced round-number ticks so labels no longer overlap, and the profit / loss regions are filled green / red.
- v1.0.0.26 · 2026-08-31 — Analyze adds an interactive expiration P/L payoff chart with breakeven markers, current-price marker, hover P/L breakdown, position summary cards, and the existing strike-vs-expiry view moved into a Position Map view.
- v1.0.0.25 · 2026-08-31 19:50 — Saved ideas gains an Expand / Collapse all options button matching the Scanner; the Analyze header now shows a persistent inline badge (▲ Above HI / ▼ Below LO, with Δ-from-snapshot) beside the ticker whenever the latest price breaches the strike range, alongside the transient toast.
- v1.0.0.24 · 2026-08-31 17:45 — Analyze raises a Difference-from-Snapshot alert when the latest price crosses the LO/HI strike thresholds; blocking alerts replaced by non-blocking toast notifications, with Live Move / Refresh options / Save ideas progress; Saved ideas gains the Scanner’s filter + quick filters (All / Options / Active / Expired), both searches explicitly case-insensitive; candlestick charts get a hover crosshair with an OHLCV tooltip.
- v1.0.0.23 · 2026-08-31 16:40 — Optimization pass on the v1.0.0.22 UI layer: charts reserve the right-side label gutter only when reference lines are shown, and the scanner no longer double-applies the text filter on each render.
- v1.0.0.22 · 2026-08-31 16:00 — Scanner UX/performance pass: unified Settings drawer (API keys, theme, rows-per-page, default tab, cache controls), sticky table headers, quick result filters (All / Options / Gainers / Losers) with match count and clearable search, compact/comfortable density, scanner pagination, keyboard shortcuts (/ to filter, Esc to clear), and reference-line labels in a right-side gutter with thinner weekly dividers.
- v1.0.0.21 · 2026-08-30 11:30 — Position mark-to-market: Current net premium and a Gain/Loss tag from live option prices; the Option OHLCV table gets a Visualize candlestick chart; and the stock OHLCV chart overlays Snapshot / Range HIGH / Range LOW reference lines.
- v1.0.0.20 · 2026-08-30 10:55 — Option OHLCV bars table now shows newest date first (descending), matching the Price-history table.
- v1.0.0.19 · 2026-08-30 10:40 — Clearer Massive messaging: buttons/prompts labelled “paid Massive Options plan”, and a free key (which only has contract reference) now returns an explicit “needs a paid plan” message instead of a generic error.
- v1.0.0.18 · 2026-08-30 10:15 — Analyze tab: per-leg Option OHLCV buttons load a contract’s daily bars (Date · O · H · L · C · Volume · VWAP · Trades) from Massive’s options aggregates endpoint.
- v1.0.0.17 · 2026-08-30 09:45 — Refresh options now falls back to Massive (formerly Polygon.io) when Alpha Vantage returns nothing — per-contract snapshot for last price, IV, volume, and open interest.
- v1.0.0.16 · 2026-08-30 09:05 — Analyze tab: the Snapshot chip and header price now show the “as of” snapshot date, the price sits by the name, and Price history moved to a full-width section below Options / position.
- v1.0.0.15 · 2026-08-30 08:15 — Performance pass: option rows start collapsed, Scanner uses one delegated event listener, strike-range metrics are cached, the filter is debounced, and live quotes are cached (45s) & de-duplicated — while “Fetch latest” always forces a fresh quote.
- v1.0.0.14 · 2026-08-29 19:30 — Analyze tab’s left column now shows the full position — legs, Sell/Buy/Net premium, Active/Expired badge, and a working Refresh options — beside the strike chart.
- v1.0.0.13 · 2026-08-29 19:10 — Fixed the Analyze tab re-attaching price-history button listeners on every ticker switch (they now bind once).
- v1.0.0.12 · 2026-08-29 18:55 — Replaced the drill-through modal with a full-width Analyze tab: options/position and price history side by side, plus a ticker switcher.
- v1.0.0.11 · 2026-08-29 18:20 — OHLCV chart: 45° date labels, faint dashed week-end (Friday / last trading day) dividers; OHLC table reversed to newest-first with weekday labels; “Explain with Claude” hidden for now.
- v1.0.0.10 · 2026-08-29 17:55 — Slimmed the detail modal: stats + latest-price + mode toggle condensed to one chip row, compact legend, capped modal height with sticky header and a scrollable OHLC table.
- v1.0.0.9 · 2026-08-29 17:25 — Named the detail chart “OHLCV” and added toggleable Open / High / Low / Close line overlays (off by default).
- v1.0.0.8 · 2026-08-29 17:05 — The Results header now shows the loaded source file name (“Results from …”).
- v1.0.0.7 · 2026-08-29 16:45 — Detail view now caches the full ~100-day OHLCV series from one call and adds a 10 / 30 / 60 / Max window selector; the table, chart, and AI explanation reslice locally with no extra API call.
- v1.0.0.6 · 2026-08-29 16:20 — Compare rows now show LHS/RHS share counts and their difference alongside net premium.
- v1.0.0.5 · 2026-08-29 15:58 — Renamed the “Trade Opty” button to “Live Move.”
- v1.0.0.4 · 2026-08-29 15:32 — Removed the Save/Load baseline feature from the Scanner toolbar.
- v1.0.0.3 · 2026-08-29 15:04 — Version stamp now carries a build time, so same-day revisions are distinguishable.
- v1.0.0.2 · 2026-08-29 — Source-file panel auto-collapses after a scan for more result space (toggle to reopen); detail OHLCV extended to the last 10 sessions; version now carries a last-updated date.
- v1.0.0.1 · 2026-08-29 — Initial baseline (see the feature list below).
What's in this baseline (v1.1.0.1)
- CSV scanning — structured-column and fuzzy (Validated / Cashtag / Loose) detection, option-symbol decoding, per-ticker option grouping with Sell/Buy/Net-premium math, snapshot-date detection, and a clickable ticker tape.
- Analyze workspace — a full-width tab with a Trade at a glance header (Position: max profit / breakevens / max loss / expiry + DTE, and Market context: snapshot / latest / range low / high / spread), a plain-language profit-zone status strip, a read-only price gauge (LO / HI / Snapshot / NOW), an inline breach badge, and a Save button that appends straight to your ideas file (disabled when already saved).
- Four main-chart modes — Options position (exact expiration payoff from the legs), Entire Position (that payoff plus the stock holding, signed & normalize-aware), Position Map (strike-vs-expiry with the 100-day close overlay and 1W/2W/3W/1M/2M/All zoom), and OHLCV (candlestick + volume with window & O/H/L/C line toggles). All share a control strip above the chart, hover crosshairs / tooltips, and Range/Snapshot reference lines.
- Expiration payoff engine — exact piecewise-linear P/L with max-profit / max-loss (incl. unlimited tails) and precise breakeven solving; a hover tooltip breaks P/L down per leg (and per share in Entire Position).
- Normalize mode — reduces each position to its smallest whole-lot ratio (GCD of the option legs), scales the payoff dollars and signed share counts to match, and hides net premium; available on the Scanner, Analyze, and Saved ideas, kept in sync.
- Live data (bring your own keys) — Finnhub stock quotes (Fetch / Live Move → Move column), Alpha Vantage EOD option marks (IV / volume / open interest) and ~100-day daily OHLC, and Massive (paid) per-contract snapshots & option OHLCV bars; all cached in your browser (quotes 45s, options/OHLC per day). Optional “Explain with Claude” (Anthropic).
- Saved ideas — append selected positions to a CSV on disk (append-only), then load, filter (All / Options / Active / Expired / Short / Long), Normalize, Live Move, expand/collapse options, view (rendered like the Scanner), and delete; each shows an Active/Expired badge.
- Compare & ETF — a Compare tab that diffs two whole CSVs ticker-by-ticker (Same / Changed / Only LHS / Only RHS with net-premium and share deltas), and an embedded Finnhub ETF-holdings widget.
- Two optioncharts.io deep-links — Profit / loss Options only and Profit / loss Entire Position (adds the stock leg at the snapshot price), both normalize-aware.
- Platform — toast notifications with progress (replacing blocking alerts), a Settings drawer (theme incl. dark, default tab, rows-per-page, API keys, cache controls), Short/Long & quick filters, keyboard shortcuts, pagination, persistent caches, and self-healing on-disk file handles.
Sections & usage
Scanner
Drop or choose a CSV. Pick a detection mode (Structured columns is the default — it reads the ticker from a column and pairs option rows with their underlying; Validated / Cashtags / Loose handle messier text). Confirm the ticker / security-name / price / direction columns (auto-detected; override in the dropdowns) and hit Scan file. The source panel auto-collapses to make room for results.
Each result row shows price, expected range, range %, shares, row count, and analysis links (TV·HF·EH·BC). Click a row's triangle to expand its option legs and the Sell/Buy/Net-premium summary, with Profit / loss Options only ↗ and Profit / loss Entire Position ↗ links (optioncharts.io) and an Active/Expired badge. Click anywhere else on the row to open it in the Analyze tab.
Toolbar: a clearable filter (also press /); quick filters All / Options / Gainers / Losers / Short / Long (Short = negative shares, Long = positive); Normalize mode; Live Move (fetches every ticker's live price, fills the Move column, cancellable, with progress); Save ideas; Copy list / Export CSV; plus pagination and compact/comfortable density.
Analyze (click a ticker)
Opens full-width with a ◂ / dropdown / ▸ ticker switcher and a Save button (top-right; disabled once the ticker is in your ideas). A Trade at a glance block shows the Position card (max profit / breakevens / max loss / expiry + DTE, or “Expired”) and the Market context card (snapshot / latest / range low / high / spread), with a profit-zone status strip and a read-only price gauge marking LO / HI / Snapshot / NOW. The Latest input, Fetch (Finnhub) and Normalize controls sit in the header.
The main chart offers four modes in a strip above it: Options position (exact expiration payoff), Entire Position (payoff + your shares), Position Map (strike-vs-expiry with the 100-day close line and 1W/2W/3W/1M/2M/All zoom), and OHLCV (candlestick + volume, window + O/H/L/C toggles). Below the section, a collapsible Stock OHLCV Price History (last 100 days) table (its own 10/30/60/Max window) and the option legs table with per-leg Option OHLCV (Massive) and Refresh options (live IV / last / volume / OI). Fetch loads price history (Finnhub/Alpha Vantage), cached per day.
ETF analysis
Type an ETF symbol and load its holdings breakdown (Finnhub's embeddable widget — no key, independent of your quota).
Saved ideas
Loads your ideas CSV and renders it like the Scanner — expandable positions, net premium, P/L links, Active/Expired badge — with the same filter, quick filters (incl. Short / Long), Normalize mode, Live Move, and Expand/Collapse all options. Remove ideas enters a select mode to delete chosen rows or all of them (this rewrites the file; saving is otherwise append-only).
Compare
Diffs two CSVs. The file you scanned in the Scanner is loaded as LHS by default; load a second file as RHS. Each ticker is tagged Same / Changed / Only LHS / Only RHS with a quick LHS/RHS/Δ net-premium and share readout, collapsed by default. Click one to expand its side-by-side panes showing each file's name, date, summary, and full option detail.
API keys & privacy
CSV parsing is fully local. Optional live data uses your own keys, stored only in this browser (localStorage): Finnhub (US stock quotes), Alpha Vantage (EOD option chains + daily OHLC; free tier ~25 calls/day), Massive (formerly Polygon.io — options-snapshot fallback for Refresh options, and per-leg Option OHLCV bars; both need a paid Massive Options plan, since a free Massive key only includes contract reference), and Anthropic (the "Explain with Claude" feature, which sends the OHLC numbers to the API). Keys travel in the request; a browser-embedded key is visible to this page, so use your own and keep the file private.
Browser support
Saving/loading ideas to a file and the Compare/Save-ideas file features use the File System Access API — available in Chromium browsers (Chrome, Edge, Opera). Other browsers can still scan, chart, and use Export CSV.