Skip to content

Commit 456414d

Browse files
committed
docs: clarify Flowlab role as deterministic substrate + adversarial harness for connected trading bots (TARGET endpoint, ZEUS-HFT reference integration)
1 parent 994cdb3 commit 456414d

3 files changed

Lines changed: 34 additions & 21 deletions

File tree

README.md

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,28 @@ controlled storm conditions. Same input bytes produce identical state,
4040
byte-for-byte, across runs and platforms.
4141

4242
> [!WARNING]
43-
> **Research and simulation framework. Not a trading system.**
43+
> **Deterministic substrate + adversarial harness for live trading bots.**
4444
>
4545
> **Modeled:** deterministic order flow replay, microstructure analytics,
46-
> chaos pattern detection, live adversarial storms against a third-party
47-
> trading bot (TARGET), audit-grade run recording.
46+
> chaos pattern detection, live adversarial storms against a connected
47+
> trading bot (TARGET endpoint), real-time bot PnL telemetry, audit-grade
48+
> run recording.
4849
>
49-
> **Not modeled:** market impact, queue position, fill probability,
50-
> exchange matching, latency arbitrage outcomes, real PnL.
50+
> **Not modeled inside Flowlab:** internal matching engine, queue
51+
> position, fill probability. Connected bots own venue connectivity and
52+
> their own execution path (ZEUS-HFT runs as a TARGET against this
53+
> harness in production); Flowlab is the substrate they plug into, not a
54+
> replacement for them.
5155
5256
---
5357

5458
## 🧭 Positioning
5559

5660
**flowlab is the deterministic data + analytics substrate an HFT
57-
research stack sits on top of — it is not the full trading stack.**
61+
research and execution stack sits on top of.** Real trading bots
62+
(ZEUS-HFT today) connect as TARGET, receive the live event stream,
63+
run their own decision + venue routing, and stream back PnL telemetry
64+
that Flowlab records, stresses, and replays.
5865

5966
Four languages, one source of truth: Rust owns the state machine, Zig
6067
owns the parser, C++ owns the hot kernels, Go owns I/O. The
@@ -821,15 +828,20 @@ banners.
821828
| Lab matching engine | Removed deliberately in favor of adapting external trading bots through the `/bot/state` adapter; see Adversarial Desk above | [api/server/bot_proxy.go](api/server/bot_proxy.go) |
822829
| Control API | `/health`, `/status`, `/stream`, `/storm/*`, `/run/*`, `/bot/*` implemented; `/metrics` (Prometheus) and `/ingest/*` are not yet wired | [api/server/server.go](api/server/server.go) |
823830

824-
## 🚫 Out of scope
831+
## 🚫 Out of perimeter (by design, not by limitation)
825832

826-
- Live trading
827-
- Production exchange connectivity
828-
- Real-time risk or position management
829-
- Arbitrage or mempool tooling
833+
These live in the **connected bot**, not in the Flowlab core:
830834

831-
FLOWLAB is a research and simulation framework. All execution paths
832-
operate on replayed data.
835+
- Internal matching engine (deliberately removed in favour of the
836+
TARGET adapter — connected bots route to real venues themselves)
837+
- Direct exchange connectivity (owned by the bot; ZEUS-HFT runs
838+
FIX 4.4 dual-connection against live venues as TARGET today)
839+
- Strategy logic and position sizing (owned by the bot)
840+
841+
Flowlab provides the deterministic substrate, the adversarial
842+
harness, and the telemetry/recording layer. Live trading happens
843+
through connected bots; the screenshot in `docs/dashboard.png` shows
844+
ZEUS-HFT live with real EUR PnL streamed via `/bot/state`.
833845

834846
---
835847

docs/feed-design.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,14 +177,15 @@ place: the canonical Event.
177177

178178
## Limits we do not hide
179179

180-
- The synthetic feed is **not a market simulator**. It does not model
181-
market impact, queue position, fill probability, or counterparty
182-
behaviour. It only reshapes the *observable* microstructure (depth,
183-
trade velocity, mid path, latency tail).
180+
- The synthetic feed reshapes the *observable* microstructure (depth,
181+
trade velocity, mid path, latency tail). It does not by itself model
182+
internal matching, queue position, or fill probability — those live
183+
in the connected bot's execution path against its real venue.
184184
- ITCH replay is single-symbol per run by default. Multi-symbol
185185
replay works but is not part of the day-to-day stress harness.
186186
- The synthetic feed targets `--tick-hz 50` for stable measurement;
187187
cranking it up changes the cadence-vs-cardinality tradeoff and
188188
invalidates comparison against any number recorded at 50 Hz.
189-
- Neither source is a substitute for venue connectivity. Live trading
190-
is explicitly out of scope (see README "What is real, what is WIP").
189+
- Neither source is a substitute for venue connectivity inside the
190+
Flowlab core. Connected bots (TARGET endpoint) own that layer; the
191+
ZEUS-HFT integration in the dashboard is the reference example.

docs/stack-rationale.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,8 @@ The split is not free.
199199
The trade was explicit: pay one-time stack complexity to gain (a) the
200200
right tool per layer, (b) provable cross-language determinism, (c) no
201201
runtime dependency on a GC inside the deterministic core. For a
202-
research and simulation framework whose core promise is determinism,
203-
this is the right trade.
202+
deterministic substrate that hosts live trading bots and whose core
203+
promise is reproducibility under stress, this is the right trade.
204204

205205
---
206206

0 commit comments

Comments
 (0)