// the find
shy3130/tickflow-stock-panel
TSP自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台 | 基于 TickFlow 数据源 | LLM能力驱使策略定制+个股分析+复盘 | 自由接入第三方数据源与个性化扩展数据 | 个人开源 ,非TickFlow官方项目
A self-hosted quantitative workbench for Chinese A-shares: screener, backtesting, real-time monitoring, and LLM-generated analysis, all in one Docker container. Built on FastAPI, Polars, DuckDB, and Parquet on the backend with a React 18 frontend. Target audience is individual retail traders who want a local alternative to the commercial Chinese trading terminals.
The Polars + DuckDB + Parquet stack is the right call for this domain — scanning the full A-share universe (~5000 stocks) with Polars is genuinely fast and the columnar storage keeps the data footprint reasonable without spinning up a separate database. The backtest engine models T+1 settlement, commission, slippage, and stop-loss, which are the four things hobby quant backtests most often omit, making results less fictional. The custom data source plugin system via YAML is well thought out — you can attach third-party data feeds without forking the backend, which matters a lot for a market where data licensing is fragmented. The test suite is unusually thorough for a solo project: backtest engine edge cases, screener cache, strategy code generation, and walk-forward validation all have coverage.
TickFlow is a single point of failure for the entire data pipeline. The 'None mode' only gives you historical daily K-line data — everything else requires a paid TickFlow subscription, and if the service changes pricing, breaks its API, or shuts down, your workbench goes with it. The author is also embedding TickFlow referral links in the README badges, which is worth knowing. vectorbt forces a pandas island inside an otherwise Polars codebase: any strategy running through the backtest engine crosses a Polars-to-pandas conversion boundary, which will hurt on large date ranges or portfolio-level backtests. The AI analysis features are a thin prompt wrapper over any OpenAI-compatible endpoint with no validation of output quality for financial reasoning — you can aim it at a weak model and get confident-sounding technical analysis that is structurally plausible and factually wrong. The monitoring engine uses APScheduler polling rather than an event-driven architecture, so during high-volatility sessions when you most need alerts, you are still waiting for the next tick.