AAPLmomentum+0.82
MSFTquality+0.61
NVDAsize-0.43
GOOGLvalue+0.27
METAbeta-0.18
RELIANCE.NSquality+0.71
TCS.NSmomentum+0.55
JPMprofitability+0.39
GSvalue-0.22
INFY.NSmomentum+0.83
HDFCBANK.NSquality+0.44
AMZNinvestment-0.31
AAPLmomentum+0.82
MSFTquality+0.61
NVDAsize-0.43
GOOGLvalue+0.27
METAbeta-0.18
RELIANCE.NSquality+0.71
TCS.NSmomentum+0.55
JPMprofitability+0.39
GSvalue-0.22
INFY.NSmomentum+0.83
HDFCBANK.NSquality+0.44
AMZNinvestment-0.31
institutional-grade · open source · AGPL-3.0 + commercial

From log-returns to alpha.
Seven layers. Zero black boxes.

Wavelet scattering features, IC-weighted signal composition, and Bayesian portfolio construction — derived from first principles, covered by 182 tests.

Get started freeView pricing
$pip install drift
★ GitHubArchitecture →
drift 0.1.07 layers182 testsPyPIFastAPIMCP-native

Built on 182 passing tests · companion to OmniPulse (production audio fingerprinting) · AGPL-3.0 + Commercial licensing

the problem

Three ways traditional quant fails

Each failure has a mathematical cause and a mathematical fix.

01

Returns are fat-tailed. Your model isn't.

Pearson correlation assumes normality. A single earnings shock flips the IC sign. Rank transformation removes the sensitivity entirely.

IC = Spearman(s_t, r_{t+h})
02

Sample covariance collapses when N → T.

When assets approach observations, eigenvalues hit zero. Matrix inversion amplifies noise. Ledoit-Wolf analytical shrinkage is mandatory, not optional.

Σ̂ = α · F + (1−α) · S
03

Regimes change. Your signal doesn't know.

Momentum has negative IC in bear regimes. HMM regime detection gates which signals are active in each market state.

α_{t+1}(j) = B_j · Σ_k α_t(k) A_{kj}
the mathematics

Three pillars, derived step by step

Every formula is implemented directly. The derivations are in the build history.

Pillar 1 — feature extraction

Cauchy wavelet scattering

Morlet wavelets decay as exp(−t²). Cauchy wavelets decay algebraically: ω^α·exp(−ω) — keeping sensitivity to rare large events that matter in financial returns. Second-order coefficients capture volatility-of-volatility across pairs of scales. J=8 gives 37 coefficients per stock per date.

S₀ = ⟨|x|⟩
S₁(j) = ⟨|x ★ ψ_j|⟩
S₂(j₁,j₂) = ⟨||x★ψ_{j₁}|★ψ_{j₂}|⟩
1 + 8 + 28 = 37 coefficients (J=8, Q=1)
Pillar 2 — signal quality

Rank transform + IC / ICIR

Derived by solving s(1)=−1, s(N)=+1 as a linear map — two equations, two unknowns. ICIR is the Sharpe ratio of the IC time series, filtering signal strength from consistency. Negative ICIR gets zero weight in the combiner.

sᵢ = (2rᵢ − N − 1) / (N − 1)
IC_t = Spearman(s_t, r_{t+h})
ICIR = IC̄ / σ_IC
IC > 0.05 decent · IC > 0.10 strong
Pillar 3 — portfolio construction

Black-Litterman posterior

Reverse optimisation backs out equilibrium returns from market-cap weights: μ_eq = λΣw_mkt. The posterior is a precision-weighted blend of the CAPM prior and IC-derived views. HRP (Ward linkage + recursive bisection) provides a matrix-inversion-free fallback when views are noisy.

μ_eq = λ Σ w_mkt
μ_BL = M [A μ_eq + Pᵀ Ω⁻¹ q]
M = [(τΣ)⁻¹ + PᵀΩ⁻¹P]⁻¹
Every formula above is fully derived on the math page.Read full derivations with step-by-step proofs →
interactive proof

Why rank transform

Drag the outlier to any value and watch what happens to the z-score.

