finnts
内置AI Agent的财务时间序列预测框架,自动选模型、调参数、迭代优化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
内置AI Agent的财务时间序列预测框架,自动选模型、调参数、迭代优化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:FinnTS 官方 Logo
每到季度末,某科技公司的 CFO 李明(化名)就要开始头疼了。他需要预测下个季度的收入、毛利率、运营费用等几十个财务指标。传统方式是让分析师逐个跑 ARIMA 模型,再人工比较结果,最后拍脑袋决定——整个过程耗时三天,误差还常常超过 10%。
2022 年,微软财务部门的一支团队决定解决这个痛点。他们发现,财务预测的核心矛盾在于:财务指标数量多(几十到上百个)、每个指标的历史模式各异、且预测需要又快又准。当时市面上的工具要么只支持单序列(一个指标单独预测),要么对外部变量(如宏观经济指标)支持很差。
于是,FinnTS(Finn Time Series)诞生了。这个名字里的"Finn"既是"Financial"的缩写,也是团队给它赋予的拟人化人格——一个永远在线、不知疲倦的虚拟数据科学家。
FinnTS(Microsoft Finance Time Series Forecasting Framework)是微软财务团队开源的 R 语言时间序列预测框架。表面上它是一个 R 包,实际上它的野心远不止于此——它是一个完整的 AI Agent 驱动预测流水线,可以让 LLM 自动决定用什么数据、选什么模型、迭代多少次,直到达到预设的预测精度目标。
项目的核心作者 Mike Tokic 和 Aadharsh Kannan 均在 GitHub 上有完整的 ORCID 标注,代码遵循 MIT 许可证,支持社区贡献。目前项目在 GitHub 上有 261 颗星、52 个 Fork,保持着活跃的开发节奏(最近更新:2026 年 7 月 7 日)。
FinnTS 最具创新性的设计是内置的 AI Agent 工作流。不同于传统的时间序列工具(用户自己选模型、调参数),FinnTS 的 Agent 可以充当"虚拟数据科学家",自动完成以下决策:
weighted_mape_goal(加权 MAPE 目标),Agent 会一直迭代直到达标或达到最大迭代次数Agent 的工作方式基于图形工作流(Graph Workflow)。代码中 run_graph() 函数实现了一个状态机,每个节点可以是:
这种设计的精妙之处在于:它把 ML 管道的每个步骤都变成了可编排的节点,LLM 可以在决策节点"回头"——比如发现某组特征效果不好,让工作流退回去重新做特征工程。这比传统的固定流程灵活得多。
# FinnTS Agent 使用示例
driver_llm <- ellmer::chat_azure_openai(model = "gpt-4o-mini")
project <- set_project_info(project_name = "Demo",
combo_variables = c("id"),
target_variable = "value",
date_type = "month")
agent <- set_agent_info(project_info = project,
driver_llm = driver_llm,
input_data = hist_data,
forecast_horizon = 6)
iterate_forecast(agent_info = agent,
max_iter = 3,
weighted_mape_goal = 0.03)
forecast_output <- get_agent_forecast(agent_info = agent)
FinnTS 内置了极为丰富的模型库,分为几大类:
| 模型类别 | 代表模型 | 特点 |
|---|---|---|
| 传统统计模型 | ARIMA、ETS、Theta、Tbats | 快速、可解释 |
| 机器学习模型 | XGBoost、Cubist、MARS、SVM | 捕捉非线性关系 |
| Prophet 系列 | Prophet、Prophet-boost、Prophet-xregs | 处理节假日效应 |
| 基础模型(Foundation Models) | TimeGPT、Chronos2、Chronos-Bolt、TimesFM | 零样本预测,无需训练 |
| 集成模型 | Ensemble(自动加权组合) | 追求最优精度 |
特别值得强调的是基础模型(Foundation Models)支持:TimeGPT(Nixtla)、Chronos2(Amazon)、TimesFM(Google)都是近年来兴起的时间序列基础模型,可以在零样本(Zero-Shot)的情况下直接对陌生数据集做预测。这意味着即使某个财务指标的历史数据很短,传统模型无法有效训练,基础模型依然能给出合理的预测。
对于需要同时预测成千上万个时间序列的场景(如预测所有产品的每日销量),FinnTS 支持三种并行策略:
从代码结构来看,FinnTS 是 R 语言 Tidyverse/Mtidymodels 生态的深度整合者:
代码组织非常模块化:
R/agent_*.R:AI Agent 核心逻辑R/*_model.R:各类预测模型的封装R/feature_*.R:特征工程相关R/prep_*.R:数据预处理流水线R/train_*.R:模型训练与选择R/forecast_*.R:预测结果输出包依赖超过 40 个(仅 Imports),加上 Suggests 里的可选依赖,整个 FinnTS 的生态非常庞大。这种设计虽然带来了较高的学习门槛,但换来了极高的灵活性和扩展性。
FinnTS 已登陆 CRAN,安装极为简单:
# 稳定版(一行命令搞定)
install.packages("finnts")
# 或从 GitHub 安装最新版
devtools::install_github("microsoft/finnts")
安装后只需约 3 分钟即可运行第一个预测案例。依赖项会自动从 CRAN 拉取,整个过程无需手动配置。
FinnTS 的出现代表了一个趋势:AI Agent 不再只做 NLP/对话任务,而是开始接管结构化的数据分析流水线。传统的时间序列工具(如 Prophet、statsmodels)本质上是"函数调用"——用户传数据、返回结果,中间没有决策空间。而 FinnTS 把 LLM 嵌入了决策回路,让机器学会"反思"和"回退"。
这种设计思路对整个 AI + 数据科学领域都有启发价值。未来可能会有更多垂直领域的"AI 数据科学家"出现——FinnTS 开了个好头。
分析基于 GitHub 仓库 microsoft/finnts(stars: 261, language: R, updated: 2026-07-07)