Files
ibkr-quant/Makefile
Gahow Wang 787c41ba63 Run the daily loop on a server with systemd user units
deploy/systemd holds an IB Gateway service (IBC under Xvfb, paper) and
timers for the 09:50 ET rebalance, 16:15 ET fills, and a weekly
constituents refresh; make install-units installs them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 22:03:57 +08:00

45 lines
1.3 KiB
Makefile

# Needs IB Gateway or TWS running and logged in, with
# "Enable ActiveX and Socket Clients" on and the port matching config.toml.
# Daily flow, 09:31-15:45 ET on a trading day: `make bars` (picks up today's
# open), `make plan` to review, `make submit` to send MOC orders filled at the close.
# With delayed data (market_data_type = 3) today's bar appears ~15 min after the
# open, so start after 09:47 ET.
RUN = uv run ibkr-quant
.PHONY: test universe check bars plan submit fills backtest install-units
test:
uv run pytest -q
universe:
$(RUN) universe
check:
$(RUN) check
bars:
$(RUN) bars
plan:
$(RUN) rebalance
submit:
$(RUN) rebalance --submit
fills:
$(RUN) fills
# e.g. make backtest ARGS="--top-n 5 10 20 --every 1 5 --capital 10000"
backtest:
$(RUN) backtest $(ARGS)
# On the server: install the systemd user units from deploy/systemd. The timers
# start now; the Gateway is only enabled for boot, so start it by hand
# (systemctl --user start ibgateway) once ~/ibc/config.ini has the credentials.
install-units:
mkdir -p ~/.config/systemd/user
cp deploy/systemd/* ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable ibgateway.service
systemctl --user enable --now ibkr-quant-trade.timer ibkr-quant-fills.timer ibkr-quant-universe.timer