tick-stock-panel README

The project's README from github.com/shy3130/tick-stock-panel. As one markdown file: README.md.

TSP--A股智能量化工作台

声明: 本项目为个人开源, 非隶属任何官方项目

自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台

多数据源能力路由 · 分钟级策略执行 · 全时段异动监控 · AI 辅助研究

License: MIT Engine: Polars Data: 多源插件化 · 能力路由 Deploy: Docker Build: Docker CI GitHub stars

快速开始 · 核心功能 · 技术架构 · 配置 · 完整文档


本项目以个人开源为主进行开发维护,数据源插件化,可任意接入第三方数据源。仅供学习研究使用,严禁商业用途。

⚠️ 小白请绕路,本开源项目谨作为本地量化提供解决思路与方案,不作为投资软件或者看盘软件。

明确不做:不对标同花顺 / 通达信,不内置「AI 荐股 / 涨停预测」。

有任何项目问题可邮件联系 [email protected]。

觉得有用可以点个 Star


✨ 核心功能

模块 一句话 详见
🔀 能力路由 多数据集(日K/除权/实时/分钟/盘口/财务,持续扩展)按源能力独立路由,任选组合 custom-data-source.md
🔍 选股引擎 25 个内置策略 + 分钟策略 + 自定义信号 + AI 生成,Polars 毫秒级扫全 A 股 strategy.md
📊 指标流水线 MA/EMA/MACD/RSI/KDJ/布林/量比等 68 列指标与信号,一次扫表落盘 enriched Parquet features.md
🧪 回测研究 因子/策略/分钟回测 + 财务快照因子(点时口径),T+1/费用/滑点约束,评分策略附带因子归因 features.md
🔬 因子平台 DSL 自定义因子(编辑器 25 算子点选/试算/版本) + 检验/组合,与策略双向联动(一键生成策略/触发器引用因子/回测归因) factor-platform-plan.md
⛏️ 因子挖掘 嵌套样本外搜索多因子排名组合,与自有策略对照,候选库显式发布、永不自动上线 mining.md
🌡️ 市场环境 情绪周期 6 阶段(连板梯队驱动)+ 概念/行业主线排名,与 5 档环境分并存 market-phase.md
🚨 异动监控 竞价/盘中/偏移三类异动一页覆盖:同花顺风向标 + 当日信号聚合 + 交易所偏离值口径 —
📡 监控中心 四类监控(策略/个股信号/价格/异动),多条件 AND/OR + 语音播报 + 飞书推送 features.md
📈 个股分析 9 类关键价位 + AI 四维分析(技术/基本面/财务/消息面) features.md
🏆 连板梯队 连板层级统计 + 概念涨幅轮动 + 盘后 AI 复盘(龙虎榜/盘前风向标注入) + 炸板/翘板预警 features.md
🧰 数据扩展 数据源插件化(TickFlow/fuyao/stock-sdk + YAML 自定义源),扩展字段配成一级页面同台分析;时序表(如人气排行)支持按日历史回补,接口配日期参数即可逐日补齐 custom-data-source.md
📦 主要页面与功能

📊 行情总览

  • 看板 Dashboard — 市场情绪评分 + 涨跌/成交额榜单 + 概念/行业领涨领跌(点击板块直达成分股,领涨股带涨跌幅) + 大盘异动事件流,一日全貌
  • 自选 Watchlist — 自选股池,多分组管理(M:N),表格/卡片双视图,换手/量比/RSI 等实时指标,按档位分流实时刷新
  • 指数 Indices — 沪深指数浏览与同步

🔍 选股与回测

  • 策略 Screener — Polars 毫秒级扫描全 A 股,日线/分钟策略统一单池,按策略声明周期自动路由执行
  • 回测 Backtest — 四种研究视图:
    • 因子回测 — IC/IR、分层收益、多空组合,62+ 因子目录先筛掉无效指标
    • 策略回测 — 净值曲线、回撤、夏普、胜率、盈亏比、蒙卡回撤,T+1/手续费/滑点/止损,SSE 流式进度;评分因子策略附带「因子归因」(胜/败单入场信号日因子对比)
    • 分钟策略回测 — 逐交易日回放信号、分钟收盘入场,分钟级成交明细
    • 验证 — 参数敏感性与滚动样本外
    • 研究闭环:结果导出 CSV(概要/净值/交易明细/分标的统计) → 保存候选 → 一键载入复测
  • 因子 Factors — 检验/因子库/编辑器/组合四 tab:IC·分层·Newey-West 检验、自定义 DSL 因子(25 算子点选、双语字段、我的因子模板)、版本与生命周期管理;因子库可一键生成排名策略,策略触发器可直接引用因子条件
  • 挖掘 Mining — 嵌套样本外因子与策略挖掘:训练区间因子方向重估 + 相关性去重 + 多因子排名组合搜索,自有策略作对照轨;候选入库,显式确认后才发布,永不自动上线

