Skip to content

quantbai/elvers

Elvers

PyPI CI License Python 3.10+ Polars

Polars-native quantitative research platform. All computation executes as Rust-backed Polars expressions with no Python loops in the hot path.

Pre-1.0 development. API is stabilizing but may have breaking changes between minor versions. See CHANGELOG.md.

Pipeline

Elvers covers the full quantitative research workflow:

Step Module Status
1. Universe Selection universe/ Planned
2. Data Acquisition data/providers/ Planned
3. Data Storage data/store.py Planned
4. Factor Computation ops/ 72 operators
5. Factor Analysis analysis/ Planned
6. Multi-Factor Synthesis synthesis/ Planned
7. Portfolio Construction portfolio/ Planned
8. Backtesting backtest/ Planned
9. Risk Management risk/ Planned
10. Execution execution/ Planned
11. Post-Trade Analysis execution/post_trade.py Planned
12. Monitoring monitor/ Planned

Design

  • Column-based. Factor stores a column name + Panel reference. All data lives in a single Panel DataFrame. Zero intermediate copies, zero hash joins. Same-expression memoization.
  • Balanced alignment. Panel guarantees every symbol shares the same timestamp index. Missing values are explicit nulls. Look-ahead bias is prevented by construction.
  • Single null semantics. NaN and Inf are converted to null on column creation. One missing-value type eliminates NaN-infection.

Installation

pip install elvers

Usage

from elvers import load, ts_rank, zscore, signal

panel = load()
close = panel["close"]
alpha = signal(zscore(ts_rank(close, 30)))

Operators

72 operators. All accept and return Factor.

Time-Series -- per-symbol rolling window:

ts_delay ts_delta ts_mean ts_sum ts_std_dev ts_min ts_max ts_median ts_rank ts_skewness ts_kurtosis ts_zscore ts_corr ts_covariance ts_product ts_step ts_decay_linear ts_decay_exp_window days_from_last_change ts_av_diff ts_scale ts_percentile ts_quantile ts_cv ts_autocorr ts_count_nans ts_backfill kth_element last_diff_value inst_tvr ts_delta_limit ts_regression trade_when

Cross-Sectional -- across symbols at each timestamp:

rank zscore mean median scale normalize quantile signal winsorize truncate left_tail right_tail

Neutralization and Group -- sector/industry control:

vector_neut regression_neut group_neutralize group_rank group_zscore group_scale group_normalize group_mean group_median group_backfill

Math -- element-wise transforms:

log sqrt sign power signed_power inverse s_log_1p maximum minimum where

Arithmetic:

add subtract multiply divide reverse densify bucket and standard operators (+ - * / ** abs)

Full specifications: OPERATORS.md

Development

pip install -e ".[dev]"
pytest tests/ -v
ruff check elvers/
pyright elvers/

See CONTRIBUTING.md for the contributor guide.

About

Multi-factor alpha research platform for systematic trading

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages