← all repositories
jarrodwatts/jev-trader

A market maker that thinks once every 300 milliseconds

jev-trader puts an AI decision and a post-only order inside every Monad block, earning the spread instead of paying it.

★3k stars TypeScript Domain Apps
Collecting fresh signals — velocity needs a few days of history.
collecting data…
star history

What it does

Every Monad block (~300 ms), a model looks at the Kuru MON-USDC order book and answers buy or sell. The bot then posts a real post-only limit order one tick inside the touch on that side, cancelling whatever was resting before — all in a single batchUpdate. Fills only happen when a taker crosses your price, so it behaves like a tiny market maker harvesting spread rather than a taker bleeding it.

The interesting bit

The engineering discipline around the 300 ms budget is the real story. The hot loop makes exactly two RPC round trips — one eth_call for the book, one eth_sendRawTransaction — with no gas estimation, no sync sends, no fee lookups. Gas limits are hardcoded or derived once at startup because Monad charges the limit regardless of whether the order lands. Measured dry-run: p50 18 ms for the read, 100 ms for the whole loop.

Key highlights

  • Dry-run mode with no PRIVATE_KEY: real book, real decisions, simulated fills
  • mock model (momentum heuristic) by default; jev via a TypeSafe AI API key
  • SSE dashboard streaming every block, quote receipt, and fill, plus /history for the last 1000 events
  • Hand-encoded batchUpdate calldata, verified against the SDK by an offline assertion script
  • Honest accounting: late blocks, capped quotes, reverted orders, and gas paid on lost transactions all show up in the event stream

Caveats

  • The deployed demo runs the mock model in dry run — you’re watching a heuristic, not Jev
  • Live sends are fire-and-forget, so block events show intent; truth arrives a block or two later via receipts
  • The README’s P&L example shows a small loss, which is at least candid

Verdict

Worth a look for anyone building low-latency on-chain trading on Monad — the hot-path discipline and event accounting are genuinely instructive. If you want a profitable strategy, this is scaffolding, not alpha; the model is swappable and the edge is left as an exercise.

Frequently asked

What is jarrodwatts/jev-trader?
jev-trader puts an AI decision and a post-only order inside every Monad block, earning the spread instead of paying it.
Is jev-trader open source?
Yes — jarrodwatts/jev-trader is open source, released under the MIT license.
What language is jev-trader written in?
jarrodwatts/jev-trader is primarily written in TypeScript.
How popular is jev-trader?
jarrodwatts/jev-trader has 3k stars on GitHub.
Where can I find jev-trader?
jarrodwatts/jev-trader is on GitHub at https://github.com/jarrodwatts/jev-trader.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.