Improved
- Every level is named on the price axis. Spot, VFlip, the walls, Max Pain, the expected-move and GTBR edges each carry a small label with their price, right on the strike axis. Turn them on and off with LABELS in the legend; PIN keeps the legend over the chart. The heatmap’s strike axis can sit on the left or the right
- Levels you can tell apart. Each level now has its own colour on every theme, checked for colour-blind readability, and nothing comes close to the spot’s colour
- Levels have their own line styles. The spot is a solid line, the flips dashed, the walls dotted and GTBR dash-dot. Styles you set yourself in the Appearance tab are kept
- Charts side by side line up exactly. Exposure and Heatmap panels at the same strike range put every strike on the same row, whether alone or in a tab group, and recentre together when price moves
- Every source shows the market levels. State, Vanna, Delta and Charm charts now show VFlip and Max Pain too, and GexBot sources and levels use GexBot’s own names in both panels
- IBKR Net Vanna and Net Charm are now exactly the sum of the per-strike values, live and in replay, so they can differ slightly from earlier versions
- Early-close days are handled. On the day after Thanksgiving, Christmas Eve and July 3, the 0DTE day ends at 13:00 New York, with greeks, the straddle and the expected move on the true clock
- Faster. GexBot days recorded with several expirations open without a pause, and line charts redraw several times faster
- Clearer GexBot connection. A missing or rejected GexBot key now says so and disconnects, instead of showing “Connected” over an empty screen
- Activation: when your key is in use on another computer, Visor now tells you how to reset it yourself on Whop
- Sturdier. An odd value from the feed can no longer stop a frame, closing during a slow IBKR disconnect finishes cleanly, and background errors are logged instead of interrupting the app
Fixed
- GexBot vanna, charm and delta showed values a million times too small on the axis and in the sidebar
- Heatmap: scrubbing far back in history piled the time labels up in the bottom-right corner
- IBKR: with delayed data, vanna and charm were off late in the day; after the options close, an account without a real-time subscription could stay without data until a manual reconnect; connecting on a Sunday evening without real-time data now falls back to delayed data; a market-data loss during the connect left the session on dead data; memory grew during a long TWS outage
- GexBot: a slow daily download left previous close, HV and VRP empty for the session; a plan upgrade showed empty panels after a reconnect; sessions running across days kept the first day’s futures conversion (levels off after a contract roll)
- History: old session files were never cleaned up for daytime users; exporting the day being recorded produced an empty file; Delete all removed the day being recorded and froze the charts; a renamed NQ file opened as NDX; opening an older recording no longer writes zeros into it
- Updates: the download failed behind some antivirus or company networks; cancelling a download no longer freezes the window
- Panels: new floating panels no longer open on top of each other; Escape on the colour picker now cancels the colour; the IV vs HV fill shows premium and discount the right way round; the Overall View’s daily VRP rows now say 3M, their real window; Volatility Skew’s spot label matches its line in the futures view, and its Surface toggle only appears where a surface can be drawn
Improved
- A new workspace. Panels dock, tab and float on a professional docking engine: square targets show where a dragged panel will land, floating panels are real windows you can resize and move to another monitor, and maximize is instant
- Smoother and lighter. Charts redraw much faster while you resize panels, and panels hidden behind a tab do no work until you show them
- ATM Straddle is now ATM Volatility. The 0DTE straddle as it is priced, shaded when IV is high or low against its last half hour, and the ATM implied volatility, with a ribbon when it moves unusually fast. The last hour is hatched, as 0DTE IV rises naturally there. Open it from its button in the top bar
- The day stops at the options close. At 16:00 New York, Visor stops recording, keeps the day’s final picture on screen and shows when the next session opens; the next day starts fresh. On IBKR, a running session moves to the next expiry by itself
- Clearer status. An empty panel now says why (“No greeks from the feed”, “Options chain still loading”…), incomplete data is no longer recorded, and a “Stale” warning shows on every feed when data stops arriving
- Standard definitions for greeks and volatility. Vanna, charm, Session RV, VRP Intraday and IV Rank now follow the standard formulas, so their values differ from earlier versions; recordings made before keep theirs. Next-day and weekly expiries no longer show today’s expected move
- One ATM IV everywhere. The ATM IV card, the Volatility Risk Premium, Volatility Skew and ATM Volatility now use the same at-the-money implied volatility
- IBKR open interest fills itself in during the session and on a reconnect; a strike with no open interest yet shows as missing, never as zero
- Small touches: +1σ / −1σ markers when an expected-move band is off screen, and sharper icons at any screen scaling
- Sturdier. Damaged settings or layouts no longer stop Visor opening, and cancelled connections and instrument switches are handled cleanly
- Fresh interface on first launch. Visor opens on the new default layout, theme and panel settings; your feed, connection, instrument, recordings and history are kept
Fixed
- IBKR: Regime and Net Charm could jump about 2000× for the rest of a session (seen on QQQ)
- IBKR overnight: an evening relaunch could stream the expired options (no greeks, Net GEX at zero all night), connecting during the futures’ daily pause recorded near-empty data, and the GTBR range collapsed in the evening session
- IBKR: “client ID already in use” at the nightly reconnect
- IBKR open interest: strikes could show none all day; VFlip and Cum. Gamma left out the day’s opening open interest; Net Charm could be recorded wrong
- IBKR delayed data records again
- ATM straddle: it no longer seems to grow all day, and it no longer disappears or reads too low on GexBot NDX
- GexBot: sessions running past midnight take the new day’s expected move, the State view no longer drops out in long sessions, and QQQ on the NQ scale is no longer squeezed out of scale
- History: the slider reaches every recorded row, live data can no longer be written into the wrong file, and a new day’s file opens reliably
- Panels: a new copy of a panel opens with its own settings, levels shown as paths no longer vanish, panels no longer go missing after a maximize, and one panel’s drawing problem no longer freezes every chart
- Reset to Defaults keeps your instrument, and cancelling an update no longer shows a late error message
Improved
- Crosshair sync. A new Crosshair sync button sits next to Link. When it is on, hovering any time-based chart marks the same moment on all the others, with each chart’s values in its box. Every chart now uses the same crosshair
- Heatmap: Latest Tick. A band on the right edge of the heatmap magnifies the latest tick (or, in playback, the moment under the cursor), so a one-tick change reads at a glance. Toggle it with Latest Tick in the heatmap’s settings
- New heatmaps open ready to read: Grid style, Contrast 1%, Focus 80%, legend pinned, and spot and GTBR drawn as paths. Heatmaps you already have keep their settings
- Vol index badge says when a quote is late. It reads VXN (delayed) or VXN (stale) when the quote is not current, and the vol index now picks the freshest of its sources instead of trusting one
- Multi-Expiration (IBKR) no longer asks at every connection. The setting in Settings > Multi-Expiration decides on its own. It is now off by default, and this update turns it off once: turn it back on if you use NEXT and WEEKLY. Connecting is faster while it is off
- Charm uses the same colours as every other value: positive values in your positive colour, matching the Net Charm number in the sidebar. On GexBot, the Charm heatmap shows the charm GexBot records; the charm projection stays on IBKR
- ATM Straddle header reads as one centred line
- Log files are much smaller, especially on long IBKR sessions
- Basic usage statistics. Visor now sends basic statistics about how the tool is used (version, data feed and instrument, whether it is live) to help us improve it. Nothing personal, no market data, no files. The privacy policy describes it in detail
Fixed
- Long IBKR sessions keep recording. A session left running stopped recording after about 14 hours, and stayed stopped after the daily rollover until Visor was restarted
- The IBKR automatic reconnect no longer waits for you. After a lost connection it could sit on a “Connection Lost” message or the Multi-Expiration question, recording nothing until someone clicked, and it gave up after about a minute. It now reconnects on its own, keeps trying until TWS or the Gateway is back, and shows its progress in the status bar
- The top bar fits smaller windows. At narrower widths its controls overlapped and Connect could be pushed out of the window. Every control now stays in place; only the pinned cards shrink
- Vol index on GexBot. It could stay frozen for a whole session, and on some days its daily change and the expected-move band were measured from an older close
- Heatmap paths line up with the heat beneath them. Near the live edge the spot, level and GTBR paths could sit a few minutes away from the column they describe
- Your workspace is saved more safely. It can no longer be overwritten while Visor starts, and closing one copy of a panel no longer makes Visor forget the others
- GexBot connection. Disconnecting and reconnecting quickly during a slow request could crash Visor, and a failed start showed “Connected” with nothing on screen
- Panel headers no longer change size when the first value arrives, and a theme switch now recolours every readout (the Regime tag kept its old colour on Bloomberg theme)
- The pinned ATM IV card shows its value in full
Improved
- The Vol Index on the GexBot feed is now working and autoswitching source if unavailable. The sidebar’s vol index (VIX, VXN, RVX) refreshes about once a minute
- Log files autocleaning. Logs older than two weeks are cleaned up automatically
Fixed
- Your workspace comes back as you left it after an update. The first launch after installing could re-stack some panels onto the Overall View at the left edge; the saved layout was fine and is now restored untouched
- Heatmap sliders match the picture. A freshly opened heatmap could show slider positions that did not correspond to what was drawn, so the first touch of a slider changed the surface abruptly. The handles now always show the values in use
- The futures drift gauge under-reported the drift and Resync stayed greyed out on the GexBot feed. Now it properly reflects how far the on-screen price is from the market, and on the GexBot feed the Resync button lights up as soon as the feed publishes a newer conversion
Fixed
- Automatic reopen after an update now works. Visor never reopened by itself once the installer had finished. A first patch the same day, 1.5.5.1, did not resolve it; 1.5.5.2 does. This takes effect for updates installed from 1.5.5.2 onward: updating to it from an earlier build still needs one manual reopen, and from there the next update brings Visor back by itself
Improved
- New: Gamma-Theta Breakeven Range (GTBR). Two lines around the session’s open price showing how far the day was priced to move, weighted by the strikes where option gamma actually sits, and narrowing into the close. Inside the lines, the move is still within what the 0DTE market was paying for; outside, the day has already delivered more than was priced. One legend entry, GTBR, on the Exposure panel and every Heatmap source, with Line, Path or Both like the flip; on the Charm heatmap the Path continues along the projected cone to the close. Recorded per tick, so your sessions replay it. Available where the feed provides per-strike implied volatility (IBKR, GexBot State and Orderflow sources)
- Your colours survive a theme switch. Any colour, opacity or line style you set yourself now stays when you change theme; everything else takes the new theme. A “Reset colors to theme” button at the bottom of the Appearance tab takes everything back to the theme’s own look
- Themes now apply completely and consistently. Every theme colours every chart element from one shared design, so switching no longer leaves the previous theme’s line styles or max-pain colour behind, button text stays legible on every theme, and previewing a theme in Settings then pressing Cancel leaves nothing behind. Switching is also markedly faster and lands in a single repaint
- Heatmap colours redone. The strongest cells now show the exact theme colour, and Glow turns the peaks into a hot core instead of washing them toward white. Empty cells are indistinguishable from the panel background, so no more grey haze at high Contrast and no dark seam where the sign flips. Contrast now changes intensity only, never the colours
- Heatmap controls simplified. A Style switch, Smooth or Grid: Grid draws one flat block per strike and minute. Sliders are Opacity (was Brightness), Contrast, Focus, Glow and Smoothing; the Color steps slider is gone
- Axis labels never overlap. Time labels thin out as a panel gets narrower instead of running into each other, and the Exposure panel’s horizontal grid now uses the same spacing as the Heatmap’s instead of a line at every strike
- Feature documentation. Every panel and feature now has a user guide; the website docs are built from them
- GexBot feed: you now know when it goes quiet. If GexBot stops sending updates during the session, the Connect badge turns amber and reads Stale, and the status line shows the time of the last update. Your charts keep the last data, nothing pops up, and everything returns to normal by itself when the feed resumes. A quiet feed outside market hours is normal and is not flagged
- Updates. Cancelling a download that has just finished no longer pops a security warning. From the next update onward, the checks that run after a download no longer freeze the window, and if they cannot complete you are told that plainly instead of being told the download was tampered with
Fixed
- The update check could silently fail to answer, leaving no dialog and the rollback menu stuck on “Checking…”. It now always reports back
- The ATM Straddle card in the sidebar, and its pinned pill in the top bar, showed no value on the GexBot feed while the ATM Straddle panel plotted one. They now show the same reading the chart draws
- The Regime panel’s Net GEX headline changed when switching the Curves view between Split and Synthetic. The headline now always reports the open-interest total; only the curves change with the view
- Closing Visor while connected to IBKR mid-fetch could end the session unsafely; the app now waits for the connection to release before it shuts down
Improved
- New flow sources on the GexBot feed: the Timeseries panel’s Source list gains Delta Flow (net plus call/put split), Gamma Flow, Convexity Flow, and their Flow Rate bar variants, the session’s classified order flow as it accumulates, plus Vanna Flow and Charm Flow (marked BETA, as the feed flags them). Where the feed provides it, a Next-expiry view is available
- The Regime panel gains a Curves view: Split (the volume- and open-interest-weighted lines, as before) or Synthetic, one line processing open interest and session volume into a single regime indicator
- After an update installs, Visor now reopens by itself, no more hunting for the shortcut. This takes effect for updates installed from this version onward, so the update to 1.5.4 still needs one last manual relaunch
- Bar thickness no longer changes with zoom. The thickness setting now sets a real size that holds steady as you widen or narrow the strike range, and the same setting governs every bar chart in the app. Bars only thin out when the view is genuinely too dense to fit them
- The Vol Index in the sidebar now updates live during the session on every data source, and VRP Daily, its Z-Score and the Daily VRP figures move with it. Previously, on the GexBot feed (and on ETF pairs over IBKR) it could sit at the prior close all day
- Panels now say what they show, everywhere: titles and tabs follow the plotted source, and on the GexBot feed the gamma source is named Classic, matching the feed’s own vocabulary, in the title as well as the source list. Controls that don’t apply to the current source no longer appear at all, instead of sitting greyed out
Fixed
- The VFlip level could vanish from the chart in specific situations: when the price sat exactly on the flip level (the moment you most want to see it), and when the flip moved outside the visible strike range. It now always draws; if it’s beyond the edge of the view, a small marker at the chart border points to where it sits
- The flip level shown on the Next- and 90-day expiry views could briefly take the value belonging to a different expiry; each view now keeps its own
- Opening a recorded GexBot session with an Options Activity panel open left it empty, since Options Activity needs data only the IBKR feed provides. The panel now shows the recording’s equivalent flow source instead, and returns to your chosen source by itself the next time its data is available
- Opening a recorded IBKR session left the Regime panel empty; it now draws on every recording
- Maximizing a panel silently paused the data of the panels it covered; after restoring, some charts stayed empty or stale until you interacted with them. Hidden-by-maximize panels now keep receiving data
- The charm heatmap’s projection is now computed consistently across all instruments: ETFs no longer scan a meaninglessly wide range, and the far edges of the surface on index products are filled instead of empty
- The price path’s endpoint dot lost its “ticker: price” label when strike labels were positioned at the side of the chart; it’s back
Improved
- The ATM Straddle panel now works on every data source. Where your feed provides option quotes it shows the traded straddle price, as before; where it doesn’t, it shows the market’s implied one-sigma expected move derived from at-the-money volatility, clearly labelled so you always know which you’re reading
- The Gamma per 1% panel is now the Regime panel: same place, now showing aggregate gamma exposure in both weightings — volume-weighted (solid) and open-interest-weighted (dotted) — with a clickable legend to show or hide each line. The Regime view moved out of the Options Activity panel’s source list into this dedicated panel
- Checking for updates no longer freezes the app when the update server is slow to respond — at startup, during the session, and in the About window’s version menu
- The ATM Straddle chart is cleaner: the legend strip is gone, since the header already carries the value
Fixed
- Updating from inside the app no longer resets your panel layout — your workspace, window size and position now survive an in-app update
- With futures conversion on, prices and levels on cross-scale pairs (like QQQ shown on the NQ scale) could sit noticeably off the real futures price, by around ten points on NQ. They now land where they should
- The Vanna Flip line only appears when dealer vanna flow genuinely changes side at some price; previously a line could be drawn at a meaningless level even when no flip existed
- The ATM Straddle header now reports the same theta-adjusted value the chart draws; the two could differ before
- Cancelling an update download on a stalled connection could close the app abruptly; it now simply cancels
Improved
- Visor opens faster, and a slow or unstable connection no longer holds up the splash screen
- Visor reopens on the instrument you were last using — remembered separately for each data source, so switching between them takes you back to what you were watching on each
- A panel left maximized comes back maximized on the next launch, with the rest of your layout intact underneath
- Damaged or hand-edited settings can no longer stop Visor from opening — anything unreadable is treated as “nothing remembered” and the app starts normally
Fixed
- Closing the app with a panel maximized wiped your panel layout — every other panel was gone on the next launch, permanently. Layouts are now safe however you leave the app
- A damaged or unreadable layout no longer replaces your workspace with a broken one; Visor falls back to the standard layout instead
- With futures conversion on, the last point of the price path sat slightly off the rest of the line — most visible on pairs like QQQ shown on the NQ scale, where a small difference is magnified
- The horizontal spot line, its price label and the price path now all agree; the line no longer floats above or below the path it marks
- Spot prices read the same in the chart and in the legend
- The Options Activity panel’s chart was cut short, showing less of the day than the G1% panel on the same session
- The Options Activity panel now shows prices on the futures scale like every other panel — in its legend, its hover readout and its right-hand axis
- Pinning a legend showed stale values until something changed; it now shows the current ones straight away
- A pinned legend now keeps its spacing from the chart edge when the chart’s margins change
- Long price values in a panel’s settings drawer no longer get cut off
Improved
- Volatility Skew now reads correctly on replayed sessions — it no longer draws a flat 20% smile across strikes your source never priced (known limitation from 1.5.0)
- In-app updates now work for all-users installations (known limitation from 1.5.0)
- Opening a recorded session now stops the live feed so you can read it undisturbed, instead of reconnecting over it — reconnect with the Connect button when you’re done
- Opening a recorded session switches Visor to that instrument, so the app and the chart no longer disagree about what you’re looking at
- Faster first drag of the history slider after a long live session, and faster heatmap loading when opening or scrubbing a session
Fixed
- Loading today’s own recording left the heatmaps and price path empty until restart
- Connecting while a recording was open could write live data into it, leaving bad points in the session
- Charm heatmap price path stopped a few minutes short of the market close
- Charm and Vanna charts came up empty on replayed sessions that didn’t record implied volatility
- Opening a recording whose instrument the current source can’t provide failed with an error and appeared to need a second attempt — it now opens for viewing
- The “Powered by” badge now follows the source that recorded the session you opened
- Part of the history slider felt unresponsive because several positions pointed at the same recorded moment
- Loading a downloaded sample no longer restarts the live feed
Major Release
The largest release since launch: a second data source, new chart panels, a rebuilt session recorder and a full visual pass.
Major
Visor now runs on a second data source: GexBot
Until now Visor required Interactive Brokers. You can now choose your data source in Settings and switch between them live, without restarting the app. Every chart is fed by whichever source you pick.
- GexBot — data arrives over GexBot’s API (a GexBot subscription & key are required)
- Two views of the market on GexBot:
- Classic — GexBot’s standard model, with a Volume / Open Interest toggle so you can weight the ladder either way
- State — GexBot’s flow-classified model, showing where customer positioning sits: GEX Profile, State Gamma (with money long/short gamma levels), plus State Vanna, Charm and Delta
- Expirations — 0DTE, next expiry and the 90-day aggregate, on both Classic and State
- The flip level is Visor’s own on both sources — the VFlip you know from IBKR is now computed the same way on GexBot, so the level means the same thing whichever source you run
- Daily volatility context without IBKR — previous close, HV20, expected move, daily change and the VRP panels are filled at connect, so the volatility side of the app works on GexBot too
- Futures conversion works on GexBot — view index analytics on the futures price scale, live-calibrated
- Your GexBot key is safely stored in the Windows credential store, never written into a settings file
|
Interactive Brokers |
GexBot |
| Instruments |
SPX, NDX, RUT, ESTX50, ETFs (SPY, QQQ, IWM, GLD, SLV), futures (ES, NQ, CL) |
SPX, NDX, RUT and ETFs — now including DIA and USO (new this release) |
| Only here |
ATM Straddle panel, Options Activity panel, split call/put bars, Weekly expiry |
Classic & State models, GEX Profile / State Gamma sources, Regime panel, 90-day expiry |
New
- Redesigned exposure panels — one panel now covers every source: Gamma, Vanna, Delta, Charm, plus GexBot’s GEX Profile and State Gamma. Open up to three at once, each on its own source, weighting and expiration. This replaces the old separate greek panels and the original GEX chart
- Redesigned heatmaps — one heatmap panel covers Gamma, Vanna, Delta, Charm and State Gamma, up to three at a time, with appearance controls (sensitivity, luminosity, blur, glow, posterize)
- New Orderflow / Activity panels — track a single or bundled value across the trading day:
- Options Activity — call vs put sell pressure IBKR
- Regime — total GEX by volume and by open interest, coloured by side of zero, with spot overlaid GexBot
- Charm projection — the charm heatmap is now a forward-looking scenario map: what the book’s charm would be at each price between now and today’s close, with a Charm Equilibrium line marking where dealer flow turns from supportive to suppressive. Available on both sources
- Expiration selector on charts — switch a panel between 0DTE, next expiry, weekly (IBKR) or 90-day (GexBot); recorded sessions replay the expiry you were watching
- Open panels from the top bar — every panel is now launched from the toolbar and can be opened several times; a fresh one starts at defaults, and each keeps its own settings between sessions
- Settings drawer inside each panel — source, expiration, appearance and the legend in one place, with the legend doubling as visibility toggles and live value readouts
- Pin the legend onto the chart — keep live values visible without opening the drawer
- Level trajectories — walls, flip and spot can be shown as a line, as their path across the day, or both
- Local Database tab in Settings — browse your recorded sessions and load any of them directly
- Volatility Skew redesign — raw per-strike IVs as dots behind a smoothed smile line, with clickable legend toggles
Improved
- Session recording rebuilt — one documented, self-describing file format, one file per instrument, source and day, with consistent timestamps. Files only carry what their source actually produced, and everything on screen is recorded, so playback shows exactly what you saw rather than re-deriving it
- One timing setting — your recording interval now drives both the saved session and the live chart history, so charts and recordings can never drift apart; the update rate is a separate display preference
- Bad data no longer reaches your charts or your files — incomplete or stale updates are now recognised and skipped in one place, instead of leaving artefacts in the session
- Much smoother history scrubbing — long-session freezes are gone, heavy drawing work no longer blocks the interface, and the slider is no longer capped to a slow refresh
- Cleaner startup — no more flicker or layout jump: the splash now holds until your restored layout is actually on screen
- Layout and settings hardened — settings and window layout are stored separately, saves are atomic with automatic recovery from a backup, and Visor ships with a curated default layout
- Docking improvements — dragging a separator resizes only the panels that share it, and tabbed panels get an overflow menu instead of overlapping labels
- Consistent look throughout — themeable panel icons, one shared style for legends, crosshairs, tabs, panel cards, spacing and corner radii; theme changes now apply everywhere in one pass
- More accurate analytics — vanna and charm now use the same call-minus-put convention as GEX and DEX, vanna uses the standard open-interest weighting, charm includes its full drift term, intraday time-to-expiry decays continuously overnight, and VRP no longer counts today’s unfinished bar
- Futures conversion is more precise — a two-part model (scale + offset) that correctly handles pairs like QQQ shown on the NQ scale
- Interactive Brokers — open-interest coverage keeps up on fast trend days, delayed-data fallback works in extended sessions, and a changed API key applies without restarting
Fixed
- Loading a previous day’s file while connecting live no longer leaks that day’s data into today’s charts
- Scrubbing a loaded session is now fully isolated from the live feed — live data can no longer bleed into a file from another day or source
- Futures display on cross-scale pairs: the live price point moves every tick again, and scrubbing no longer draws a second path
- The first updates after connecting can no longer draw a long straight line across the price path
- NDX and other uneven strike ladders no longer show empty gaps between listed strikes in the heatmap
- The heatmap price path now bridges disconnection gaps like every other chart
- Fixed crashes when switching instruments with certain panels open, when reopening the settings dialog, during playback of some older sessions, and at startup with a custom recording interval
- Legend text no longer gets cut off, and legend values clear when a chart has no data
- GEX bars no longer saturate on GexBot when the source sends no call/put split
- Zooming no longer rescales bars incorrectly on uneven strike grids
- Overnight futures price history no longer splits at midnight
- The strike-range slider no longer moves on its own while scrubbing
- The welcome/demo prompt no longer reappears when switching instruments
- On replayed GexBot sessions, the Volatility Skew panel can show a flat 20% line for strikes the source didn’t price that day — use it live on GexBot for now
- If you originally installed Visor for all users (admin install), update by downloading the installer from the site rather than the in-app Update button
v1.5.0 is a fresh start on a better session format: files recorded before v1.5.0 will show empty panels, and your panel layout resets once on first launch. Older versions stay installable from the version rollback menu for anyone who wants them, but they are no longer supported — issues are only investigated on v1.5.0 and later.
Architecture
- Extracted DataProvider protocol — data consumers now use a feed-agnostic interface instead of reaching into IBKR internals, preparing the codebase for future alternative data feeds
- Reorganized all IBKR-specific code
Improved
- Settings dialog is now cached at startup and reused — opens instantly instead of rebuilding every time
- Settings dialog uses theme-aware colors instead of hardcoded values; factory reset now correctly refreshes all panels and charts
- Reduced theme switch overhead: removed duplicate stylesheet application and unnecessary widget unpolish/polish loop
Fixed
- FOP instruments (ES, NQ) now reliably find 0DTE contracts during and after futures rollover — rewrote expiration discovery as a 3-tier system that handles IBKR dropping same-day chains from the catalog
- Weekly GEX expiration discovery for FOP now uses blind qualification instead of assigning a wrong default trading class — each FOP date has a unique trading class
Improved
- Custom tab bar painting for dock panels — straight U-shape selected tab with panel-matching border color, hover highlights, and inter-tab separators for better UX/UI
- CTRL+scroll time window zoom now works on all intraday timeseries panels (ATM Straddle, Order Flow, Gamma Regime), not just the GEX heatmap
Fixed
- Expected move no longer shows stale values when connecting during US overnight / pre-market — IBKR daily bars behave differently outside RTH, and the app now compares bar dates against the ET calendar to pick the correct previous close
- ATM straddle and ATM theta in history playback mode now read from the snapshot value instead of the stale live cache
- Dock layout restores correctly after un-maximizing a docked panel (state saved/restored on maximize toggle)
Fixed
- Delayed data mode was blocked by OI fetcher initializing incorrectly
Note
- Simply update directly within the built-in updater
- Some panels may not populate properly when manually loading historical files (will be corrected in next update)
New
- GEX Heatmap — 2D strike × time thermal visualization with Gaussian diffusion, adjustable rendering, spot path tracking, and level overlays
- Delta / Vanna / Charm Exposure — Per-strike dealer greek positioning with regime detection and delta-adjusted toggles
- Gamma per 1% — Intraday net GEX time series with real-time regime detection
- Multi-instrument support — 13 instruments: SPX, NDX, RUT, SPY, QQQ, IWM, GLD, SLV, ES, NQ, CL, ESTX50 (Weekly + 0DTE)
- Per-instrument history, market session awareness, and exchange-specific holiday calendars
- Futures conversion — ratio-based model for same-scale (SPX/ES) and cross-scale (SPY/ES) pairs with live drift gauge
- Time window slider — 30min / 1h / 2h / 4h / Full Day filtering
- Pinned metrics — pin any metric to toolbar as a live pill; drag-to-reorder
- Per-chart zoom — independent strike range and time window per panel
- Instrument selector — categorized dropdown
Improved
- Metric level coloring with configurable thresholds (normal/elevated/alert)
- Live color preview, heatmap appearance sliders, universal opacity controls
- Unified two-tab settings dialog (General + Appearance)
- Variable-speed playback (1x–10x) with throttled scrubbing
- Time window filtering during playback
- Heatmap and regime series seeded from history on reconnection
Performance
- Incremental heatmap rebuild, pooled chart objects, shared curve calculations
- Stabilized hardware fingerprint
- 3-way connection button (Connect/Cancel/Disconnect) with non-blocking cancel
- Full rebuild of original GEX chart panel
New
- Volatility Skew panel — Call IV / Put IV smile chart + Put Skew metric (5% OTM put vs ATM)
- ATM Straddle panel — dedicated intraday straddle price chart (0DTE)
- Daily VRP histogram — historical distribution of Volatility Risk Premium with mean-centered bars
- IV vs HV chart — 30-day IV vs 20-day Historical Volatility with gradient crossover fill
- VRP metrics — Global VRP, Intraday VRP, Z-Score, 3-month percentile, rolling mean
- Fully dockable, resizable, tabbed panel layout — panels can be floated, reordered, tabbed together, and restored across sessions
- Visor menu with panel visibility toggles and compact / full-detail mode per panel
- Per-theme color persistence — theme changes stored individually and reset independently
- Configurable data colors (positive/negative values) and full color picker for every chart element with live preview
- History autoplay with configurable speed (1x / 10x)
- Full 24/7 data continuity — historical data fetched regardless of market hours
Performance
- GEX chart bars pooled and reused across updates — no create/destroy cycles per frame
- Bar positioning computed at paint time in device coordinates, eliminating full recalculation on every resize or zoom
- All new panel charts (Skew, Straddle, IV/HV, VRP histogram, Candlestick) use native architecture with significantly lighter per-frame cost
- Paint objects (fonts, pens, colors) cached at theme-change time, not recreated per paint cycle
- Charts skip repaints entirely when incoming data has not changed
- Historical data fetching (VRP, HV, candlesticks) does not consume additional market data lines
Fixed
- Stale instance lock file blocking fresh startup after crash or force-kill
- Config file migration safety — app no longer breaks when config structure changes across updates
- Multi-monitor eyedropper fix
- Connection flow issues
- Reduced log noise significantly — removed per-tick volatility logs and heartbeat entries firing hundreds of times per session
- Status bar loading bar no longer shifts layout content
New
- Daily index change % now displayed in the top bar
- Historical price path reconstruction for late session start (realtime & delayed data)
- Configurable market data line limit — Settings > API Limit slider
- New "QuantKit Links" section in About dialog with website, Discord, and docs
- Window position & size now remembered across restarts
Performance
- Connection to IBKR is now fully non-blocking — UI stays responsive during the entire connection sequence
- OI fetch uses smart batching to stay within IBKR data line limits
- Object pooling and memory optimizations for long trading sessions
- Removed dependency — lighter installer
- Thread safety audit: all shared state properly locked
Internal
- Clean controller-based architecture (Session, LiveMode, History, Settings)
- Instrument-agnostic design — foundation for future multi-instrument support
- Optimization of data retrieval (Spot, Options, Futures, OI)
- Future contract conversion for delayed users disabled — would have required significant complexity for little result
Fixed
- Settings window restoring incorrect values on close
- History slider index bug when loading external files
- Theme preferences not persisting correctly
- Reduced unnecessary Gateway log noise