On 2026-09-29 Gateway lost its connection, failed the reconnect's SSL handshake and sat on an error dialog for 9 hours with its API port open: clients connected, every startup request timed out, and systemd never restarted it because java kept running. - Broker connects with raiseSyncErrors, so a failed startup sync exits instead of continuing with an empty portfolio(), which rebalance would read as holding nothing. - `ibkr-quant gateway` probes the Gateway under its own health_client_id. - deploy/ensure-gateway.sh (`make gateway`) probes, waits a minute for a self-reconnect, then restarts ibgateway.service and waits for it. - The trade and fills units run `make gateway` as ExecStartPre; fills now retries on failure like trade does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
27 lines
1.2 KiB
TOML
27 lines
1.2 KiB
TOML
[ib]
|
|
host = "127.0.0.1"
|
|
port = 4002 # IB Gateway: paper 4002 / live 4001; TWS: paper 7497 / live 7496
|
|
client_id = 17
|
|
health_client_id = 18 # `ibkr-quant gateway` probe; differs so it never collides with a running job
|
|
account = "" # empty = the single account managed by this login
|
|
market_data_type = 3 # 1 = live (needs subscription), 3 = delayed (free, for testing)
|
|
allow_live = false # refuse to connect to non-paper accounts unless true
|
|
|
|
[data]
|
|
universe = "data/universe.csv"
|
|
bars = "data/bars/daily.csv"
|
|
bars_duration = "2 Y" # the strategy needs > 252 sessions
|
|
|
|
# UpCap+MomGap (daily), ported from quant-trading fc_up_cap_mom_gap_daily:
|
|
# signal on opens through today's open, equal-weight top_n, filled at today's close.
|
|
[strategy]
|
|
top_n = 10
|
|
|
|
[execution]
|
|
order_type = "MOC" # MOC (submit 09:30-15:45 ET) | LMT
|
|
limit_offset_bps = 20 # LMT only: price = snapshot * (1 ± offset)
|
|
cash_buffer = 0.02 # fraction of NAV kept in cash
|
|
resize_band = 0.10 # leave a held name alone while within 10% of its target value
|
|
min_trade_value = 50.0 # skip trades below max(min_trade_value, min_trade_fraction * NAV);
|
|
min_trade_fraction = 0.001 # full exits always trade
|