Skip to content

jordy25519/fulcrum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fulcrum

Fulcrum is an experimental, low-latency engine for arbitrage trading on Arbitrum L2.
Primary design goal is to measure strategy latency in single-digit µ seconds.
Created out of interest in understanding HFT systems and the arbitrum rollup architecture.

Motivation/Design

Fulcrum builds a price graph on each block and simulates new transactions from the raw sequencer feed directly against the local price graph.
It does not run a full EVM and so relies on a full node to sync prices at sequencer batch block - 1 (i.e trades accuracy for latency).

crates
├── engine         # primary trading engine
├── sequencer-feed # fast feed deserializer
└── ws-cli         # fast(er), minimal fork of ethers-providers

Run

$  ./target/release/fulcrum \
    --chain arbitrum --ws <WsEndpoint> \
    run --min-profit 0.0002 \
    --key <PrivateSeed> \
    --executor <ExecutorContract> \
    --dry-run

Profile (MacOS)

$ cargo install samply

$ samply record ./target/profiling/fulcrum

Test

$  cargo test --workspace

Bench

$  cargo +nightly bench --features=bench --profile=release  

Build

$  sudo apt install build-essential pkg-config libssl-dev

$ RUSTFLAGS='-C target-cpu=native' cargo build --release

Contracts

$ forge test --fork-url <rpc-url> -vvv

About

low-latency arbitrage bot for Arbitrum L2

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published