📈 个股与板块分析

  • 个股分析 Stock Analysis (Beta) — 日K + 9 类关键价位 + AI 四维分析(技术/基本面/财务/消息面)
  • 财务分析 Financials — 利润表/资负表/现金流/关键指标(多源并集合并,fuyao 财务四表适配) + AI 解读
  • 概念分析 / 行业分析 — ths 维度涨幅轮动矩阵 + 领涨/领跌主线 + 个股穿透
  • 市场环境 Regime — 情绪周期 6 阶段(冰点/启动/主升/高潮/退潮/修复,连板梯队驱动,EMA 平滑 + 2 日确认)+ 概念/行业主线排名,与 5 档环境分并存
  • 连板梯队 Limit Up Ladder — 连板层级统计 + 概念/行业分布 + 封单监控(可切换连跌梯队)

🔔 监控与复盘

  • 监控中心 Monitor — 策略/个股信号/价格/异动四类规则,支持自选分组作用域,盘中实时弹窗 + 语音播报(播报个股名称与信号) + 触发记录持久化
  • 持仓提醒 Lots — 记录个股/ETF 买入批次,自动生成止盈止损/到期监控规则
  • 信号库 Signals — 内置预计算信号 + 自定义条件信号(含因子条件与 AI 生成),供策略触发器/回测/监控统一取用
  • 异动监控 Abnormal Moves — 按交易时间线三 tab:
    • 竞价异动 — 同花顺盘前风向标(含当日/次日真实收益对照、追高风险标记)+ 全市场竞价扫描(待采集任务)
    • 盘中异动 — 涨停/炸板/翘板/跌停/新高/新低/放量当日信号聚合,零新增采集
    • 偏移异动 — 交易所异动偏离值口径(主板 3 日 ±20%、创业板/科创板 ±30%、北交所 ±40%;10 日 +100%/−50%、30 日 +200%/−70%),实时接近度
  • 复盘 Review (Beta) — 盘后 AI 自动生成市场复盘,注入龙虎榜资金动向与盘前风向标对照;可定时执行、推送飞书、下载 Markdown

🗄️ 数据与扩展

  • 数据 Data — 本地数据画像与同步状态(维表/日K/除权/Enriched/指数/ETF/分钟K/财务),盘后管道与历史扩展
  • 扩展分析 (动态菜单) — 把任意第三方/扩展数据字段配成一级菜单,与内置数据同台分析
  • 设置 Settings — 数据源与能力检测(能力路由矩阵、档位徽章)、AI 接口、实时监控、扩展页面、菜单与系统设置

📸 界面预览

看板 Dashboard 策略 Screener
看板页面 策略页
回测 Backtest 挖掘 Mining
回测页 挖掘页
监控中心 Monitor 连板梯队 Limit Ladder
监控中心 连板梯队页
概念分析 Concept 自选 Watchlist
概念分析 自选页

📸 查看更多界面截图 »


🏗️ 技术架构

分层总览

