Market LabDocs

Market Lab v0.1.1

SSH transport, named execution subaccounts, and bounded Python market orders.

v0.1.1 adds remote command transport and makes Python Scripting V2 cleaner to configure and execute.

Self-declaring Python sources

Python V2 now discovers sources directly from literal history.source(...) calls:

candles = history.source("btc@candles@hyperliquidf:timeframe=60")

Python V2 no longer uses --source, TOML [sources], or script.sources. Literal selectors and module-level string constants declare deterministic subscriptions; dynamic lookups may only read an already-declared feed. JavaScript V1 is unchanged.

Readable UTC ranges

All --from and --to inputs now use UTC dates instead of raw millisecond boundaries:

--from 2026-07-15 --to 2026-07-16
--from "2026-07-15 09:30:00" --to "2026-07-15 16:00:00"

Date-only values mean midnight UTC. TOML backtest ranges use the same quoted formats.

SSH transport

Choose a default server using the same user@IP destination accepted by SSH:

mlab remote use user@SERVER_IP
mlab bot jobs

Override the target for one command without changing the default:

mlab --remote user@OTHER_IP bot jobs
mlab --remote local bot jobs

Market Lab remembers multiple targets and provides remote list, status, test, and remove commands. No manual SSH configuration file is required.

The target mlab connects to its own Native or Docker daemon. Local Python scripts and their environments can also be sent to the target installation. Commands, output, streamed data, and exit status travel over SSH; daemon ports and credentials are not exposed.

Both machines must run the same Market Lab build. See SSH Transport for the complete workflow.

Named execution subaccounts

Create named subaccounts under an existing Hyperliquid or BULK main account:

mlab auth set hyperliquid --subaccount trading-2
mlab auth set bulk --subaccount trading-2

Python V2 can route each ctx.trade or ctx.order request with "account": "trading-2". The main account remains the default, and positions are read with ctx.positions() or ctx.positions("trading-2").

Named subaccount execution is currently exclusive to Python Scripting V2. See Authentication and Python execution.

Bounded market orders

Python V2 market orders accept either a decimal fraction or basis points:

{"max_slippage": 0.0005}
# or
{"max_slippage_bps": 5}

Both values mean 5 bps. BULK and Hyperliquid enforce the boundary with IOC limit execution. Only one field may be supplied, and the fields are invalid on ordinary limit orders.

Live Python jobs now connect their execution WebSockets before processing market data and reuse the latest matching trade price when one is available.

On this page