finds.dev← search

// the find

shy3130/tick-stock-panel

★ 5,239 · Python · MIT · updated Sep 2026

TSP自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台 | LLM能力驱使策略定制+个股分析+复盘 | 自由接入第三方数据源与个性化扩展数据 | 个人开源

TSP is a self-hosted quant workbench for A-share (mainland Chinese stock market) traders and developers: screener, backtester, real-time anomaly monitor, factor research, and an AI chat assistant, all running as one Docker container on top of Polars/DuckDB/Parquet with a React frontend. It's aimed at someone who already trades A-shares, is comfortable with Docker and a config file, and wants their own local terminal instead of a paid platform or a pile of scripts.

The capability-routing layer is the actual engineering idea here: each data category (quotes, financials, minute bars, etc.) is routed independently based on what a given source declares it supports, and it fails closed if a source doesn't declare something like pct_unit rather than silently computing garbage — that's a real design decision, not boilerplate. Backtests run in a spawned worker subprocess with a persistent run ID, so a page refresh or reconnect doesn't kill a long backtest, which is the kind of detail people usually get wrong on their first pass at a job queue. The plugin system for both backend (`app/custom/`) and frontend (`src/custom/`) is genuinely decoupled — the AI assistant itself is built as a plugin, and removing the directory removes the feature, no core file edits required. Storing only 15 base columns and computing the other ~68 indicator columns on read with an in-process cache is a sensible storage/compute tradeoff for a single-user local tool.

"Self-hosted" is doing a lot of work in the pitch — you still need a TickFlow account (a third-party tiered/paid data SDK, complete with a referral link in the README) and, for anything beyond basic price history, an additional fuyao API key, plus a third key for the AI provider. That's three external dependencies to actually use most of what's advertised. There's no real database: persistence is Parquet partitions, DuckDB, and per-day JSON caches, which is fine for a single local user but leaves no migration story and an unclear concurrency model for things like monitor rules or position tracking that people expect to survive corruption or crashes. It's a one-person project with a large and fast-growing surface area — 25+ built-in strategies, factor mining, minute-level replay, an LLM assistant — and that much feature breadth from a solo maintainer is worth being skeptical of before trusting backtest numbers (T+1, fees, slippage) that could inform real money decisions, even with the disclaimer. Everything is also deeply A-share specific (T+1 settlement, price-limit bands, 龙虎榜 dragon-tiger data), so the interesting architectural pieces (capability routing, the plugin loader) aren't reusable for other markets without ripping out most of the domain logic.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →