shipwithjev

Catalog / Trading & markets

0206GitHub

jev-trader

A trading bot that places an order in every 300 ms block.

Jarrod Watts gives Jev the price feed of an asset pair, and Jev answers buy or sell. The bot then places real orders on Kuru’s on-chain order book on Monad, in every 300 ms block.

Open source ↗ github.comcost-time300 ms blocks
jarrodwatts/jev-traderREADME ↗
# jev-trader

One decision every Monad block. A TypeSafe Jev model watches the Kuru MON-USDC order book and answers buy or sell every ~300 ms. Every block posts a real post-only limit order on that side, one tick inside the touch, replacing the last one. Fills happen when a taker hits it, so the bot earns the spread instead of paying it. A small server streams every block to the dashboard.

## Run

    cp .env.example .env
    bun install
    bun run start

With no `PRIVATE_KEY` it dry-runs: real book, real decisions, simulated fills. Set `MODEL=jev` and `TYPESAFE_AI_API_KEY` to use Jev; the default `mock` is a momentum heuristic stand-in.

## Endpoints

Deployed (dry run, mock model): https://jev-trader-production.up.railway.app

- `GET /` snapshot: model, wallet, dryRun, latest block event
- `GET /history` last 1000 block events
- `GET /events` SSE: `snapshot` on connect, then one `block` event per block, a `quote` event when a live order's receipt lands, a `fill` event when a taker hits a resting order, and a `ping` every 15 s

Every event (see `src/trader.ts` for types):

    {
      "block": 105488269, "ts": 1789593630676,
      "mid": 0.022636, "bestBid": 0.022628, "bestAsk": 0.022644, "spreadBps": 7.07,
      "decision": { "action": "buy", "probabilities": { "buy": 0.77, "sell": 0.23, "hold": 0 }, "upIn10": 0.77, "latencyMs": 81, "late": false },
      "quote": { "side": "buy", "price": 0.022629, "size": 200, "txHash": "0x…", "gasMon": 0.0357, "cancel": [100295801], "status": "sent", "orderId": null, "capped": false },
      "fill": null,
      "resting": { "bidMon": 200, "askMon": 200 },
      "position": { "side": "short", "size": 200, "entryPrice": 0.022633, "unrealizedUsd": -0.0006, "unrealizedMon": -0.027 },
      "totals": { "blocks": 3, "decisions": 3, "qu

Also filed under Trading & markets

  1. 0595

    Jev Meets the Market

    An experiment replaying market history to test Jev on sequential investment decisions.

    @jai2010 · Trading & markets

  2. 0563

    Jev Guard: triage exchange deposits and withdrawals

    Jev judges transfer risk and behavioral patterns; Java rules decide whether the case passes, freezes, or goes to an analyst.

    klauswg · Trading & markets

  3. 0512

    Bet against Jev on BTC's next second

    How fast is Jev? Can it keep up with Base's 200ms? 👀 I built a demo where you bet against Jev to predict Bitcoin's price the next second No sign up, no need to fund your account. It's all setup for you using account abstraction on Vibenet Try it out: https://t.co/v3bvCmGswu

    @0xyoussea · Trading & markets

  4. 0507

    Memecoin scanner

    Built a memecoin scanner with Jev — an AI that only decides, never writes. Math filters → on-chain rug check → Jev scores pump potential → guard rails override it. Solana + Robinhood, 24h auto-backtest on every signal. #memecoins #jev #AI

    @Icaro_333 · Trading & markets