flowchart TB
    subgraph DATA["数据源层 · 插件化"]
        direction LR
        D1["TickFlow SDK"] ~~~ D2["fuyao<br/>同花顺 REST"] ~~~ D3["stock-sdk"] ~~~ D4["YAML 自定义源"] ~~~ D5["+ 更多插件…"]
    end

    subgraph ROUTE["能力路由层"]
        direction LR
        R(["多数据集 · 按能力独立路由 · 档位探测"])
    end

    subgraph STORE["存储层"]
        direction LR
        ST1[("Parquet 分区表")] ~~~ ST2[("DuckDB")] ~~~ ST3[("JSON 按日缓存")]
    end

    subgraph CALC["计算层 · Polars"]
        direction LR
        C1["指标流水线"] ~~~ C2["复权与信号"]
    end

    subgraph RES["研究层"]
        direction LR
        G1["因子引擎"] ~~~ G2["回测引擎"] ~~~ G3["因子挖掘"]
    end

    subgraph SVC["应用层 · FastAPI"]
        direction LR
        S1["REST · SSE"] ~~~ S2["监控引擎"] ~~~ S3["任务调度"] ~~~ S4["交易日探针"]
    end

    subgraph FE["呈现层 · React 18"]
        direction LR
        F1["功能页面"] ~~~ F2["图表可视化"] ~~~ F3["实时推送"]
    end

    subgraph EXT["二次开发与扩展 · 贯穿各层的插槽"]
        direction LR
        X1["自定义策略"] ~~~ X2["自定义信号"] ~~~ X3["扩展分析页面"] ~~~ X4["AI 接口"]
    end

    DATA --- ROUTE
    ROUTE --- STORE
    STORE --- CALC
    CALC --- RES
    RES --- SVC
    SVC --- FE
    FE ~~~ EXT

    classDef fe fill:#eef2ff,stroke:#6366f1,color:#312e81
    classDef svc fill:#ecfeff,stroke:#06b6d4,color:#164e63
    classDef res fill:#fff7ed,stroke:#f97316,color:#7c2d12
    classDef calc fill:#f0f9ff,stroke:#0ea5e9,color:#0c4a6e
    classDef store fill:#ecfdf5,stroke:#10b981,color:#064e3b
    classDef data fill:#fdf2f8,stroke:#ec4899,color:#831843
    classDef pluginSlot fill:#fdf2f8,stroke:#ec4899,color:#831843,stroke-dasharray:5 4
    classDef route fill:#faf5ff,stroke:#8b5cf6,color:#6b21a8,stroke-width:2px
    classDef ext fill:#f8fafc,stroke:#94a3b8,color:#334155,stroke-dasharray:5 4

    class F1,F2,F3 fe
    class S1,S2,S3,S4 svc
    class G1,G2,G3 res
    class C1,C2 calc
    class ST1,ST2,ST3 store
    class D1,D2,D3,D4 data
    class D5 pluginSlot
    class R route
    class X1,X2,X3,X4 ext

    style FE fill:#f5f3ff,stroke:#c7d2fe,color:#3730a3
    style SVC fill:#ecfeff,stroke:#a5f3fc,color:#155e75
    style RES fill:#fff7ed,stroke:#fed7aa,color:#9a3412
    style CALC fill:#f0f9ff,stroke:#bae6fd,color:#075985
    style STORE fill:#ecfdf5,stroke:#a7f3d0,color:#065f46
    style ROUTE fill:#faf5ff,stroke:#ddd6fe,color:#6b21a8
    style DATA fill:#fdf2f8,stroke:#fbcfe8,color:#9d174d
    style EXT fill:#f8fafc,stroke:#94a3b8,color:#334155,stroke-dasharray:7 5

关键机制

机制 说明
能力路由矩阵 各数据集按源声明能力独立路由,注册表集中定义、可扩展:TICKFLOW 档位探测(None/Free/Starter/Pro/Expert)+ 插件源能力声明,fail-closed(声明 pct_unit 未声明即拒)。同一数据集可随时换源,指标与回测口径不变
交易日探针 fuyao 交易日历(确定性,含调休)→ tickflow 全市场行情时间戳探针(OR 语义)→ 工作日兜底;节假日自动停掉实时轮询与分钟增量,零无效请求
财务多源合并 按 (symbol, period_end) 报告期累积,多源取并集、逐列按公告日取最新(PIT);公告前一律空值,绝不填 0
非路由数据集直连 龙虎榜/盘前风向标/交易日历等 fuyao 专有能力不进路由矩阵,由独立服务直连消费——按日 JSON 缓存(历史不可变)、交易日回退、四态降级
回测执行隔离 回测在 spawn worker 子进程运行,持久 run ID,刷新/切页重连不丢任务;子进程结果消息经锁保护回传
分层缓存 enriched 读取时现算指标(存储仅 15 列基础数据,现算 68 列指标与信号)+ 进程内快照缓存;扩展字段按日分区快照,页面即配即用

技术栈

层 选型
后端 FastAPI · Pydantic v2 · APScheduler · sse-starlette
数据 Polars(计算)· DuckDB(查询)· Parquet(存储)
回测 自研仓位模拟引擎(T+1/费用/滑点/分钟回放)· vectorbt(部分路径)
数据源 TickFlow 官方 SDK · fuyao(同花顺 REST) · 插件化扩展(stock-sdk 示例插件 · YAML 自定义源)
AI(可选) OpenAI 兼容接口(DeepSeek / 通义 / Ollama 等)
前端 React 18 · Vite · TypeScript · Tailwind · Tanstack Query · Lightweight Charts(TradingView 开源) · ECharts · dnd-kit
部署 Docker 两阶段构建,前端 dist 拷进后端镜像,单容器

🚀 快速开始

前置依赖(仅方式 D 需要):Python ≥ 3.11 · Node ≥ 20 · uv · pnpm(npm i -g pnpm)

有 Docker 直接看 方式 A,一条命令拉现成镜像;完全不想碰命令行:看 方式 C,让本机 AI 帮你部署

方式 A:GHCR 现成镜像(免本地构建,多数用户推荐)

本项目每次推送都由 GitHub Actions 自动构建多架构镜像(linux/amd64 · arm64)并发布到 GHCR,拿来即用,本地无需装 Python / Node,也不用现场 build:

