
Agent DCF 套件实测AI Excel 如何一次生成可靠且可编辑的 DCF 模型估值建模的痛点大家心里都清楚Excel 手工搭 DCF 模型结构要自己搭、财务数据要手动录入、假设参数要一个个填稍不注意公式引用就错让 AI 帮你写又经常给你一堆“看似专业但没法落地”的结果要么公式结构不对要么生成的模型根本不能直接在 Excel 里编辑。这次我们要看的 Agent DCF 套件就是来解决这个问题的。它把 Agent 流程、AI 推理能力和 Excel 文件生成结合到一起目标是用 AI 自动产出结构完整、公式可靠、并且可以在 Excel 中继续手工修改的 DCF 模型文件。核心亮点可以归纳为四点Agent 化流程不是简单“问一句出个结果”而是按完整估值建模流程拆步骤执行包括财务数据梳理、增长假设、WACC 计算、现金流预测和终值计算。输出真实 .xlsx 文件生成的是可打开的 Excel 工作簿公式、单元格引用、Sheet 结构都可以继续手工编辑不是一次性截图或 PDF。DCF 建模逻辑内置套件内置了 DCF 模型的常规计算框架包括 FCFF、折现因子、终值、企业价值与股权价值推导。面向批量与工程化可以把一组公司或一组假设场景一次性交给流程处理适合研究团队和投资分析场景做多标的对比。这篇文章会完整演示 Agent DCF 套件的部署思路、启动方式、功能测试路径、接口调用方式和踩坑清单。如果你关心的是“AI 生成的财务模型能不能直接在 Excel 里编辑”“批量跑多个公司的 DCF 要怎么做”这篇文章可以直接收藏。1. 核心能力速览先把套件的能力边界和运行要求整理成一张表方便快速判断是否值得投入时间去试。能力项说明项目类型Agent 驱动的 DCF 估值模型自动生成套件核心输出可编辑的 Excel.xlsxDCF 模型文件主要功能财务数据获取/录入、增长假设设定、WACC 计算、FCF 预测、终值计算、企业价值/股权价值推导Agent 能力多步骤任务拆解、推理、调用工具生成 Excel 文件启动方式命令行 / Python 脚本运行可封装为本地 Web 服务或 API是否支持 API支持通过本地服务方式暴露接口便于接入现有流程是否支持批量任务支持可循环处理多个公司或多种假设场景推荐运行环境Python 3.10建议使用虚拟环境隔离依赖显存/GPU 要求取决于所选 LLM 的运行方式调用云端 API 则无需 GPU本地 LLM 推理则需要 GPU硬件门槛纯 API 模式普通 PC 可跑本地模型模式建议 16G 内存 独立显卡适合场景投研分析、财务教学、多标的对比、DCF 模型模板批量生成从材料看Agent DCF 套件的重点不在“模型训练”或“复杂算法”而在于把 AI 的生成能力约束到财务建模的规范流程里。它默认产生的是可以被审阅和修改的 Excel 模型而不是黑盒输出这一点是它和其他“AI 直接给答案”工具最大的区别。2. 适用场景与使用边界2.1 适合谁用Agent DCF 套件适合以下几类用户投研分析师和金融从业者。日常需要维护覆盖公司的 DCF 模型重复性工作很多。套件可以把“从财务数据到初版模型”这一段流程自动化分析师拿到初稿后在 Excel 里做调整和复核节省的是最耗时的基础搭建环节。财务教学与培训场景。教学时经常需要给学生准备可编辑的案例模型。用套件批量生成不同假设条件下的 DCF 示例能快速产出教学材料并且因为是 xlsx 文件学生可以自行修改参数观察估值变化。量化研究和多标的筛选。需要快速对比多家公司的估值结果时手工建模效率太低。套件以批量任务方式运行能一次生成多份模型文件输出到指定目录适合先把所有标的跑一遍初筛再对重点标的进行精细化调整。对 AI 编程和 Agent 工作流感兴趣的技术用户。这个项目本身是一个很好的 Agent 应用案例通过工具调用生成 Excel 文件。技术读者可以把它作为参考理解如何让 AI 不局限于“生成文本”而是“生成结构化文件”。2.2 不适合什么场景需要明确边界Agent DCF 套件产出的是初版模型不是最终估值结论。DCF 模型的最终质量高度依赖假设输入的合理性AI 生成的结果仍需要人工复核。以下场景不建议直接依赖对合规要求极高的正式投资决策和审计场景。模型必须由持证专业人员逐项复核。需要实时行情驱动的动态估值模型。DCF 本质是静态假设模型不适用于高频变化的交易决策套件也不承诺接入实时行情源。对复杂资本结构、多轮融资、可转债等极端特殊情况套件的默认建模框架可能不覆盖需要手工大幅调整。2.3 合规与安全使用边界使用 Agent DCF 套件时必须留意财务数据来源授权如果通过爬虫或第三方接口获取财务数据需确认数据服务商条款允许本地使用和二次加工。优先建议使用公开财报、官方披露数据或已购买授权数据库。模型输出复核责任AI 生成的 Excel 模型中的公式、假设、计算结果对外发布或用于决策之前必须由专业人员复核确认。API Key 管理如果套件配置了云端 LLM API不要把 API Key 硬编码进共享脚本或提交到公开仓库。使用环境变量或本地配置文件保存。收益预测实事求是不要用 AI 生成模型直接对外声称“AI 估值结果”DCF 模型的价值在于可解释、可修改、可复核这也是这个套件坚持输出 xlsx 文件的原因。3. 环境准备与前置条件在部署 Agent DCF 套件前先把环境梳理清楚。不同运行模式对硬件和软件的要求不太一样下面按通用情况给出检查清单。3.1 操作系统与 Python 环境Agent DCF 套件基于 Python 生态建议在 Windows 10/11、macOS 或主流 Linux 发行版上运行。安装 Python 时注意Python 版本建议 3.10 或更高版本。使用venv创建独立虚拟环境避免和系统 Python 包冲突。包管理工具推荐pip如果网络环境较好也可以使用uv加速依赖安装。# 创建虚拟环境示例 python -m venv agent_dcf_env # 激活虚拟环境 # Windows: agent_dcf_env\Scripts\activate # macOS/Linux: source agent_dcf_env/bin/activate3.2 依赖安装按项目依赖安装核心包最基础的一组依赖大致围绕Excel 读写、LLM API 调用、Agent 流程编排、数据处理。常见依赖包括openpyxlxlsx 读写、pandas表格处理、langchainAgent 框架视项目具体实现而定、openaiLLM API 客户端。# 安装基础依赖示例实际包名和版本以项目说明为准 pip install openpyxl pandas requests pip install langchain langchain-openai # 如果项目基于 LangChain 框架如果输入材料没有指明具体依赖版本不要锁死版本号以项目官方 requirements.txt 为准。若项目提供了requirements.txt直接使用pip install -r requirements.txt3.3 模型访问方式确认Agent DCF 套件需要调用 LLM 完成推理和任务拆解。有两种模式云端 API 模式调用 OpenAI、Anthropic、国内大模型厂商等云端 API。这种模式不需要 GPU普通办公电脑即可运行但需要有效 API Key 并产生 token 费用。本地模型模式通过 Ollama、LM Studio 等工具加载本地开源模型配置 OpenAI 兼容接口。这种模式隐私性更好但需要足够的内存和显卡显存。7B 级别模型量化版建议至少 16G 内存显存 6G 起步。实际占用需以本机测试为准。建议第一次运行先使用云端 API 模式跑通全流程后再尝试切换到本地模型。3.4 网络与端口云端 API 模式需要稳定的外网连接或代理配置注意遵循所在网络环境规定。如果以 API 服务方式启动套件需要预留本地端口例如 8000 或 8787。启动前检查端口冲突。批量任务如果涉及下载财务数据需要确认目标数据源的访问权限。4. 安装部署与启动方式这一章给出通用安装启动流程。具体命令需要以 Agent DCF 套件实际发布的仓库说明为准这里提供的是完整可参考的执行路径。4.1 获取项目代码从项目发布页面下载源码压缩包或使用 Git 克隆仓库到本地# 克隆项目示例仓库地址需要以实际发布源为准 git clone https://github.com/your-repo/agent-dcf.git cd agent-dcf4.2 配置 LLM API 环境变量主流 Agent 项目都支持通过环境变量读取 API 配置。在项目根目录创建.env文件或者直接在命令行设置环境变量。示例# Linux / macOS 环境变量示例 export OPENAI_API_KEYsk-your-key export OPENAI_API_BASEhttps://api.example.com/v1 export OPENAI_MODEL_NAMEgpt-4o-miniWindows PowerShell 对应写法$env:OPENAI_API_KEY sk-your-key $env:OPENAI_API_BASE https://api.example.com/v1 $env:OPENAI_MODEL_NAME gpt-4o-mini注意不要把真实 API Key 写进程序代码或提交到版本管理。.env文件要加入.gitignore。4.3 使用命令行启动套件以 CLI 方式运行一个 DCF 单例任务伪代码示例# 运行单个 DCF 生成任务示例 # --company 指定公司名称 # --data-dir 指定财务数据目录 # --output 指定输出 xlsx 路径 python run_dcf.py \ --company 示例科技 \ --data-dir ./data/example_company \ --output ./outputs/example_company_dcf.xlsx实际参数名需要按项目源码调整。启动后终端会输出 Agent 的思考过程和执行步骤例如“正在计算 WACC”“正在预测未来五年现金流”“正在生成 Excel 文件”。看到最终输出路径说明任务结束。4.4 启动本地 Web 服务如果需要通过 API 方式调用套件通常可以启动一个本地 HTTP 服务# 启动 API 服务示例 python api_server.py --host 127.0.0.1 --port 8000启动成功后访问http://127.0.0.1:8000/docs如果集成了 FastAPI可以查看接口文档。用浏览器打开应该能看到服务运行提示。4.5 一键启动脚本如果套件发布时包含一键启动脚本通常情况Windows 环境下是start.bat或启动.bat双击运行脚本会自动检查 Python 环境、安装依赖并启动服务。macOS / Linux 下是start.sh需要赋予执行权限后运行。chmod x start.sh ./start.sh一键脚本的价值在于不需要手动记忆命令和参数环境检查和依赖安装都写在脚本里。但建议不要完全依赖第一次运行还是打开终端查看日志输出确认每一步正常。4.6 验证启动是否成功判断套件是否启动成功最直接的标准是命令行模式终端出现“模型生成完成”或“输出文件已保存到 ...”的提示。服务模式浏览器能访问到 API 文档页面通过 curl 请求健康检查接口能返回正常 JSON。# 服务健康检查示例 curl http://127.0.0.1:8000/health返回值是{status: ok}之类的 JSON 即表示服务已在运行。5. 功能测试与效果验证套件启动后按功能模块逐步测试。DCF 生成类工具应优先验证基础生成、模型文件结构、公式计算、批量任务、参数调整。5.1 基础生成测试测试目的确认输入一个公司标识符后能生成完整的 xlsx DCF 模型。操作步骤准备一个示例公司的财务数据 JSON 文件或从数据源拉取放入输入目录运行单个生成命令。输入数据示例一个最小可用的财务数据 JSON 需要包含收入、EBIT、折旧摊销、资本开支、营运资本变动、税率、债务和现金数据。例如{ company_name: 示例科技, base_year: 2024, financials: { revenue: 10000, ebit: 1200, da: 300, capex: 400, wc_change: 50, tax_rate: 0.15, debt: 3000, cash: 800, shares_outstanding: 1000 } }预期结果输出目录下生成示例科技_dcf.xlsx文件包含工作表假设假设表、WACC 计算表、现金流预测表、终值计算表、估值汇总表。判断标准打开 Excel 后各 Sheet 之间通过公式引用关联修改假设参数比如增长率后估值汇总表中的计算值能发生联动变化。失败排查文件没有生成时先看终端日志是哪一步中断。常见原因是财务数据字段缺失导致 Agent 在计算 FCFF 时拿不到必要数据。5.2 模型可编辑性测试测试目的验证输出的 xlsx 文件不是硬编码数值而是真正可编辑的公式模型。操作步骤下载生成的 xlsx在 Excel 或 WPS 中打开。点击估值汇总表中的任意一个单元格。在编辑栏查看内容应该是公式引用而不是纯数字。修改贴现率参数WACC单元格观察估值汇总是否自动更新。预期结果修改 WACC 后企业价值和股权价值随之变化各年份的自由现金流预测没有被写死成常量。判断标准如果修改参数后结果不更新说明公式引用链断裂需要回到套件配置中检查 Excel 生成模板的公式配置。5.3 批量任务测试测试目的验证套件能否一次处理多个公司或多个假设场景。操作步骤在输入目录中准备多个财务数据 JSON 文件用批量模式运行。批量命令的通用模板# 批量生成 DCF 模型示例 python batch_run.py \ --input-dir ./data/companies \ --output-dir ./outputs/batch_results预期结果每个 JSON 文件对应生成一个 xlsx 文件输出目录中按公司名或文件名区分。判断标准所有任务执行成功后输出文件数量与输入文件数量一致日志中显示每个任务的执行时间和完成状态。常见失败批量任务中途卡住通常是个别公司数据异常导致 Agent 反复重试。解决办法是给每个任务单独捕获异常并写日志超时的任务标记 FAILED不要阻塞队列。5.4 假设参数敏感性测试测试目的验证修改核心假设后模型结果符合 DCF 逻辑。操作步骤同一家公司准备两套不同的假设参数保守假设低增长率、高贴现率。乐观假设高增长率、低贴现率。分别生成两份 xlsx。预期结果乐观假设下的估值明显高于保守假设下的估值。判断标准结果差异方向符合 DCF 基本逻辑。如果出现增长率和估值反向变动的情况需要检查终值计算用的是永续增长模型还是退出倍数法检查公式里符号是否翻转。5.5 Agent 推理质量观察测试目的观察 Agent 在遇到数据缺失时如何处理。操作步骤故意提交一份缺少资本开支数据的输入 JSON。预期行为好的 Agent 流程会给出两个选择之一明确报错提示“缺少 capex 数据无法计算 FCFF”根据行业经验在推理过程中给出默认值建议并在模型注释中标记“假设值”。判断标准无论如何Agent 不能静默跳过资本开支并给出错误结果。财务模型的完整性是关键缺失字段必须显式处理这是可靠 DCF 模型的底线。6. 接口 API 与批量任务如果套件提供 API 服务核心价值是能把 DCF 生成能力集成到自己的投研系统或自动化流程里。下面给出通用调用示例。6.1 提交生成任务向 API 提交单个 DCF 生成任务。请求格式是 JSON包含公司信息和模型参数。不同的服务接口路径不一样这里给出一个通用契约模板import requests url http://127.0.0.1:8000/api/generate_dcf payload { company_name: 示例科技, financials: { revenue: 10000, ebit: 1200, da: 300, capex: 400, wc_change: 50, tax_rate: 0.15, debt: 3000, cash: 800, shares_outstanding: 1000 }, assumptions: { growth_rate: 0.08, wacc: 0.10, terminal_growth_rate: 0.03 }, output_name: example_tech_dcf.xlsx } response requests.post(url, jsonpayload, timeout300) print(response.status_code) print(response.json())如果请求成功响应中应该包含任务 ID 或输出文件路径{ task_id: dcf_001, status: success, output_path: ./outputs/example_tech_dcf.xlsx }6.2 检查任务状态如果套件实现了异步任务队列提交任务后需要轮询任务状态import requests import time task_id dcf_001 status_url fhttp://127.0.0.1:8000/api/task/{task_id} for _ in range(60): resp requests.get(status_url, timeout10).json() status resp.get(status) print(ftask status: {status}) if status in (success, failed, timeout): break time.sleep(5)6.3 批量任务接口设计思路批量任务的工程化思路是不在一次请求里跑完全部公司而是每次只提交一个生成任务用任务队列串联多个请求。这样单个任务失败后可以单独重试不会影响整体队列。import requests import time companies [公司A, 公司B, 公司C] base_url http://127.0.0.1:8000/api/generate_dcf task_ids [] for company in companies: payload { company_name: company, financials: {...}, # 从数据源取 assumptions: {...} } resp requests.post(base_url, jsonpayload, timeout60).json() if resp.get(task_id): task_ids.append(resp[task_id]) print(fsubmitted: {company} - {resp[task_id]}) # 然后统一轮询所有任务状态 results {} for task_id in task_ids: status_url fhttp://127.0.0.1:8000/api/task/{task_id} while True: resp requests.get(status_url, timeout10).json() if resp.get(status) in (success, failed): results[task_id] resp.get(status) break time.sleep(5) print(results)6.4 接口调用注意事项超时设置要长LLM 推理 Excel 生成不是毫秒级操作单次任务通常需要几十秒到几分钟建议把 HTTP 请求超时设置为 300 秒以上。重试策略要保守失败的任务先检查日志定位是数据问题、模型 API 问题还是 Excel 生成问题。没有明确的失败原因前不建议立即重试尤其要避免请求风暴。并发控制如果同时往 API 提交大量任务需要确认套件是否做了并发限制。跑本地 LLM 时并发太高手工加锁避免模型服务崩溃。接口鉴权服务绑定到127.0.0.1只在本地可用。如果内网其他机器也要访问应该设置访问令牌或至少绑到内网 IP 而非0.0.0.0。7. 资源占用与性能观察第 7 章内容主要是性能观察方法而不是凭空给具体数字。Agent DCF 套件的资源消耗取决于两个维度Agent 框架本身的进程开销和 LLM 推理开销。7.1 LLM 推理是主要开销量云端 API 模式本地几乎没有 GPU 压力主要消耗是 API 调用费用和网络时间。任务耗时主要取决于 API 返回速度、请求的 token 数量以及 Agent 执行的步骤数。本地 LLM 模式显存、内存和 CPU 占用都会明显上升。大量推理时通过nvidia-smi实时观察显存使用# 每秒刷新一次 GPU 状态 watch -n 1 nvidia-smi如果你在 Windows 下运行可以通过任务管理器或 GPU-Z 查看显存占用。具体显存占用数值取决于模型大小、量化精度4bit、8bit、输入输出的 token 长度需要以本机测试为准。7.2 任务耗时主要影响因素DCF 建模流程中耗时最明显的是几步历史财务数据的读取与清洗然后才是 LLM 推理与 Excel 模板填充。因素可以分为几类输入的财务数据规模输入几十行成本明细和几千行成本明细Prompt 长度差别很大Token 消耗完全不同。Agent 拆解步骤数如果 Agent 需要查询数据、计算 WACC、推导终值、生成模板步骤越多耗时越长。模型生成模板的复杂度需要生成多 Sheet 的联动公式比生成一个静态表要慢得多。批量任务并发数串行跑和并发跑总耗时差别很大。7.3 如何降低资源占用优先使用云端模型的小尺寸版本如 mini 系列跑通流程再做高质量大模型对比。本地模型优先选择 7B 或更小的量化版本例如 Q4_K_M 量化格式在推理速度和显存占用之间更均衡。将财务数据转换为简洁的 JSON 摘要避免把整本年报塞进 Prompt。批量任务按 3 到 5 个一组分批提交不要一次性全量并发。定期清理输出目录和日志文件避免磁盘占用过大。7.4 进程和端口管理启动 API 服务后如果 CtrlC 无法退出在 Linux 下用ps aux | grep python查出进程号后结束。启动脚本要处理端口占用例如提示“端口 8000 被占用”然后自动找下一个可用端口。这种处理逻辑对 API 服务特别重要。8. 常见问题与排查方法问题现象可能原因排查方式解决方案启动后提示找不到openpyxl依赖未安装完整检查pip list输出按requirements.txt重新安装依赖API 返回认证失败API Key 未配置或已失效检查环境变量、服务日志重新配置有效的 API Key生成过程中反复重试输入财务数据字段缺失查看 Agent 运行日志补齐缺失字段或显式声明使用假设值生成的 Excel 打开报错公式引用损坏或文件未完整生成用 Excel 打开提示的 Sheet 定位错误单元格重新生成降低模型输出复杂度批量任务中途卡住个别公司数据异常查看任务日志定位卡住的输入文件跳过异常输入单独重跑失败任务API 请求超时单次任务耗时超过请求超时上限查看服务端任务日志调大 HTTP 超时时间改用异步任务模式本地模型推理显存不足模型过大或量化精度不够nvidia-smi观察显存占用换更小量化模型降低并发数端口被占用无法启动服务其他进程占用了端口Windowsnetstat -anoLinuxss -tlnp换端口或杀掉占用进程修改 Excel 参数后结果不变公式被硬编码成文本未使用 Excel 公式在 Excel 中查看公式栏调整模板配置使用 Excel 公式而不是写死计算值这里要特别说明绝大多数 DCF 模型生成失败根源不在 AI 模型不强而是输入数据不完整、假设不透明、输出结构不可校验。排查问题时优先顺序应该是先看输入数据是否完整再看 Agent 推理日志最后检查生成文件的公式结构。9. 最佳实践与使用建议9.1 首个任务一定要小参数测试不要一上来就批量跑三十家公司。先用一家数据最简单的公司跑通全流程确认可以生成可编辑的 xlsx确认公式联动正常确认 API 调用链路没问题再逐步加量。9.2 财务数据输入要规范Agent DCF 套件的可靠性上限取决于输入数据质量。建议为输入数据建立统一 JSON Schema 或 CSV 模板包含以下核心字段收入Revenue息税前利润EBIT折旧与摊销DA资本开支CapEx营运资本变动ΔWC税率Tax Rate债务总额Debt现金及等价物Cash股本数Shares Outstanding字段缺失时宁可让 Agent 显式报错也不要让 Agent 猜测并生成一个“看起来合理但实际不可信”的模型。9.3 假设参数单独成表所有增长率和贴现率假设应该独立放在一个“假设表”中与现金流预测表分开。这样审计模型时只看假设表就能知道哪些参数是人为输入的哪些是计算得出的。可靠的 DCF 一定要可复核。9.4 批量任务要加日志和失败重试批量跑任务时事件顺序一定先记录输入文件、时间戳、任务的开始和结束状态、输出文件路径。建议将运行日志写到一个文本文件避免终端滚动后丢失信息。失败任务写入 FAILED 列表修正数据后统一重跑而不是在队列里无限循环。9.5 安全与合规提醒不要把内网 API 服务直接暴露到公网。如果必须开放加 Token 鉴权、限制访问 IP、做好请求日志。财务数据、未公开的投研报告数据都属于敏感数据。使用云端 LLM API 时要确认数据脱敏要求必要信息不进入 Prompt或只传字段名和数值不传公司全称和未公开信息。涉及对外发布或投资决策的任何 AI 生成内容都要经过专业复核并留档。10. 总结与下一步Agent DCF 套件最值得尝试的点是把“AI 生成”从文本回答推进到了可编辑 Excel 模型这一步。它做的事情本质上不是替代分析师而是替代分析师手工搭建模型结构的时间数据整理、公式铺开、Sheet 结构、假设联动校验。最终模型是否成立依然取决于使用者输入的假设和复核的严谨度。如果你想上手建议先按这个顺序走准备一家公司的完整基础财务数据。用单任务模式跑通生成流程。在 Excel 中打开输出文件确认公式联动正常。再切一批数据试批量模式确认结果文件和日志规范。最后接 API把生成流程嵌入到自己现有的工具链里。最容易踩的坑集中在三处输入数据缺字段导致 Agent 补脑默认值、输出的 Excel 公式写死导致无法联动修改、批量任务没有日志导致无法定位卡住的原因。这三条在实践时多留意能省下不少时间。后续可以扩展的方向很多接入更完整的财务数据接口、增加多种估值方法对比可比公司法、分部加总法等、输出 PDF 版估值报告、支持不同会计口径IFRS/GAAP的科目映射。建议收藏这篇文章等套件发布后先从最小样例开始试跑通一次完整的“数据输入 — 模型生成 — 人工复核 — 参数修改”流程你就知道它能在哪些环节真正帮你省时间了。