TSP:用 Polars 做 A 股选股、回测与监控
一个给个人量化研究者的 A 股本地工作台,把选股、回测和监控用同一套数据口径串起来。
GitHub shy3130/tick-stock-panel 更新 2026-09-26 分支 main 星标 5.1K 分叉 1.3K
Python TypeScript Polars A股量化 FastAPI Parquet 自托管

🧭 决策指南

适合,如果你

  • 你想在本地用 Polars 扫描全 A 股,并把日线与分钟策略放进同一个 Screener。
    README「核心功能」与「选股与回测」写明 Polars 毫秒级扫描全 A 股、日线/分钟策略统一单池。
  • 你需要同时研究 IC/IR、分层收益、净值曲线和分钟级成交明细。
    README「回测 Backtest」列出因子回测、策略回测和分钟策略回测,并包含 IC/IR、净值曲线与分钟成交明细。
  • 你希望替换数据源但保持指标与回测口径不变。
    README「为什么做 TSP」和「技术架构」描述 6 类数据集能力路由矩阵与可插拔数据源。
  • 你需要本地数据问答,并接受 AI_API_KEY 配置后使用 18 个只读工具。
    README「AI 对话助手」写明 18 个只读工具;「配置」写明 AI_API_KEY 留空则关闭 AI。

不适合,如果你

  • 你要把它当作投资软件、看盘软件或 AI 荐股工具使用。
    README「重要说明」明确不作为投资软件或者看盘软件,也不内置 AI 荐股/涨停预测。
  • 你要求稳定的官方版本发布、明确的 Release 维护节奏。
    项目元数据显示版本发布为 0 个、最新版本为 No releases;README 还称项目以个人开源维护为主。
  • 你必须获得盘中即时的当日数据,但只能使用 None/Free 数据档位。
    README「快速开始」说明 None/Free 当日数据盘后 1–2 小时可用。
  • 你需要 AI 助手在未配置 Key 或不支持工具调用的供应商上继续工作。
    README「AI 对话助手」说明未配置 AI Key 或使用 Codex CLI 等不支持工具调用的供应商时会 fail-closed。

前置条件

  • 使用 Dev 模式时需从根目录 `.env.example` 复制 `.env`,并可配置 `TICKFLOW_API_KEY`、`AI_API_KEY` 与 `PORT=3018`。
  • README 要求通过 `./dev.sh` 启动开发模式;Windows 使用 `./dev.ps1`。
  • TICKFLOW_API_KEY 留空为 None 模式,README 说明该模式提供历史日 K 免费能力。
  • AI_API_KEY 留空会关闭 AI;填写后启用策略生成与 AI 对话助手。
  • README 将 Docker 单容器列为自托管方案,但所给材料未提供对应启动命令。

第一步命令(README 原文)

cp .env.example .env       # 按需填 TICKFLOW_API_KEY(留空 = None 模式)

要注意

  • 节假日和非交易日会停止实时轮询与分钟增量,不应按工作日连续采集理解。
    README「技术架构」的交易日探针说明节假日自动停掉实时轮询与分钟增量。
  • 回测虽有 SSE 流式进度,但任务运行在 spawn worker 子进程中。
    README「回测执行隔离」说明回测使用 spawn worker、持久 run ID 和锁保护的结果回传。
  • 扩展数据字段按日分区快照,不能按实时字段更新来理解。
    README「分层缓存」说明扩展字段按日分区快照。
  • AI 助手删除目录即可卸载,但其 AI 功能依赖 AI_API_KEY 与工具调用支持。
    README「AI 对话助手」同时说明完全解耦、删除目录即卸载,以及未配置 Key 时 fail-closed。

替代方案

  • Docker Compose:不想使用 Dev 模式或本地构建流程时,可查看部署文档中的 Docker Compose 方案。
    docs/deployment.md
  • GHCR 现成镜像:希望免本地构建时,README 将 GHCR 镜像列为现成部署方式。
    README「完整文档」与部署方式章节

