生成摩根士丹利风格的投资演示PPTX,用于制作路演、投行Pitch Book、投资委员会备忘录、股票覆盖启动、季度业绩更新等演示。适用于CGMA/ACCA/CFA持证人及投行、买方、卖方分析师。
场景说明首次覆盖启动Initiation of Coverage — 公司/行业首次研究报告季度业绩更新Quarterly Earnings Update — 财报发布后的更新演示投资委员会 MemoInvestment Committee Memo — IC 审批材料路演演示Roadshow / Non-Deal Roadshow — 面向机构投资者管理层会议Management Meeting Prep — 与公司管理层交流材料并购推介M&A Pitch Book — 买方/卖方财务顾问材料
本技能可生成 18 种专业页面类型,覆盖投行研究演示的全流程:
#页面类型函数说明1封面页slide_cover()公司名、评级、目标价、行业观点、What's Changed 摘要2Key Takeawaysslide_key_takeaways()3-5 条核心要点,金色数字放大3Section Dividerslide_section_divider()章节分隔页,深蓝背景4Content 内容页slide_content()左文右图布局,支持饼图/数据卡片5Metric Blocksslide_metric_blocks()KPI 指标块(2x3 网格)6Rating Tableslide_rating_table()投资评级表格(Ticker/Rating/TP/Company)7Value Chainslide_value_chain()产业链/价值链可视化8What's Changedslide_whats_changed()变动追踪(评级/TP/观点变动)9Thesis in Chartsslide_thesis_in_charts()核心论点图表(2x2 网格)10Shovel Stocksslide_shovel_stocks()铲子股/概念股列表11Market Monitorslide_market_monitor()市场监测(四色卡片)12Financial Chartslide_financial_chart()财务图表(柱+折线叠加,含预测路径)13Executive Summaryslide_executive_summary()执行摘要(四象限:论点/TP/风险/催化剂)14Scenario Comparisonslide_scenario_comparison()DCF 情景对比(Bear/Base/Bull)15WACC Breakdownslide_wacc_breakdown()WACC 拆解表格16Valuation Bridgeslide_valuation_bridge()估值桥(从 NOPAT 到 Equity Value)17Sensitivity Heatmapslide_sensitivity_heatmap()敏感性热力图(WACC x TGR 矩阵)18Disclosureslide_disclosure()免责声明页
python
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")
bash
# 使用内置样例数据生成
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
标准演示文稿的页面顺序(数据字段存在时自动插入):
text
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_namestr否公司名称(封面显示)title_cnstr否中文标题title_enstr否英文标题subtitlestr否副标题ratingstr否投资评级:Overweight / Equal-weight / Underweighttarget_pricestr否目标价,如 "$125"current_pricestr否当前价格,如 "$98.5"date_strstr否日期字符串analyststr否分析师姓名research_typestr否研究类型:Foundation / Update / Flashindustry_viewstr否行业观点:Attractive / In-Line / Cautiousdisclosure_textstr否自定义免责声明文本
字段类型说明key_takeawaysList[str]3-5 条核心要点metricsList[dict]KPI 指标块数组content_pagesList[dict]内容页数组rating_tableList[List] 或 List[Dict]评级表格shovel_stocksList[dict]铲子股列表shovel_stocks_listList[dict]shovel_stocks 别名market_monitorList[dict]市场监测卡片financial_chartdict财务图表数据executive_summarydict执行摘要数据scenariosdictDCF 情景数据sensitivitydict敏感性矩阵数据whats_changedList[dict]变动摘要thesis_chartsList[dict]核心论点图表value_chainList[dict]产业链数据
python
{
"value": "~$600B", # 核心数字(金色放大)
"unit": "AI CapEx 2026E", # 单位/时间
"label": "全球 AI 相关资本开支", # 说明文字
}
python
{
"title_cn": "中文标题",
"title_en": "English Title",
"section_cn": "章节中文名", # 可选,用于 Section Divider
"section_en": "Section Name",
"body": ["段落一", "", "段落二"], # 空字符串表示换行
"chart_img": "", # 图片路径(留空则显示占位卡片)
"data": {"sectors_allocation": [...]}, # 可选,饼图数据
"source": "Source: Company Data",
}
python
# 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 领导者"},
]
python
{
"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", # 可选,触发评级列
}
python
{
"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", # 可选
}
python
{
"thesis": "核心投资论点...",
"tp_and_upside": "TP $125 (+27% upside)...",
"key_risks": ["风险一", "风险二"],
"catalysts": ["催化剂一", "催化剂二"],
"title_cn": "执行摘要", # 可选
"title_en": "Executive Summary", # 可选
}
python
{
"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, ...},
}
python
{
"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],
...
],
}
python
{
"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 需求超预期",
}
python
{
"title": "AI CapEx 加速",
"subtitle": "全球 AI 资本开支($B)",
"chart_type": "bar", # bar / line / pie
"data": {"labels": [...], "values": [...]},
"takeaway": "2026E 预计达 $600B",
}
python
{
"stage": "上游",
"items": [
{"name": "HBM 内存", "companies": ["SK Hynix", "Samsung"], "share": "45%"},
],
}
当前内置 1 套经典主题(classic),采用 Morgan Stanley 品牌色系:
色彩Hex用途MS Navy#0B2C5C主色 / 标题栏 / 章节底色MS Gold#C8A951辅助强调 / 关键数字OW Green#1F7A3EOverweight 评级EW Orange#D97706Equal-weight 评级UW Red#B91C1CUnderweight 评级MS Brand Blue#00559F品牌蓝Chart Blue#3B81B9图表主色Chart Red#FB0301图表辅助色
python
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"返回: 成功保存的文件路径
python
sample_data() -> Dict[str, Any]
返回一份完整的样例数据字典,可直接传入 make_deck()。
python
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.21PPTX 文件生成
安装依赖:
bash
pip install python-pptx
#251A1AAuthor: WANG DONG JIE ( @yjkj999999 | Clawhub)
Version: 1.1.0 | License: MIT | Category: Investment Presentation
适用于 CGMA/ACCA/CFA 持证人及投行/买方/卖方分析师。生成符合摩根士丹利品牌标准的投资演示文稿。