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.
Metadata
Release files for elvers 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| elvers-0.4.0.tar.gz | 301.4 kB | With provenance | Details for elvers-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| elvers-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for elvers-0.4.0-py3-none-any.whl |
Total release size: 596.3 kB
Release files / elvers-0.4.0.tar.gz
| Download URL | elvers-0.4.0.tar.gz |
|---|---|
| Size | 301.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33fec535a140fdb8ed48cdda3b2819e9c1de6f5c44f2d2a654472b06f866e928
|
|
BLAKE2b-256 checksum How to use checksums |
248719ef8a42736291495a24666c8e098b6d017806a768dd83234041f06756be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 26, 2026.
Transparency logRelease files / elvers-0.4.0-py3-none-any.whl
| Download URL | elvers-0.4.0-py3-none-any.whl |
|---|---|
| Size | 294.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d8f5aaba46dee85a9f121c57663240827bf4af31fe9d5ecfcbd29da5a17e93e
|
|
BLAKE2b-256 checksum How to use checksums |
0243fe2d74407eadd779e3bc4761887f304b1e0659da72996d0a627407de01e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 26, 2026.
Transparency logSecurity for elvers 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for elvers-0.4.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 26, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.