Install
openclaw skills install ms-investment-deck生成摩根士丹利风格的投资演示PPTX。当用户需要创建投资演示、路演PPT、投行Pitch Book、投资委员会 memo、股票覆盖启动演示、季度业绩更新演示时调用。适用于CGMA/ACCA/CFA持证人及投行/买方/卖方分析师。
openclaw skills install ms-investment-deck| 场景 | 说明 |
|---|---|
| 首次覆盖启动 | Initiation of Coverage — 公司/行业首次研究报告 |
| 季度业绩更新 | Quarterly Earnings Update — 财报发布后的更新演示 |
| 投资委员会 Memo | Investment Committee Memo — IC 审批材料 |
| 路演演示 | Roadshow / Non-Deal Roadshow — 面向机构投资者 |
| 管理层会议 | Management Meeting Prep — 与公司管理层交流材料 |
| 并购推介 | M&A Pitch Book — 买方/卖方财务顾问材料 |
本技能可生成 18 种专业页面类型,覆盖投行研究演示的全流程:
| # | 页面类型 | 函数 | 说明 |
|---|---|---|---|
| 1 | 封面页 | slide_cover() | 公司名、评级、目标价、行业观点、What's Changed 摘要 |
| 2 | Key Takeaways | slide_key_takeaways() | 3-5 条核心要点,金色数字放大 |
| 3 | Section Divider | slide_section_divider() | 章节分隔页,深蓝背景 |
| 4 | Content 内容页 | slide_content() | 左文右图布局,支持饼图/数据卡片 |
| 5 | Metric Blocks | slide_metric_blocks() | KPI 指标块(2x3 网格) |
| 6 | Rating Table | slide_rating_table() | 投资评级表格(Ticker/Rating/TP/Company) |
| 7 | Value Chain | slide_value_chain() | 产业链/价值链可视化 |
| 8 | What's Changed | slide_whats_changed() | 变动追踪(评级/TP/观点变动) |
| 9 | Thesis in Charts | slide_thesis_in_charts() | 核心论点图表(2x2 网格) |
| 10 | Shovel Stocks | slide_shovel_stocks() | 铲子股/概念股列表 |
| 11 | Market Monitor | slide_market_monitor() | 市场监测(四色卡片) |
| 12 | Financial Chart | slide_financial_chart() | 财务图表(柱+折线叠加,含预测路径) |
| 13 | Executive Summary | slide_executive_summary() | 执行摘要(四象限:论点/TP/风险/催化剂) |
| 14 | Scenario Comparison | slide_scenario_comparison() | DCF 情景对比(Bear/Base/Bull) |
| 15 | WACC Breakdown | slide_wacc_breakdown() | WACC 拆解表格 |
| 16 | Valuation Bridge | slide_valuation_bridge() | 估值桥(从 NOPAT 到 Equity Value) |
| 17 | Sensitivity Heatmap | slide_sensitivity_heatmap() | 敏感性热力图(WACC x TGR 矩阵) |
| 18 | Disclosure | slide_disclosure() | 免责声明页 |
from ms_investment_deck import make_deck, sample_data
# 使用内置样例数据生成演示文稿
data = sample_data()
make_deck(data, "output/my_deck.pptx", theme="classic", language="zh")
# 自定义数据
my_data = {
"company_name": "示例公司",
"title_cn": "投资标题",
"title_en": "Investment Title",
"subtitle": "副标题说明",
"rating": "Overweight",
"target_price": "$125",
"current_price": "$98.5",
"date_str": "2026-06-13",
"analyst": "张三 · CFA",
"research_type": "Foundation",
"key_takeaways": [
"要点一:核心投资逻辑",
"要点二:关键数据支撑",
"要点三:风险提示",
],
"metrics": [
{"value": "$600B", "unit": "Market Size 2026E", "label": "市场规模"},
{"value": "+38%", "unit": "YoY", "label": "同比增速"},
],
"content_pages": [
{
"title_cn": "行业分析",
"title_en": "Industry Analysis",
"body": ["分析正文段落一", "", "分析正文段落二"],
},
],
}
make_deck(my_data, "output/custom.pptx")
# 使用内置样例数据生成
python scripts/run.py -o output/demo.pptx
# 指定语言
python scripts/run.py -o output/demo_en.pptx --lang en
# 指定主题
python scripts/run.py -o output/demo.pptx --theme classic
标准演示文稿的页面顺序(数据字段存在时自动插入):
1. 封面页(Cover) — 始终生成
2. What's Changed — whats_changed 字段存在时
3. Key Takeaways — key_takeaways 字段存在时
4. Section Divider: 分析内容 — content_pages 存在时
5. Content Pages (x N) — 每个内容页
6. Section Divider: 关键指标 — metrics 存在时
7. Metric Blocks — KPI 指标块
8. Financial Chart — financial_chart 存在时
9. WACC Breakdown — scenarios 存在时
10. Valuation Bridge — scenarios 存在时
11. Sensitivity Heatmap — sensitivity 存在时
12. Section Divider: 投资评级总览 — rating_table 存在时
13. Rating Table — 评级表格
14. Section Divider: 铲子股清单 — shovel_stocks 存在时
15. Shovel Stocks — 铲子股列表
16. Market Monitor — market_monitor 存在时
17. Executive Summary — executive_summary 存在时
18. Thesis in Charts — thesis_charts 存在时
19. Scenario Comparison — scenarios 存在时
20. Value Chain — value_chain 存在时
21. Disclosure — 始终生成
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
company_name | str | 否 | 公司名称(封面显示) |
title_cn | str | 否 | 中文标题 |
title_en | str | 否 | 英文标题 |
subtitle | str | 否 | 副标题 |
rating | str | 否 | 投资评级:Overweight / Equal-weight / Underweight |
target_price | str | 否 | 目标价,如 "$125" |
current_price | str | 否 | 当前价格,如 "$98.5" |
date_str | str | 否 | 日期字符串 |
analyst | str | 否 | 分析师姓名 |
research_type | str | 否 | 研究类型:Foundation / Update / Flash |
industry_view | str | 否 | 行业观点:Attractive / In-Line / Cautious |
disclosure_text | str | 否 | 自定义免责声明文本 |
| 字段 | 类型 | 说明 |
|---|---|---|
key_takeaways | List[str] | 3-5 条核心要点 |
metrics | List[dict] | KPI 指标块数组 |
content_pages | List[dict] | 内容页数组 |
rating_table | List[List] 或 List[Dict] | 评级表格 |
shovel_stocks | List[dict] | 铲子股列表 |
shovel_stocks_list | List[dict] | shovel_stocks 别名 |
market_monitor | List[dict] | 市场监测卡片 |
financial_chart | dict | 财务图表数据 |
executive_summary | dict | 执行摘要数据 |
scenarios | dict | DCF 情景数据 |
sensitivity | dict | 敏感性矩阵数据 |
whats_changed | List[dict] | 变动摘要 |
thesis_charts | List[dict] | 核心论点图表 |
value_chain | List[dict] | 产业链数据 |
{
"value": "~$600B", # 核心数字(金色放大)
"unit": "AI CapEx 2026E", # 单位/时间
"label": "全球 AI 相关资本开支", # 说明文字
}
{
"title_cn": "中文标题",
"title_en": "English Title",
"section_cn": "章节中文名", # 可选,用于 Section Divider
"section_en": "Section Name",
"body": ["段落一", "", "段落二"], # 空字符串表示换行
"chart_img": "", # 图片路径(留空则显示占位卡片)
"data": {"sectors_allocation": [...]}, # 可选,饼图数据
"source": "Source: Company Data",
}
# List[List] 格式
[
["NVDA.O", "Overweight", "$126.5", "NVIDIA", "AI compute 领导者"],
["TSM.N", "Overweight", "$178.2", "Taiwan Semiconductor", "先进制程"],
]
# List[Dict] 格式(自动转换)
[
{"ticker": "NVDA.O", "rating": "Overweight", "target_price": "$126.5",
"company": "NVIDIA", "reason": "AI compute 领导者"},
]
{
"rank": 1,
"company": "Aurora Power Co.",
"ticker": "AUR.N",
"product": "高压直流输电与数据中心电力模块",
"analyst": "S. Lee",
"market_cap_mn": 3200.5, # 市值(百万)
"perf_1y_pct": 142.3, # 一年涨幅(%)
"rating": "Overweight", # 可选,触发评级列
}
{
"years": ["FY22", "FY23", "FY24", "FY25E", "FY26E", "FY27E", "FY28E"],
"revenue": [1200.0, 1450.0, 1780.0, 2120.0, 2460.0, 2810.0, 3180.0],
"ebitda": [280.0, 348.0, 442.0, 550.0, 665.0, 780.0, 910.0],
"margins": {
"gross": [55.0, 56.5, 58.2, 60.0, 61.5, 62.8, 63.9],
"ebitda": [23.3, 24.0, 24.8, 25.9, 27.0, 27.8, 28.6],
"net": [14.2, 15.0, 16.1, 17.0, 17.8, 18.5, 19.1],
},
"takeaways": ["要点一", "要点二", "要点三"],
"title_cn": "收入 / 利润率一览", # 可选
"title_en": "Revenue & EBITDA", # 可选
}
{
"thesis": "核心投资论点...",
"tp_and_upside": "TP $125 (+27% upside)...",
"key_risks": ["风险一", "风险二"],
"catalysts": ["催化剂一", "催化剂二"],
"title_cn": "执行摘要", # 可选
"title_en": "Executive Summary", # 可选
}
{
"bear": {"label": "Bear", "wacc": 12.5, "tgr": 1.5, ...},
"base": {"label": "Base", "wacc": 10.0, "tgr": 2.5, ...},
"bull": {"label": "Bull", "wacc": 8.5, "tgr": 3.5, ...},
}
{
"wacc_range": [8.0, 9.0, 10.0, 11.0, 12.0, 13.0],
"tgr_range": [1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0],
"matrix": [
[120.0, 135.0, 152.0, 172.0, 198.0, 230.0],
[110.0, 123.0, 138.0, 155.0, 176.0, 202.0],
...
],
}
{
"action": "Initiated", # Initiated / Reiterated / Upgraded / Downgraded
"ticker": "NVDA.O",
"company": "NVIDIA Corp",
"prev_rating": "",
"new_rating": "Overweight",
"prev_tp": "",
"new_tp": "$126.5",
"reason": "AI compute 需求超预期",
}
{
"title": "AI CapEx 加速",
"subtitle": "全球 AI 资本开支($B)",
"chart_type": "bar", # bar / line / pie
"data": {"labels": [...], "values": [...]},
"takeaway": "2026E 预计达 $600B",
}
{
"stage": "上游",
"items": [
{"name": "HBM 内存", "companies": ["SK Hynix", "Samsung"], "share": "45%"},
],
}
当前内置 1 套经典主题(classic),采用 Morgan Stanley 品牌色系:
| 色彩 | Hex | 用途 |
|---|---|---|
| MS Navy | #0B2C5C | 主色 / 标题栏 / 章节底色 |
| MS Gold | #C8A951 | 辅助强调 / 关键数字 |
| OW Green | #1F7A3E | Overweight 评级 |
| EW Orange | #D97706 | Equal-weight 评级 |
| UW Red | #B91C1C | Underweight 评级 |
| MS Brand Blue | #00559F | 品牌蓝 |
| Chart Blue | #3B81B9 | 图表主色 |
| Chart Red | #FB0301 | 图表辅助色 |
make_deck(data: Dict[str, Any], output_path: str,
theme: str = "classic", language: str = "zh") -> str
构建并保存一份 Morgan Stanley 风格的研究演示文稿。所有数据字段均为可选,缺失则跳过对应页面。
参数:
data — 结构化数据字典(参见数据字典)output_path — 输出 .pptx 文件路径theme — 主题名称(当前支持 "classic")language — 语言:"zh" / "en" / "bilingual"返回: 成功保存的文件路径
sample_data() -> Dict[str, Any]
返回一份完整的样例数据字典,可直接传入 make_deck()。
sample_data_financial() -> Dict[str, Any]
返回一份财务图表专用样例数据(financial_chart 字段)。
所有 slide_* 函数接受一个 pptx.slide.Slide 对象作为第一个参数,其余通过关键字参数传入。可直接调用以构建自定义页面序列。
| 函数 | 关键参数 |
|---|---|
slide_cover(slide, *, title_cn, title_en, subtitle, rating, target_price, current_price, company_name, analyst, date_str, research_type, industry_view, whats_changed, language) | 封面页 |
slide_key_takeaways(slide, *, items, language, page_number, total_pages) | 核心要点 |
slide_section_divider(slide, *, title_cn, title_en, category, language) | 章节分隔 |
slide_content(slide, *, title_cn, title_en, body, chart_img, data, source, language, page_number, total_pages) | 内容页 |
slide_metric_blocks(slide, *, metrics, language, page_number, total_pages) | KPI 指标块 |
slide_rating_table(slide, *, rows, language, page_number, total_pages) | 评级表格 |
slide_value_chain(slide, *, data, language, page_number, total_pages) | 产业链 |
slide_whats_changed(slide, *, data, language, page_number, total_pages) | 变动追踪 |
slide_thesis_in_charts(slide, *, data, language, page_number, total_pages) | 论点图表 |
slide_shovel_stocks(slide, *, stocks, language, page_number, total_pages) | 铲子股列表 |
slide_market_monitor(slide, *, blocks, language, page_number, total_pages) | 市场监测 |
slide_disclosure(slide, *, text, language, page_number, total_pages) | 免责声明 |
slide_financial_chart(slide, *, years, revenue, ebitda, margins, takeaways, scenarios, title_cn, title_en, language, page_number, total_pages) | 财务图表 |
slide_executive_summary(slide, *, thesis, tp_and_upside, key_risks, catalysts, title_cn, title_en, language, page_number, total_pages) | 执行摘要 |
slide_scenario_comparison(slide, *, data, theme, language, page_number, total_pages) | 情景对比 |
slide_wacc_breakdown(slide, *, data, theme, language, page_number, total_pages) | WACC 拆解 |
slide_valuation_bridge(slide, *, data, theme, language, page_number, total_pages) | 估值桥 |
slide_sensitivity_heatmap(slide, *, data, theme, language, page_number, total_pages) | 敏感性热力图 |
| 依赖 | 版本 | 说明 |
|---|---|---|
| Python | >= 3.9 | 运行时 |
| python-pptx | >= 0.6.21 | PPTX 文件生成 |
安装依赖:
pip install python-pptx
#251A1AAuthor: WANG DONG JIE (@yjkj999999 | Clawhub)
Version: 1.1.0 | License: MIT | Category: Investment Presentation
适用于 CGMA/ACCA/CFA 持证人及投行/买方/卖方分析师。生成符合摩根士丹利品牌标准的投资演示文稿。