Rank transform kills outliers
Drag the outlier. Rank score stays in [−1, +1]. Z-score explodes.
5.0
rank score — s = (2r − N − 1) / (N − 1)
v1
-1
v2
-0.5
v3
0
v4
0.5
outlier
1
z-score — unbounded, outlier dominates
v1
-0.58
v2
-0.53
v3
-0.47
v4
-0.42
outlier
2.00
Outlier = 5.0 · rank score = +1.00 (capped) · z-score = +2.00σ (uncapped)
platform demo

See what Drift produces

Synthetic three-year backtest on a 10-stock universe. Same pipeline as production.

0.70
Sharpe ratio
HRP 3-year backtest
88.6%
PSR
vs SR* = 0.0
−16.2%
Max drawdown
2022 bear market
0.294
ICIR · momentum
out of sample
7
Factors tracked
FF5 + mom + quality
182
Tests passing
0 failures
● Drift HRP● S&P 5002022 – 2024 · synthetic backtest
common questions

FAQ

Does Drift work with Indian equities (NSE/BSE)?+
Which data vendors are supported?+
How does Drift scale to large universes (500+ tickers)?+
Can I use this for live trading?+
Is the backtest forward-looking (lookahead bias)?+
What is the MCP server for?+
architecture

Seven layers, one pipeline

Follow data from ingestion to delivery. Select any stage to inspect its role in the system.

L1 of 7 · Dataactive

Data

Provider-agnostic DataLoader backed by a Parquet cache at ~/.drift/cache. Lazy OpenBB import — swap yfinance for Polygon or Refinitiv in one line. Returns a clean (date, ticker) MultiIndex DataFrame every layer above depends on.

modulescache.py · loader.py
L1live system view
MARKET PROVIDERSOpenBBPolygonRefinitivDataLoadernormalizeParquet cache(date, ticker)
get started

Running in three minutes

python — quick start
from drift.data import DataLoader
from drift.features.factors import FactorEngine
from drift.portfolio.hrp import HRP
from drift.backtest.engine import BacktestEngine

# one pipeline, seven layers
loader  = DataLoader()
ohlcv   = loader.equity_ohlcv(["AAPL", "MSFT", "NVDA"])
result  = BacktestEngine(HRP()).run(ohlcv)
print(result)  # Sharpe=0.70 · PSR=0.89 · MaxDD=−0.16
the people behind drift

Founders

Drift applies the same mathematical foundations as OmniPulse — scattering transforms and optimal transport — to quantitative finance.

Y
Yash Mishra
SYSTEMS · OPTIMAL TRANSPORT
Senior Software Engineer, Bajaj Finance Ltd

Concurrent systems, optimal transport, and real-time indexing. Built the Rust orchestration layer for OmniPulse (HNSW + Sliced Wasserstein) and the full seven-layer Drift platform — from data ingestion through the Streamlit dashboard.

S
Samvardhan Singh
APPLIED AI · MLOPS
Automation Engineering & AI/MLOps, NielsenIQ

Automation engineering, AI/MLOps pipelines, and C++/CUDA DSP kernels. Architect of omni-wst-core — the scattering engine Drift's WST layer calls via PyO3 — and the Python agentic control plane for OmniPulse.

licensing

Open source for research. Commercial for proprietary use.

Drift is dual-licensed. Choose the license that matches how you deploy and distribute the platform.

open source

GNU AGPL-3.0

Use, modify, and distribute Drift under the GNU Affero General Public License v3.0, including for research, academic, and open-source work.

If you modify Drift and provide it to others over a network, you must release the complete corresponding source of your modified version under the same license.

Read the AGPL-3.0 license ↗
commercial

Proprietary deployment

A separate commercial license is available if you cannot or do not wish to comply with AGPL-3.0, including deployment inside proprietary products or services without releasing your own source.

Commercial terms can also cover production support, SLA, and proprietary premium components. This summary is not the commercial license agreement.

Request commercial terms →
running a systematic fund?

Get early access

Drift is available for institutional research use. Book a walkthrough or drop your email and we will reach out.

Analyse a portfolio →NSE screener →For advisors →API docs →
yash01012002@gmail.com·LinkedIn ↗·GitHub ↗
For advisors →API docs →