材料未说明

  • README 材料没有给出 Python、Node.js、Polars 或数据库的最低版本。
  • README 材料没有给出 CPU、内存、磁盘和分钟级数据规模的最低硬件要求。
  • README 材料没有给出不同数据源的完整价格、额度、覆盖范围和限流细节。
  • README 材料没有给出 5,129 个 Star、44 个当日新增 Star 与 Trending 之间的直接因果证据。
  • README 材料没有给出正式 Release,因此无法确认升级、回滚与版本兼容策略。

💡 深度解析

6
适合 我会用因子 DSL 和多因子搜索研究 A 股策略,并需要训练区间、滚动样本外验证和人工发布边界;TSP 是否能支持这种研究流程,而不是把挖掘结果直接当成可交易策略?
适合读者: 希望把因子 DSL、嵌套样本外搜索和策略回测用于 A 股研究的量化开发者,尤其担心参数搜索过拟合和挖掘结果自动上线。

适合,因为 README 明确把因子挖掘结果放入候选库,并要求显式确认后才发布,而不是自动接入监控或策略执行。

  • “因子平台与挖掘”支持 DSL、IC/IR、分层收益、Newey-West 检验、因子组合和嵌套样本外搜索。
  • “挖掘”页面会在训练区间重估因子方向、做相关性去重和多因子排名搜索,并提供自有策略作对照轨。
  • README 写明“候选入库,显式确认后才发布,永不自动上线”,这正好对应你要求的发布边界。
  • 回测还提供参数敏感性与滚动样本外验证,并可将结果保存为候选后再一键载入复测。

不过,工具提供验证流程不代表自动消除数据窥探、幸存者偏差或过拟合;README 没有给出研究结果的统计保证。

  • README「因子平台」:IC/IR、分层收益、Newey-West 检验、自定义 DSL 因子
  • README「挖掘」:嵌套样本外因子与策略挖掘;训练区间因子方向重估
  • README「挖掘」:候选入库,显式确认后才发布,永不自动上线
  • README「回测研究」:参数敏感性与滚动样本外;保存候选后一键载入复测
材料未说明:README 未说明训练、验证和测试区间的默认划分规则。;未提供因子挖掘搜索空间、计算成本或多重检验校正的具体参数。
适合 我只有一台本地电脑,想用 Docker 保存 A 股 Parquet 数据、每天运行盘后管道并接收竞价和盘中提醒;TSP 是否适合这种不自动下单的自托管部署?
适合读者: 使用 Docker 在单台本地电脑上研究 A 股的个人投资研究者,想保存 Parquet 数据、盘后同步并持续运行盘中监控,但不需要自动下单。

适合,前提是你接受本地服务持续运行、数据源能力受限,并把它定位为研究与监控工具而非交易执行系统。

  • README 将项目定义为“自托管、零运维”的 A 股选股、监控、回测工作台,数据全部落在本地 Parquet。
  • 快速开始要求先在设置中检测能力,再手动执行盘后管道;None/Free 模式的当日数据通常在盘后 1—2 小时可用。
  • 交易日探针会处理调休,节假日自动停止实时轮询和分钟增量,适合本地长期运行。
  • 监控中心支持竞价、盘中和偏移异动,并提供弹窗、语音播报、飞书推送和持久化触发记录。

限制也很明确:README 不把它定位为同花顺、通达信或自动交易系统,电脑休眠、网络中断和接口限流都可能造成漏报。

  • README「为什么做 TSP」:自托管;数据全部落在本地 Parquet
  • README「跑起来后的第一次使用」:立即跑盘后管道;当日数据盘后 1-2 小时可用
  • README「技术架构」:交易日探针;节假日自动停掉实时轮询与分钟增量
  • README「异动监控」与「监控中心」:竞价/盘中/偏移;弹窗、语音播报、飞书推送
  • README「重要说明」:不对标同花顺/通达信;不内置 AI 荐股/涨停预测
材料未说明:README 省略了 Docker 镜像或 Compose 的具体命令,无法确认单容器的资源要求和挂载参数。;未说明服务在电脑休眠、进程重启或网络恢复后的监控补偿机制。
适合 我已经配置 `AI_API_KEY`,但只接受基于本地真实数据的只读问答,并希望核对工具参数、耗时和结果摘要;TSP 的 AI 助手是否符合这个约束?
适合读者: 希望用自然语言查询 A 股个股、板块、自选和策略数据的个人研究者,已配置 AI_API_KEY,但要求 AI 只能读本地数据、展示取数过程且不提供买卖指令。

