alphacouncil-agent 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/alphacouncil-bear_researcher.md +39 -0
- package/.claude/agents/alphacouncil-bull_researcher.md +40 -0
- package/.claude/agents/alphacouncil-earnings_deep_dive.md +49 -0
- package/.claude/agents/alphacouncil-forward_expectations.md +48 -0
- package/.claude/agents/alphacouncil-ib_event_analysis.md +40 -0
- package/.claude/agents/alphacouncil-insider_sec.md +39 -0
- package/.claude/agents/alphacouncil-macro_regime.md +31 -0
- package/.claude/agents/alphacouncil-market_data.md +37 -0
- package/.claude/agents/alphacouncil-market_narrative.md +45 -0
- package/.claude/agents/alphacouncil-news_industry_management.md +49 -0
- package/.claude/agents/alphacouncil-portfolio_manager.md +22 -0
- package/.claude/agents/alphacouncil-quant_factor.md +38 -0
- package/.claude/agents/alphacouncil-social_pulse.md +49 -0
- package/.claude/agents/alphacouncil-valuation_long_short.md +45 -0
- package/.claude-plugin/marketplace.json +30 -0
- package/.claude-plugin/plugin.json +28 -0
- package/.codex-plugin/plugin.json +32 -0
- package/.grok/agents/alphacouncil-bear_researcher.md +41 -0
- package/.grok/agents/alphacouncil-bull_researcher.md +42 -0
- package/.grok/agents/alphacouncil-earnings_deep_dive.md +50 -0
- package/.grok/agents/alphacouncil-forward_expectations.md +49 -0
- package/.grok/agents/alphacouncil-ib_event_analysis.md +41 -0
- package/.grok/agents/alphacouncil-insider_sec.md +40 -0
- package/.grok/agents/alphacouncil-macro_regime.md +32 -0
- package/.grok/agents/alphacouncil-market_data.md +38 -0
- package/.grok/agents/alphacouncil-market_narrative.md +46 -0
- package/.grok/agents/alphacouncil-news_industry_management.md +50 -0
- package/.grok/agents/alphacouncil-portfolio_manager.md +24 -0
- package/.grok/agents/alphacouncil-quant_factor.md +39 -0
- package/.grok/agents/alphacouncil-social_pulse.md +50 -0
- package/.grok/agents/alphacouncil-valuation_long_short.md +46 -0
- package/.grok/config.toml +4 -0
- package/.mcp.json +11 -0
- package/.opencode/agent/alphacouncil-bear_researcher.md +45 -0
- package/.opencode/agent/alphacouncil-bull_researcher.md +46 -0
- package/.opencode/agent/alphacouncil-earnings_deep_dive.md +54 -0
- package/.opencode/agent/alphacouncil-forward_expectations.md +53 -0
- package/.opencode/agent/alphacouncil-ib_event_analysis.md +45 -0
- package/.opencode/agent/alphacouncil-insider_sec.md +44 -0
- package/.opencode/agent/alphacouncil-macro_regime.md +36 -0
- package/.opencode/agent/alphacouncil-market_data.md +42 -0
- package/.opencode/agent/alphacouncil-market_narrative.md +50 -0
- package/.opencode/agent/alphacouncil-news_industry_management.md +54 -0
- package/.opencode/agent/alphacouncil-portfolio_manager.md +28 -0
- package/.opencode/agent/alphacouncil-quant_factor.md +43 -0
- package/.opencode/agent/alphacouncil-social_pulse.md +54 -0
- package/.opencode/agent/alphacouncil-valuation_long_short.md +50 -0
- package/AGENTS.md +96 -0
- package/CHANGELOG.md +112 -0
- package/CLAUDE.md +144 -0
- package/LICENSE +21 -0
- package/README.ja.md +282 -0
- package/README.md +361 -0
- package/README.zh-CN.md +282 -0
- package/data/industry-map.json +74 -0
- package/docs/attribution.md +99 -0
- package/docs/personas.md +59 -0
- package/docs/report-contract.md +110 -0
- package/mcp/lib/codex.mjs +152 -0
- package/mcp/lib/constants.mjs +139 -0
- package/mcp/lib/council-options.mjs +111 -0
- package/mcp/lib/errors.mjs +46 -0
- package/mcp/lib/feeds.mjs +140 -0
- package/mcp/lib/fsutil.mjs +69 -0
- package/mcp/lib/gates.mjs +208 -0
- package/mcp/lib/grounding.mjs +252 -0
- package/mcp/lib/headings.mjs +65 -0
- package/mcp/lib/industry.mjs +208 -0
- package/mcp/lib/lang.mjs +24 -0
- package/mcp/lib/macro.mjs +167 -0
- package/mcp/lib/markdown.mjs +337 -0
- package/mcp/lib/markets-kr-jp.mjs +180 -0
- package/mcp/lib/markets.mjs +261 -0
- package/mcp/lib/narrative.mjs +235 -0
- package/mcp/lib/options.mjs +216 -0
- package/mcp/lib/orchestrator.mjs +541 -0
- package/mcp/lib/output-modes.mjs +144 -0
- package/mcp/lib/packets.mjs +256 -0
- package/mcp/lib/personas/frontmatter.mjs +80 -0
- package/mcp/lib/personas/registry.mjs +215 -0
- package/mcp/lib/preflight.mjs +174 -0
- package/mcp/lib/prompts.mjs +151 -0
- package/mcp/lib/quotes.mjs +108 -0
- package/mcp/lib/rpc.mjs +737 -0
- package/mcp/lib/run-store.mjs +140 -0
- package/mcp/lib/screen.mjs +283 -0
- package/mcp/lib/sec.mjs +131 -0
- package/mcp/lib/social.mjs +261 -0
- package/mcp/lib/tables.mjs +150 -0
- package/mcp/lib/text.mjs +27 -0
- package/mcp/lib/weights.mjs +150 -0
- package/mcp/server.mjs +92 -0
- package/opencode.json +20 -0
- package/package.json +61 -0
- package/personas/_shared/_debate_base.md +46 -0
- package/personas/_shared/_evidence_base.md +56 -0
- package/personas/_shared/_master_base.md +77 -0
- package/personas/analysts/earnings_deep_dive.md +118 -0
- package/personas/analysts/forward_expectations.md +115 -0
- package/personas/analysts/ib_event_analysis.md +100 -0
- package/personas/analysts/insider_sec.md +98 -0
- package/personas/analysts/macro_regime.md +66 -0
- package/personas/analysts/market_data.md +94 -0
- package/personas/analysts/market_narrative.md +94 -0
- package/personas/analysts/news_industry_management.md +117 -0
- package/personas/analysts/quant_factor.md +97 -0
- package/personas/analysts/social_pulse.md +102 -0
- package/personas/analysts/valuation_long_short.md +109 -0
- package/personas/debate/bear_researcher.md +96 -0
- package/personas/debate/bull_researcher.md +98 -0
- package/personas/debate/portfolio_manager.md +64 -0
- package/personas/masters/masters-adversarial/burry.md +137 -0
- package/personas/masters/masters-adversarial/dalio.md +139 -0
- package/personas/masters/masters-adversarial/druckenmiller.md +144 -0
- package/personas/masters/masters-adversarial/short_seller.md +145 -0
- package/personas/masters/masters-adversarial/soros.md +137 -0
- package/personas/masters/masters-modern/aschenbrenner.md +147 -0
- package/personas/masters/masters-options/natenberg.md +168 -0
- package/personas/masters/masters-options/sinclair.md +166 -0
- package/personas/masters/masters-options/taleb.md +163 -0
- package/personas/masters/masters-quant/asness.md +142 -0
- package/personas/masters/masters-quant/simons.md +143 -0
- package/personas/masters/masters-quant/thorp.md +143 -0
- package/personas/masters/masters-value/buffett.md +123 -0
- package/personas/masters/masters-value/duan_yongping.md +142 -0
- package/personas/masters/masters-value/li_lu.md +146 -0
- package/personas/masters/masters-value/munger.md +117 -0
- package/personas/masters/masters-value-classic/fisher.md +140 -0
- package/personas/masters/masters-value-classic/graham.md +137 -0
- package/personas/masters/masters-value-classic/klarman.md +138 -0
- package/personas/masters/masters-value-classic/lynch.md +133 -0
- package/personas/masters/masters-value-classic/marks.md +145 -0
- package/personas/verifiers/rederivation.md +97 -0
- package/personas/verifiers/refuter.md +99 -0
- package/personas/verifiers/source_fidelity.md +91 -0
- package/skills/agent-skills-governance/SKILL.md +42 -0
- package/skills/alphacouncil-agent/SKILL.md +259 -0
- package/skills/investment-banking/SKILL.md +70 -0
- package/skills/public-equity-investing/SKILL.md +74 -0
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
<a name="readme-top"></a>
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
<img src="assets/banner.png" alt="AlphaCouncil Agent" width="100%" />
|
|
6
|
+
|
|
7
|
+
### 装进终端里的多智能体投资委员会
|
|
8
|
+
|
|
9
|
+
召集一组分析师代理 → 收集带来源的证据 → 多空辩论 → 投资组合经理拍板:**买入 · 增持 · 持有 · 减持 · 卖出**
|
|
10
|
+
|
|
11
|
+
[English](README.md) · **中文** · [日本語](README.ja.md)
|
|
12
|
+
|
|
13
|
+
<p>
|
|
14
|
+
<img src="https://img.shields.io/github/actions/workflow/status/Zhao73/alphacouncil-agent/check.yml?style=for-the-badge&label=build&logo=githubactions&logoColor=white&color=1a7a6a" alt="build" />
|
|
15
|
+
<img src="https://img.shields.io/badge/License-MIT-c9a227?style=for-the-badge" alt="MIT" />
|
|
16
|
+
<img src="https://img.shields.io/badge/Node-%3E%3D18-339933?style=for-the-badge&logo=node.js&logoColor=white" alt="node" />
|
|
17
|
+
<img src="https://img.shields.io/github/stars/Zhao73/alphacouncil-agent?style=for-the-badge&logo=github&color=0d4d4d" alt="stars" />
|
|
18
|
+
</p>
|
|
19
|
+
<p>
|
|
20
|
+
<img src="https://img.shields.io/badge/OpenAI_Codex-412991?style=for-the-badge&logo=openai&logoColor=white" alt="codex" />
|
|
21
|
+
<img src="https://img.shields.io/badge/Claude_Code-D97757?style=for-the-badge&logo=anthropic&logoColor=white" alt="claude code" />
|
|
22
|
+
<img src="https://img.shields.io/badge/MCP-compatible-000000?style=for-the-badge" alt="mcp" />
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
<p>
|
|
26
|
+
<a href="#-用法"><b>用法</b></a> ·
|
|
27
|
+
<a href="docs/INSTALL.md"><b>安装</b></a> ·
|
|
28
|
+
<a href="#-架构"><b>架构</b></a> ·
|
|
29
|
+
<a href="#-免责声明"><b>免责声明</b></a>
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
<div align="center">
|
|
37
|
+
|
|
38
|
+
<img src="assets/run-example.png" alt="A real AlphaCouncil run: six master lenses reaching the same call for different reasons" width="100%" />
|
|
39
|
+
|
|
40
|
+
<sub><i>一次真实运行。六位大师无一支持买入 —— 而分歧不在结论,在理由。</i></sub>
|
|
41
|
+
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
AlphaCouncil Agent 是一个面向**上市股票研究**的 Codex / Claude Code 插件。它会协调多个分析师子代理、收集带来源的证据、进行多空辩论,并产出投资组合经理风格的最终报告。
|
|
45
|
+
|
|
46
|
+
### ✨ 为什么用 AlphaCouncil
|
|
47
|
+
|
|
48
|
+
| | |
|
|
49
|
+
|---|---|
|
|
50
|
+
| 🏛️ **是委员会,不是一家之言** | 11 个专项分析师代理(行情、财报、估值、量化、内部人/SEC、投行事件……)并行工作。 |
|
|
51
|
+
| 🐂🐻 **天生对抗式** | 结构化的多头 vs 空头辩论,由投资组合经理代理裁决并给出实际评级。 |
|
|
52
|
+
| 🔍 **可审计,不瞎编** | 每条结论都映射到 source ID;缺失数据写进「数据缺口」章节,绝不隐藏。 |
|
|
53
|
+
| ⏱️ **多周期结论** | 买入/持有/卖出,外加独立的 1-4 周、3-6 月、12 月判断。 |
|
|
54
|
+
| 🔑 **不依赖金融 API,无需任何密钥** | 不需要金融数据 API、行情源或券商账号。分析师通过代理自带的联网搜索实时取证(**Codex 网页搜索** / **Claude Code 的 WebSearch + WebFetch**),只消耗你已有的 Codex / Claude Code 订阅额度。MIT 开源。 |
|
|
55
|
+
| 📚 **内置研究方法论** | 股票研究与投行事件分析的方法论以**本地 skill** 形式打包(`skills/public-equity-investing`、`skills/investment-banking`)——不依赖 Codex 专属远程工作流,Claude Code 也能获得同等研究深度。 |
|
|
56
|
+
| 📈 **真实行情兜底,免 key** | 内置 `get_quote` 通过 Yahoo + Stooq 拉延迟(~15分钟)的指数 / 股指期货(含夜盘)/ 汇率 / 利率 / 波动率 / 商品 / 个股点位——不用 API key,分析师引用真实数字而非猜测。 |
|
|
57
|
+
|
|
58
|
+
本仓库是可上传的源代码副本。运行产物写在仓库之外的 `~/.alphacouncil-agent/runs/<run_id>/` 下。
|
|
59
|
+
|
|
60
|
+
## 📜 免责声明
|
|
61
|
+
|
|
62
|
+
本软件**仅供教育与研究**,**不构成投资建议**,不构成任何证券买卖推荐或要约。AI 生成的分析可能不完整、过时或错误。投资决策前请自行核实并咨询持牌专业人士。作者不对任何损失承担责任。
|
|
63
|
+
|
|
64
|
+
## 安装
|
|
65
|
+
|
|
66
|
+
完整的 Codex 与 Claude Code 安装说明见 **[docs/INSTALL.md](docs/INSTALL.md)**。**Windows 用户**见 [Windows 小节](docs/INSTALL.md#windows)。
|
|
67
|
+
|
|
68
|
+
**前置条件:** Node.js ≥ 18。headless 真跑研究还需要**已安装并登录的 Codex CLI**(每个分析师 worker 都以 `codex exec` 运行);没有 codex 时,改用安装文档里的 visible 工作流。
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
# Codex
|
|
72
|
+
codex plugin marketplace add Zhao73/alphacouncil-agent
|
|
73
|
+
# 再 codex → /plugins 安装 → /reload-plugins
|
|
74
|
+
|
|
75
|
+
# Claude Code
|
|
76
|
+
/plugin marketplace add Zhao73/alphacouncil-agent
|
|
77
|
+
/plugin install alphacouncil-agent@alphacouncil
|
|
78
|
+
/reload-plugins
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 🚀 用法
|
|
82
|
+
|
|
83
|
+
直接对它说话,@ 一下代理,带上代码或问题:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
@alphacouncil-agent 把 0700.HK 当成多空 pitch 来分析
|
|
87
|
+
@alphacouncil-agent 现在这个价位 AAPL 能不能买?
|
|
88
|
+
@alphacouncil-agent 以 12 个月维度对比 TSLA 和 RIVN
|
|
89
|
+
@alphacouncil-agent 帮我看看 700.HK 现在能不能买
|
|
90
|
+
@alphacouncil-agent トヨタ(7203)を分析して
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
返回的是一份可直接在聊天里读完的报告:
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
结论:增持 (置信度:中)
|
|
97
|
+
├─ 分析师工作记录 ...... 11 个证据代理,38 条带来源主张
|
|
98
|
+
├─ 多头论点 ............ 需求拐点、利润率扩张、回购
|
|
99
|
+
├─ 空头论点 ............ 估值、客户集中度、周期风险
|
|
100
|
+
├─ 短 / 中 / 长期 ...... 1-4周 · 3-6月 · 12月 判断
|
|
101
|
+
├─ 催化剂与风险 ........ 财报、指引、监管
|
|
102
|
+
├─ 数据缺口 ............ 明确列出,从不隐藏
|
|
103
|
+
└─ 来源表 .............. 每条主张映射到 <task>:<source_id>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
简洁交付摘要写入 `~/.alphacouncil-agent/runs/<run_id>/user_response.md`。
|
|
107
|
+
完整报告写入 `~/.alphacouncil-agent/runs/<run_id>/final_report.md`。
|
|
108
|
+
同一目录还会写入每个分析师的 Markdown 文件和 `artifact_index.md` 文件索引。
|
|
109
|
+
|
|
110
|
+
## 它能做什么
|
|
111
|
+
|
|
112
|
+
默认是完整运行,不是精简摘要:
|
|
113
|
+
|
|
114
|
+
- 行情与价格行为
|
|
115
|
+
- 财报深度分析,含财报电话会
|
|
116
|
+
- 前瞻预期、隐含的超预期/不及预期门槛、卖方评级与目标价修正
|
|
117
|
+
- 量化因子:动能、趋势、波动率、流动性、相对强弱、拥挤度
|
|
118
|
+
- 估值与多空论点,给价格区间而非单一目标价
|
|
119
|
+
- 新闻、行业背景、产业链,以及管理层言行核对
|
|
120
|
+
- SEC 申报、Form 4 内部人交易、回购、稀释、债务与资本配置
|
|
121
|
+
- 并购、股权与债务融资、回购等事件分析
|
|
122
|
+
- 21 位投资大师视角**独立**读同一批事实
|
|
123
|
+
- 多头、空头与 PM 裁决
|
|
124
|
+
|
|
125
|
+
最终报告可直接在对话中阅读,包含分析师工作记录、数据与申报摘要、多空辩论记录、PM 裁决、入场价格区间、短中长期观点、数据缺口、置信度和来源表。
|
|
126
|
+
|
|
127
|
+
## 🔧 工具 —— 27 个,全部免 key
|
|
128
|
+
|
|
129
|
+
以下没有一项需要 API key、账号或配置文件。装完直接跑。
|
|
130
|
+
|
|
131
|
+
| 领域 | 工具 | 数据源 |
|
|
132
|
+
|---|---|---|
|
|
133
|
+
| **申报** | `screen_ticker` `screen_candidates` `list_us_universe` `compose_research_brief` | SEC EDGAR XBRL |
|
|
134
|
+
| **非美申报** | `market_financials` `market_coverage` | 台交所免 key;DART/EDINET 需免费 key;港股/A股仅文档 |
|
|
135
|
+
| **行情** | `get_quote` `get_macro_snapshot` | Yahoo / Stooq,21 条宏观序列 + 5 项派生 |
|
|
136
|
+
| **期权** | `get_options_chain` | CBOE 延迟报价 —— 隐含波动率期限结构、25Δ 偏斜、未平仓量、Greeks |
|
|
137
|
+
| **新闻** | `get_news` `get_market_narrative` | Yahoo、Google News、SEC Atom、美联储、WSJ、CNBC |
|
|
138
|
+
| **社交** | `get_social_pulse` `verify_x_post` | Reddit、Hacker News、Bluesky |
|
|
139
|
+
| **行业** | `industry_brief` `industry_peers` `industry_coverage` `list_industries` | 全美股 SIC 分类 + 精选产业地图 |
|
|
140
|
+
| **流程** | `analyze_symbol` `plan_visible_run` `collect_evidence` `read_run` 等 9 个 | — |
|
|
141
|
+
|
|
142
|
+
**它刻意不做什么。** 以下每一条都写在工具输出本身里,不只写在文档里 —— 因为被下游引用的是 payload:
|
|
143
|
+
|
|
144
|
+
- **隐含波动率分位算不出来。** 期权链是快照无历史,任何「波动率相对自身历史偏高/偏低」的论断都报为待解问题。
|
|
145
|
+
- **X / Twitter 没有免费发现通道**(截至 2026-07)。Nitter 搜索已死、X API 按条计费、xAI 按次计费。**专业 FinTwit 未被覆盖,Reddit 不是它的替代品。**
|
|
146
|
+
- **缺输入的筛选规则报 `skipped`,绝不当作通过。**
|
|
147
|
+
- **无可解析时间戳的新闻条目被剔除**,不会被展示为「最新」。
|
|
148
|
+
- **报 `iv = 0` 的合约被丢弃** —— CBOE 对已过期和深度实值合约返回 0,而 0 混进均值不像缺失值,像一只很平静的股票。
|
|
149
|
+
|
|
150
|
+
## 🏛️ 大师议席 —— 21 位
|
|
151
|
+
|
|
152
|
+
这是对公开方法论的重构,**不是本人的任何表述**。每一位都写明自己怎么思考、最先注意什么、典型追问是什么,以及**自己的失败模式** —— 说不出自己怎么错的席位,出错时不会举手。
|
|
153
|
+
|
|
154
|
+
| 名册 | 席位 |
|
|
155
|
+
|---|---|
|
|
156
|
+
| 价值 | 巴菲特 · 芒格 · 段永平 · 李录 |
|
|
157
|
+
| 经典价值 | 格雷厄姆 · 费雪 · 林奇 · 马克斯 · 克拉曼 |
|
|
158
|
+
| 对抗 | 索罗斯 · 德鲁肯米勒 · 达利欧 · 伯里 · 做空视角 |
|
|
159
|
+
| 量化 | 西蒙斯 · Asness · 索普 |
|
|
160
|
+
| 期权 | 塔勒布 · 纳坦伯格 · 辛克莱 |
|
|
161
|
+
| 现代 | Aschenbrenner |
|
|
162
|
+
|
|
163
|
+
大师读到的是**和分析师同一份已确立事实**(申报、行情、财务、宏观),分析师的证据包单独给出并标注为「其他席位的解读」而非事实。这个分离是关键:芒格看激励结构的地方分析师看的是毛利率,只有让他们各自取舍,这个议席才有存在意义。详见 [docs/attribution.md](docs/attribution.md)。
|
|
164
|
+
|
|
165
|
+
## 🧩 架构
|
|
166
|
+
|
|
167
|
+
```mermaid
|
|
168
|
+
flowchart TD
|
|
169
|
+
U["@alphacouncil-agent"] --> G[("Established facts<br/>filings · quotes · macro · options")]
|
|
170
|
+
G --> AG{{"Analyst council"}}
|
|
171
|
+
G --> MS{{"Master bench<br/>21 lenses"}}
|
|
172
|
+
AG --> A1["Market data"]
|
|
173
|
+
AG --> A2["Earnings"]
|
|
174
|
+
AG --> A3["Valuation"]
|
|
175
|
+
AG --> A4["Quant factors"]
|
|
176
|
+
AG --> A5["Insider / SEC"]
|
|
177
|
+
AG --> A6["News / narrative"]
|
|
178
|
+
A1 --> EV[("Evidence base")]
|
|
179
|
+
A2 --> EV
|
|
180
|
+
A3 --> EV
|
|
181
|
+
A4 --> EV
|
|
182
|
+
A5 --> EV
|
|
183
|
+
A6 --> EV
|
|
184
|
+
EV -.->|"interpretation,<br/>not fact"| MS
|
|
185
|
+
EV --> VF{{"Verifiers"}}
|
|
186
|
+
VF -->|"failed checks<br/>down-weight the seat"| PM
|
|
187
|
+
MS --> BULL["Bull"]
|
|
188
|
+
MS --> BEAR["Bear"]
|
|
189
|
+
EV --> BULL
|
|
190
|
+
EV --> BEAR
|
|
191
|
+
BULL --> PM{{"Portfolio manager"}}
|
|
192
|
+
BEAR --> PM
|
|
193
|
+
PM --> R[["final_report.md"]]
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
大师从事实分叉,而非从分析师的证据包分叉。让 21 位大师共用一位分析师对「什么重要」的取舍,会给他们同一个盲区 —— 一个又大又完全相关的误差 —— 也就取消了设立议席的理由。
|
|
197
|
+
|
|
198
|
+
关键文件:
|
|
199
|
+
|
|
200
|
+
- `.codex-plugin/plugin.json` —— Codex 插件元数据
|
|
201
|
+
- `.claude-plugin/plugin.json` —— Claude Code 插件清单
|
|
202
|
+
- `.mcp.json` —— MCP server 接线
|
|
203
|
+
- `skills/alphacouncil-agent/SKILL.md` —— 运行时指令
|
|
204
|
+
- `mcp/server.mjs` —— JSON-RPC MCP server 与工作流实现
|
|
205
|
+
- `scripts/selfcheck.mjs` —— 最小回归自检
|
|
206
|
+
|
|
207
|
+
## 🆚 Codex 版 vs Claude Code 版
|
|
208
|
+
|
|
209
|
+
两个版本共享同一套工作流、JSON 包契约、审计产物、无需 API key 的联网取证模式和同样的免责声明。Claude Code 版只改变「**怎么跑**」这个委员会。
|
|
210
|
+
|
|
211
|
+
| | Codex 版 | Claude Code 版 |
|
|
212
|
+
|---|---|---|
|
|
213
|
+
| 委员会执行 | `codex exec` worker,有并发上限 | 11 个分析师作为并行 `Task` 子代理,一次性展开 |
|
|
214
|
+
| 每个分析师上下文 | 独立进程 | 独立子代理,各自完整独立上下文窗口 |
|
|
215
|
+
| 取证 | `codex exec --search` | 每个分析师在自己上下文里用 `WebSearch` + `WebFetch` |
|
|
216
|
+
| 证据 → 辩论 | 串行 | 基于运行相位机的硬性 barrier 门控 |
|
|
217
|
+
| 辩论深度 | 3 轮(立论/反驳/问答),server 执行 | 3 轮,每轮多空并行 |
|
|
218
|
+
| claim 验证 | 缺失来源门禁(运行被标记 + 报告横幅) | + 逐条对抗式验证:重抓引用 URL + 独立复核 + 反驳 *(宿主驱动)* |
|
|
219
|
+
| 完整度强制 | 残缺运行标 `incomplete`(server 门禁) | 同门禁,外加辩论前硬 barrier |
|
|
220
|
+
| 模型与成本 | 单一模型 | **按角色选** —— 取证用 Sonnet,辩论/裁决用 Opus 4.8(也可全 Opus / 全 Sonnet) |
|
|
221
|
+
| 语言 | 用户语言 | 每个子代理 + 实时 workflow 全程用户语言 |
|
|
222
|
+
|
|
223
|
+
**诚实边界:** 同模型家族、同提示词、同审计契约 —— 优势在于上下文隔离、始终并行展开、确定性门禁,**不是**更聪明的模型。自 **v0.3.0** 起,共享 server 会执行 3 轮辩论,强制执行「缺失来源 / 完整流程 / 报告质量」门禁,写出简洁交付摘要、完整报告和文件索引,并支持 Windows 原生 Codex CLI 启动。自 **v0.3.1** 起,插件内置 `agent-skills-governance`,提供 `addyosmani/agent-skills` 风格的防偷懒停止门禁和完成标准。Claude Code 版额外提供每轮并行执行和宿主驱动的逐条 claim 验证。联网数据的时效性与付费墙对两版限制相同。
|
|
224
|
+
|
|
225
|
+
## 数据契约
|
|
226
|
+
|
|
227
|
+
证据子代理返回 JSON 包:
|
|
228
|
+
|
|
229
|
+
```json
|
|
230
|
+
{
|
|
231
|
+
"task": "market_data",
|
|
232
|
+
"symbol": "0700.HK",
|
|
233
|
+
"as_of": "YYYY-MM-DD",
|
|
234
|
+
"summary": "string",
|
|
235
|
+
"claims": [
|
|
236
|
+
{ "claim": "string", "evidence": "string", "confidence": "high|medium|low", "source_ids": ["market_data:S1"] }
|
|
237
|
+
],
|
|
238
|
+
"metrics": {},
|
|
239
|
+
"sources": [
|
|
240
|
+
{ "id": "market_data:S1", "title": "string", "url": "https://example.com", "published_at": "YYYY-MM-DD or unknown", "retrieved_at": "YYYY-MM-DD" }
|
|
241
|
+
],
|
|
242
|
+
"open_questions": ["missing data item"],
|
|
243
|
+
"confidence": "high|medium|low"
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
所有 source ID 都按 `<task>:<source_id>` 全局作用域。缺失数据必须写进 `open_questions`,并体现在最终报告的数据缺口章节。
|
|
248
|
+
|
|
249
|
+
## 本地运行
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
npm run check
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
自检会校验:MCP server 语法、工具 schema 暴露、source ID 作用域、默认真跑行为、可见运行录入、`events.jsonl`/`status.json`/`all_agents.md`/`source_manifest.json`,以及 `final_report.md`、`user_response.md`、`artifact_index.md`、`report_quality.json`、分析师 Markdown 文件和最终报告章节完整性。
|
|
256
|
+
|
|
257
|
+
## 说明
|
|
258
|
+
|
|
259
|
+
这是一个独立的插件实现,采用多代理投资委员会工作流:分析师团队、证据共享、多空辩论、投资组合经理综合。
|
|
260
|
+
|
|
261
|
+
请勿提交任何 API key、券商凭证、非公开文件或生成的运行产物。
|
|
262
|
+
|
|
263
|
+
## ⭐ Star 趋势
|
|
264
|
+
|
|
265
|
+
<div align="center">
|
|
266
|
+
|
|
267
|
+
<a href="https://star-history.com/#Zhao73/alphacouncil-agent&Date">
|
|
268
|
+
<img src="https://api.star-history.com/svg?repos=Zhao73/alphacouncil-agent&type=Date" width="640" alt="Star History Chart" />
|
|
269
|
+
</a>
|
|
270
|
+
|
|
271
|
+
<br/><br/>
|
|
272
|
+
|
|
273
|
+
<picture>
|
|
274
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.png" />
|
|
275
|
+
<img src="assets/logo.png" alt="AlphaCouncil" width="120" />
|
|
276
|
+
</picture>
|
|
277
|
+
|
|
278
|
+
如果 AlphaCouncil 帮你省了时间,点个 ⭐ 是最大的支持。
|
|
279
|
+
|
|
280
|
+
<a href="#readme-top">↑ 回到顶部</a>
|
|
281
|
+
|
|
282
|
+
</div>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Industry maps: who participates, where they sit in the chain, and who drives demand. Hand-maintained and deliberately incomplete -- the point is to give a starting frame that names non-US participants a US-filings-only pipeline would miss, not to be a database. Add an industry by adding an entry.",
|
|
3
|
+
"_schema": {
|
|
4
|
+
"aliases": "what a user might type",
|
|
5
|
+
"layers": "chain position -> participants, upstream of the end market first",
|
|
6
|
+
"demand_drivers": "who or what actually creates the orders",
|
|
7
|
+
"key_questions": "what a research run on this industry must answer",
|
|
8
|
+
"cyclicality": "how this industry behaves through a cycle, so a low P/E is read correctly"
|
|
9
|
+
},
|
|
10
|
+
"industries": {
|
|
11
|
+
"memory": {
|
|
12
|
+
"aliases": ["memory", "存储", "存储芯片", "dram", "nand", "hbm", "memory chips", "半导体存储"],
|
|
13
|
+
"title": { "zh": "存储半导体", "en": "Memory semiconductors" },
|
|
14
|
+
"layers": [
|
|
15
|
+
{
|
|
16
|
+
"layer": { "zh": "设备与材料", "en": "Equipment and materials" },
|
|
17
|
+
"participants": [
|
|
18
|
+
{ "name": "ASML", "symbol": "ASML", "market": "US/NL", "note": "EUV monopoly; gates advanced-node capacity" },
|
|
19
|
+
{ "name": "Applied Materials", "symbol": "AMAT", "market": "US" },
|
|
20
|
+
{ "name": "Lam Research", "symbol": "LRCX", "market": "US", "note": "etch/deposition, heavily memory-levered" },
|
|
21
|
+
{ "name": "Tokyo Electron", "symbol": "8035.T", "market": "JP" },
|
|
22
|
+
{ "name": "Advantest", "symbol": "6857.T", "market": "JP", "note": "HBM test is a stated bottleneck" }
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"layer": { "zh": "存储原厂", "en": "Memory makers" },
|
|
27
|
+
"participants": [
|
|
28
|
+
{ "name": "Samsung Electronics", "symbol": "005930.KS", "market": "KR", "note": "DRAM+NAND+foundry; DART filer, not SEC" },
|
|
29
|
+
{ "name": "SK hynix", "symbol": "000660.KS", "market": "KR", "note": "HBM share leader; DART filer, not SEC" },
|
|
30
|
+
{ "name": "Micron", "symbol": "MU", "market": "US", "note": "the only major pure-play with SEC filings" },
|
|
31
|
+
{ "name": "Kioxia", "symbol": "285A.T", "market": "JP", "note": "NAND; EDINET filer" },
|
|
32
|
+
{ "name": "SanDisk", "symbol": "SNDK", "market": "US", "note": "NAND, separated from Western Digital" },
|
|
33
|
+
{ "name": "Nanya Technology", "symbol": "2408.TW", "market": "TW" },
|
|
34
|
+
{ "name": "Changxin / YMTC", "symbol": null, "market": "CN", "note": "unlisted; capacity additions still move global supply" }
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"layer": { "zh": "封装与配套", "en": "Packaging and adjacent" },
|
|
39
|
+
"participants": [
|
|
40
|
+
{ "name": "TSMC", "symbol": "TSM", "market": "US/TW", "note": "CoWoS advanced packaging couples HBM to accelerators" },
|
|
41
|
+
{ "name": "Amkor", "symbol": "AMKR", "market": "US" },
|
|
42
|
+
{ "name": "ASE", "symbol": "ASX", "market": "US/TW" }
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"layer": { "zh": "直接客户", "en": "Direct customers" },
|
|
47
|
+
"participants": [
|
|
48
|
+
{ "name": "NVIDIA", "symbol": "NVDA", "market": "US", "note": "HBM demand concentrated here" },
|
|
49
|
+
{ "name": "AMD", "symbol": "AMD", "market": "US" },
|
|
50
|
+
{ "name": "Broadcom", "symbol": "AVGO", "market": "US", "note": "custom accelerators for hyperscalers" },
|
|
51
|
+
{ "name": "Dell", "symbol": "DELL", "market": "US" },
|
|
52
|
+
{ "name": "Super Micro", "symbol": "SMCI", "market": "US" }
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"demand_drivers": [
|
|
57
|
+
{ "name": "Hyperscaler capex", "who": ["GOOGL", "MSFT", "AMZN", "META"], "note": "Capex guidance changes are the single most-watched leading indicator for this chain. Read the guided number and the split between compute and everything else, not the headline." },
|
|
58
|
+
{ "name": "Smartphone and PC units", "note": "the traditional cycle driver, now secondary to AI but still sets the floor for commodity DRAM/NAND" },
|
|
59
|
+
{ "name": "Automotive and industrial", "note": "smaller, longer-dated, less cyclical" }
|
|
60
|
+
],
|
|
61
|
+
"key_questions": [
|
|
62
|
+
"Is the current price move about HBM specifically or about commodity DRAM/NAND? They can move in opposite directions in the same quarter.",
|
|
63
|
+
"Where is supply in its cycle: are the makers adding wafer capacity, converting existing capacity, or holding it back?",
|
|
64
|
+
"HBM is sold on long-term agreements; how much of next year is already contracted and at what price?",
|
|
65
|
+
"Which link actually binds right now -- wafer capacity, advanced packaging, test capacity, or power? Bottlenecks move, and last year's bottleneck is often this year's glut.",
|
|
66
|
+
"Hyperscaler capex is guidance, not orders. What has actually been ordered, and what is the lead time?"
|
|
67
|
+
],
|
|
68
|
+
"cyclicality": {
|
|
69
|
+
"zh": "强周期。利润在周期顶部最高、市盈率最低——在这个行业里低市盈率是危险信号而不是便宜信号。用价格/账面或产能周期位置来判断,不要用市盈率。",
|
|
70
|
+
"en": "Deeply cyclical. Earnings peak and the multiple bottoms at the top of the cycle, so a low P/E here is a warning rather than a bargain. Judge on price-to-book or position in the capacity cycle instead."
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Attribution
|
|
2
|
+
|
|
3
|
+
AlphaCouncil is MIT licensed. This file records third-party work whose structure
|
|
4
|
+
influenced parts of this repository, and the licence obligations that come with it.
|
|
5
|
+
|
|
6
|
+
Nothing here is vendored. Where an upstream project shaped a framework, the framework was
|
|
7
|
+
re-implemented and the wording is original. Personas that adapt an upstream structure
|
|
8
|
+
carry a machine-readable `source` block in their frontmatter, and the persona registry
|
|
9
|
+
refuses to load an adapted persona that does not name its licence.
|
|
10
|
+
|
|
11
|
+
To see exactly which files carry attribution, check the provenance column in
|
|
12
|
+
[`personas.md`](./personas.md), which is generated from the persona files themselves.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## ai-berkshire
|
|
17
|
+
|
|
18
|
+
- Repository: https://github.com/xbtlin/ai-berkshire
|
|
19
|
+
- Licence: MIT
|
|
20
|
+
- Copyright: Copyright (c) 2026 xbtlin
|
|
21
|
+
|
|
22
|
+
**What was adapted.** The five-category economic-moat table and the pre-purchase checklist
|
|
23
|
+
shape in `personas/masters/masters-value/buffett.md`; the failure-path table with its
|
|
24
|
+
path / probability / severity columns in `personas/masters/masters-value/munger.md`; the
|
|
25
|
+
stop-doing-list and business-model framing in `duan_yongping.md`; and the ten-year-certainty
|
|
26
|
+
and management-integrity framing in `li_lu.md`.
|
|
27
|
+
|
|
28
|
+
**What was deliberately not adopted.** The star-rating scores (`★★★☆☆: the model is
|
|
29
|
+
understandable but ten-year certainty is low`) are not falsifiable, so the table shapes
|
|
30
|
+
were adapted without them, and a test rejects any persona body that reintroduces them.
|
|
31
|
+
The generated report corpus, the personal trading track record, and the cached
|
|
32
|
+
third-party market-data CSV were all excluded — the last because upstream's MIT licence
|
|
33
|
+
covers its own work, not data scraped from a vendor.
|
|
34
|
+
|
|
35
|
+
### MIT License
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
MIT License
|
|
39
|
+
|
|
40
|
+
Copyright (c) 2026 xbtlin
|
|
41
|
+
|
|
42
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
43
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
44
|
+
in the Software without restriction, including without limitation the rights
|
|
45
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
46
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
47
|
+
furnished to do so, subject to the following conditions:
|
|
48
|
+
|
|
49
|
+
The above copyright notice and this permission notice shall be included in all
|
|
50
|
+
copies or substantial portions of the Software.
|
|
51
|
+
|
|
52
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
53
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
54
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
55
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
56
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
57
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
58
|
+
SOFTWARE.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Projects reviewed and deliberately not used
|
|
64
|
+
|
|
65
|
+
**yichen-skills** — https://github.com/mcncarl/yichen-skills
|
|
66
|
+
|
|
67
|
+
Reviewed while researching how to source social-platform data. It is **not** open source:
|
|
68
|
+
it ships a custom "Personal Learning and Non-Commercial Use License" whose clause 2
|
|
69
|
+
forbids republishing or repackaging it, or a derivative work, as a public skill
|
|
70
|
+
collection or marketplace item. That is exactly what this repository is.
|
|
71
|
+
|
|
72
|
+
No code, prose or skill file from it has been copied, and none will be without a written
|
|
73
|
+
licence grant from its author. Where a future X/social layer needs the same underlying
|
|
74
|
+
mechanisms — decoding a Snowflake ID into a timestamp, and proving from a session
|
|
75
|
+
transcript that a named search tool actually ran — those are public algorithms and general
|
|
76
|
+
patterns, and they will be implemented from scratch.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Named individuals
|
|
81
|
+
|
|
82
|
+
The master personas are named after real investors and are **interpretations of publicly
|
|
83
|
+
documented methodologies**, not statements by, endorsements from, or affiliations with
|
|
84
|
+
those individuals. They are written as analytical lenses — what each approach asks and
|
|
85
|
+
what would make it walk away — rather than as impersonations. No private communication,
|
|
86
|
+
proprietary research, or non-public information from any of them is used.
|
|
87
|
+
|
|
88
|
+
## On the master lenses
|
|
89
|
+
|
|
90
|
+
`personas/masters/` contains 21 lenses named after real investors, traders and authors.
|
|
91
|
+
Each one is a reconstruction of a publicly documented method — a simulation of how that
|
|
92
|
+
person's stated approach would read the evidence in front of it, and what they would
|
|
93
|
+
plausibly decide. **None of it is a quotation, a statement, a view, or an endorsement by
|
|
94
|
+
the named person, and no file contains anything they actually said.** The wording,
|
|
95
|
+
the ordering of concerns and the stated failure modes were written for this project.
|
|
96
|
+
|
|
97
|
+
The methods themselves are drawn from published books, letters and interviews, which is
|
|
98
|
+
why the lenses can be checked against the record. The voice cannot be, and is not offered
|
|
99
|
+
as anything but a device for making a committee disagree with itself usefully.
|
package/docs/personas.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/sync-personas.mjs from personas/. Do not edit. -->
|
|
2
|
+
|
|
3
|
+
# Persona roster
|
|
4
|
+
|
|
5
|
+
Every prompt this plugin sends is defined by a file under `personas/`. The MCP server
|
|
6
|
+
loads that directory at startup; this table is generated from the same source.
|
|
7
|
+
|
|
8
|
+
To add a role, add one file. It appears in the tool schema automatically.
|
|
9
|
+
|
|
10
|
+
| id | kind | enabled | rosters | model tier | title | tags | provenance |
|
|
11
|
+
|---|---|---|---|---|---|---|---|
|
|
12
|
+
| `_evidence_base` | analyst | no | - | fast | Evidence worker preamble | shared | original |
|
|
13
|
+
| `macro_regime` | analyst | yes | full | standard | Macro Regime Analyst | regime, rates, liquidity, cross-market | original |
|
|
14
|
+
| `market_data` | analyst | yes | default | fast | Market Data Analyst | price, volume, technicals | original |
|
|
15
|
+
| `earnings_deep_dive` | analyst | yes | default | fast | Earnings Deep Dive Analyst | earnings, margins, segments, cash-flow | original |
|
|
16
|
+
| `forward_expectations` | analyst | yes | default | fast | Forward Expectations Analyst | guidance, consensus, thresholds | original |
|
|
17
|
+
| `quant_factor` | analyst | yes | default | standard | Quant Factor Analyst | momentum, volatility, short-interest, options | original |
|
|
18
|
+
| `valuation_long_short` | analyst | yes | default | standard | Valuation & Long/Short Analyst | valuation, thesis, position-sizing | original |
|
|
19
|
+
| `news_industry_management` | analyst | yes | default | fast | News & Industry Analyst | news, industry, management | original |
|
|
20
|
+
| `market_narrative` | analyst | yes | full | fast | Market Narrative Analyst | narrative, positioning, macro-context | original |
|
|
21
|
+
| `social_pulse` | analyst | yes | full | fast | Retail Sentiment and Crowding Analyst | sentiment, crowding, social | original |
|
|
22
|
+
| `insider_sec` | analyst | yes | default | fast | Insider & SEC Filings Analyst | sec, form-4, filings, buyback | original |
|
|
23
|
+
| `ib_event_analysis` | analyst | yes | default | fast | Banking Event Analyst | m-and-a, ecm, dilution, capital-allocation | original |
|
|
24
|
+
| `_debate_base` | debate | no | - | deep | Debate role preamble | shared | original |
|
|
25
|
+
| `bull_researcher` | debate | yes | default | deep | Bull Researcher | long-case, rebuttal | original |
|
|
26
|
+
| `bear_researcher` | debate | yes | default | deep | Bear Researcher | short-case, rebuttal | original |
|
|
27
|
+
| `portfolio_manager` | debate | yes | default | deep | Portfolio Manager | verdict, rating, synthesis | original |
|
|
28
|
+
| `_master_base` | master | no | - | deep | Master seat preamble | shared | original |
|
|
29
|
+
| `master_aschenbrenner` | master | yes | masters-modern | deep | Aschenbrenner Lens | scaling, compute, power, timeline-pricing | original |
|
|
30
|
+
| `master_buffett` | master | yes | masters-value, masters-core | deep | Buffett Lens | moat, owner-earnings, circle-of-competence | ai-berkshire (MIT) |
|
|
31
|
+
| `master_graham` | master | yes | masters-value-classic, masters-core | deep | Graham Lens | margin-of-safety, balance-sheet, mr-market | original |
|
|
32
|
+
| `master_simons` | master | yes | masters-quant, masters-core | deep | Simons Lens | signal-vs-noise, no-narrative, sample-size | original |
|
|
33
|
+
| `master_soros` | master | yes | masters-adversarial, masters-core | deep | Soros Lens | reflexivity, boom-bust, test-the-thesis | original |
|
|
34
|
+
| `master_druckenmiller` | master | yes | masters-adversarial | deep | Druckenmiller Lens | liquidity, concentration, eighteen-months-ahead | original |
|
|
35
|
+
| `master_fisher` | master | yes | masters-value-classic | deep | Fisher Lens | scuttlebutt, growth-quality, r-and-d | original |
|
|
36
|
+
| `master_munger` | master | yes | masters-value, masters-core | deep | Munger Lens | inversion, mental-models, failure-paths | ai-berkshire (MIT) |
|
|
37
|
+
| `master_thorp` | master | yes | masters-quant, masters-core | deep | Thorp Lens | kelly-sizing, edge-and-odds, risk-of-ruin | original |
|
|
38
|
+
| `master_asness` | master | yes | masters-quant | deep | Asness Factor Lens | factor-exposure, value-momentum-quality, is-it-just-beta | original |
|
|
39
|
+
| `master_dalio` | master | yes | masters-adversarial, masters-core | deep | Dalio Lens | debt-cycle, machine-view, regime | original |
|
|
40
|
+
| `master_duan_yongping` | master | yes | masters-value, masters-core | deep | Duan Yongping Lens | business-model, stop-doing-list, corporate-culture | ai-berkshire (MIT) |
|
|
41
|
+
| `master_lynch` | master | yes | masters-value-classic, masters-core | deep | Peter Lynch Lens | category-first, peg, story-in-two-minutes | original |
|
|
42
|
+
| `master_li_lu` | master | yes | masters-value, masters-core | deep | Li Lu Lens | ten-year-certainty, civilization-trend, management-integrity | ai-berkshire (MIT) |
|
|
43
|
+
| `master_marks` | master | yes | masters-value-classic, masters-core | deep | Howard Marks Lens | second-level-thinking, cycle-position, risk-is-permanent-loss | original |
|
|
44
|
+
| `master_short_seller` | master | yes | masters-adversarial, masters-core | deep | Short Seller Lens | forensic-accounting, crowding, borrow | original |
|
|
45
|
+
| `master_burry` | master | yes | masters-adversarial, masters-core | deep | Michael Burry Lens | primary-documents, contrarian, structural-short | original |
|
|
46
|
+
| `master_klarman` | master | yes | masters-value-classic | deep | Klarman Lens | absolute-return, cash-as-option, bottom-up | original |
|
|
47
|
+
| `master_taleb` | master | yes | masters-options, masters-core | deep | Taleb Lens (Convexity and Tails) | tail-risk, convexity, options | original |
|
|
48
|
+
| `master_natenberg` | master | yes | masters-options, masters-core | deep | Natenberg Lens (Volatility Pricing) | implied-volatility, options-pricing, market-making | original |
|
|
49
|
+
| `master_sinclair` | master | yes | masters-options, masters-core | deep | Sinclair Lens (Volatility Trading and Execution) | volatility-forecasting, edge-measurement, position-sizing, options | original |
|
|
50
|
+
| `source_fidelity` | verifier | yes | verify | fast | Source Fidelity Verifier | citation, primary-source | original |
|
|
51
|
+
| `rederivation` | verifier | yes | verify | fast | Rederivation Verifier | independent-confirmation, cross-check | original |
|
|
52
|
+
| `refuter` | verifier | yes | verify | fast | Refuter | adversarial, disconfirming-search | original |
|
|
53
|
+
|
|
54
|
+
Totals: 11 evidence analysts, 3 debate roles, 21 masters, 41 files.
|
|
55
|
+
|
|
56
|
+
## Provenance
|
|
57
|
+
|
|
58
|
+
Personas marked with an upstream project adapt its structure; the wording is original.
|
|
59
|
+
See `docs/attribution.md` for full licence text.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# AlphaCouncil Report Contract
|
|
2
|
+
|
|
3
|
+
This contract prevents final handoffs from collapsing into a thin recap. The chat
|
|
4
|
+
handoff may stay concise, but the saved report and artifacts must preserve the
|
|
5
|
+
investment evidence chain.
|
|
6
|
+
|
|
7
|
+
## Required Outputs
|
|
8
|
+
|
|
9
|
+
Every completed `analyze_symbol` or `record_visible_decision` portfolio-manager
|
|
10
|
+
run writes:
|
|
11
|
+
|
|
12
|
+
- `final_report.md` - complete investment committee report.
|
|
13
|
+
- `user_response.md` - concise user-facing handoff with the important content.
|
|
14
|
+
- `artifact_index.md` - file map for every JSON and Markdown artifact.
|
|
15
|
+
- `<evidence_role>.md` - one readable Markdown file per evidence analyst.
|
|
16
|
+
- `bull_researcher.md`, `bear_researcher.md`, `portfolio_manager.md`.
|
|
17
|
+
- `report_quality.json` - machine-readable pass/fail report-quality check.
|
|
18
|
+
|
|
19
|
+
## Final Report Sections
|
|
20
|
+
|
|
21
|
+
`final_report.md` must visibly cover:
|
|
22
|
+
|
|
23
|
+
- conclusion and final rating
|
|
24
|
+
- analyst work log for every planned evidence role
|
|
25
|
+
- bull/bear debate record
|
|
26
|
+
- long thesis and short thesis
|
|
27
|
+
- market expectations and implied beat/miss thresholds
|
|
28
|
+
- analyst rating and target-price revisions
|
|
29
|
+
- earnings-call management signals
|
|
30
|
+
- quant factor / technical risk view
|
|
31
|
+
- news and company / industry voice signals
|
|
32
|
+
- short interest / borrow / options information when available
|
|
33
|
+
- strategic transaction or banking-event analysis when relevant
|
|
34
|
+
- valuation range
|
|
35
|
+
- price levels: a table of price bands with the condition that triggers each, not a single target price
|
|
36
|
+
- key catalysts
|
|
37
|
+
- major risks
|
|
38
|
+
- position recommendation
|
|
39
|
+
- short-term 1-4 week view
|
|
40
|
+
- medium-term 3-6 month view
|
|
41
|
+
- long-term 12 month view
|
|
42
|
+
- data gaps / unavailable data
|
|
43
|
+
- invalidation conditions
|
|
44
|
+
- confidence
|
|
45
|
+
- source table
|
|
46
|
+
|
|
47
|
+
## Concise Chat Handoff
|
|
48
|
+
|
|
49
|
+
`user_response.md` should not paste the whole report. It should include:
|
|
50
|
+
|
|
51
|
+
- rating, debate winner, confidence, and one judgment paragraph
|
|
52
|
+
- latest earnings / financial result highlights
|
|
53
|
+
- forward expectations and event thresholds
|
|
54
|
+
- important news and industry / management signals
|
|
55
|
+
- valuation or price range
|
|
56
|
+
- position recommendation
|
|
57
|
+
- top invalidation conditions
|
|
58
|
+
- file locations for the full report and analyst files
|
|
59
|
+
|
|
60
|
+
## Anti-Rationalizations
|
|
61
|
+
|
|
62
|
+
| Bad shortcut | Required behavior |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| "The user only asked if they can enter, so four bullets are enough." | Give a concise handoff, but write the full report and artifact index. |
|
|
65
|
+
| "The source table mentions the news, so the news section can be skipped." | News and voice findings need their own visible section. |
|
|
66
|
+
| "The final report exists, so chat can hide file locations." | The handoff must list `final_report.md`, `artifact_index.md`, and `all_agents.md`. |
|
|
67
|
+
| "A failed or incomplete council still has a PM opinion." | Mark it incomplete or needs revision; do not call it complete. |
|
|
68
|
+
|
|
69
|
+
## Quality Gate
|
|
70
|
+
|
|
71
|
+
A run should not be marked `complete` if the report is missing required sections,
|
|
72
|
+
planned analyst work-log entries, scoped source IDs when sources exist, or enough
|
|
73
|
+
body content to make the decision auditable. In that case write
|
|
74
|
+
`report_quality.json` and set status to `needs_revision`.
|
|
75
|
+
|
|
76
|
+
## How the gate checks this
|
|
77
|
+
|
|
78
|
+
`report_quality.json` (schema_version 2) is produced by `validateFinalReport`. A section
|
|
79
|
+
counts only when all of the following hold:
|
|
80
|
+
|
|
81
|
+
- it is a real Markdown ATX heading (`##` or `###`), not bold text and not a `#` inside a
|
|
82
|
+
code fence;
|
|
83
|
+
- its normalized title matches one of the section's aliases -- the longest matching alias
|
|
84
|
+
wins, so `Quant Factor / Technical Risk View` is the quant section and does not also
|
|
85
|
+
satisfy the risks section;
|
|
86
|
+
- the body between that heading and the next heading of the same or higher level is not a
|
|
87
|
+
placeholder (`- None`, `N/A`, `TBD`, `待补充`) and carries at least the section's
|
|
88
|
+
`min_body` non-space characters.
|
|
89
|
+
|
|
90
|
+
Every planned analyst task id must appear **inside the Analyst Work Log section body**.
|
|
91
|
+
Mentioning it only in the source table does not count.
|
|
92
|
+
|
|
93
|
+
`report_quality.json` lists each section with `status` (`ok` / `missing` / `placeholder` /
|
|
94
|
+
`too_thin`), the heading it matched, its line, and its body size, so a `needs_revision`
|
|
95
|
+
result says which section failed and why.
|
|
96
|
+
|
|
97
|
+
### Sections the gate checks that were previously undocumented
|
|
98
|
+
|
|
99
|
+
- **Earnings-call management signals** — what management committed to, and whether the last
|
|
100
|
+
commitment was met. The Q&A matters more than the prepared remarks.
|
|
101
|
+
- **Short-term view (1–4 weeks)**, **medium-term view (3–6 months)** and **long-term view
|
|
102
|
+
(12 months)** — three separate sections, because a name can be a poor trade and a good
|
|
103
|
+
hold at the same time and collapsing them hides that.
|
|
104
|
+
- **Price levels** — three bands with the condition attached to each. "The cycle position is
|
|
105
|
+
undetermined" does not excuse omitting them; it changes what the bands are conditional on.
|
|
106
|
+
|
|
107
|
+
The authoritative list is `REPORT_SECTIONS` in `mcp/lib/constants.mjs`. The gate parses
|
|
108
|
+
heading structure, not substrings: a section needs a real level-2 or level-3 heading, a
|
|
109
|
+
title matching one of its aliases, and body text above a per-section minimum that is not a
|
|
110
|
+
placeholder such as `N/A`, `TBD` or `待补充`.
|