A personal workstation for mainland China stocks
Tick Stock Panel is built for people researching mainland China A-shares. Its vocabulary, data model, screenshots, and documentation assume that audience. The browser interface collects watchlists, screeners, backtests, alerts, market reviews, financial views, and sector analysis around a local store. The README explicitly calls it a learning and research project rather than investment or charting software.
Eighteen included strategies give a new user something concrete to scan, while custom conditions and strategy files leave room for personal rules. Backtesting covers factor analysis and strategy results, with stated support for T+1 settlement, fees, slippage, and stop-loss settings. Monitoring can watch strategy signals, individual stocks, prices, or exchange-defined abnormal moves. The software does not place trades, which is a sensible boundary for a young personal project.
Data stays in local Parquet and DuckDB files. Polars handles much of the calculation work, and the React interface talks to a FastAPI backend. TickFlow is the default source, but the project also documents YAML sources and plugin development.
What happened when we ran it
We tested commit 38186e2 in a fresh, unprivileged Debian container with 3 CPUs and 8 GB of RAM. The detected Python project was under ./backend/. The checkout was 18.7 MB and contained 588 files with about 150,224 source lines. Installation succeeded in 14 seconds: 33 packages occupied 36 MB. The build also succeeded, taking 6 seconds.
The test result was much weaker. Pytest exited with failure after 80 seconds. Of 203 tests, 77 passed, 21 failed, and 105 hit collection or setup errors. The end of the log named files covering strategy monitoring, parameter normalization, realtime refresh, the strategy registry, scoring, watchlist joins, OCR, groups, and realtime splitting. Those filenames show a wide failure surface, but the supplied log tail does not establish one cause, so we will not blame missing system packages or application defects without evidence.
Pip-audit found 0 known vulnerabilities in the installed Python packages. The repository had two CI workflow files and a tests directory. Our harness reported no Dockerfile in the detected backend project, while the current root documentation offers a Docker Compose build for the full frontend and backend.
Setup is more than starting a container
The development instructions require Python 3.11 or newer, Node 20 or newer, uv, and pnpm. A helper script installs dependencies and starts both servers. Docker Compose is the shorter deployment route, with the built frontend served from the backend container.
A blank TickFlow API key permits historical daily bars through a free endpoint, with current-day data arriving one or two hours after market close. Paid feed capabilities add wider realtime coverage, minute bars, order-book data, and financial data. An OpenAI-compatible endpoint or Ollama is optional for generated strategies and AI analysis. The documented Codex mode reads a host Codex login directory through a read-only container mount, so operators should enable it only on a trusted machine.
The data pipeline is the part the phrase "zero maintenance" understates. A first useful session requires downloading market history and building enriched tables before screeners and backtests have material to work with. Vectorbt arrives through an optional backtest dependency group. Older processors without AVX2 or FMA need a separate Polars-compatible extra. The deployment guide also says the stock-sdk scraper is excluded from default Docker builds because of third-party terms and market-data copyright concerns. The root README says that plugin is included, so the two documents currently disagree.
Data correctness needs your attention
Open reports touch the numbers a trader would act on. Issue #195 says A-share volume is expressed in lots while ETF volume is expressed in shares. A consumer that applies the stock conversion to an ETF can be wrong by a factor of 100. Other open ETF reports cover an empty single-symbol factor-backtest view and unsupported screener fields. ETF support exists, but it should be treated as unfinished.
Long data jobs have operating risks too. Issue #189 documents pipeline work that kept reporting progress yet was marked failed after a fixed 20-minute timeout. The report also warns that retrying may overlap the still-running worker and write the same files. Issue #174 describes a Windows full rebuild freezing after multiyear history expanded the working set. These are precise reports with reproductions, and both remain open.
Commercial adopters face a separate stop sign. The repository contains the standard MIT license text, including permission to sell copies, while the README says commercial use is strictly forbidden. A README sentence does not clarify how the author intends the MIT grant and restriction to coexist. A business should obtain written clarification before building on it.
Active development has not become a stable release
The last push was August 23, 2026, the same day a new ETF filtering issue was opened. The repository had 3,472 stars and 29 open issues and pull requests combined. Filtering that queue produced 18 issues and 11 pull requests, which shows both user reporting and ongoing code work. GitHub's latest-release endpoint returned 404, so there is no published GitHub release to use as a stable upgrade point.
The documentation is substantial for such a young repository. Separate Chinese guides cover deployment, configuration, features, strategy authoring, data-source plugins, mining, and market phases. English readers receive no equivalent path, and the stock-sdk disagreement shows why even Chinese readers should compare the root README with the deeper deployment guide.
For a Chinese-speaking hobbyist, this is an unusually broad A-share research bench with understandable local storage and room for custom feeds. Keep it away from automatic order execution, verify ETF units, watch long pipeline jobs, and pin a commit you have tested. The failed suite and missing release boundary make those precautions part of normal use, not optional hardening.

