tick-stock-panel
SHA-256Self-hosted A-share quant workbench with unified strategy building, backtesting, real-time monitoring, an LLM assistant, and MCP support, all running in one Docker container.
Smart Download
Download Download Version
v0.3.9 · 252.9 MB
A self-hosted, single-Docker-container quant workbench for China's A-share market: strategy, backtesting, and monitoring in one place.
Core Features
- Strategy engine: custom strategies and signals scanning the entire A-share market in milliseconds
- Unified backtesting with T+1, fees and slippage, sharing the same execution path as live monitoring to avoid look-ahead bias
- Full-session anomaly monitoring covering auction, intraday and deviation alerts, with voice and Feishu push
- AI chat assistant that queries all panel data with auditable, step-by-step tool traces
- Open platform: 65 API endpoints, 12 MCP tools, and six token permission tiers
What It Can't Do
- •For learning and research only: this is not investment or trading software, and the author deliberately offers no AI stock picks or limit-up predictions and does not aim to replace commercial terminals. It ships without market data, so you must connect a compliant third-party data source yourself. It covers the A-share market only, and backtest results are not investment advice.
Use Cases
- Individual quant enthusiasts building a local all-in-one environment for strategy research, backtesting, and watchlist alerting
- Feeding panel data to AI clients via the Open API or MCP server to build custom investment research bots
- Getting real-time intraday anomaly alerts on watchlist stocks pushed to Feishu
Detailed Introduction
TSP (tick-stock-panel) is a self-hosted, zero-maintenance quantitative workbench for China's A-share market, unifying custom strategies, backtesting, factor research, and real-time monitoring behind one consistent data pipeline. It stores only base market data as local Parquet files and computes 68 indicator/signal columns on the fly via a Polars engine, so strategies, backtests, monitoring, and post-market review all share identical results. Backtests run in isolated worker processes with T+1, fees and slippage, and deliberately avoid look-ahead bias. Everything is open: 65 API endpoints with six token permission tiers, 12 MCP tools for plug-and-play AI clients, and an auditable LLM chat assistant. Compared with heavyweight frameworks like vnpy or Microsoft Qlib—which demand complex Python environments—TSP deploys as a single Docker container with zero external databases, and unlike cloud platforms such as JoinQuant, all data stays on your own machine.
Troubleshooting & FAQ (2)
TroubleshootingHow to fix '405 Method Not Allowed' error when using the TSP desktop AI chat assistant?
This is a packaging bug in TSP v0.3.3. The app/custom/* backend extension modules are discovered at runtime via importlib + pkgutil, which PyInstaller's static analysis cannot detect. The packaging/tsp.spec file was missing the datas + hiddenimports declarations for app/custom, so the assistant module was not bundled into the installer, its API routes were never registered, and requests fell through to the SPA catch-all GET route, returning 405.
Diagnosis clues:
- GET http://127.0.0.1:3018/api/custom/assistant/status returns HTML instead of JSON (route not registered)
- _internal/app/custom directory is missing from the install folder, while _internal/app/plugins/fuyao exists
- Other AI features (e.g., settings page connectivity check, post-market review) work normally
Fix: Upgrade to TSP v0.3.5 or later, where the spec file now includes the datas + hiddenimports declarations for app/custom. After upgrading, verify that _internal/app/custom/assistant exists in the installation directory. Download: https://github.com/shy3130/tick-stock-panel/releases/tag/v0.3.5
TroubleshootingWhy is depth5 (five-level order book) not working in a custom YAML data provider and how to fix it?
This was a bug: the custom data source pipeline never routed depth5. The dataset whitelist in config_from_dict() dropped depth5 at parse time, _sanitize_for_yaml() dropped it again when saving, the provider had no field contract or get_depth_batch() method for /depth5, and validate() wrongly treated depth5 as a date-range dataset requiring start/end params. It is fixed in commit 384094b (PR #479) — upgrade to a version containing that commit, then declare datasets.depth5 in your YAML and the panel's custom eltdx_source route will call the adapter's /depth5 endpoint. The fix (backend/app/data_providers/custom/): 1) config.py — add "depth5" to the DatasetName Literal and the datasets whitelist in config_from_dict(); 2) loader.py — add "depth5" to the allowlist in _sanitize_for_yaml(); 3) provider.py — add "depth5": {"symbol", "asks", "bids"} to _REQUIRED, exclude depth5 from the symbols/start/end duplicate-param check like realtime, and add GenericHTTPProvider.get_depth_batch() which chunks symbols by cfg.batch with rpm throttling, requests /depth5 with retry, skips failed batches with a warning, normalizes asks/bids price/volume to numbers, and derives ask_volumes/bid_volumes; 4) test_dataset() gets a depth5 branch that sends only test symbols without dates.
Tags
Getting Started
Download installer
Click the button above to download the installer for your system
Install the software
Double-click the downloaded installer and follow the prompts
Install Docker, then grab the official image or docker-compose setup from the GitHub repository
Run docker compose up -d to start the single-container service
Open the panel in your browser and set a panel password to log in
- Install Docker, then grab the official image or docker-compose setup from the GitHub repository
- Run docker compose up -d to start the single-container service
- Open the panel in your browser and set a panel password to log in
SHA-256 checksum verified
Checksum extracted from GitHub official Release page
SHA256 Checksum
1a6ae6bcdcd3bec010b3f11998e5894a05138f9df630e80b80b076014c0090d0This checksum is extracted from the GitHub Release page. Verify file integrity after download.
All SHA-256 checksums on this platform are extracted from the project's official GitHub Release page, without any modification. You can independently verify them on the GitHub Releases page.
Open Source Transparency
View GitHub SourceUninstall Info
Run docker compose down to stop the service, remove the image with docker rmi, then delete the local data directory containing the Parquet/DuckDB files and configs. Nothing else is left on the system.
No Extra Dependencies
Ready to use after download. No additional runtime required.
Having issues? Check the FAQ below
2 FAQs
Similar Projects
Visual Studio Code (Code - OSS)
A free, open-source code editor by Microsoft with rich extensions, debugging, and Git integration. The most popular developer tool worldwide.
opencode
OpenCode is a free, open-source AI coding agent that helps you write, refactor, and understand code. It offers two built-in modes: a full-access 'build' agent for active coding and a read-only 'plan' agent for safe exploration.
scrcpy
Display and control your Android device from your computer via USB or TCP/IP. No root required, high performance, low latency, supports audio and video mirroring.