HAB Regime Monitor
Setup guide

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

  1. 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.
  2. 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 SHA256

    The value it prints must match the one on the page (capital or small letters make no difference).

  3. 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 "Open File - Security Warning" box. Click "Run".
  4. 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.
    The License Agreement page: both boxes ticked, Next enabled.
  5. 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

2. The first day is empty

HAB Regime Monitor builds its own history from what it collects. On day one:

3. What it is not

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.

  1. 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 as Getting your API key.txt in the install folder).
    Step 1: the API key and secret.
    Step 1: the API key and secret.
  2. 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.
    Step 2: the data provider's package, installed by your own click.
  3. 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.
    Step 3: the connection test, and "Open the console" once it has passed.

    conf\token.txt is a credential, like your .env. Never copy the conf\, data\ or logs\ 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:

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

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).

flagdefaultwhat it doescost
collect_eodtrueClosing 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_monthlyfalseOnce 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_termfalseThe 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_mesfalseMES 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_exittrueThe 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_minutes20How 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:

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

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

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