Earnings Calendar
财报日历
概述
此功能利用 Financial Modeling Prep (FMP) API 检索即将发布的美国股票财报公告。它重点关注市值较大(中盘股及以上,超过20亿美元)且可能影响市场走势的公司。该功能会生成组织有序的 Markdown 报告,显示未来一周内将发布财报的公司,并按日期和时间(开盘前、收盘后或时间未公布)进行分组。
主要功能:

- 使用 FMP API 获取可靠、结构化的财报数据
- 按市值(>20亿美元)筛选,重点关注能影响市场的公司
- 包含每股收益 (EPS) 和营收预期
- 支持多环境(命令行、桌面端、网页端)
- 灵活的 API 密钥管理
- 按日期、时间和市值进行组织
先决条件
FMP API 密钥
此功能需要一个 Financial Modeling Prep API 密钥。
获取免费 API 密钥:
- 访问:https://site.financialmodelingprep.com/developer/docs
- 注册免费账户
- 立即获取API密钥
- 免费层级:每日250次API调用(足以满足每周收益日历需求)
按环境配置API密钥:
Claude代码(CLI):
export FMP_API_KEY="your-api-key-here"
Claude桌面版: 在系统中设置环境变量或配置MCP服务器。
Claude网页版: API密钥将在技能执行期间请求(仅存储在当前会话中)。
核心工作流程
步骤1:获取当前日期并计算目标周
关键:始终从获取准确的当前日期开始。
检索当前日期和时间:
- 使用系统日期/时间获取今日日期
- 注意:"今日日期"在环境(<env>标签)中提供
- 计算目标周:当前日期起未来7天
日期范围计算:
Current Date: [e.g., November 2, 2025]
Target Week Start: [Current Date + 1 day, e.g., November 3, 2025]
Target Week End: [Current Date + 7 days, e.g., November 9, 2025]
为何重要:
- 财报日历具有时效性
- "下周"必须基于实际当前日期计算
- 为API请求提供准确的日期范围
日期格式化为YYYY-MM-DD以确保API兼容性。
步骤2:加载FMP API指南
在检索数据前,请加载全面的FMP API指南:
Read: references/fmp_api_guide.md
该指南包含:
- FMP API端点结构及参数
- 认证要求
- 市值筛选策略(通过公司概况API)
- 财报发布时间惯例(BMO、AMC、TAS)
- 响应格式及字段说明
- 错误处理策略
- 最佳实践与优化提示
步骤三:API密钥检测与配置
根据运行环境检测API密钥可用性
多环境API密钥检测机制:
3.1 检查环境变量(命令行/桌面环境)
if [ ! -z "$FMP_API_KEY" ]; then
echo "✓ API key found in environment"
API_KEY=$FMP_API_KEY
fi
若环境变量已设置,则跳转至步骤四
3.2 向用户请求API密钥(桌面/网页环境)
若未检测到环境变量,则调用AskUserQuestion工具:
问题配置方案:
Question: "This skill requires an FMP API key to retrieve earnings data. Do you have an FMP API key?"
Header: "API Key"
Options:
1. "Yes, I'll provide it now" → Proceed to 3.3
2. "No, get free key" → Show instructions (3.2.1)
3. "Skip API, use manual entry" → Jump to Step 8 (fallback mode)
3.2.1 若用户选择“否,获取免费密钥”:
提供操作指引:
To get a free FMP API key:
1. Visit: https://site.financialmodelingprep.com/developer/docs
2. Click "Get Free API Key" or "Sign Up"
3. Create account (email + password)
4. Receive API key immediately
5. Free tier includes 250 API calls/day (sufficient for daily use)
Once you have your API key, please select "Yes, I'll provide it now" to continue.
3.3 请求输入API密钥
若用户已持有API密钥,则请求输入:
交互提示框:
Please paste your FMP API key below:
(Your API key will only be stored for this conversation session and will be forgotten when the session ends. For regular use, consider setting the FMP_API_KEY environment variable.)
将API密钥存储至会话变量:
API_KEY = [user_input]
向用户确认操作:
✓ API key received and stored for this session.
Security Note:
- API key is stored only in current conversation context
- Not saved to disk or persistent storage
- Will be forgotten when session ends
- Do not share this conversation if it contains your API key
Proceeding with earnings data retrieval...
步骤四:通过FMP API获取收益数据
使用Python脚本从FMP API获取收益数据。
脚本位置:
scripts/fetch_earnings_fmp.py
执行:
选项A:使用环境变量(CLI):
python scripts/fetch_earnings_fmp.py 2025-11-03 2025-11-09
选项B:使用会话API密钥(桌面/网页):
python scripts/fetch_earnings_fmp.py 2025-11-03 2025-11-09 "${API_KEY}"
脚本工作流程(自动):
- 验证API密钥和日期参数
- 调用FMP收益日历API获取日期范围数据
- 获取公司简介(市值、行业板块、具体行业)
- 筛选市值大于20亿美元的公司
- 标准化时间安排(盘前BMO/盘后AMC/盘中TAS)
- 按日期 → 时间安排 → 市值(降序)排序
- 将JSON输出到标准输出
预期输出格式(JSON):
[
{
"symbol": "AAPL",
"companyName": "Apple Inc.",
"date": "2025-11-04",
"timing": "AMC",
"marketCap": 3000000000000,
"marketCapFormatted": "$3.0T",
"sector": "Technology",
"industry": "Consumer Electronics",
"epsEstimated": 1.54,
"revenueEstimated": 123400000000,
"fiscalDateEnding": "2025-09-30",
"exchange": "NASDAQ"
},
...
]
保存到文件(建议与报告生成器配合使用):
python scripts/fetch_earnings_fmp.py 2025-11-03 2025-11-09 "${API_KEY}" > earnings_data.json
或捕获到变量:
earnings_data=$(python scripts/fetch_earnings_fmp.py 2025-11-03 2025-11-09 "${API_KEY}")
错误处理:
如果脚本返回错误:
- 401 未授权:API密钥无效 → 验证密钥或重新输入
- 429 速率限制:超过每日250次调用 → 等待或升级计划
- 空结果:日期范围内无收益数据 → 扩大日期范围或在报告中注明
- 连接错误:网络问题 → 重试或使用缓存的可用数据
步骤5:处理和组织数据
一旦获取到收益数据(JSON格式),进行处理和组织:
5.1 解析JSON数据
从脚本输出加载JSON数据:
import json
earnings_data = json.loads(earnings_json_string)
或如果保存到文件:
with open('earnings_data.json', 'r') as f:
earnings_data = json.load(f)
5.2 验证数据结构
确认数据包含必要字段:
- ✓ 股票代码
- ✓ 公司名称
- ✓ 日期
- ✓ 时间(盘前/盘后/未公布)
- ✓ 市值
- ✓ 行业
5.3 按日期分组
将所有财报发布日期按日期分组:
- 星期日,[完整日期](如适用)
- 星期一,[完整日期]
- 星期二,[完整日期]
- 星期三,[完整日期]
- 星期四,[完整日期]
- 星期五,[完整日期]
- 星期六,[完整日期](如适用)
5.4 按发布时间子分组
在每个日期内,创建三个子部分:
- 盘前 (BMO)
- 盘后 (AMC)
- 时间未公布 (TAS)
数据已通过脚本按时间排序,请保持此顺序。
5.5 在每个时间分组内
公司已按市值降序排列(脚本输出):
- 首先列出大盘股(>2000亿美元)
- 大型股(100亿至2000亿美元)其次
- 中型股(20亿至100亿美元)第三
这种优先级排序确保对市场影响最大的公司优先列出。
5.6 计算汇总统计量
计算:
- 公司总数:数据集中所有公司的数量
- 巨型/大型股数量:市值 >= 100亿美元的公司数量
- 中型股数量:市值在20亿至100亿美元之间的公司数量
- 发布高峰日:财报发布最集中的星期几
- 行业分布:按行业统计的数量(科技、医疗保健、金融等)
- 市值最高的公司:按市值排名的前5家公司
步骤6:生成Markdown报告
使用报告生成脚本,根据JSON数据创建格式化的Markdown报告。
脚本位置:
scripts/generate_report.py
执行:
选项 A:输出到标准输出:
python scripts/generate_report.py earnings_data.json
选项 B:保存到文件:
python scripts/generate_report.py earnings_data.json earnings_calendar_2025-11-02.md
脚本功能:
- 从 JSON 文件加载盈利数据
- 按日期和时段(BMO/AMC/TAS)分组
- 在各组内按市值排序
- 计算汇总统计信息
- 生成格式化的 Markdown 报告
- 输出到标准输出或保存到文件
脚本自动处理所有格式化,包括:
- 正确的 Markdown 表格结构
- 日期分组和星期名称
- 市值排序
- 每股收益和收入格式化
- 汇总统计信息计算
报告结构:
# Upcoming Earnings Calendar - Week of [START_DATE] to [END_DATE]
**Report Generated**: [Current Date]
**Data Source**: FMP API (Mid-cap and above, >$2B market cap)
**Coverage Period**: Next 7 days
**Total Companies**: [COUNT]
---
## Executive Summary
- **Total Companies Reporting**: [TOTAL_COUNT]
- **Mega/Large Cap (>$10B)**: [LARGE_CAP_COUNT]
- **Mid Cap ($2B-$10B)**: [MID_CAP_COUNT]
- **Peak Day**: [DAY_WITH_MOST_EARNINGS]
---
## [Day Name], [Full Date]
### Before Market Open (BMO)
| Ticker | Company | Market Cap | Sector | EPS Est. | Revenue Est. |
|--------|---------|------------|--------|----------|--------------|
| [TICKER] | [COMPANY] | [MCAP] | [SECTOR] | [EPS] | [REV] |
### After Market Close (AMC)
| Ticker | Company | Market Cap | Sector | EPS Est. | Revenue Est. |
|--------|---------|------------|--------|----------|--------------|
| [TICKER] | [COMPANY] | [MCAP] | [SECTOR] | [EPS] | [REV] |
### Time Not Announced (TAS)
| Ticker | Company | Market Cap | Sector | EPS Est. | Revenue Est. |
|--------|---------|------------|--------|----------|--------------|
| [TICKER] | [COMPANY] | [MCAP] | [SECTOR] | [EPS] | [REV] |
---
[Repeat for each day of week]
---
## Key Observations
### Highest Market Cap Companies This Week
1. [COMPANY] ([TICKER]) - [MCAP] - [DATE] [TIME]
2. [COMPANY] ([TICKER]) - [MCAP] - [DATE] [TIME]
3. [COMPANY] ([TICKER]) - [MCAP] - [DATE] [TIME]
### Sector Distribution
- **Technology**: [COUNT] companies
- **Healthcare**: [COUNT] companies
- **Financial**: [COUNT] companies
- **Consumer**: [COUNT] companies
- **Other**: [COUNT] companies
### Trading Considerations
- **Days with Heavy Volume**: [DATES with multiple large-cap earnings]
- **Pre-Market Focus**: [BMO companies that may move markets]
- **After-Hours Focus**: [AMC companies that may move markets]
---
## Timing Reference
- **BMO (Before Market Open)**: Announcements typically around 6:00-8:00 AM ET before market opens at 9:30 AM ET
- **AMC (After Market Close)**: Announcements typically around 4:00-5:00 PM ET after market closes at 4:00 PM ET
- **TAS (Time Not Announced)**: Specific time not yet disclosed - monitor company investor relations
---
## Data Notes
- **Market Cap Categories**:
- Mega Cap: >$200B
- Large Cap: $10B-$200B
- Mid Cap: $2B-$10B
- **Filter Criteria**: This report includes companies with market cap $2B and above (mid-cap+) with earnings scheduled for the next week.
- **Data Source**: Financial Modeling Prep (FMP) API
- **Data Freshness**: Earnings dates and times can change. Verify critical dates through company investor relations websites for the most current information.
- **EPS and Revenue Estimates**: Analyst consensus estimates from FMP API. Actual results will be reported on earnings date.
---
## Additional Resources
- **FMP API Documentation**: https://site.financialmodelingprep.com/developer/docs
- **Seeking Alpha Calendar**: https://seekingalpha.com/earnings/earnings-calendar
- **Yahoo Finance Calendar**: https://finance.yahoo.com/calendar/earnings
---
*Report generated using FMP Earnings Calendar API with mid-cap+ filter (>$2B market cap). Data current as of report generation time. Always verify earnings dates through official company sources.*
格式化最佳实践使用Markdown表格进行清晰展示
- 如需要,可将重要公司名称(超大型股)加粗
- 包含易于阅读格式的市值信息($3.0T, $150B, $5.2B) - 已由脚本格式化
- 按日期和发布时间进行逻辑分组
- 顶部包含摘要部分以便快速概览
- 若可获得,请包含每股收益和营收预测
- 步骤7:质量保证
在最终确定报告前,请核实:
数据质量检查
:✓ 所有日期均落在目标周内(未来7天)
- ✓ 所有公司的市值信息均已提供
- ✓ 每家公司均已指定发布时间(盘前/盘后/不定时)
- ✓ 各章节内的公司已按市值排序
- ✓ 摘要统计信息准确无误
- ✓ 报告生成日期已明确标注
- ✓ 在可获得的情况下已包含每股收益和营收预测
- 完整性检查
Completeness Checks✓ 目标周的所有日期均已包含(即使没有收益数据)
- ✓ 主要知名公司均未遗漏(必要时可对照外部来源进行验证)
- ✓ 在可获得的情况下包含行业信息
- ✓ 存在时间参考部分
- ✓ 数据来源已注明(FMP API)
- 格式检查
:✓ Markdown 表格格式正确
- ✓ 日期格式保持一致
- ✓ 市值使用一致的单位(B 代表十亿,T 代表万亿)
- ✓ 所有部分均遵循模板结构
- ✓ 无占位符文本([PLACEHOLDER])残留
- ✓ EPS 和营收预估格式正确
- 步骤 8:保存并交付报告
使用适当的文件名保存生成的报告:
文件名约定
:示例:
earnings_calendar_[YYYY-MM-DD].md
earnings_calendar_2025-11-02.mdearnings_calendar_2025-11-02.md
文件名中的日期代表报告生成日期,而非财报周。
交付:
- 将Markdown文件保存到工作目录
- 通知用户报告已生成
- 提供关键发现的简要摘要(例如:“下周有45家公司发布财报,苹果和微软在周一”)
示例摘要:
✓ Earnings calendar report generated: earnings_calendar_2025-11-02.md
Summary for week of November 3-9, 2025:
- 45 companies reporting earnings
- 28 large/mega-cap, 17 mid-cap
- Peak day: Thursday (15 companies)
- Notable: Apple (Mon AMC), Microsoft (Tue AMC), Tesla (Wed AMC)
Top 5 by market cap:
1. Apple - $3.0T (Mon AMC)
2. Microsoft - $2.8T (Tue AMC)
3. Alphabet - $1.8T (Thu AMC)
4. Amazon - $1.6T (Fri AMC)
5. Tesla - $800B (Wed AMC)
备用模式(步骤8替代方案):手动数据输入
如果API访问不可用或用户选择跳过API:
提供手动输入说明:
Since FMP API is not available, you can manually gather earnings data:
1. Visit Finviz: https://finviz.com/screener.ashx?v=111&f=cap_midover%2Cearningsdate_nextweek
2. Or Yahoo Finance: https://finance.yahoo.com/calendar/earnings
3. Note down companies reporting next week
Please provide the following information for each company:
- Ticker symbol
- Company name
- Earnings date
- Timing (BMO/AMC/TAS)
- Market cap (approximate)
- Sector
I will format this into the standard earnings calendar report.
处理手动输入:
- 解析用户提供的财报数据
- 按日期、时间和市值进行组织
- 使用相同模板生成报告
- 在报告中注明:“数据来源:手动输入”
用例与示例
用例1:每周回顾(主要用例)
用户请求:"获取下周的财报日历"
工作流程:
- 获取当前日期(例如:2025年11月2日)
- 计算目标周(2025年11月3日至9日)
- 加载FMP API指南
- 检测/请求API密钥
- 获取财报数据:
python scripts/fetch_earnings_fmp.py 2025-11-03 2025-11-09 > earnings_data.json - 生成Markdown报告:
python scripts/generate_report.py earnings_data.json earnings_calendar_2025-11-02.md - 向用户发送摘要通知
完整一句话总结:
python scripts/fetch_earnings_fmp.py 2025-11-03 2025-11-09 > earnings_data.json && \
python scripts/generate_report.py earnings_data.json earnings_calendar_2025-11-02.md
用例2:专注于特定日期
用户请求:"周一会发布哪些财报?"
工作流程:
- 获取当前日期并确定下一个周一(例如:2025年11月4日)
- 获取整周数据(与用例1相同)
- 生成完整报告但突出显示周一部分
- 提供周一的财报口头摘要并加以强调
用例 3:超大型股聚焦
用户请求:"显示下周市值超过1000亿美元的公司的财报信息"
工作流程:
- 获取完整财报数据(脚本已预设过滤市值>20亿美元的公司)
- 正常处理和组织数据
- 生成报告时,在顶部添加"超大型股聚焦"部分
- 筛选表格,仅显示市值>1000亿美元的公司
- 注意:完整数据仍包含在附录中供参考
用例 4:特定行业
用户请求:"下周有哪些科技公司发布财报?"
工作流程:
- 获取完整财报数据
- 正常处理和组织数据
- 按行业筛选结果,选择"科技"行业
- 生成聚焦科技行业的报告
- 注意:报告模板结构保持不变;仅内容经过筛选
故障排除
问题:API密钥无效
解决方案:
- 验证API密钥是否正确(仔细复制粘贴)
- 检查API密钥是否处于激活状态(登录FMP控制面板)
- 确保密钥前后没有多余的空格
- 尝试从FMP控制面板生成新的API密钥
问题:脚本返回空结果
解决方案:
- 验证日期范围是否为未来日期(而非过去日期)
- 检查日期格式是否为YYYY-MM-DD
- 尝试更宽的日期范围(例如14天而非7天)
- 确认公司确实在该周已公布财报日期
问题:缺少主要公司
解决方案:
- 公司可能尚未公布财报日期
- 部分公司公布日期非常晚(提前1-2天)
- 与公司投资者关系网站进行交叉核对
- 市值可能已跌破20亿美元门槛
问题:触发速率限制(429错误)
解决方案:
- 免费层级:每日250次调用
- 每份周报使用约3-5次API调用
- 检查其他工具/脚本是否使用同一API密钥
- 等待24小时速率限制重置
- 若需频繁使用,可考虑升级至付费层级
问题:脚本执行错误
解决方案:
- 验证Python 3是否已安装:
python3 --version - 安装requests库:
pip install requests - 检查脚本是否具有执行权限:
chmod +x fetch_earnings_fmp.py - 显式使用python3运行:
python3 fetch_earnings_fmp.py ...
最佳实践
注意事项
✓ 在任何数据检索之前,先获取当前日期 ✓ 使用FMP API作为主要来源以确保可靠性 ✓ 将API密钥存储在环境变量中,以便在CLI中使用 ✓ 按市值排序,优先考虑高影响力公司 ✓ 按日期和发布时间分组,以实现逻辑组织 ✓ 包含汇总统计以便快速概览 ✓ 在报告页脚注明数据来源 ✓ 使用清晰的Markdown表格以提高可读性 ✓ 提供发布时间参考部分以明确时间 ✓ 注明数据新鲜度和可能存在的变更 ✓ 在可用时纳入每股收益和营收预测
禁止事项
✗ 不要未经从当前日期计算就假定"下周" ✗ 不要省略发布时间信息(盘前/盘后/盘中) ✗ 不要在报告中混用日期格式(保持一致性) ✗ 除非特别要求,否则不要包含微型/小型市值公司 ✗ 不要忘记在各部分内按市值排序 ✗ 不要在对话或报告中分享API密钥 ✗ 不要包含本周或已过期的财报 ✗ 不要未经质量保证检查就生成报告 ✗ 不要将API密钥提交到版本控制系统
安全注意事项
API密钥安全
重要提醒:
- ✓ 测试时使用免费层级的API密钥
- ✓ 定期轮换密钥
- ✓ 不要分享包含API密钥的对话
- ✓ 为CLI使用将API密钥设置为环境变量
- ✓ 聊天中提供的密钥仅限会话使用(会话结束后即失效)
- ✗ 切勿将API密钥提交至Git仓库
- ✗ 切勿将具备敏感数据访问权限的生产环境API密钥用于开发测试
最佳实践: 对于Claude代码(CLI),请始终使用环境变量:
# Add to ~/.zshrc or ~/.bashrc
export FMP_API_KEY="your-key-here"
对于Claude网页版,请注意:
- 聊天中输入的API密钥具有临时性
- 仅存储在对话上下文中
- 不会保存至磁盘
- 会话结束时自动清除
资源
FMP API:
- 主要文档:https://site.financialmodelingprep.com/developer/docs
- 获取API密钥:https://site.financialmodelingprep.com/developer/docs
- 收益日历API:https://site.financialmodelingprep.com/developer/docs/earnings-calendar-api
- 公司概况API:https://site.financialmodelingprep.com/developer/docs/companies-key-metrics-api
- 定价/速率限制:https://site.financialmodelingprep.com/developer/docs/pricing
补充来源(用于验证):
- Seeking Alpha:https://seekingalpha.com/earnings/earnings-calendar
- 雅虎财经:https://finance.yahoo.com/calendar/earnings
- MarketWatch:https://www.marketwatch.com/tools/earnings-calendar
技能资源:
- FMP API 指南:
references/fmp_api_guide.md - Python 脚本:
scripts/fetch_earnings_fmp.py - 报告模板:
assets/earnings_report_template.md
总结
该技能提供了一种可靠的、基于API的方法来生成美股每周盈利日历。通过使用FMP API,确保获取结构化的准确数据,并附带如每股收益/营收预估等额外洞察。多环境支持使其能在命令行、桌面和网页端灵活使用,而备用模式则确保了即便没有API访问也能保持功能运行。
核心工作流程:日期计算 → API密钥设置 → API数据获取 → 处理 → 报告生成 → 质量保证 → 交付
输出结果:生成简洁有序的Markdown报告,盈利数据按日期/时段/市值分组,包含摘要统计和交易注意事项。


微信扫一扫,打赏作者吧~