| name | invest-cap |
| description | 在包含公司年报和参考资料(markdown)的当前目录中生成资本配置研究报告(markdown 格式)。重点关注资本配置分析,包括分红、股票回购和投资。当用户需要创建投资研究报告、分析资本配置策略或生成投资分析财务图表时使用。 |
投资研究报告生成器
生成专业的资本配置研究报告,重点关注资本配置分析。当前目录应包含:
- 最新年报(为了保证你的专注度,只使用最新一年的财报作为资料)
- 参考资料(markdown 格式),其中有公司最近10年的主要投资项目
报告结构
资本配置章节(必需)
分析三个组成部分:分红、股票回购 和 投资
1. 分红分析
计算并报告:
- 最近一年股息率:每股年股息 / 当前股价
- 最近一年派息率:年股息总额 / 净利润
- 5 年分红趋势:增长率和稳定性
- 插入图表:
 使用 ChartGenerator.dividend_growth()
2. 股票回购分析
计算并报告:
- 最近一年回购收益率:回购总额 / 市值
- 5 年股数变化:比较当前股数与 5 年前
- 股权激励 vs 回购影响:股权激励是否抵消了回购?
- 计算:(5 年前股数 - 当前股数) / 5 年前股数
- 负变化 = 股权激励超过回购(摊薄)
- 正变化 = 回购超过股权激励(增厚)
- 插入图表:
 使用 ChartGenerator.share_count_trend()
