Find where your alpha breaks.
Lacuna checks statistical evidence, leakage, robustness, costs, and reproducibility before you trust a backtest. Completely open-source.
- Sharpe ratio · simulated
- 2.47→0.29
- Expected±1σ, ±2σLive
- Breaks below 2σ18 Dec 2023
Compatible with the
tools you already use
- Polars
- pandas
- NumPy
- Apache Arrow
- any backtester
The evidence gap
A backtest can look convincing and still be wrong.
Apparent alpha can disappear under unseen data, realistic costs, and leakage-aware validation.
Backtest
In sample, 2018–2022
2.47
Look-ahead leakage
Temporal validation
−0.70
Multiple testing
Deflated Sharpe ratio
−0.63
Trading costs
Execution realism
−0.51
Survivorship bias
Survivorship controls
−0.34
Live
Out of sample, 2023–
0.29
How it works
Bring a signal.
Leave with evidence.
Lacuna turns your signal and prices into structured findings, uncertainty, and provenance you can inspect.
import lacuna as lc
study = lc.SignalStudy(
signal=signal,
prices=prices,
)
report = study.audit()
report.show()
One audit path
Your backtester stays in place.
01 · Input
Signal + prices
The research data you already have.
02 · Check
lc.audit()
Only supported checks run.
03 · Report
Findings + evidence
Inspect, export, and reproduce every result.
Performance by architecture
Python outside.
Rust inside.
Write Python. Lacuna moves columnar data through Arrow and runs hot paths in Rust.
You write
Python API
Typed studies and audits
Data crosses
Arrow contract
Columnar and low-copy
Lacuna runs
Native analysis
Rust · Polars · SciPy
Every chart keeps its source data, method, and assumptions.
Built in public
Make every backtest earn your trust.
Open source for quantitative researchers who want evidence, not another backtester.