Æquitas
Quant Research Platform
Connecting to API.

I'm a broke grad student, so this runs on free-tier hosting - the API is waking up from its nap and that takes a minute or two. Sorry! Play the game, read a fact, or go creep on my portfolio and resume below while you wait.

Did you know · ◈

|

Catch the tickers ◈
0 caught20s
◉Built by Adit Shah, view portfolio↗◈Hiring? View resume↗
Æquitas

Benchmarks

pandas vs C++20/pybind11 kernels, benchmarked live on the API host

pandas vs. C++20 - live, on this host
Hit “Run everything” to see today's numbers

Numbers vary by run: parallel speedup is bounded by how many cores this host actually has free right now, so a shared cloud instance will show a smaller, but equally real, win than an idle 8-core dev machine.

Per-kernel benchmark

Five rolling-window / exponential-smoothing kernels, isolated

or real data:

NaN & edge-case explorer

Same tiny series, three backends - pick a scenario and watch where they agree, and where they don't

End-to-end pipeline

Full 19-feature compute_features() - pandas vs. the C++-backed drop-in

or real data:

Real backtest, not synthetic

Same pipeline, but on this platform's own ingested real history for a real ticker

Multi-symbol parallel (GIL release)

GIL released during C++ calls

RSI-14 across N symbols - pandas sequential vs. C++ sequential vs. C++ across a Python ThreadPoolExecutor

Python's Global Interpreter Lock normally lets only one thread run Python bytecode at a time, so spinning up 8 threads around pandas code doesn't parallelize CPU-bound work at all. Releasing the GIL around the C++ compute region (py::gil_scoped_release) is what lets these threads actually run concurrently.

Thread-count scaling

Fixed workload, varying thread-pool size - where does adding threads stop helping?

Scan to open this demo on your phone