a marketmaker.cc project

Manipulator Warehouse

Every manipulator is a bot. Every bot is code. Code leaves a fingerprint. We store them all.

See how it works ↓ scroll to play the explainer

When a manipulator arrives, volume jumps and one actor owns most of the tape. A bot cannot hide its rhythm.

01 / decompose

One tape.
Many hands.

Raw trades on a thin pair look like noise. Scroll: we pull the flow apart by size, timing and side until each actor sits in its own lane.

    02 / pipeline

    From tape to key.

    01

    Capture

    Raw L2/L3 book events and trades from our HFT servers, exchange and local timestamps. Snapshots lie, event streams do not.

    02

    Segment

    Change-point on volume marks "the bot arrived". Cluster trades by size, inter-arrival, side and aggressor flag. One tight dominant cluster is the suspect.

    03

    Fingerprint

    Heartbeat spectrum, lot-size grid, price offset from mid, add-to-cancel latency. Plus where it likes to live: exchanges, pairs, hours.

    04

    Find the key

    One script per manipulator: a trigger on tape or book, an action for the Rust bot, hard risk limits. Often a one-line rule. Sometimes a pattern from the DB.

    # wash trading trigger
    if vol_1m > k * median_24h and abs(ret_1m) < eps:
        flag("wash", pair, venue)

    03 / catalog

    The warehouse shelves.

    Each shelf is a family of behaviors. Each entry inside is a concrete bot with its own fingerprint and its own counter-script.

    Wash trading

    Volume far above median, price goes nowhere. Buy and sell at the same price, equal size, alternating.

    key: volume ≫ median ∧ |Δp| ≈ 0

    Market-making bot

    Symmetric quotes around mid, fixed refresh period, skew follows inventory. A metronome with a wallet.

    key: refresh period T, offset d

    Spoofing / layering

    Big wall appears, price approaches, wall vanishes. Short add-to-cancel life, near-zero fill ratio.

    key: wall cancels on approach

    Pump and dump

    Quiet pair, sudden one-sided aggression, then a distribution tail into the crowd that arrives late.

    key: one-sided flow + low float

    Quote stuffing

    Bursts of orders and cancels far above need. Not to trade: to slow others and hide intent.

    key: msgs/s ≫ fills/s

    Momentum ignition

    A burst of aggressive orders to trigger stops and trend followers, then reverse into their flow.

    key: burst, then mirror fade

    04 / live rule

    One rule, tunable.

    Synthetic pair. A washer starts mid-session. Drag the thresholds and watch the flag fire.

    0flagged bars
    0%wash bars caught
    0false alarms

    05 / infrastructure

    Servers on every top venue.

    Exchange A Exchange B Exchange N HFT server Arust bot HFT server Brust bot HFT server Nrust bot Fingerprint DBactors · sightings · venue prefscounter-script versions

    Online (Rust)

    Cheap features and trigger rules in the hot path: volume ratio, efficiency, heartbeat detector.

    Offline

    Heavy clustering, matching against the DB, backtests with purged CV. Pushes new scripts down to the servers.

    Guardrails

    We observe and trade against bots. We never spoof, wash or manipulate. Hard risk limits and a kill switch per script.