3. 投资分析
投资分析应包含以下四个维度:
3.1 收购与并购投资 (M&A)
创建主要投资表格(最近 10 年):
要求:
- 包含大于 10 年投资总额 1% 的投资
- 按金额降序排序
- 标记结果:已完成、进行中、已失败
- 分析投资战略演变和效率
3.2 资本支出分析 (Capex)
必须包含:固定资产投资的年度趋势分析
| 项目 | 内容 |
|---|
| 计算指标 | 资本支出/营业收入、资本支出/自由现金流 |
| 趋势分析 | 5年资本支出变化趋势 |
| 投资方向 | 产能扩张、研发设施、数据中心、零售店等 |
示例表格:
| 年份 | 资本支出 | 占收入比 | 占FCF比 | 主要用途 |
|---|
| 2021 | $10.5B | 2.8% | 11.3% | 产能扩张、数据中心 |
| 2022 | $11.2B | 2.9% | 10.1% | 研发设施、芯片设备 |
3.3 研发投资分析 (R&D)
必须包含:研发投入的深度分析
| 项目 | 内容 |
|---|
| 计算指标 | 研发费用/营业收入、研发费用增长率 |
| 趋势分析 | 5年研发投入变化 |
| 重点领域 | AI、芯片、新产品线等关键投资方向 |
示例表格:
| 年份 | 研发费用 | 占收入比 | 同比增长 | 重点投入领域 |
|---|
| 2025 | $34.6B | 8.3% | +9.2% | AI、芯片、Vision Pro |
3.4 战略性财务投资
分析公司的战略股权投资(如有):
- 投资其他公司股权(如苹果投资滴滴)
- 合资企业
- 少数股权投资
⚠️ 投资分析完整性检查:
确保报告包含以下所有投资维度:
图表: 使用 ChartGenerator.capital_allocation_breakdown()
资本配置分解图表应包含:
- 股票回购
- 分红
- 资本支出
- 研发投资
- 收购(如有重大)
数据收集工作流程
步骤 1:从年报中提取数据
使用 PDF 阅读工具提取:
- 利润表(收入、净利润、每股收益)
- 资产负债表(股数、股东权益、债务)
- 现金流量表(分红、回购、资本支出)
- 资本配置附注
- 重大投资和收购
步骤 2:获取最新财务数据(如需要)
使用 stockanalysis skill 获取 5 年财务数据进行交叉验证:
与参考资料交叉验证以确保准确性。
步骤 3:验证数据来源
数据验证要求: 详见 invest-report/references/common-guidelines.md(数据验证规范)。
步骤 4:生成图表(强制执行)
⚠️ 重要:在完成报告时,必须执行以下步骤来生成图表:
- 创建图表生成脚本:在当前目录创建Python脚本
- 执行脚本生成图表:使用Bash工具运行Python脚本
- 验证图表文件:检查
generated_images/ 目录是否包含生成的图片
- 在报告中引用图片:使用markdown语法引用图表
必需图表:
- 股息增长图 (
dividend_growth.png)
- 股数趋势图 (
share_count_trend.png)
- 资本配置分解图 (
capital_allocation_breakdown.png)
创建图表生成脚本模板:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
import os
os.makedirs('generated_images', exist_ok=True)
years = ['2020', '2021', '2022', '2023', '2024']
dividends = [0, 0, 0, 0, 0.28]
share_counts = [635, 642, 650, 655, 660]
repurchases = [0, 0, 0, 16.17, 21.72]
def create_dividend_growth():
fig, ax = plt.subplots(figsize=(12, 6))
bars = ax.bar(years, dividends, color='#43A047', edgecolor='white', linewidth=1.5)
ax.set_ylabel('Dividend Per Share (USD)', fontsize=12, fontweight='bold')
ax.set_xlabel('Year', fontsize=12, fontweight='bold')
ax.set_title('Dividend Growth Trend', fontsize=14, fontweight='bold')
ax.grid(axis='y', alpha=0.3)
for bar, val in zip(bars, dividends):
if val > 0:
height = bar.get_height()
ax.annotate(f'${val:.2f}', xy=(bar.get_x() + bar.get_width() / 2, height),
xytext=(0, 5), textcoords="offset points", ha='center',
fontsize=10, fontweight='bold')
plt.tight_layout()
plt.savefig('generated_images/dividend_growth.png', dpi=300, bbox_inches='tight')
plt.close()
print('[OK] dividend_growth.png')
def create_share_count_trend():
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(years, share_counts, marker='o', linewidth=2.5, markersize=8, color='#1E88E5')
ax.fill_between(years, share_counts, alpha=0.3, color='#1E88E5')
ax.set_ylabel('Share Count (Millions)', fontsize=12, fontweight='bold')
ax.set_xlabel('Year', fontsize=12, fontweight='bold')
ax.set_title('Share Count Trend', fontsize=14, fontweight='bold')
ax.grid(axis='y', alpha=0.3)
for i, (x, y) in enumerate(zip(years, share_counts)):
ax.annotate(f'{y:.0f}M', xy=(i, y), xytext=(0, 10),
textcoords="offset points", ha='center', fontsize=10, fontweight='bold')
plt.tight_layout()
plt.savefig('generated_images/share_count_trend.png', dpi=300, bbox_inches='tight')
plt.close()
print('[OK] share_count_trend.png')
def create_capital_allocation():
categories = ['R&D\n131.39亿', 'S&M\n159.88亿', 'G&A\n95.40亿',
'Capex\n5.91亿', 'Div+Buyback\n25.22亿', 'Cash Add\n365.92亿']
amounts = [131.39, 159.88, 95.40, 5.91, 25.22, 365.92]
colors = ['#1E88E5', '#43A047', '#FB8C00', '#9C27B0', '#E91E63', '#607D8B']
fig, ax = plt.subplots(figsize=(12, 6))
y_pos = np.arange(len(categories))
bars = ax.barh(y_pos, amounts, color=colors, edgecolor='white', linewidth=1.5)
ax.set_yticks(y_pos)
ax.set_yticklabels(categories, fontsize=11)
ax.invert_yaxis()
ax.set_xlabel('Amount (Billion CNY)', fontsize=12, fontweight='bold')
ax.set_title('Capital Allocation Breakdown (2024)', fontsize=14, fontweight='bold')
ax.grid(axis='x', alpha=0.3)
for i, (bar, val) in enumerate(zip(bars, amounts)):
width = bar.get_width()
ax.annotate(f'{val:.1f}亿', xy=(width, bar.get_y() + bar.get_height() / 2),
xytext=(5, 0), textcoords="offset points", ha='left', va='center',
fontsize=10, fontweight='bold')
plt.tight_layout()
plt.savefig('generated_images/capital_allocation_breakdown.png', dpi=300, bbox_inches='tight')
plt.close()
print('[OK] capital_allocation_breakdown.png')
if __name__ == '__main__':
create_dividend_growth()
create_share_count_trend()
create_capital_allocation()
print('\nAll charts generated successfully!')
执行步骤:
- 将上述脚本保存到当前目录(替换为从年报提取的实际数据)
- 使用Bash工具执行:
python generate_cap_charts.py
- 验证图表已生成:
ls generated_images/
- 在报告中引用图片:



