Markets and trading · Edition No. 10 · 4 Sep 2026

jealous/stockstats

Fifty indicators as DataFrame columns, under a licence you can actually ship.

← Markets and tradingRead the whole edition →
09

jealous/stockstats

💎 hidden gem

1.5k stars · BSD-3-Clause · v0.6.8 (2026-02-16)

Fifty indicators as DataFrame columns, under a licence you can actually ship.

Repo detailsthe review · specs · pros & cons · install

What it is

A thin wrapper that turns a pandas DataFrame of OHLCV bars into a StockDataFrame, where asking for df['macd'] or df['rsi_14'] computes the indicator on demand. More than fifty momentum, trend, volatility and volume indicators, with no compiled dependencies to install.

Why it matters

ScalpingMate's chain in this ledger is all research machinery: tsfresh generating 700 features, Optuna searching, arch testing whether the winner is luck, SHAP explaining what it leans on. What is missing is the unglamorous layer where a human-legible indicator is computed the same way every time — in the product, for a chart a paying user looks at and recognises. This is that layer, it installs in one command, and BSD-3-Clause means it can sit inside a paid ScalpingMate screen, unlike backtesting.py (AGPL) or vectorbt (Commons Clause).

Stars1.5k
LicenceBSD-3-Clause
Latestv0.6.8 (2026-02-16)checked 7 Sep 2026
Written inPython
NeedsPython 3
RunsLocally, on your own machine
Setup effort
1 / 5
Payoff
3 / 5
Good
  • BSD-3-Clause — genuinely shippable inside a commercial feature, which is rare in this corner of the ecosystem.
  • No TA-Lib C library to compile, which removes the classic install wall on a plain VPS.
  • The column-access API is small enough that Claude Code will get it right on the first attempt.
Watch for
  • Seven months since the last release and a small maintainer team — stable rather than abandoned, but verify before it becomes load-bearing.
  • Indicators are conveniences, not edges. Computing fifty of them is not a strategy, and it is an easy way to fool yourself into feeling productive.
  • On three years of one-minute EURUSD bars, casual column access recomputes far more than you expect. Cache deliberately.
Replaces

This is that layer, it installs in one command, and BSD-3-Clause means it can sit inside a paid ScalpingMate screen, unlike backtesting.py (AGPL) or vectorbt (Commons Clause).

Works well with

Sits directly beside the existing pandas loading in ScalpingMate.

How to get it

Sits directly beside the existing pandas loading in ScalpingMate.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.