适合,它的 AI 助手被设计为本地数据分析扩展,而不是自动荐股或下单组件。

  • README“AI 对话助手”列出 18 个只读工具,覆盖个股、大盘、板块、自选、持仓、信号、策略和因子。
  • 每次调用都会展示工具名、参数、耗时和结果摘要,回答还附带风险与数据口径提示,符合可核对要求。
  • 项目明确规定涉及交易决策的问题会转换为技术状态、财务状态、关键价位、风险因素和条件情景,不提供买卖指令。
  • 未配置 AI_API_KEY 或使用不支持工具调用的供应商时会 fail-closed,而不是静默生成答案。

不过,模型仍可能误解自然语言或总结不完整;此外,若使用第三方模型服务,README 没有说明上下文数据的隐私和传输边界。

  • README「AI 对话助手」:18 个只读工具;覆盖个股、大盘、板块、自选、持仓、信号、策略和因子
  • README「交互设计」:工具名、参数、耗时、结果摘要均可展开核对
  • README「AI 对话助手」:不提供买卖指令;转换为客观状态、风险因素与条件情景
  • README「AI 对话助手」:未配置 AI Key 或不支持工具调用时 fail-closed
  • 项目洞察「使用限制」:AI 功能会产生外部模型调用成本,可能涉及第三方模型服务
材料未说明:README 未说明发送给第三方模型的具体上下文、脱敏规则和数据保留期限。;未说明 18 个工具在不同 AI 供应商和模型上的兼容性清单。
适合 我已经用 Python 和 Polars 处理 A 股全市场数据,既要做日线选股,也要做分钟策略回测;TSP 能否减少我在数据、指标和回测之间重复维护代码的工作?
适合读者: 在本地做 A 股选股、因子研究和回测的个人量化研究者,已有 Python/Polars 脚本,希望把日线、分钟线和回测统一到一个自托管工作台中。

适合,因为它把数据同步、指标计算、选股和回测放在统一的 enriched 数据链路上,而不是让每个页面各自处理数据。

  • README“为什么做 TSP”说明选股、回测、监控和复盘共享统一 enriched 数据口径。
  • “核心功能”列出约 68 列指标与信号、25 个内置策略,以及日线/分钟策略统一单池。
  • 回测覆盖 T+1、手续费、滑点、止损、交易明细和 SSE 进度,分钟回测还支持逐交易日回放。
  • 技术架构说明 Polars 用于扫描,Parquet 用于本地数据落地,回测通过 spawn 子进程隔离执行。

但它不是现成的 Python 策略库;自定义策略、字段契约和数据源接入仍需要理解项目的数据模型。

  • README「为什么做 TSP」:全站统一 enriched 数据口径:选股 → 回测 → 监控 → 复盘一条链
  • README「核心功能」:25 内置策略;68 列指标与信号;因子/策略/分钟回测
  • README「技术架构」:Polars;本地 Parquet;回测在 spawn worker 子进程运行
  • 项目数据:主语言 Python;Polars、backtesting、quantitative-finance 主题
材料未说明:README 未给出自定义策略的完整 Python 接口和迁移现有 Polars 脚本的示例。;未说明全市场分钟数据在不同硬件上的扫描耗时和内存占用。
适合 我使用 TypeScript/React 开发自有 A 股分析页面,还想接入第三方字段和一个可删除的 AI 助手;TSP 的扩展机制是否能满足零核心文件修改和独立卸载?
适合读者: 使用 TypeScript/React 构建个性化 A 股分析页面的开发者,希望接入自有字段、保留核心文件不变,并让扩展支持独立卸载。

