Expand description
§Enhanced Backtesting Functionality with Hyperliquid-specific Features
This module provides enhanced backtesting capabilities that extend the rs-backtester framework with Hyperliquid-specific features including funding rate calculations, maker/taker fee structures, and perpetual futures mechanics.
§Key Features
- Funding Rate Integration: Automatic calculation of funding payments based on position size
- Enhanced Commission Structure: Separate maker/taker rates matching Hyperliquid’s fee structure
- Perpetual Futures Support: Complete support for perpetual futures trading mechanics
- Advanced Reporting: Detailed reports separating trading PnL from funding PnL
- Seamless Integration: Drop-in replacement for rs-backtester with enhanced features
§Usage Examples
§Basic Enhanced Backtesting
use hyperliquid_backtest::prelude::*;
#[tokio::main]
async fn main() -> Result<(), HyperliquidBacktestError> {
// Fetch data
let data = HyperliquidData::fetch("BTC", "1h", start_time, end_time).await?;
// Create strategy
let strategy = enhanced_sma_cross(10, 20, Default::default())?;
// Set up enhanced backtest
let mut backtest = HyperliquidBacktest::new(
data,
strategy,
10000.0, // $10,000 initial capital
HyperliquidCommission::default(),
)?;
// Run backtest with funding calculations
backtest.calculate_with_funding()?;
// Get comprehensive results
let report = backtest.enhanced_report()?;
println!("Total Return: {:.2}%", report.total_return * 100.0);
println!("Trading PnL: ${:.2}", report.trading_pnl);
println!("Funding PnL: ${:.2}", report.funding_pnl);
Ok(())
}
§Custom Commission Structure
use hyperliquid_backtest::prelude::*;
// Create custom commission structure
let commission = HyperliquidCommission::new(
0.0001, // 0.01% maker rate
0.0003, // 0.03% taker rate
true, // Enable funding calculations
);
let mut backtest = HyperliquidBacktest::new(
data,
strategy,
50000.0,
commission,
)?;
§Funding-Only Analysis
use hyperliquid_backtest::prelude::*;
// Disable trading fees to analyze funding impact only
let commission = HyperliquidCommission::new(0.0, 0.0, true);
let mut backtest = HyperliquidBacktest::new(data, strategy, 10000.0, commission)?;
backtest.calculate_with_funding()?;
let funding_report = backtest.funding_report()?;
println!("Pure funding PnL: ${:.2}", funding_report.net_funding_pnl);
Structs§
- Commission
Stats - Commission statistics for reporting
- Commission
Tracker - Commission tracking for detailed reporting
- Enhanced
Metrics - Enhanced metrics for Hyperliquid backtesting
- Enhanced
Report - Enhanced report structure with Hyperliquid-specific metrics
- Funding
Payment - Individual funding payment record
- Funding
Summary - Funding payment summary for reporting
- Hyperliquid
Backtest - Enhanced backtesting engine with Hyperliquid-specific features
- Hyperliquid
Commission - Commission structure for Hyperliquid trading
Enums§
- Order
Type - Order type for commission calculation
- Order
Type Strategy - Strategy for determining order types in backtesting
- Trading
Scenario - Trading scenario for commission calculation