HAB Regime Monitor setup guide
This is the README that comes with the download (version 1.0.0), published here so you can check the requirements and the install steps before you buy.
© 2026 Azimuth Group LLC
Sold by Azimuth Group LLC. Support: [email protected] (see Support below). Not investment advice.
License Agreement (EULA): LICENSE.txt in this folder, and https://thehabreport.com/eula.html (see Licence below).
Have your API key and secret ready before you start. The first start asks for them; nothing collects until they are in and tested.
Download and install
- Download. The download link is on the payment confirmation page. Save the file (
HAB-Regime-Monitor-1.0.0-Setup.exe) and keep it: it is your copy. Optional check. The confirmation page also shows the file's SHA-256. To compare, open PowerShell in the folder that holds the file and run:
Get-FileHash .\HAB-Regime-Monitor-1.0.0-Setup.exe -Algorithm SHA256The value it prints must match the one on the page (capital or small letters make no difference).
Run it. Double-click the file. Because the installer is new and not yet signed, Windows first asks whether to run it, in one of two ways:
- a box titled "Open File - Security Warning" ("The publisher could not be verified"): click Run;
- or a blue screen titled "Windows protected your PC": click the small More info link, then the Run anyway button that appears.
No administrator password is asked for at any step: it installs for your user account only, under your user profile.
The "Open File - Security Warning" box. Click "Run". - The setup wizard. Welcome, Next. The License Agreement: read it, tick both boxes (you accept it, and you are not a resident of New Jersey), Next. Keep the suggested folder (a folder synced by OneDrive is refused: the database is written all day), Next, Install, Finish. Leave "Open HAB Regime Monitor" ticked: the first start opens the setup screen.
The License Agreement page: both boxes ticked, Next enabled. - Lost link or failed download. Email [email protected] from the email address you bought with, and a working copy will be re-sent.
1. Requirements
- Requires a Webull account with API access (apply for and get API approval before you buy), a real-time options data subscription, and Windows. HAB Regime Monitor collects with your key, from your subscription, onto your computer. Without real-time options data the collector cannot price the chain and the console has nothing to draw.
- Using a different data provider? Email [email protected]. Support for other providers may be added in a future version.
- Windows 10 or 11 (64-bit). Nothing else to install: the installer brings its own Python (3.14) with it, inside its own folder.
- The computer on, and you logged in (a locked screen is fine), from 09:20 ET until 20 minutes after the close on trading days (16:20; 13:20 on an early close). The collector only records while it runs, and option data cannot be fetched after the fact.
2. The first day is empty
HAB Regime Monitor builds its own history from what it collects. On day one:
- The live surface works from the first poll (the first chain poll lands within 2.5 minutes of 09:30 ET).
- Replay needs at least one completed session.
- Prior-day levels and their touch odds need the previous session, and the range vol behind the odds needs 20 sessions before it is fully formed.
- This Monitor's own record reports nothing for a bucket until it has 20 graded forecasts. The model's calibration history (December 2021 to September 2026, 1,198 sessions) is shown from day one, separately, and is never mixed into your own record. This measures forecast calibration, not trading returns. Past calibration does not guarantee future accuracy.
3. What it is not
- Not a trading tool. It cannot place, cancel, modify or read an order, and it cannot see your account. It uses your own market-data API key and your own real-time options data subscription, for market data only. The collector builds a market-data client only. You install your data provider's Python package yourself, under your own agreement with the provider: HAB Regime Monitor does not include or change it, uses only its market-data functions, and refuses to start if the package's order-handling code is ever loaded into the program.
- Not investment advice. It shows market data and statistical estimates. Nothing on screen is a recommendation to buy, sell or hold anything.
- Nothing leaves your computer. The collector talks only to your data provider's market-data API, with your key. The console reads the local database and listens on 127.0.0.1 only. The software runs locally and contacts no Azimuth Group server: there is no license check, no update check and no telemetry.
4. First start: the setup screen
The installer puts the program under your user profile, registers one scheduled task (HABRegimeMonitor-Collector- followed by your Windows user name, weekdays 09:20) and a HAB Regime Monitor shortcut on your desktop and in the Start menu. The first start opens a setup screen with three steps. Nothing collects until the third step has passed once; after that the shortcut opens the console itself.
- Your API key and secret. Paste the key in the first box and the secret in the second (Show lets you check it), then Save. They are saved only to the settings file (
.env) in the install folder; nothing is sent to Azimuth Group. Get your key opens the key guide (the same text asGetting your API key.txtin the install folder).Step 1: the API key and secret. - Install the data provider's package. Install the Webull OpenAPI Python package with one click on the setup screen (Step 2); the key guide in the download also gives the exact command. On this screen the button does it for you: it shows the package's name, version and licence, and a line that this is your own install under your own agreement with the provider; click it, click OK, and it downloads the package into the Monitor's own Python (about a minute) and says Done. HAB Regime Monitor does not include, change or remove any part of that package.
Step 2: the data provider's package, installed by your own click. Test connection. Have your phone with your data provider's app to hand, then click the button. It runs the read-only preflight: your key, the package, the time-zone data, then one request for today's contract list; it does not start collecting. On a new key your data provider asks you to approve the access from its app: approve within 5 minutes (see Renewing access below). The line turns green with PREFLIGHT OK, and Open the console appears. On a weekend or holiday, "0 contracts" is expected. If it fails, the red sentence says why in plain words, with the full text underneath; fix it and test again.
Step 3: the connection test, and "Open the console" once it has passed. conf\token.txtis a credential, like your.env. Never copy theconf\,data\orlogs\folders, or.env, to anyone.
The same test can be run later from PowerShell in the install folder:
.\python\python.exe .\collector\regime_monitor.py --preflight
Daily operation needs nothing from you. The task starts the collector at 09:20 ET on weekdays; it pre-loads the contract list before the open, polls through the session, writes the day's GEX summary after the close, and exits by itself 20 minutes after the close. On a weekend or market holiday it sees there is no session and exits at once. Open the console any time from the desktop shortcut. It opens in its own window, drawn by the Microsoft Edge WebView2 runtime that is part of Windows 11 (and comes with Microsoft Edge on Windows 10). If that window cannot open for any reason, the console opens in your default browser instead, and a message gives its address and says so; the console then runs until you close that message. The console answers only this Windows account, through the shortcut: if another account on the same computer is running its own Monitor, each sees only its own.
Stopping the collector early: create an empty file named stop.request in data\. The collector finishes its current poll, writes its last batch, removes the file and exits. Do not end it from Task Manager while it is writing.
Uninstall: Settings, Apps, HAB Regime Monitor, Uninstall (or the Start menu's Uninstall HAB Regime Monitor). It removes the program, the scheduled task and the shortcuts, and asks before deleting the data\ folder, which holds everything the collector has recorded.
5. Renewing access
The collector reads market data with an access token from your data provider, saved in conf\token.txt. A new token is issued only after you approve it:
- What you see: when a new token is requested, your data provider asks you to verify it – an approval request in its app (its documentation also describes a verification code sent by SMS to the phone number on your account). You have 5 minutes. Unapproved, the token expires and the collector stops without collecting; nothing is lost except that run.
- How often: a token is retired after 15 days without use. Each day the collector runs refreshes it, so a collector that runs every trading day rarely needs a new one. You will be asked again after a break of about two weeks, after deleting
conf\, or on a new computer. - Where you see it coming: the console's top rail shows the token's expiry date, and the Data tab has an Access token box:
- amber – the token expires within 3 days;
- red – a new token is waiting for your approval, was not approved in time, or has expired. The box says: approve the notification in your data provider's app, then restart the collector.
- red "keys" – a key is missing from
.env: fill in both lines (see.env.example) and restart the collector.
Renew at a convenient time, not at 09:20: when the box turns amber, run the preflight in the evening, from PowerShell in the install folder:
.\python\python.exe .\collector\regime_monitor.py --preflightWithin 3 days of expiry the preflight requests the new token itself (it sets the old one aside first, so it never depends on an expired token being accepted) and waits for your approval. The 09:20 start then finds a fresh token. If you do not, the 09:20 start renews a token that would expire before the day's close – and then needs your approval within 5 minutes.
- After a red "not approved in time": the collector has stopped. Run the preflight (or restart the collector), approve the request, and start the collector again. It does not retry on its own. If this persists, contact [email protected].
The console reads only data\auth_status.json (state, expiry, a one-line message) and never opens the token file.
6. What each tab shows
- Live. At the top, the gamma regime: whether net gamma across the 0DTE chain is positive or negative, with spot, the recorded flip and the call and put walls (or, outside the session, how the last session ended). Below it, the gamma surface built from net open interest at the newest chain poll, the zero-gamma boundary, the call and put walls, an option volume overlay (new volume per 5/10/15/30-minute frame), and the prior session's high, low and close with the chance price reaches each today. Odds are set at the first 09:30 print and never revised. A legend under the chart names every colour and line. Pick a past date under Session to replay it; Play steps through the day. The display controls (contrast, colour scale, volume frame, floor and weight, call/put colours, busiest-strike box) are under Chart settings.
- Record. What the console said each morning and what happened: today's levels, a graded session log, the model's calibration history (December 2021 to September 2026, 1,198 sessions, scored with the Brier score: the average squared gap between the stated chance and what happened, where 0 is perfect and lower is better), and this Monitor's own record, kept apart on purpose. This measures forecast calibration, not trading returns. Past calibration does not guarantee future accuracy.
- Data. The access-token box, the collector's per-stream status (state, rows today, last success, errors) and the largest gap between polls in each recent session. A gap is permanent: expired contracts are purged at the broker within about three weeks and historical option bars carry no bid, ask or greeks.
The top rail shows the ET clock and session phase, how long ago the last chain poll was stored, the access token's expiry, and one plain-language verdict. About, at its right end, shows the version, the License Agreement's effective date, the seller and the support address, and opens the License Agreement (EULA) itself.
7. Config flags
All in collector\regime_monitor_config.json. Restart the collector after a change (it restarts by itself the next weekday morning).
| flag | default | what it does | cost |
|---|---|---|---|
collect_eod | true | Closing window, close-14 min to close-2 min (15:46-15:58 ET; 12:46-12:58 on an early close): ATM +/-5 strikes every 5 s into spx_eod. Not drawn by the console. | about 12 requests/min for 12 minutes |
collect_monthly | false | Once a day at close-15 min (15:45 ET), the standing monthly expiry (root SPX), +/-30 strikes, into spx_monthly_chain / spx_monthly_daily. Not drawn by the console. | 8 requests once a day |
collect_term | false | The next-trading-day SPXW chain, +/-30 strikes every 300 s, into spx_term_chain. Not drawn by the console. | about 1.6 requests/min |
collect_mes | false | MES futures ticks and 1-minute bars every 75 s into mes_tick / mes_bar. Not drawn by the console. Needs a futures market-data subscription on the same key. Collects only while the collector runs; to collect outside the session set auto_exit to false and start the collector yourself. | 2 requests per 75 s |
auto_exit | true | The collector exits by itself exit_after_close_minutes after the day's close, and exits at once on a weekend or holiday. false = run until stopped. | - |
exit_after_close_minutes | 20 | How long after the close the collector exits (16:20 ET, or 13:20 on an early close). | - |
Always on: spx_chain (the 0DTE chain every 150 s, with GEX and derived structure) and spx_fast (the 9-strike ATM band and parity spot every 5 s). Together they use roughly 15 requests/min.
8. Market calendar and time zone
Every session time is defined in US Eastern time (America/New_York) and converted to UTC for each date, so daylight saving needs no action: in summer the session is 13:30-20:00 UTC, in winter 14:30-21:00 UTC. Stored timestamps are UTC. The time-zone data ships in the tzdata package; the preflight checks it loads.
NYSE full-day holidays and 1:00 p.m. early closes for 2026 and 2027 ship in collector\market_calendar.py, as separate lists, copied from https://www.nyse.com/trade/hours-calendars:
- Holidays 2026: Jan 1, Jan 19, Feb 16, Apr 3, May 25, Jun 19, Jul 3, Sep 7, Nov 26, Dec 25. 2027: Jan 1, Jan 18, Feb 15, Mar 26, May 31, Jun 18, Jul 5, Sep 6, Nov 25, Dec 24.
- Early closes (1:00 p.m. ET): 2026-11-27, 2026-12-24, 2027-11-26.
On an early close the session ends at 13:00 ET and the loop end, closing window and self-exit move back by the same amounts (12:45, 12:46-12:58, 13:20). On a holiday the collector exits at once. The preflight fails when the calendar has fewer than 90 days left; the 2028 dates are needed by October 2027.
9. Known limitations
- Early-close options hours. NYSE's footnote reads "1:00 p.m. (1:15 p.m. for eligible options)". The collector treats 13:00 ET, the market close, as the session close on those days, so any index-option quotes between 13:00 and 13:15 are not collected.
- One computer, one collector. A second copy refuses to start.
- Spot is derived from option prices by put-call parity, not taken from an index feed.
- Your data provider's package is yours to install. HAB Regime Monitor is tested with one version of it; the approved versions are listed in
Getting your API key.txt, and the preflight warns when a different version is installed.
10. Support
Email [email protected]. Say what you were doing and paste the exact message you saw; if you can, also paste the text under Test connection on the setup screen, or the output of the preflight, run from PowerShell in the install folder:
.\python\python.exe .\collector\regime_monitor.py --preflight
Never send .env, conf\token.txt or anything else from conf\: they are credentials, and support never needs them.
11. Licence
- $200 per licence plus applicable sales tax.
- One licence = one Windows machine.
- Updates for 12 months if released, with no obligation to release.
- All sales final, except where the law requires otherwise (see the License Agreement, Section 10.3); a working copy is re-sent if a download fails.
- The software runs locally and contacts no Azimuth Group server (no license check, update check or telemetry).
- It cannot place, cancel or read orders. It uses your own market-data API key and real-time options data subscription.
- Not investment advice.
License Agreement (EULA): LICENSE.txt in this folder, and https://thehabreport.com/eula.html. The installer shows it first, and the console's About panel opens it and shows its effective date.
Sold by Azimuth Group LLC.
Files
README.md, LICENSE.txt, NOTICES.txt (third-party components),
Getting your API key.txt (the key, the subscription and the provider's package)
collector\ regime_monitor.py (the collector), regime_monitor_config.json,
market_data.py, market_calendar.py, regime_schema.py (database
schema), regime_derive.py (derived structure), install_helper.py
console\ app.py and the Live / Record / Data modules, the setup screen
(setup_screen.py), templates\, static\, station.pyw (the shortcut
target)
guide\ the pictures in this guide
python\ the Monitor's own Python (3.14) and the components in NOTICES.txt;
your data provider's package is installed into it by you (step 2
of the setup screen)
tools\ task.ps1, the scheduled task's registration (used by the installer
and the uninstaller)
conf\ token.txt, the market-data access token (created on first run;
a credential -- keep private)
data\ market.db (created by the installer), first_run.json (the setup
screen's "test passed" marker), collector_status.json,
auth_status.json
logs\ one collector log per day, and the market-data package's own log
unins000.exe the uninstaller
© 2026 Azimuth Group LLC