适合,项目把后端路由、前端页面和 AI 助手都设计成相对独立的扩展边界。

  • README“技术架构”说明后端 app/custom/ 会在启动时自动发现并注册独立路由,前端 src/custom/*/extension.tsx 在构建时挂载到插槽。
  • 扩展版本不符或 setup 失败时会被隔离跳过,删除目录即可整体卸载,且不需要修改核心文件。
  • “数据与扩展”支持把第三方或扩展数据字段配置成一级菜单,并按日保存历史快照。
  • AI 助手被明确作为参考扩展实现,后端和前端各自独立,未配置 AI_API_KEY 或模型不支持工具调用时会 fail-closed。

这对 React/TypeScript 开发者很友好,但 README 未提供完整扩展 API、类型定义或兼容性矩阵,实际开发仍需阅读源码和文档。

  • README「技术架构」:`app/custom/` 自动发现;`src/custom/*/extension.tsx` 自动挂载
  • README「完全解耦扩展」:版本不符或 setup 失败即隔离跳过;删除目录即整体卸载
  • README「数据与扩展」:扩展字段配成一级菜单;按日历史回补
  • README「AI 对话助手」:完全解耦扩展模块;未配置 AI Key 时 fail-closed
  • 项目数据:TypeScript 约 3,411,964;React、FastAPI、self-hosted 主题
材料未说明:README 未给出扩展接口的完整参数、生命周期和前后端通信协议。;未说明 React/TypeScript 扩展在不同版本升级后的兼容保证。
视情况 我需要同时使用日 K、分钟 K、财务和异动数据,而且供应商权限可能变化;TSP 的能力路由矩阵能否让我换数据源而不重写指标和回测逻辑?
适合读者: 需要切换 A 股数据供应商的技术用户,当前同时关注日 K、分钟 K、财务、ETF 和异动数据,并希望让业务代码不绑定某一家供应商。

视情况,架构上适合降低供应商耦合,但数据覆盖、权限和字段质量仍可能限制实际切换效果。

  • README“技术架构”说明 6 类数据集按源能力独立路由,同一数据集可换源,指标与回测口径不变。
  • 能力档位包括 None、Free、Starter、Pro、Expert;关键字段未声明时 fail-closed,例如 pct_unit 未声明即拒绝。
  • 财务数据按报告期和公告日做 PIT 合并,公告前保持空值;这有助于避免不同来源直接填零造成回测污染。
  • 但 README 也明确不同供应商的覆盖范围、更新延迟、复权方式和权限档位可能不同。

因此,它适合需要可替换数据层的研究者,不等于所有供应商都能提供等价的历史连续性或实时能力。

  • README「技术架构」:能力路由矩阵;6 类数据集按源能力独立路由
  • README「技术架构」:fail-closed;声明 `pct_unit` 未声明即拒
  • README「财务多源合并」:按公告日取最新;公告前一律空值,绝不填 0
  • 项目洞察「常见陷阱」:不同数据源的覆盖范围、更新延迟、复权方式、字段单位和权限档位可能不同
材料未说明:README 未列出每个数据源对日 K、分钟 K、财务和异动字段的完整覆盖矩阵。;未说明切换供应商后历史数据是否会自动重算并保证跨源结果完全一致。

✨ 核心亮点

  • Polars 毫秒级扫描全 A 股,支持 25 个内置策略
  • 回测覆盖 T+1、手续费、滑点、止损与因子归因
  • 能力路由矩阵支持 6 类数据集独立换源
  • AI 助手提供 18 个只读工具与逐字流式输出
  • 个人开源维护,当前无正式 Release 版本

🔧 工程化

  • Dashboard 汇总情绪评分、榜单、板块与大盘异动事件流
  • Screener 用 Polars 扫描全 A 股并统一日线、分钟策略
  • Backtest 提供因子、策略、分钟策略和样本外验证
  • Monitor 支持四类规则、语音播报和飞书推送
  • AI 助手在本地数据上调用 18 个只读工具并展示足迹卡

⚠️ 风险

  • README 明确仅供学习研究,不是投资或看盘软件
  • 个人开源维护,README 标注 AI 助手仍在开发中
  • 当前无 Release,版本升级与兼容边界缺少发布记录
  • None/Free 当日数据需盘后 1–2 小时才可用

👥 适合谁?

  • 需要 Python、Polars 和 Parquet 本地量化工作台的个人开发者
  • 希望用 DSL、25 个策略和 62+ 因子做研究的量化用户
  • 需要自托管监控、SSE 回测进度和飞书推送的小团队