🧭 Decision Guide
Why trending now: The README combines millisecond Polars scans across all A-shares, 25 strategies, minute backtesting, routing for 6 dataset types, and 18 read-only AI tools. Together with 44 new stars today, 5,129 total stars, and a daily GitHub Trending appearance, this indicates current interest, but the materials cannot prove one specific cause.
Try it if you
-
You want to scan the entire A-share market locally with Polars and place daily and minute strategies in one Screener.The README sections “Core Features” and “Screening and Backtesting” state that Polars scans all A-shares in milliseconds and that daily/minute strategies use one pool.
-
You need to research IC/IR, layered returns, equity curves, and minute-level trade details together.The README section “Backtest” lists factor, strategy, and minute-strategy backtests, including IC/IR, equity curves, and minute trade details.
-
You want to replace data sources while keeping indicator and backtest definitions consistent.The README sections “Why TSP” and “Technical Architecture” describe a capability-routing matrix for 6 dataset types and pluggable data sources.
-
You need local data Q&A and accept configuring AI_API_KEY to use 18 read-only tools.The README section “AI Assistant” lists 18 read-only tools; “Configuration” states that leaving AI_API_KEY empty disables AI.
Skip it if you
-
You intend to use it as an investment product, market-viewing terminal, or AI stock-picking tool.The README’s “Important” notice explicitly says it is not an investment or market-viewing product and does not include AI stock recommendations or limit-up predictions.
-
You require official version releases and a clearly documented release-maintenance cadence.Project metadata reports 0 releases and “No releases”; the README also says it is primarily maintained as a personal open-source project.
-
You require immediate intraday data but can use only the None/Free data tiers.The README’s “Quick Start” section states that same-day data in None/Free mode is available 1–2 hours after market close.
-
You need the AI assistant to keep working without a key or with a provider that lacks tool calling.The README’s “AI Assistant” section says it fails closed when no AI key is configured or when using providers such as Codex CLI that do not support tool calling.
Requirements
- For Dev mode, copy `.env.example` to `.env` from the repository root and optionally configure `TICKFLOW_API_KEY`, `AI_API_KEY`, and `PORT=3018`.
- The README requires starting development mode with `./dev.sh`; Windows uses `./dev.ps1`.
- Leaving TICKFLOW_API_KEY empty enables None mode, which the README describes as providing free historical daily K-line data.
- Leaving AI_API_KEY empty disables AI; setting it enables strategy generation and the AI assistant.
- The README lists a Docker single-container self-hosted option, but the provided materials do not include its startup command.
First step (verbatim from README)
cp .env.example .env # 按需填 TICKFLOW_API_KEY(留空 = None 模式)
Watch out
-
Real-time polling and minute increments stop on holidays and non-trading days; it should not be treated as continuous workday collection.The README’s “Trading-Day Probe” section says holidays automatically stop real-time polling and minute increments.
-
Although backtests provide SSE streaming progress, tasks run in spawn worker subprocesses.The README’s “Backtest Execution Isolation” section describes spawn workers, persistent run IDs, and lock-protected result delivery.
-
Extension data fields use daily partitioned snapshots and should not be interpreted as real-time fields.The README’s “Layered Cache” section states that extension fields use daily partitioned snapshots.
-
The AI assistant can be uninstalled by deleting its directories, but its AI features depend on AI_API_KEY and tool-calling support.The README’s “AI Assistant” section states both that it is decoupled and removable by directory deletion, and that it fails closed without a key.
Alternatives
-
Docker Compose:Use this when you do not want the Dev-mode or local-build workflow; see the Docker Compose option in the deployment documentation.docs/deployment.md
-
Prebuilt GHCR image:Use this when you want to avoid local builds; the README lists the GHCR image as a ready-to-use deployment method.README “Complete Documentation” and deployment-method sections
Not stated in the README
- The provided README materials do not specify minimum versions for Python, Node.js, Polars, or any database.
- The provided README materials do not specify minimum CPU, memory, disk, or minute-data-scale requirements.
- The provided README materials do not provide complete pricing, quotas, coverage, or rate-limit details for each data source.
- The provided README materials do not establish a direct causal link between 5,129 stars, 44 stars gained today, and Trending.
- Because the provided materials show no formal releases, upgrade, rollback, and version-compatibility policies cannot be confirmed.
💡 Deep Analysis
6
Yes
I will use factor DSL and multifactor search for A-share strategies, and need training periods, rolling out-of-sample validation, and a manual publication boundary; can TSP support this workflow instead of treating mined results as immediately tradable strategies?
Yes, because the README explicitly places mined factor and strategy results in a candidate library and requires confirmation before publication, rather than automatically connecting them to monitoring or execution.
- The factor platform supports DSL, IC/IR, layered returns, Newey-West tests, factor portfolios, and nested out-of-sample search.
- The Mining page re-estimates factor direction in the training period, removes correlated factors, searches multifactor ranking combinations, and provides a user strategy as a control track.
- The README states that candidates are stored and published only after explicit confirmation, “never automatically brought online,” matching your required publication boundary.
- Backtesting also includes parameter sensitivity and rolling out-of-sample validation, with candidate saving and one-click re-testing.
However, providing validation workflows does not automatically eliminate data snooping, survivorship bias, or overfitting; the README offers no statistical guarantee for research results.
- README “Factor Platform”: IC/IR, layered returns, Newey-West tests, and custom factor DSL
- README “Mining”: nested out-of-sample factor and strategy mining; factor-direction re-estimation in the training period
- README “Mining”: candidates are stored and published only after explicit confirmation, never automatically deployed
- README “Backtest Research”: parameter sensitivity and rolling out-of-sample validation; save candidates and re-test with one click
Yes
I have only one local computer and want Docker-based Parquet storage, daily after-hours pipelines, and auction/intraday alerts; is TSP suitable for this self-hosted, non-automated-trading deployment?
Yes, provided that you accept a continuously running local service, provider-dependent data capability, and position it as a research and monitoring tool rather than an execution system.
- The README defines TSP as a self-hosted A-share screening, monitoring, and backtesting workbench, with all data stored in local Parquet files.
- Quick Start requires capability detection and manually running the after-hours pipeline; in None/Free mode, same-day data is generally available 1–2 hours after the market closes.
- The trading-day probe handles adjusted holidays and stops real-time polling and minute increments on holidays, which fits persistent local use.
- Monitor supports auction, intraday, and deviation events, with pop-up alerts, voice announcements, Feishu notifications, and persisted trigger records.
The limitation is explicit: it is not positioned as a replacement for Tonghuashun, Tongda Xin, or an automated trading system; sleep, network failures, and rate limits may cause missed alerts.
- README “Why TSP”: self-hosted; all data stored in local Parquet
- README “First Use After Startup”: run the after-hours pipeline; same-day data available 1–2 hours after close
- README “Technical Architecture”: trading-day probe; stop real-time polling and minute increments on holidays
- README “Abnormal Monitoring” and “Monitor”: auction/intraday/deviation events; pop-up, voice, and Feishu notifications
- README “Important”: not a replacement for Tonghuashun/Tongda Xin; no AI stock recommendations or limit-up predictions
Yes
I have configured `AI_API_KEY`, but only accept read-only answers based on local real data and need to inspect tool parameters, latency, and result summaries; does TSP’s AI assistant meet these constraints?
Yes, because the AI assistant is designed as a local-data analysis extension rather than an automated recommendation or order-execution component.
- The README’s “AI Assistant” lists 18 read-only tools covering stocks, the market, sectors, watchlists, holdings, signals, strategies, and factors.
- Each call exposes the tool name, parameters, latency, and result summary, while every response includes risk and data-definition notices, matching your auditability requirement.
- The project explicitly converts trading-decision questions into technical status, financial status, key levels, risk factors, and conditional scenarios instead of issuing buy or sell instructions.
- Without
AI_API_KEY, or with a provider that lacks tool calling, it fails closed rather than silently generating an answer.
However, the model may still misunderstand natural language or summarize incompletely; the README also does not define privacy and transfer boundaries when third-party model services are used.
- README “AI Assistant”: 18 read-only tools covering stocks, the market, sectors, watchlists, holdings, signals, strategies, and factors
- README “Interaction Design”: tool name, parameters, latency, and result summaries can be expanded for verification
- README “AI Assistant”: no buy or sell instructions; responses are converted into objective states, risks, and conditional scenarios
- README “AI Assistant”: fail-closed without an AI key or tool-calling support
- Project insights “Usage Limitations”: AI may incur external model costs and involve third-party model services
Yes
I already process the full A-share market with Python and Polars, and need both daily stock screening and minute-strategy backtesting; can TSP reduce duplicated code across data, indicators, and backtests?
Yes, because it connects synchronization, indicator calculation, screening, and backtesting through a shared enriched-data pipeline instead of implementing data handling separately in every page.
- The README section “Why TSP” states that screening, backtesting, monitoring, and review share one enriched data definition.
- “Core Features” lists about 68 indicator and signal columns, 25 built-in strategies, and one execution pool for daily and minute strategies.
- Backtesting includes T+1, fees, slippage, stop-loss, trade details, and SSE progress; minute backtests replay signals day by day.
- The architecture uses Polars for scanning, Parquet for local storage, and spawn worker processes for isolated backtest execution.
It is not a ready-made Python strategy library, however: custom strategies, field contracts, and data-source integration still require understanding the project’s data model.
- README “Why TSP”: one enriched data definition across screening, backtesting, monitoring, and review
- README “Core Features”: 25 built-in strategies; 68 indicator and signal columns; factor, strategy, and minute backtesting
- README “Technical Architecture”: Polars; local Parquet; backtests run in spawn worker processes
- Project data: Python as the main language; Polars, backtesting, and quantitative-finance topics
Yes
I build custom A-share analysis pages with TypeScript/React and want to add third-party fields plus a removable AI assistant; can TSP’s extension mechanism support zero core-file modifications and independent unloading?
Yes, because the project defines separate extension boundaries for backend routes, frontend pages, data fields, and the AI assistant.
- The README’s “Technical Architecture” says
app/custom/routes are auto-discovered and registered at startup, whilesrc/custom/*/extension.tsxpages are mounted into frontend slots at build time. - Incompatible versions or setup failures are isolated and skipped; deleting the directory removes the extension without modifying core files.
- “Data and Extensions” allows third-party or extension fields to become top-level menus and stores historical snapshots by day.
- The AI assistant is explicitly a reference extension: its backend and frontend are separate, and it fails closed when
AI_API_KEYis absent or the model lacks tool-calling support.
This is friendly to React/TypeScript developers, but the README does not provide the complete extension API, type definitions, or compatibility matrix, so source and documentation review are still required.
- README “Technical Architecture”: automatic discovery of `app/custom/`; automatic mounting of `src/custom/*/extension.tsx`
- README “Fully Decoupled Extensions”: incompatible versions or setup failures are skipped; deleting the directory unloads the extension
- README “Data and Extensions”: extension fields can become top-level menus; historical backfill by day
- README “AI Assistant”: fully decoupled extension; fail-closed without an AI key
- Project data: about 3,411,964 lines/bytes attributed to TypeScript; React, FastAPI, and self-hosted topics
It depends
I need daily bars, minute bars, financials, and abnormal-move data while provider permissions may change; can TSP’s capability-routing matrix let me switch sources without rewriting indicator and backtest logic?
It depends: the architecture is suitable for reducing provider coupling, but coverage, permissions, and field quality can still limit practical interchangeability.
- The README’s “Technical Architecture” says six dataset classes are routed independently by provider capability, so sources can be switched while indicator and backtest definitions remain consistent.
- Capability tiers include None, Free, Starter, Pro, and Expert; undeclared critical fields fail closed, such as rejecting an undeclared
pct_unit. - Financial data is PIT-merged by reporting period and announcement date, remaining null before publication; this helps avoid contaminating backtests by filling missing values with zero.
- The README also states that provider coverage, latency, adjustment methods, and permission tiers may differ.
Therefore, it suits researchers who need a replaceable data layer, but does not guarantee equivalent history or real-time capability across providers.
- README “Technical Architecture”: capability-routing matrix; six dataset classes routed independently by source capability
- README “Technical Architecture”: fail-closed; undeclared `pct_unit` is rejected
- README “Financial Multi-Source Merge”: latest value by announcement date; null before announcement, never filled with zero
- Project insights “Common Pitfalls”: provider coverage, latency, adjustment methods, field units, and permission tiers may differ
✨ Highlights
-
Polars scans the entire A-share market in milliseconds with 25 built-in strategies
-
Backtesting covers T+1, fees, slippage, stop-loss, and factor attribution
-
The capability routing matrix independently switches sources for 6 dataset types
-
The AI assistant provides 18 read-only tools and token-by-token streaming output
-
It is personally maintained and currently has no formal releases
🔧 Engineering
-
Dashboard combines sentiment scores, rankings, sectors, and market-event streams
-
Screener uses Polars to scan all A-shares with unified daily and minute strategies
-
Backtest provides factor, strategy, minute-strategy, and out-of-sample validation views
-
Monitor supports four rule types, voice announcements, and Feishu notifications
-
The AI assistant queries local data through 18 read-only tools and displays tool-trace cards
⚠️ Risks
-
The README explicitly limits it to study and research, not investment or market-viewing use
-
It is personally maintained, and the README marks the AI assistant as still in development
-
There are no releases, so upgrade and compatibility boundaries lack release records
-
With None/Free tiers, same-day data becomes available 1–2 hours after market close
👥 For who?
-
Individual developers needing a local quantitative workstation with Python, Polars, and Parquet
-
Quant users researching with DSL, 25 strategies, and 62+ factors
-
Small teams needing self-hosted monitoring, SSE backtest progress, and Feishu notifications