Hyperliquid Backtester
A comprehensive Rust library that integrates Hyperliquid trading data with the rs-backtester framework to enable sophisticated backtesting of trading strategies using real Hyperliquid market data, including perpetual futures mechanics and funding rate calculations.
โจ Features
- ๐ Async Data Fetching: Efficiently fetch historical OHLC data from Hyperliquid API
- ๐ฐ Funding Rate Support: Complete funding rate data and perpetual futures mechanics
- ๐ Seamless Integration: Drop-in replacement for rs-backtester with enhanced features
- ๐ Enhanced Reporting: Comprehensive metrics including funding PnL and arbitrage analysis
- โก High Performance: Optimized for large datasets and complex multi-asset strategies
- ๐ก๏ธ Type Safety: Comprehensive error handling with detailed error messages
- ๐ Advanced Strategies: Built-in funding arbitrage and enhanced technical indicators
- ๐ง Developer Friendly: Extensive documentation, examples, and migration guides
- ๐ Structured Logging: Built-in logging and debugging support with configurable output
๐ฆ Installation
Add this to your Cargo.toml
:
[]
= "0.1"
= { = "1.0", = ["full"] }
= { = "0.4", = ["serde"] }
System Requirements
- Rust: 1.70 or later
- Operating System: Linux, macOS, or Windows
- Memory: Minimum 4GB RAM (8GB+ recommended for large datasets)
- Network: Internet connection required for Hyperliquid API access
๐ Quick Start
Basic Backtesting Example
use *;
use ;
async
Funding Arbitrage Strategy
use *;
async
๐ Usage Guide
Data Fetching
The library supports fetching historical data for various cryptocurrencies and time intervals:
use *;
// Supported intervals: "1m", "5m", "15m", "1h", "4h", "1d"
let data = fetch.await?;
// Access OHLC data
println!;
println!;
// Access funding rate data
if let Some = data.funding_rates.last
Supported Trading Pairs
The library supports all major cryptocurrencies available on Hyperliquid:
- Major Pairs: BTC, ETH, SOL, AVAX, DOGE, etc.
- DeFi Tokens: UNI, AAVE, COMP, MKR, etc.
- Layer 1s: ADA, DOT, ATOM, NEAR, etc.
- Meme Coins: SHIB, PEPE, WIF, etc.
Commission Structure
Configure realistic trading fees based on Hyperliquid's fee structure:
use *;
// Default Hyperliquid fees
let commission = default; // 0.02% maker, 0.05% taker
// Custom fee structure
let custom_commission = HyperliquidCommission ;
Strategy Development
Create custom strategies using the built-in framework:
use *;
// Enhanced SMA crossover with funding awareness
let strategy = enhanced_sma_cross?;
// Funding arbitrage strategy
let arb_strategy = funding_arbitrage_strategy?; // 0.05% threshold
Enhanced Reporting
Generate comprehensive reports with funding-specific metrics:
// Standard enhanced report
let report = backtest.enhanced_report?;
println!;
println!;
// Funding-specific report
let funding_report = backtest.funding_report?;
println!;
println!;
// Export to CSV
backtest.export_enhanced_csv?;
Logging and Debugging
Configure logging for development and production:
use *;
// Basic logging setup
init_logger; // INFO level by default
// Debug logging
init_logger_with_level;
// Environment variable control
// RUST_LOG=debug cargo run --example basic_backtest
// HYPERLIQUID_LOG_FORMAT=json cargo run
// HYPERLIQUID_LOG_FILE=backtest.log cargo run
๐ API Stability
This crate follows Semantic Versioning (SemVer):
- Major version (0.x.y โ 1.0.0): Breaking API changes
- Minor version (0.1.x โ 0.2.0): New features, backward compatible
- Patch version (0.1.0 โ 0.1.1): Bug fixes, backward compatible
Current version: 0.1.0 (Pre-1.0 development phase)
Stability Guarantees
- โ
Public API: All items in the
prelude
module are considered stable within minor versions - โ
Data Structures:
HyperliquidData
,HyperliquidBacktest
, andHyperliquidCommission
are stable - โ
Error Types:
HyperliquidBacktestError
variants may be added but not removed in minor versions - โ
Strategy Interface:
HyperliquidStrategy
trait is stable for implementors
๐ Examples
The library includes comprehensive examples in the examples/
directory:
basic_backtest.rs
: Simple backtesting workflowfunding_arbitrage_advanced.rs
: Advanced funding arbitrage strategiesmulti_asset_backtest.rs
: Multi-asset portfolio backtestingcsv_export_example.rs
: Data export and analysisperformance_comparison.rs
: Strategy performance comparisonsimple_data_fetching.rs
: Data fetching and exploration
Run examples with:
๐ ๏ธ Advanced Features
Performance Monitoring
Track performance of operations with built-in spans:
use *;
use Instrument;
async
Error Handling
Comprehensive error handling with detailed context:
use *;
match fetch.await
Migration from rs-backtester
This library is designed as a drop-in enhancement to rs-backtester:
// Before (rs-backtester)
use *;
let data = from_csv?;
// After (hyperliquid-backtest)
use *;
let data = fetch.await?;
let rs_data = data.to_rs_backtester_data; // Convert if needed
๐งช Testing
Run the test suite:
# Run all tests
# Run with logging
RUST_LOG=debug
# Run specific test module
# Run benchmarks
๐ Performance
The library is optimized for performance with large datasets:
- Memory Efficient: Streaming data processing for large time ranges
- Async Operations: Non-blocking API calls and data processing
- Caching: Intelligent caching of funding rate data
- Parallel Processing: Multi-threaded backtesting for complex strategies
Benchmark results on a modern system:
- Data Fetching: ~500ms for 30 days of 1h data
- Backtesting: ~50ms for 1000 trades with funding calculations
- Memory Usage: ~10MB for 30 days of 1h OHLC + funding data
๐ค Contributing
Contributions are welcome! Please see our Contributing Guide for details.
Development Setup
Code Style
We use rustfmt
and clippy
for code formatting and linting:
๐ License
This project is dual-licensed under the MIT OR Apache-2.0 license.
โ ๏ธ Disclaimer
This is an experimental library. Use at your own risk. All actions are performed at your own risk.
This software is for educational and research purposes only. Trading cryptocurrencies involves substantial risk and may not be suitable for all investors. Past performance does not guarantee future results.
Important Notes:
- Always test strategies thoroughly before using real capital
- Be aware of API rate limits when fetching large amounts of data
- Funding rates and market conditions can change rapidly
- Consider transaction costs and slippage in live trading
๐ Links
๐ Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: docs.rs