自托管 A 股量化工作台:选股、回测与盯盘(tick-stock-panel)

tick-stock-panel(TSP)是一套用 Python 与 TypeScript 写的自托管 A 股量化工作台,把选股、因子检验、回测、异动监控和 AI 复盘放进同一个面板,数据全部落在本地 Parquet。这篇讲清它的部署前提、最短上手路径、八个主要能力、关键参数与真实用户踩过的坑,并给出与同类量化项目的横向对照,帮你判断要不要在自己的机器上跑一套。

做 A 股量化的人常遇到一种割裂:选股用一套脚本,回测用另一套,盘中盯盘又靠第三方软件。三边数据口径对不上,策略在一个环节跑出结果,到另一个环节就对不上号。tick-stock-panel 要处理的就是这种割裂。

tick-stock-panel(TSP)是一套用 Python 与 TypeScript 写的 A 股量化工作台,自托管部署,输入行情数据源,输出选股结果、回测报告与盘中异动提醒。

代码在 GitHub 的 shy3130/tick-stock-panel 上开源,采用 MIT 许可证,仓库语言占比为 Python 60.9%、TypeScript 37.8%。项目把自己定位成自托管、零运维的 A 股量化工作台,数据全部落在本地 Parquet 文件,不依赖外部数据库。项目主页是 tsp.shy313.com。

TSP 量化工作台的面板界面截图

README 首页列了几个数字:61 个开放 API 端点、6 档 Token 权限、12 个 MCP 工具、2400 多项测试。项目同时写明了边界:不对标同花顺与通达信,不内置 AI 荐股和涨停预测,仅供学习研究使用。

第一次用它需要知道的事

  • Docker 是主推的部署形态。仓库根目录有 Dockerfile 与 docker-compose.yml,README 强调单容器、零外部数据库,数据落在本地 Parquet。
  • AI 能力要自备大模型接口。设置页有 AI 接口配置项,GLM 这类走 /v4 的服务曾因程序强制补 /v1 报 404,现已修复。
  • 机器内存别抠得太紧。社区里 2C2G 的机器在点「立即同步」和跑盘后管道时出现过 CPU 与内存打满,根因是偏离列计算在大表上做 join,后来改成了窄窗口计算。
  • 桌面客户端只提供了 Windows x64 与 macOS Apple Silicon 两个安装包,Intel Mac 与 Linux 桌面版的安装包仓库里没有说明。
  • 登录默认走管理员密码。有用户提过想要按角色分权的多用户系统,这条需求已实现。

最短上手路径

  1. 拿到代码或安装包:git clone https://github.com/shy3130/tick-stock-panel,或者直接下载桌面版 TSP-Setup-x64-0.3.4.exe(Windows)与 TSP-macos-arm64-0.3.4.dmg(macOS)。
  2. 准备配置:根目录的 .env.example 是环境变量模板,复制后按需填写;tiers.yaml 对应权限档配置。
  3. 起服务:用仓库自带的 docker-compose.yml 启动,单容器形态。完整步骤写在根目录的中文文档 操作说明书.md 里。
  4. 进设置页配好数据源与 AI 接口,再到数据页点「立即同步」拉数据,需要更长历史时点「同步历史」。
  5. 回设置页点「立即跑盘后管道」,指标与信号会落盘成 enriched Parquet,之后在策略页和回测页就能看到结果。

它实际上能做哪些事

选股、因子与回测

  • 选股引擎:25 个内置策略,可以叠加自定义信号和 AI 生成的信号;用 Polars 扫描全 A 股,README 给出的量级是毫秒级;日线策略与分钟策略统一放在单池里,按策略声明的周期自动路由执行。
  • 指标流水线与因子平台:一次扫表落盘 68 列指标与信号;因子侧提供自定义 DSL,25 个算子点选,IC、分层、Newey-West 检验都在里面,因子库能一键生成排名策略。因子挖掘做样本外搜索与相关性去重,候选只入库,必须显式确认才会发布,不会自动上线。
  • 回测研究:因子回测给 IC/IR、分层收益、多空组合;策略回测给净值曲线、回撤、夏普、胜率、盈亏比与蒙特卡洛回撤,支持 T+1、手续费、滑点、止损,进度用 SSE 流式推送;另有分钟级回测和参数敏感性验证。评分类因子策略附带因子归因,对比胜单与败单在入场日的因子表现。

