Elvers
Multi-factor alpha research platform for systematic trading
Install / Use
/learn @quantbai/ElversREADME
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.
Related Skills
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
best-practices-researcher
The most comprehensive Claude Code skills registry | Web Search: https://skills-registry-web.vercel.app
groundhog
398Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
isf-agent
a repo for an agent that helps researchers apply for isf funding
