System requirements
NanoARB is designed for high-performance trading and has specific system requirements.Minimum requirements
- Rust: 1.75 or higher (1.84+ recommended)
- Operating System: Linux, macOS, or Windows with WSL2
- CPU: x86-64 architecture (AMD or Intel)
- Memory: 4GB RAM minimum (8GB+ recommended)
- Disk: 2GB free space for builds
Recommended requirements
For optimal performance:- Rust: 1.84+
- CPU: AMD EPYC or Intel Xeon with high single-thread performance
- Memory: 16GB+ RAM
- OS: Linux kernel 5.10+ for best latency performance
Performance benchmarks in the README (780ns median latency) were measured on AMD EPYC 7763 (AWS c6a.8xlarge).
Installing Rust
NanoARB requires Rust 1.75 or higher. The recommended way to install Rust is viarustup.
- Linux/macOS
- Windows (WSL2)
Updating Rust
If you already have Rust installed, make sure it’s up to date:Installing dependencies
Core dependencies
NanoARB has minimal runtime dependencies since it’s written entirely in Rust. However, you’ll need build tools.- Ubuntu/Debian
- Fedora/RHEL/CentOS
- macOS
UI dependencies (optional)
For the real-time dashboard, you’ll need Node.js and pnpm:- Using Node Version Manager
- Using Package Manager
Python dependencies (optional)
For ML model training, you’ll need Python 3.11+:requirements.txt):
torch>=2.1.0- PyTorch for deep learningmamba-ssm>=1.2.0- State Space Models (Linux only)onnx>=1.15.0- ONNX export for Rust inferencegymnasium>=0.29.0- RL environmentsd3rlpy>=2.3.0- Offline RL algorithms
Installing NanoARB
Build the project
Build in release mode for optimal performance:This will compile all workspace crates:
nano-core- Core types and traitsnano-feed- Market data parsernano-lob- Order book enginenano-model- ML inferencenano-backtest- Backtesting enginenano-strategy- Trading strategiesnano-gateway- Main binary
target/release/nanoarb.First build can take 5-10 minutes depending on your system. Subsequent builds are incremental and much faster.
Install UI dependencies (optional)
Run tests
Verify everything works correctly:All tests should pass. If any fail, see the Troubleshooting section.
Docker setup (optional)
For monitoring with Prometheus and Grafana:- Grafana: http://localhost:3000 (admin/nanoarb)
- Prometheus: http://localhost:9091
Platform-specific notes
Linux
NanoARB is optimized for Linux. For best performance:macOS
NanoARB works on macOS but with slightly higher latency than Linux. Some notes:- Use Apple Silicon (M1/M2/M3) for best performance
- Intel Macs are supported but will be slower
- Some Python packages (mamba-ssm) may not be available on macOS
Windows
Native Windows is not recommended. Use WSL2 instead:Cargo.toml overview
NanoARB’sCargo.toml defines a workspace with optimized release settings:
Cargo.toml (excerpt)
tokio- Async runtimeaxum- HTTP servernom- Zero-copy parsingndarray- Tensor operationsprometheus-client- Metricsrust_decimal- Fixed-point arithmetic
Troubleshooting
Cargo build fails with linker errors
Cargo build fails with linker errors
Install development tools:
Rust version too old
Rust version too old
NanoARB requires Rust 1.75+. Update:
Out of memory during build
Out of memory during build
If compilation runs out of memory, try:
Tests fail with 'address already in use'
Tests fail with 'address already in use'
Another process is using port 9090:
pnpm install fails
pnpm install fails
Clear pnpm cache and retry:
Python mamba-ssm installation fails
Python mamba-ssm installation fails
mamba-ssm only supports Linux with CUDA. On macOS or without GPU:- Skip mamba-ssm (you can still use pre-trained ONNX models)
- Use Google Colab for training (see
colab_training.py) - Train on a Linux GPU instance
Binary is too large
Binary is too large
The release binary with full LTO can be 50-100MB. To reduce size:Then rebuild:Note: This may slightly reduce performance.
Next steps
Now that NanoARB is installed, you can:Quickstart
Get your first backtest running
Configuration
Customize trading parameters
API Reference
Explore the full API
Model Training
Train custom ML models
Getting help
If you encounter issues not covered here:- Check the GitHub Issues
- Review the Contributing Guide
- Open a new issue with:
- Your OS and Rust version (
rustc --version) - Full error output
- Steps to reproduce
- Your OS and Rust version (