Rover Configuration File
RoverConfig.json is the JSON configuration file Rover reads at startup. It holds the TWS connections, the Settings dialog values, and the state of the Developer Tools toggles. Rover writes it back on File > Save (Ctrl+S).
For the NATS server configuration file, see NATS Configuration.
File Location
Section titled “File Location”| File | Purpose | Location |
|---|---|---|
RoverConfig.json | Rover analyzer and web UI defaults | Application directory |
RoverConfig.json
Section titled “RoverConfig.json”Controls Rover’s TWS connections, HTTP/web server, monitoring grid, global pricing parameters, and Developer Tools state. NATServerURL, MsgProcessingInterval, and IBKRConnections are required; all other fields are optional and fall back to the defaults listed below. Invalid or missing required fields cause Rover to exit with an error dialog.
{ "AccountIdMaskChars": 4, "AccountIdPrivacyMode": "mask", "AngularDistDir": "./dist", "HttpBindAddress": "0.0.0.0", "HttpPort": 5000, "IBKRConnections": [ { "AccountId": "YOUR_ACCOUNT_ID", "AccountName": "IBKR_ACCT_1", "GatewayIPAddress": "localhost", "GatewayPort": 7496 } ], "MonitoringColumns": [ { "field": "NET_LIQ_CALC", "width": 199 }, { "field": "PNL", "width": 138 }, { "field": "THETA", "width": 102 }, { "field": "THETA2_ORT", "width": 164 }, { "field": "VEGA", "width": 164 } ], "MonitoringShowAllFields": false, "MsgProcessingInterval": 100, "NATSLocal": true, "NATServerURL": "nats://localhost:4222", "NatsPort": 4222, "NatsWsPort": 9222, "RiskFreeRates": "USD=0.0471,AED=0.0455,AUD=0.0450,BRL=0.0500,CAD=0.0495,CHF=0.0485,CNH=0.0480,CZK=0.0500,DKK=0.0500,EUR=0.0480,GBP=0.0495,HKD=0.0500,HUF=0.0490,ILS=0.0490,JPY=0.0490,KRW=0.0485,MXN=0.0470,MYR=0.0485,NOK=0.0500,NZD=0.0500,PLN=0.0500,RON=0.0485,SAR=0.0500,SEK=0.0500,SGD=0.0490,TRY=0.0495,TWD=0.0500,ZAR=0.0500", "ShowClientIdColumn": false, "ShowConfigLogs": false, "ShowMonitoringTab": false, "ShowRestartButtons": false, "ShowThroughputColumns": false, "TWSApps": [ { "Host": "localhost", "Label": "TWS App 1", "Port": 7496 } ], "ThroughputBaselineBytes": 50000, "WebConfigDir": "./WebConfiguration"}Web Server Settings
Section titled “Web Server Settings”Rover hosts an embedded HTTP server that serves the Angular web UI.
| Field | Type | Description |
|---|---|---|
HttpBindAddress | string | IP address the HTTP server binds to. 0.0.0.0 listens on all interfaces; 127.0.0.1 restricts access to the local machine. Default: 0.0.0.0 |
HttpPort | integer | Port for the HTTP server that serves the web UI. Default: 5000 |
AngularDistDir | string | Path to the Angular web UI dist directory, relative to the Rover executable. Default: ./dist |
WebConfigDir | string | Directory where Rover stores per-component perspective and settings files served via the REST API. Created if missing. Default: ./WebConfiguration |
Messaging Settings
Section titled “Messaging Settings”| Field | Type | Description |
|---|---|---|
NATSLocal | boolean | Controls whether Rover starts its own NATS server. When true (default), Rover automatically spawns nats-server.exe at startup using the local nats.config, and shuts it down on exit. When false, Rover only connects to NATS at NATServerURL and never spawns one. Used for institutional deployments where NATS runs as a centrally-managed service. Default: true |
NATServerURL | string | Required. NATS server URL. Rover itself connects here, and passes it to each analyzer as --nats-url |
NatsPort | integer | NATS client port reported to the web UI via /api/info. Must match port in nats.config. Default: 4222 |
NatsWsPort | integer | NATS websocket port reported to the web UI via /api/info so browser clients can connect. Must match the websocket port in nats.config. Default: 9222 |
MsgProcessingInterval | integer | Required. Analyzer clock rate in milliseconds. Rover passes this to each OptionsRealTimePublisher.exe as --msg-interval; analyzers use it as their cadence for sending message batches to subscribers |
TWSApps Array
Section titled “TWSApps Array”Defines the TWS sessions Rover connects to, one entry per session. These are the bold TWS App group rows in Rover’s connections table; the accounts in IBKRConnections are listed beneath the group they are reached through. Adding an entry corresponds to + Add TWS App in Rover.
| Field | Type | Description |
|---|---|---|
Host | string | Host running this TWS session. Use localhost for local installations |
Label | string | Display name shown on the group row. Defaults to TWS App 1, TWS App 2, and so on |
Port | integer | TWS API port for this session, matching the Socket Port set in TWS. Typically 7496 for live, 7497 for paper |
IBKRConnections Array
Section titled “IBKRConnections Array”Required. Must contain at least one entry. Each entry defines a connection to a TWS instance and is passed to an analyzer as command-line arguments (--host, --port, --account). Rover assigns each analyzer a client ID automatically. A single TWS instance supports up to 32 connections, so up to 32 accounts.
| Field | Type | Description |
|---|---|---|
AccountId | string | IBKR account identifier (e.g., U1234567 for live, DU1234567 for paper). Normalized on load: trimmed, internal whitespace removed, uppercased |
AccountName | string | Unique, user-assigned label for the account (e.g., IRA_1). Sent to connected clients so accounts can be displayed by name. Defaults to IBKR_ACCT_1, IBKR_ACCT_2, and so on |
GatewayIPAddress | string | Host running TWS, matching the Host of the TWSApps entry this account is reached through |
GatewayPort | integer | TWS API port (1-65535), matching the Port of the TWSApps entry this account is reached through |
Accounts sharing a GatewayIPAddress and GatewayPort belong to the same TWS session and appear under that group in the connections table. To spread accounts across several sessions, add one TWSApps entry per session and point each account at the port for its session:
{ "IBKRConnections": [ { "AccountId": "U1000001", "AccountName": "IRA_1", "GatewayIPAddress": "localhost", "GatewayPort": 7496 }, { "AccountId": "U1000002", "AccountName": "IRA_2", "GatewayIPAddress": "localhost", "GatewayPort": 7496 }, { "AccountId": "U1000003", "AccountName": "GROWTH", "GatewayIPAddress": "localhost", "GatewayPort": 7497 } ], "TWSApps": [ { "Host": "localhost", "Label": "TWS App 1", "Port": 7496 }, { "Host": "localhost", "Label": "TWS App 2", "Port": 7497 } ]}The connections table renders this as two group rows, with two accounts under the first and one under the second. Multiple TWS Instances shows the same arrangement in Rover, across three sessions.
Monitoring Grid
Section titled “Monitoring Grid”Controls the columns displayed in Rover’s monitoring grid.
| Field | Type | Description |
|---|---|---|
MonitoringColumns | array | Ordered list of columns to display. Each entry has a field (Excel field name, required) and a width (pixel width, default 100). Entries missing field or with a non-string field are skipped with a warning |
MonitoringShowAllFields | boolean | Persisted state of the field-selector “Select All” checkbox. Set automatically when every field is checked in the field-selector dialog; cleared when any field is unchecked. Does not itself drive what the grid displays; MonitoringColumns is always the source of truth. Default: false |
Common field values include PNL, NET_LIQ_CALC, NET_LIQ_PCT_CHANGE, THETA, THETA_ORT, THETA2_ORT, VEGA, VEGA_ORT, and TIME.
Display Settings
Section titled “Display Settings”| Field | Type | Description |
|---|---|---|
AccountIdPrivacyMode | string | How account IDs are displayed: actual (full ID), mask (partial, see AccountIdMaskChars), or obfuscate (sequential placeholders such as U00000000). Default: mask (with AccountIdMaskChars 4) |
AccountIdMaskChars | integer | Used when AccountIdPrivacyMode is mask: number of characters to mask from the right of each account ID. Clamped to 0-10. 4 shows U123****. Default: 4 |
Performance Settings
Section titled “Performance Settings”| Field | Type | Description |
|---|---|---|
ThroughputBaselineBytes | integer | Sets the 100% reference for the % and Data Flow columns, in bytes per second. 50000 is both the minimum and the default; raise it to suit typical data volume |
Developer Tools
Section titled “Developer Tools”Persisted state of the toggles under Settings > Developer Tools (see Rover). Rover writes these on File > Save, so an enabled tool is restored on the next launch.
| Field | Type | Description |
|---|---|---|
ShowMonitoringTab | boolean | Adds the tab bar and the Monitoring tab. Default: false |
ShowConfigLogs | boolean | Adds the logging console below the connections table. Default: false |
ShowThroughputColumns | boolean | Adds the Acct Time, Bytes Security, and Bytes/Sec Security columns. Default: false |
ShowRestartButtons | boolean | Adds the Restart column. Default: false |
ShowClientIdColumn | boolean | Adds the Client ID column. Default: false |
Pricing Parameters
Section titled “Pricing Parameters”| Field | Type | Description |
|---|---|---|
RiskFreeRates | string | Per-currency annualized risk-free rates as comma-separated CCY=rate pairs (e.g., USD=0.0471,AED=0.0455,…). Covers all 28 supported currencies: USD, AED, AUD, BRL, CAD, CHF, CNH, CZK, DKK, EUR, GBP, HKD, HUF, ILS, JPY, KRW, MXN, MYR, NOK, NZD, PLN, RON, SAR, SEK, SGD, TRY, TWD, ZAR. Each rate applies to securities denominated in that currency, uniformly across all expirations. |
Editing the File
Section titled “Editing the File”- Stop Rover before editing
- Open
RoverConfig.jsonin a text editor - Make changes, ensuring valid JSON syntax
- Save the file
- Restart Rover
Changes take effect on the next application start. Invalid syntax or a missing required field (NATServerURL, MsgProcessingInterval, or a non-empty IBKRConnections) causes Rover to show an error dialog and exit. Optional fields fall back to the defaults listed above when missing.
Resetting to Defaults
Section titled “Resetting to Defaults”File > Load Installation Config in Rover restores the factory default configuration. File > Load Config loads a previously saved configuration file instead.