docker run -d --name tsp -p 3018:3018 -v ${PWD}/data:/app/data ghcr.io/shy3130/tick-stock-panel:latest
# 打开 http://localhost:3018

方式 B:Docker Compose(本地构建,全套挂载)

cp .env.example .env
docker compose up --build
# 打开 http://localhost:3018

Docker 镜像内置固定版本的 Codex CLI,Compose 会将主机 ${HOME}/.codex 只读挂载到容器,因此主机需先完成 Codex 登录。若主机 Codex 使用 loopback local-access provider,容器会保留实际端口并自动将主机名映射为 host.docker.internal。需要覆盖镜像内版本时可设置构建参数:

CODEX_CLI_VERSION=0.144.3 docker compose up --build

Windows 用户注意:纯 PowerShell / CMD 下 HOME 环境变量通常未设置,会导致挂载路径解析失败、容器读不到 Codex 登录态。请在 .env 中显式指定主机 Codex 目录:

# PowerShell 示例(实际路径以本机为准)
echo "CODEX_HOME_HOST=C:\Users\你的用户名\.codex" >> .env

Codex CLI 模式允许 TickFlow 容器读取本机 Codex 登录凭据,仅应在受信任的本机环境启用。凭据目录以只读方式挂载,不会写入镜像。

镜像默认不含 stock-sdk 插件(合规考虑);确需启用执行 docker compose build --build-arg INCLUDE_STOCKSDK=1 后再 docker compose up -d,详见 docs/deployment.md。

📖 Docker 进阶、老 CPU 兼容、访问密码设置等见 docs/deployment.md。

方式 C:本机 AI 代部署(AI玩家首选)

装一个本机 AI 编程助手(Trae / Codex / OpenCode / ZCode / WorkBuddy 等,任选其一),新建一个空文件夹用助手打开,把下面这段话原样发给它:

帮我部署开源项目 https://github.com/shy3130/tick-stock-panel 到本机:
克隆到当前文件夹;有 Docker 优先拉 ghcr.io/shy3130/tick-stock-panel:latest 现成镜像,没有就走 Dev 模式;
缺少的依赖(Docker / Python / Node)帮我一起装好;
最后告诉我浏览器打开哪个地址、需要填哪些 Key。

AI 会自动完成克隆、装依赖、启动服务,完成后浏览器打开 http://localhost:3018 即可;TICKFLOW_API_KEY 等配置按 AI 提示填,详见 配置。

方式 D:Dev 模式(二次开发推荐)

cp .env.example .env       # 按需填 TICKFLOW_API_KEY(留空 = None 模式)
./dev.sh                   # Windows: .\dev.ps1

自动检�

tick-stock-panel (shy3130/tick-stock-panel)

monitoring
Searching Database…

What is this?TSP is a self-hosted, zero-ops quantitative trading workbench for China's A-share stock market that combines stock screening, real-time anomaly monitoring, and strategy backtesting, with optional LLM-assisted analysis.
Is this a trading bot or a research and screening tool?It is not an automated trading bot that places orders or predicts limit-ups; it is a self-hosted dashboard (FastAPI backend + React frontend) for screening, backtesting, and monitoring A-share stocks.
How do I get it running?The easiest way is pulling the prebuilt multi-arch GHCR image and running it with Docker (no build needed); Docker Compose is available for a full local build, and a Dev mode exists for active development.
Do I need Python or Node installed?Only for Dev mode (method D), which needs Python >=3.11, Node >=20, uv and pnpm; the Docker-based methods (A/B/C) need nothing but Docker itself.
Can I use this for a commercial trading service?No — despite being MIT-licensed, the README explicitly limits the project to personal learning and research and forbids commercial use; it's also not meant as investment or stock-picking software.
What LLM providers does the AI assistance support?Any OpenAI-compatible endpoint, including DeepSeek, Alibaba's Tongyi (Qwen), and local Ollama models.
What kind of built-in strategies does it ship with?25 built-in screening strategies plus minute-level strategies, custom DSL signals, and AI-generated strategies, scanned across the whole A-share market in milliseconds using Polars.
Can I plug in my own data sources?Yes — data sources are plugin-based (TickFlow SDK, fuyao/THS REST, or a custom YAML source), and extra fields can be wired straight into a first-class analysis page.
Does the AI feature pick stocks for you?No — the project explicitly avoids built-in 'AI stock picks' or 'limit-up predictions'; AI is used for strategy drafting, four-dimensional stock analysis, and end-of-day review summaries instead.
Creator
shy3130
Size
23.8 MB
Stars
5.9K
Age
4mo
Commits · 90 Days