Skip to content
sigc GitHub

Compare

sigc vs vectorbt

Vectorised backtesting on top of NumPy/Numba in Python.

vectorbt is a Python library that gives you very fast vectorised backtests by leaning hard on NumPy and Numba JIT compilation. It is excellent for portfolio simulations and parameter sweeps inside a notebook. sigc is a typed compiled DSL with a Rust runtime and a content-addressed cache. The two solve different problems.

Feature
sigc
vectorbt
Language
Domain-specific .sig DSL (compiled)
Python library, idiomatic NumPy/pandas
Type checking
Compile-time shape and dtype checks before execution
Runtime: shape errors surface during the simulation
Execution engine
Rust + Polars/Arrow + Rayon, SIMD kernels (AVX2/AVX-512 where available)
NumPy + Numba JIT compilation; broadcasts across parameter grids
Determinism / caching
Content-addressed cache (sled + blake3); identical IR + inputs = identical bytes
No built-in content-addressed cache; reproducibility is up to the user
Backtester features
Long-short rank weights, vol-targeting, transaction costs (bps + square-root slippage), benchmark attribution
Portfolio simulation with stop-loss, take-profit, signal-based entries/exits, and broad metrics
Parameter optimisation
Params block; GridSearch via the CLI / Rust embedding
First-class: parameter sweeps are a core idiom (broadcasting across the parameter axis)
Production mode
Same binary as `sigc daemon`; nng REQ/REP on tcp://127.0.0.1:7240
Library; production deployment is BYO
Risk / circuit breakers
sigc.yaml: max drawdown, max position, kill switch, order rate limits
Not in scope as a library; you wire it up
Embed in another system
Rust crate; Strategy::from_file / Backtest API
Python import; works wherever Python works
Language ecosystem
Rust; pysigc bindings for notebooks
Python-first, deep integration with the data-science stack
License
MIT
Apache 2.0 (vectorbt) / commercial (vectorbt.pro)

Pick vectorbt when

You live in a Python data-science workflow, you run heavy parameter sweeps inside notebooks, and your strategy logic stays inside the Python ecosystem end-to-end.

Pick sigc when

You want compile-time guarantees on signal shape, deterministic content-addressed caching for reproducibility, and the same binary running research and production over nng.

Honest note

vectorbt is faster than naive pandas at parameter sweeps because it broadcasts across the parameter axis. sigc does not try to compete on parameter-sweep throughput; it competes on type safety, reproducibility, and a unified research-to-production binary. Both libraries can be embedded in larger systems; the embedding language is the dividing line.