盯盘与复盘

  • 监控中心:策略、个股信号、价格、异动四类规则,支持 AND/OR 组合与自选分组作用域;触发后弹窗加语音播报(播报个股名称与信号),也能推飞书,触发记录会持久化。
  • 异动监控与市场环境:竞价、盘中、偏移三块分开;偏移沿用交易所偏离值口径。市场环境把情绪周期分成冰点、启动、主升、高潮、退潮、修复 6 个阶段,由连板梯队驱动,再做 EMA 平滑和 2 日确认。盘后复盘由 AI 自动生成,会注入龙虎榜资金动向与盘前风向标对照,可定时执行、推送飞书,也能下载 Markdown。

数据、开放接口与 AI 助手

  • 数据源与扩展:6 类数据集按数据源能力独立路由,换源不改指标与回测口径;第三方或扩展字段能配成一级菜单,和内置数据同台分析;数据页可查看维表、日 K、除权、Enriched、指数、ETF、分钟 K、财务这几类数据的本地画像与同步状态。
  • 开放接口与 MCP:61 个契约化端点,Token 分 6 档权限;MCP 服务器提供 12 个工具,把面板能力交给任意支持 MCP 的 AI 客户端。
  • AI 对话助手:入口有悬浮球、侧栏 AI 徽标和 ⌘K;21 个查询工具覆盖个股、大盘、板块、自选、持仓、信号、策略、因子、数据完整性与扩展数据表;另有 4 个动作工具(生成信号策略、跑回测、加自选、数据补全),写操作先弹确认卡,待执行参数可见,120 秒超时自动取消。这是个可整目录删除的独立模块。

参数速查

  • 策略与指标:25 个内置策略、68 列指标与信号、62+ 因子目录、25 个 DSL 算子。
  • 权限与接口:6 档 Token 权限、61 个 API 端点、12 个 MCP 工具。
  • AI 助手:21 个查询工具、4 个动作工具,写操作确认卡 120 秒超时自动取消。
  • 异动偏离口径:主板 3 日 ±20%;创业板、科创板 ±30%;北交所 ±40%;10 日 +100%/−50%;30 日 +200%/−70%。
  • 情绪周期:6 个阶段,连板梯队驱动,EMA 平滑 + 2 日确认。
  • 配置载体:根目录 .env.example 是环境变量模板,tiers.yaml 对应权限档,操作说明书.md 是随仓库发布的中文文档。

输出与结果位置

  • 指标与信号:一次扫表落盘为 enriched Parquet,数据全部留在本地磁盘,不经过云端。
  • 回测:结果能导出 CSV,分概要、净值、交易明细、分标的统计四类,导出后可保存候选并一键载入复测。
  • 复盘:AI 生成的盘后复盘可下载 Markdown,也能推送到飞书。
  • 监控:触发记录持久化,配合弹窗与语音播报一起看。
  • 开放接口与 MCP:外部程序或 AI 客户端通过 61 个端点和 12 个 MCP 工具取结果。

实际使用中的坑

  1. 小内存机器容易被打满。有用户 2C2G 的服务器点击数据页的「立即同步」后,CPU 与内存直接被占满并持续到第二天;另一例是在 docker 部署成功后执行「设置 → 立即跑盘后管道」,容器内存溢出被 SIGKILL,进程没有留下 Python 异常日志。定位到的根因是 attach_deviation_columns 在约 110 万行全量历史上做 join。现已改为只在最近交易日的窄窗口上计算偏离列,两个 Issue 均已关闭。
  2. Docker 部署后 AI 策略用不了。排查结论是问题不在策略模板,而是 .dockerignore 第 37 行排除了 docs/ 目录,导致镜像里缺少关键文件。属于打包配置问题,已修复。
  3. GLM 配置报 404。原因是 normalize_openai_base_url 函数强制给 base_url 补 /v1,而智谱 GLM 用的是 /v4,拼出了不存在的 /v4/v1/chat/completions。修复思路是让这个函数识别 URL 里已有的版本段。已解决。
  4. 仍开放的两条:一条希望接入 AKShare 的免费财务数据(资产负债表、利润表、现金流量表及财务指标),另一条是要自定义副图。这两条目前还是待解决状态。

