T

tick-stock-panel

SHA-256
6.2k stars·Developer Tools·SHA-256 checksum verified

Self-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)

Troubleshooting
How 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

GitHub Issue #459
Troubleshooting
Why 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.

GitHub Issue #478

Tags

quantitative-tradinga-sharebacktestingself-hostedllmmcpdockerstock-analysis

Getting Started

1

Download installer

Click the button above to download the installer for your system

2

Install the software

Double-click the downloaded installer and follow the prompts

3

Install Docker, then grab the official image or docker-compose setup from the GitHub repository

4

Run docker compose up -d to start the single-container service

5

Open the panel in your browser and set a panel password to log in

Install Guide
  1. Install Docker, then grab the official image or docker-compose setup from the GitHub repository
  2. Run docker compose up -d to start the single-container service
  3. Open the panel in your browser and set a panel password to log in
File Integrity

SHA-256 checksum verified

Checksum extracted from GitHub official Release page

SHA256 Checksum

1a6ae6bcdcd3bec010b3f11998e5894a05138f9df630e80b80b076014c0090d0

This 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 Source
Environment Guide

Uninstall 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.

Project Info
LicenseMIT
Last Updated2026-10-21 00:42:40
GitHub RepositoryOfficial Website

Having issues? Check the FAQ below

2 FAQs

Similar Projects