alfars
High-performance factor expression and backtesting framework with Rust core and Python bindings.
Features
Core Backtesting
- High Performance: Rust core with parallel computation (8-10x speedup)
- Flexible API: NumPy arrays and Pandas Series support
- Complete Features: qcut(N) grouping, long-short portfolios, IC calculation, factor analysis
- Alphalens Compatibility: Similar API design for easy migration
- Extensible: Modular design with custom weights, grouping, and commission models
Intelligent Factor Mining (v0.3.0)
- Expression System: AST-based expression builder for custom factor computation
- Lazy Evaluation: Polars-style delayed computation with query optimization
- Genetic Programming: Auto-discover high-performance factor expressions
- Dimension System: Type-safe factor expressions to prevent invalid calculations
- Persistence: Factor library management with search, caching, and versioning
- Meta-Learning: Intelligent GP parameter recommendations based on historical data
Interactive Lab (v0.3.0)
- One-Command Launch:
alfars labstarts all services automatically - Visual Backtest: Interactive charts for NAV, IC, and quantile returns
- Browser-based: Access via http://localhost:5173
Installation
Requirements
- Rust: 1.70+ (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) - Python: 3.8+
- uv (recommended):
pip install uv
Install from Source
# Clone repository
# Build and install with uv (recommended)
Using pip (future releases)
Quick Start
Basic Usage
# Generate sample data
, = 100, 200
=
= * 0.01 + * 0.005
# Run quantile backtest
=
Start Interactive Lab
# Start the lab environment (auto-opens browser)
# or
This starts:
- Backend API server (port 8000)
- Frontend dev server (port 5173)
- Opens browser at http://localhost:5173
Genetic Programming Factor Mining
# Create GP engine
=
# Set available columns
# Prepare data
=
=
# Mine factors
=
Expression System
# Build factor expressions
= /
=
# Lazy evaluation
=
=
=
Persistence & Meta-Learning
# Factor library
=
=
# Meta-learning recommendations
=
=
Performance Benchmarks
| Data Size | Rust | Python | Speedup |
|---|---|---|---|
| 100×200 | 5.2ms | 42.1ms | 8.1× |
| 500×500 | 68.3ms | 1.2s | 17.6× |
| 1000×1000 | 312ms | 8.7s | 27.9× |
Test environment: AMD Ryzen 7 5800X, 32GB RAM
Project Structure
alfars/
├── Cargo.toml # Rust project config
├── pyproject.toml # Python project config
├── src/
│ ├── lib.rs # Core + Python bindings
│ ├── expr.rs # Expression system
│ ├── expr_optimizer.rs # Expression optimization
│ ├── lazy.rs # Lazy evaluation engine
│ ├── gp.rs # Genetic programming
│ ├── backtest.rs # Backtest engine
│ ├── persistence.rs # Factor storage
│ ├── metalearning.rs # Meta-learning
│ └── factor.rs # Factor registry
├── alfars/ # Python package
│ ├── __init__.py
│ ├── lab.py # Interactive lab
│ └── server.py # FastAPI server
├── frontend/ # Interactive UI (Vite + React)
├── examples/ # Usage examples
└── tests/ # Test suite
Development
# Format code before committing
# Run tests
# Build release
Version History
v0.3.0 (Current)
- Interactive Lab: One-command
alfars labfor visual factor research - GP Parallelization: Rayon-based parallel fitness evaluation
- Improved GP Engine: Bug fixes for IC calculation, cumulative returns
- Dimension System: Type-safe factor expressions
v0.2.0
- Expression system with AST-based builder
- Lazy evaluation engine (Polars-style)
- Genetic programming factor mining
- Persistence and factor library management
- Meta-learning recommendations
v0.1.0
- High-performance quantile backtesting
- Alphalens-compatible API
- NumPy/Pandas dual interface
License
MIT License