Skip to content

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.

FilePurposeLocation
RoverConfig.jsonRover analyzer and web UI defaultsApplication directory

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"
}

Rover hosts an embedded HTTP server that serves the Angular web UI.

FieldTypeDescription
HttpBindAddressstringIP 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
HttpPortintegerPort for the HTTP server that serves the web UI. Default: 5000
AngularDistDirstringPath to the Angular web UI dist directory, relative to the Rover executable. Default: ./dist
WebConfigDirstringDirectory where Rover stores per-component perspective and settings files served via the REST API. Created if missing. Default: ./WebConfiguration
FieldTypeDescription
NATSLocalbooleanControls 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
NATServerURLstringRequired. NATS server URL. Rover itself connects here, and passes it to each analyzer as --nats-url
NatsPortintegerNATS client port reported to the web UI via /api/info. Must match port in nats.config. Default: 4222
NatsWsPortintegerNATS 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
MsgProcessingIntervalintegerRequired. 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

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.

FieldTypeDescription
HoststringHost running this TWS session. Use localhost for local installations
LabelstringDisplay name shown on the group row. Defaults to TWS App 1, TWS App 2, and so on
PortintegerTWS API port for this session, matching the Socket Port set in TWS. Typically 7496 for live, 7497 for paper

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.

FieldTypeDescription
AccountIdstringIBKR account identifier (e.g., U1234567 for live, DU1234567 for paper). Normalized on load: trimmed, internal whitespace removed, uppercased
AccountNamestringUnique, 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
GatewayIPAddressstringHost running TWS, matching the Host of the TWSApps entry this account is reached through
GatewayPortintegerTWS 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.

Controls the columns displayed in Rover’s monitoring grid.

FieldTypeDescription
MonitoringColumnsarrayOrdered 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
MonitoringShowAllFieldsbooleanPersisted 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.

FieldTypeDescription
AccountIdPrivacyModestringHow account IDs are displayed: actual (full ID), mask (partial, see AccountIdMaskChars), or obfuscate (sequential placeholders such as U00000000). Default: mask (with AccountIdMaskChars 4)
AccountIdMaskCharsintegerUsed 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
FieldTypeDescription
ThroughputBaselineBytesintegerSets 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

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.

FieldTypeDescription
ShowMonitoringTabbooleanAdds the tab bar and the Monitoring tab. Default: false
ShowConfigLogsbooleanAdds the logging console below the connections table. Default: false
ShowThroughputColumnsbooleanAdds the Acct Time, Bytes Security, and Bytes/Sec Security columns. Default: false
ShowRestartButtonsbooleanAdds the Restart column. Default: false
ShowClientIdColumnbooleanAdds the Client ID column. Default: false
FieldTypeDescription
RiskFreeRatesstringPer-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.
  1. Stop Rover before editing
  2. Open RoverConfig.json in a text editor
  3. Make changes, ensuring valid JSON syntax
  4. Save the file
  5. 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.

File > Load Installation Config in Rover restores the factory default configuration. File > Load Config loads a previously saved configuration file instead.