验证清单:
□ Python脚本已创建并执行
□ generated_images/目录已创建
□ 所有3张图表已生成
□ 报告中已正确引用所有图片
步骤 5:撰写报告
生成 markdown 报告,包含:
- 公司概述
- 资本配置分析(详细)
- 嵌入支持图表
- 数据来源引用
- 记录的矛盾点
图表模板
图表 6:股数趋势
generator.share_count_trend(
years=['2019', '2020', '2021', '2022', '2023', '2024'],
share_counts=[1000000000, 980000000, 960000000, ...],
title="Share Count Trend"
)
generator.share_count_trend(
years=['2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024'],
share_counts=[5444000000, 5257000000, 5022000000, 4574000000, 4443000000, 16427000000, ...],
title="Apple Share Count Trend (2016-2025)",
split_year=2021,
split_ratio=4.0
)
⚠️ 重要:股票分割处理
- 如果数据中包含股票分割前后数据,必须指定
split_year 和 split_ratio 参数
- 图表会自动将分割前的股数调整为分割后基准,使趋势连续可读
- 不指定这些参数会导致图表 Y 轴比例异常(高度过高)
图表 7:股息增长
generator.dividend_growth(
years=['2015', '2016', ..., '2024'],
dividends=[1.20, 1.32, 1.45, ...],
title="Dividend Per Share Growth (Last 10 Years)"
)
图表 10:资本配置分解
generator.capital_allocation_breakdown(
years=['2020', '2021', '2022', '2023', '2024'],
dividends=[2.5, 2.7, 2.9, 3.1, 3.3],
repurchases=[5.2, 6.1, 4.8, 7.2, 8.5]
)
数据验证规则
- 交叉核对年报数据与 stockanalysis 数据
- 记录差异并说明原因
- 独立来源 = 独立的数据提供商,非转载
- 最新数据优先 = 使用昨天的日期作为参考点
- 保守估计当来源冲突时
输出格式
将报告保存为:[公司名称]_投资报告_YYYY-MM-DD.md
示例结构:
# [公司名称]资本配置研究报告
**日期**:[昨天的日期]
**分析师**:Claude AI
## 资本配置分析
### 分红
- 股息率:X.X%
- 派息率:XX%
- 5 年趋势:[分析]

### 股票回购
- 回购收益率:X.X%
- 股数变化:-X.X%(增厚)/ +X.X%(摊薄)

### 重大投资

| 年份 | 投资 | 金额 | 用途 | 结果 |
|------|------------|--------|---------|---------|
---
**数据来源**:
- [年份] 年报:[链接/引用]
- stockanalysis.com:[股票代码]
- [其他来源及评级]
资源
scripts/chart_generator.py
使用 matplotlib 生成财务图表的 Python 模块。
可用方法:
share_count_trend(years, share_counts, title, split_year=None, split_ratio=1.0) - 股数趋势折线图,支持股票分割处理
dividend_growth(years, dividends, title) - 股息增长柱状图
capital_allocation_breakdown(years, dividends, repurchases, title) - 堆叠柱状图
revenue_trend(years, revenues, title) - 收入趋势折线图
revenue_segment_breakdown(segments, values, title) - 饼图
profit_margins(years, gross_margins, operating_margins, net_margins, title) - 多条线
所有图表:
- 300 DPI 分辨率
- 仅使用英文标签
- 自动保存到
generated_images/