替代方案一览

项目适合谁部署方式主要限制什么情况下选它更合适项目地址
tick-stock-panel想在自有服务器上把选股、回测、盯盘放进同一个面板的个人研究者与小团队Docker 单容器(仓库带 Dockerfile 与 docker-compose.yml),另有 Windows x64 与 macOS Apple Silicon 桌面客户端聚焦 A 股,美股等其他市场的适配仓库里没有说明;AI 能力需要自备大模型接口;数据与配置都在本地,换机器要自己搬你需要一条从选股到回测到异动监控再到 AI 复盘的完整链路,并且希望数据留在自己机器上tick-stock-panel
ZhuLinsen/daily_stock_analysis想定时收到 LLM 生成的股票分析结论、不想自己搭面板的投资者仓库没有说明(未逐一核实)更偏「多市场行情 + 实时新闻 + 决策看板 + 自动推送」的形态,自定义策略与因子研究这条链路不在它的仓库简介范围内(未逐一核实)你只需要每天一份分析结论与推送,不需要自己在面板里调策略参数ZhuLinsen/daily_stock_analysis
bbfamily/abu想用一套 Python 量化架构做股票、期权、期货、比特币与机器学习建模的人以 Python 库形态使用(依其仓库定位,未逐一核实)它是量化交易与投资架构,不是带界面的自托管工作台,数据源、界面与盘中监控要自己搭(依据其仓库简介,未逐一核实)你的重点在策略建模与交易执行框架,愿意自己写代码而不是用现成面板bbfamily/abu

tick-stock-panel 的短板在覆盖面:它只做 A 股,想研究美股或其他市场,仓库里没有给出适配路径,这类需求要去多市场方案那边找。它的 AI 复盘与异动监控还依赖外部数据源和大模型接口,不打算配这两样的话,面板里能用的部分会少掉一块。只想要每天一份分析结论的人,也用不着自己搭一套自托管服务。

别踩的合规线

这套东西会同步全市场行情、拉取第三方数据源、批量扫描个股。接入的数据源要挑有正规授权的,自建服务只用于自有资产或已经获得授权的目标。把带 Token 的开放接口直接暴露在公网会带来额外的安全风险,六档权限要按最小必要分配。项目自身也写明仅供学习研究,不作为投资软件或看盘软件。误用除了触及数据源的服务条款,也可能带来平台封禁与当地法律风险。

什么时候值得用它

  • 你在自建一套 A 股研究工作流,愿意为 Docker 和一台常开的机器留出资源,并接受数据落在自己硬盘上。
  • 你的策略需要因子检验、样本外挖掘与 T+1 回测这一整条链路,而不是单点选股。
  • 你希望盘中异动有人替你盯,并且接受把提醒推到飞书或者用语音播报。

焚评:这个项目的量化评分

本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.2 分(满分 10)。下表是各维度的得分:

评分维度得分
热度动量(权重 25%)10.0 / 10
开发活跃(权重 25%)8.8 / 10
社区响应(权重 15%)10.0 / 10
文档质量(权重 15%)10.0 / 10
发布节奏(权重 10%)5.2 / 10
风险控制(权重 10%)10.0 / 10

评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。

内容核验说明

收录理由是它把自托管 A 股量化工作台的真实门槛、能力边界和已知坑点摊开:部署前要备 Docker、常开机器和大模型接口,数据落本地 Parquet,适合愿意自己维护一条从选股到回测、异动监控到 AI 复盘链路的人。需留意,文中能力数字与案例多来自作者公开披露和 Issue,诀.com 未独立验证,小内存机器与外部数据源合规仍需自行核验。

文中 API 端点数、测试数、策略数等指标来自作者公开披露,诀.com 未独立验证;用户踩坑案例来自仓库 Issue 报告,未逐条复现;焚评评分由焚.com 授权引用,未独立核算。项目功能与修复状态以仓库当前版本为准。

项目来源与说明

开源项目:shy3130(shy3130)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库