alphacouncil-agent 1.0.3 → 1.0.13
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-insider_sec.md +19 -0
- package/.claude/commands/alpha.md +48 -19
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.grok/agents/alphacouncil-insider_sec.md +19 -0
- package/.grok/commands/alpha.md +48 -19
- package/.opencode/agent/alphacouncil-insider_sec.md +19 -0
- package/.opencode/command/alpha.md +48 -19
- package/CHANGELOG.md +307 -0
- package/CLAUDE.md +55 -13
- package/README.ja.md +42 -16
- package/README.md +70 -27
- package/README.zh-CN.md +53 -20
- package/SECURITY.md +11 -1
- package/commands/alpha.md +48 -19
- package/data/build-profile.v1.json +1 -1
- package/docs/INSTALL.md +9 -6
- package/docs/examples/final_report.SOX.zh.md +442 -0
- package/docs/report-contract.md +27 -3
- package/knowledge/ai-assisted-solo/experiments/runs/a.json +4 -4
- package/knowledge/ai-assisted-solo/experiments/runs/b.json +2 -2
- package/knowledge/ai-assisted-solo/experiments/runs/c.json +2 -2
- package/knowledge/ai-assisted-solo/experiments/runs/d13.json +16 -16
- package/knowledge/ai-assisted-solo/experiments/runs/d26.json +30 -30
- package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +19 -19
- package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +33 -33
- package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +34 -34
- package/knowledge/ai-assisted-solo/experiments/simulation-input.json +84 -84
- package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +19 -19
- package/knowledge/solo-test/masters/master_ackman/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_aschenbrenner/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_asness/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_bogle/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_buffett/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_burry/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_cathie_wood/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_dalio/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_damodaran/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_druckenmiller/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_duan_yongping/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_fisher/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_forensic_short/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_graham/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_jhunjhunwala/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_klarman/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_li_lu/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_lynch/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_marks/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_munger/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_natenberg/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_pabrai/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_simons/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_sinclair/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_soros/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_taleb/manifest.json +8 -8
- package/knowledge/solo-test/masters/master_thorp/manifest.json +8 -8
- package/mcp/lib/constants.mjs +82 -4
- package/mcp/lib/council-options.mjs +8 -4
- package/mcp/lib/council-selection.mjs +79 -1
- package/mcp/lib/fundamentals.mjs +50 -10
- package/mcp/lib/gates.mjs +42 -0
- package/mcp/lib/grounding.mjs +27 -1
- package/mcp/lib/industry.mjs +9 -1
- package/mcp/lib/markdown.mjs +25 -1
- package/mcp/lib/orchestrator.mjs +187 -24
- package/mcp/lib/personas/engine.mjs +57 -12
- package/mcp/lib/personas-v3/runtime.mjs +28 -0
- package/mcp/lib/prompts.mjs +72 -3
- package/mcp/lib/rpc.mjs +93 -7
- package/mcp/lib/run-store.mjs +3 -0
- package/mcp/lib/screen.mjs +46 -46
- package/mcp/lib/sec.mjs +25 -10
- package/mcp/lib/voice-from-decision.mjs +13 -5
- package/mcp/lib/weights.mjs +9 -2
- package/mcp/lib/xbrl-series.mjs +31 -5
- package/package.json +2 -1
- package/personas/analysts/insider_sec.md +38 -0
- package/scripts/lib/persona-v3-solo-test-packs.mjs +14 -8
- package/scripts/review-persona-v3-solo-formulas.mjs +5 -3
- package/skills/alphacouncil-agent/SKILL.md +80 -19
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<p>
|
|
32
32
|
<a href="docs/INSTALL.md"><b>Install</b></a> ·
|
|
33
33
|
<a href="#-usage"><b>Usage</b></a> ·
|
|
34
|
-
<a href="#-tools--
|
|
34
|
+
<a href="#-tools--31-all-keyless"><b>Tools</b></a> ·
|
|
35
35
|
<a href="#-the-bench--27-investor-method-lenses"><b>The bench</b></a> ·
|
|
36
36
|
<a href="#-architecture"><b>Architecture</b></a> ·
|
|
37
37
|
<a href="CHANGELOG.md"><b>Changelog</b></a> ·
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
<div align="center">
|
|
46
46
|
|
|
47
|
-
<img src="assets/
|
|
47
|
+
<img src="assets/demo.gif" alt="AlphaCouncil live: a council of analyst agents researching a ticker and debating to a verdict" width="100%" />
|
|
48
48
|
|
|
49
|
-
<sub><i>A real run. Six lenses
|
|
49
|
+
<sub><i>A real run, in real time. Want the still version? <a href="assets/run-example.png">Six lenses reaching the same call for different reasons</a> · <a href="docs/examples/final_report.SOX.zh.md">a complete real report</a> (SOX, full council, zh)</i></sub>
|
|
50
50
|
|
|
51
51
|
</div>
|
|
52
52
|
|
|
@@ -63,7 +63,7 @@ AlphaCouncil Agent is a Codex and Claude Code plugin for public-equity research
|
|
|
63
63
|
| 🌏 **What else you are betting on** | Correlation to the broad market, to KOSPI, to KOSDAQ and to the semiconductor cycle, plus dispersion across the eleven sector SPDRs. Sessions pair by date, because Korea and the United States keep different holidays. |
|
|
64
64
|
| 💵 **Fund flow that refuses to be faked** | Creations minus redemptions, priced. Only a filed share count or the issuer's own assets-over-NAV identity may price a flow; a count reconstructed from positions is refused, because a difference cancels the number and keeps the error. |
|
|
65
65
|
| 🐂🐻 **Adversarial by design** | Full runs a three-round bull/bear cross-exam and the visible/deep path can add three adversarial verifiers. Quick runs one parallel bull/bear statement round and a short PM; it checks scoped source IDs but explicitly does not claim adversarial verification. |
|
|
66
|
-
| ⏱️ **
|
|
66
|
+
| ⏱️ **You pick the depth: 15, 30 or 60 minutes** | The run asks before it starts and shows the expected time beside the hard ceiling for each tier — you never type a speed. All three are the same full contract: eight analysts, three debate rounds, the PM. What changes is how long each seat may think, and a tier shapes the output too, because a shorter fuse on the same prompt buys unfinished work rather than faster work. Plugin-managed full starts all eight analysts together, runs Bull/Bear together inside each round, and persists a terminal run inside the chosen tier. Provider failures produce an explicit `incomplete` result, never silently missing seats. |
|
|
67
67
|
| 🔍 **Auditable, never hallucinated** | Every claim maps to a source ID. A screen rule with missing inputs is `skipped`, never a pass. An undated headline is excluded, not shown as recent. Gaps are a section, not an omission. |
|
|
68
68
|
| 🧭 **Company, ETF and index routing** | The symbol is classified before research. Companies use issuer financials; ETFs use dated holdings look-through; indices use aggregate methodology. QQQ/SPY are never treated as companies with their own revenue or EPS. |
|
|
69
69
|
| 💰 **Entry price bands, not one number** | Three conditional bands with what each depends on. "The cycle position is undetermined" changes what the bands are conditional on; it does not excuse leaving them out. |
|
|
@@ -86,11 +86,14 @@ somewhere across a mixed set of symbols, with no contract failures. A basket tha
|
|
|
86
86
|
path at all** — `SOX` was in neither registry — now produces 40-plus typed facts, and the seats
|
|
87
87
|
that read them are running the same methods they run on a company.
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
Honesty note: seat formulas are AI-authored reconstructions of named published methods,
|
|
90
|
+
pending human review — the governance status and what remains open are tracked in
|
|
91
|
+
[the v1.0.0 release contract](docs/releases/v1.0.0.md), and `npm run check` prints
|
|
92
|
+
exactly where that stands.
|
|
93
|
+
|
|
94
|
+
Trust posture: zero runtime dependencies, no install scripts, no telemetry, every data
|
|
95
|
+
source keyless and public; analyst workers run in a read-only sandbox
|
|
96
|
+
(`codex exec -s read-only -a never --ephemeral`). Details in [SECURITY.md](SECURITY.md).
|
|
94
97
|
|
|
95
98
|
See [the v1.0.0 release contract](docs/releases/v1.0.0.md) for the exact ETF/index and full/quick
|
|
96
99
|
boundary and [the report contract](docs/report-contract.md) for `quick_v1` versus `full_v2`.
|
|
@@ -123,6 +126,19 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
|
|
|
123
126
|
/reload-plugins
|
|
124
127
|
```
|
|
125
128
|
|
|
129
|
+
**First run, 30 seconds, zero model spend** — before committing to a full council,
|
|
130
|
+
verify the data layer works:
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
/alpha AAPL news
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
That calls only keyless data tools and spawns no subagents. When it returns dated
|
|
137
|
+
headlines and filings, the install is good; then try a full council with `/alpha AAPL`.
|
|
138
|
+
Note the headless full/quick paths additionally need an authenticated **Codex CLI**
|
|
139
|
+
(each analyst worker runs as `codex exec`) — Claude Code without Codex uses the
|
|
140
|
+
visible host-subagent path instead, see [docs/INSTALL.md](docs/INSTALL.md).
|
|
141
|
+
|
|
126
142
|
## 🚀 Usage
|
|
127
143
|
|
|
128
144
|
Just talk to it. Mention the agent and a ticker or a question:
|
|
@@ -164,7 +180,7 @@ rather than four in a menu of a hundred.
|
|
|
164
180
|
|
|
165
181
|
| Invocation | What runs | Model spend |
|
|
166
182
|
|---|---|---|
|
|
167
|
-
| `/alpha <ticker>` |
|
|
183
|
+
| `/alpha <ticker>` | Asks the depth tier with its expected time, shows every master, confirms `1..N`/ranges/`all`, then full; headless is bounded by the chosen tier (15/30/60m) | deterministic stance + one isolated voice worker per v3 seat that reached a stance; a frozen abstention is published without one |
|
|
168
184
|
| `/alpha <ticker> quick` | Shows all 27, confirms 1-4 (no `all`), then plugin-managed `quick_v1` (≤10m) | varies with selection |
|
|
169
185
|
| `/alpha <ticker> screen` | Mechanical filings screen only | **none** |
|
|
170
186
|
| `/alpha <ticker> options` | IV term structure, skew, positioning | **none** |
|
|
@@ -182,19 +198,46 @@ show the catalog and confirm a fresh, one-use, mode-bound receipt before researc
|
|
|
182
198
|
Any listed equity: `/alpha AAPL` · `/alpha 0700.HK quick` · `/alpha 7203.T news` · `/alpha market rates`.
|
|
183
199
|
Filings-based modes need a US filer; other markets are reported through `market_coverage` rather than silently returning nothing.
|
|
184
200
|
|
|
185
|
-
### Full v2 —
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
201
|
+
### Full v2 — three depth tiers, chosen at the gate
|
|
202
|
+
|
|
203
|
+
The run asks how deep to go before it asks which methods to seat. You never type a speed:
|
|
204
|
+
`begin_council_selection` returns the menu, with the expected time and the hard ceiling for each
|
|
205
|
+
tier side by side.
|
|
206
|
+
|
|
207
|
+
| tier | expected | ceiling | evidence / seat | debate / round / side |
|
|
208
|
+
| --- | --- | --- | --- | --- |
|
|
209
|
+
| `fast` | ~12 min | 15 min | 3.5 min | 90 s |
|
|
210
|
+
| `normal` (default) | ~20 min | 30 min | 6 min | 150 s |
|
|
211
|
+
| `slow` | ~44 min | 60 min | 12 min | 6 min |
|
|
212
|
+
|
|
213
|
+
**All three are the same `full_v2` contract** — eight evidence seats, every selected method,
|
|
214
|
+
three debate rounds, the PM. A tier changes how long each seat may think, never which seats run.
|
|
215
|
+
Both numbers are published because a ceiling shown alone reads as the estimate, and then every
|
|
216
|
+
fast run looks like it takes fifteen minutes.
|
|
217
|
+
|
|
218
|
+
A tier moves every per-stage cap together with the total, and it also shapes what each worker is
|
|
219
|
+
asked to produce. That second half matters: a cap on its own is a timeout, and the same prompt
|
|
220
|
+
with a shorter fuse buys a packet the worker could not finish rather than a faster good one.
|
|
221
|
+
Since an LLM call's wall clock is dominated by the tokens it generates, `fast` asks for the same
|
|
222
|
+
information in less prose — claims, figures, scoped source IDs, required report sections and the
|
|
223
|
+
decision are never what gets cut; restatement is. `slow` buys room to write a derivation out
|
|
224
|
+
step by step.
|
|
225
|
+
|
|
226
|
+
The chosen tier binds into the one-use `selection_receipt`, so an execution call may repeat it
|
|
227
|
+
but never change it: a run approved as fifteen minutes cannot become an hour, and `status.json`
|
|
228
|
+
records which tier produced it. Quick has no tier — it is a smaller contract, not a slower one.
|
|
229
|
+
|
|
230
|
+
All eight mandatory evidence workers start in one parallel wave. After the evidence barrier,
|
|
231
|
+
each selected physical v3 method freezes its deterministic stance; a method that reached a
|
|
232
|
+
stance gets one isolated voice worker that can explain, but cannot change, that result, while a
|
|
233
|
+
frozen abstention is published from its deterministic record without spending a worker. Bull and
|
|
234
|
+
Bear run in parallel within each of the three rounds, with a barrier between rounds, followed by
|
|
235
|
+
the PM.
|
|
236
|
+
|
|
237
|
+
At expiry the server persists `incomplete` with every timed-out, failed and skipped role. The
|
|
238
|
+
tier's ceiling is a terminal-persistence guarantee, not a promise that search, model transport or
|
|
239
|
+
data providers will let every seat succeed. A visible-host `plan_visible_run` is scheduled
|
|
240
|
+
outside the plugin and cannot be force-stopped, so it carries no time claim at all.
|
|
198
241
|
|
|
199
242
|
The resulting full handoff names every selected stable master ID and all eight analysts, and
|
|
200
243
|
includes a system-owned price snapshot or explicit unavailable-data record. Method-seat
|
|
@@ -298,11 +341,11 @@ failure mode** — a seat that cannot name how it goes wrong will not flag it wh
|
|
|
298
341
|
| Quant | Simons · Asness · Thorp |
|
|
299
342
|
| Options | Taleb · Natenberg · Sinclair |
|
|
300
343
|
| Modern | Aschenbrenner |
|
|
301
|
-
| v3 expansion | Damodaran · Ackman · Cathie Wood · Pabrai · Jhunjhunwala |
|
|
344
|
+
| v3 expansion | Damodaran · Ackman · Cathie Wood · Pabrai · Bogle · Jhunjhunwala |
|
|
302
345
|
|
|
303
346
|
The `solo_test` catalog has 27 selectable physical v3 packs, but **27 physical packs is
|
|
304
347
|
not 27 approved method models**. Every seat is a provisional `operator_lens` backed by
|
|
305
|
-
project-derived proxy material; the
|
|
348
|
+
project-derived proxy material; the 54 tools are executable test proxies, not human-approved
|
|
306
349
|
formula attribution. Operational and `method_model` counts are both zero, and production GA
|
|
307
350
|
remains fail-closed.
|
|
308
351
|
|
|
@@ -346,7 +389,7 @@ flowchart TD
|
|
|
346
389
|
PM --> R[["final_report.md<br/>verdict + entry price bands"]]
|
|
347
390
|
```
|
|
348
391
|
|
|
349
|
-
The masters branch off the facts, not off the packets. Feeding
|
|
392
|
+
The masters branch off the facts, not off the packets. Feeding 27 lenses one analyst's
|
|
350
393
|
selection of what mattered would give them all the same blind spot — a large and perfectly
|
|
351
394
|
correlated error — and would remove the reason for having a bench at all.
|
|
352
395
|
|
|
@@ -365,7 +408,7 @@ For full council, both editions share the same workflow, JSON packet contract, a
|
|
|
365
408
|
|
|
366
409
|
| | Codex edition | Claude Code edition |
|
|
367
410
|
|---|---|---|
|
|
368
|
-
| Council execution | plugin-managed `codex exec` workers; full headless ≤
|
|
411
|
+
| Council execution | plugin-managed `codex exec` workers; full headless ≤15/30/60m by chosen tier | Host-owned `Task` subagents; no plugin-enforced deadline at all |
|
|
369
412
|
| Quick `quick_v1` | Plugin-managed headless `analyze_symbol` | Same plugin-managed headless `analyze_symbol` |
|
|
370
413
|
| Per-analyst context | Separate process | Separate subagent, full isolated context window |
|
|
371
414
|
| Evidence | `codex exec --search` | `WebSearch` + `WebFetch` in each analyst's own context |
|
package/README.zh-CN.md
CHANGED
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
|
|
36
36
|
<div align="center">
|
|
37
37
|
|
|
38
|
-
<img src="assets/
|
|
38
|
+
<img src="assets/demo-zh.gif" alt="AlphaCouncil 实时运行:分析师委员会取证、辩论并给出裁决" width="100%" />
|
|
39
39
|
|
|
40
|
-
<sub><i
|
|
40
|
+
<sub><i>一次真实运行的实录。静态版:<a href="assets/run-example.png">六位大师殊途同归</a> · <a href="docs/examples/final_report.SOX.zh.md">一份完整真实报告</a>(SOX,full council)</i></sub>
|
|
41
41
|
|
|
42
42
|
</div>
|
|
43
43
|
|
|
@@ -49,10 +49,10 @@ AlphaCouncil Agent 是一个面向**上市股票研究**的 Codex / Claude Code
|
|
|
49
49
|
|---|---|
|
|
50
50
|
| 🏛️ **是委员会,不是一家之言** | 完整模式默认 8 个证据席、最多 11 个;quick 固定 4 个并行证据席。两者都在研究前完整展示 27 个方法席。 |
|
|
51
51
|
| 🐂🐻 **天生对抗式** | 完整模式跑三轮多空交叉质询;quick 只跑一轮并行 Bull/Bear 陈述和短 PM,且明确不声称完成对抗 verifier。 |
|
|
52
|
-
| ⏱️ **完整 headless
|
|
52
|
+
| ⏱️ **完整 headless 有硬时限,且有三档深度** | 开场问答里选 fast / normal / slow(预计 ~12 / ~20 / ~44 分钟,上限 15 / 30 / 60),三档都是同一个完整契约,只改每席能想多久。8 个分析师同波启动、每轮 Bull/Bear 同时启动、在所选档位内保存终态;外部服务故障会明确 `incomplete`,不会静默漏席。 |
|
|
53
53
|
| 🔍 **可审计,不瞎编** | 每条结论都映射到 source ID;缺失数据写进「数据缺口」章节,绝不隐藏。 |
|
|
54
54
|
| ⏱️ **多周期结论** | 买入/持有/卖出,外加独立的 1-4 周、3-6 月、12 月判断。 |
|
|
55
|
-
| 🔑
|
|
55
|
+
| 🔑 **31 个工具,零 API 密钥,零依赖** | 数据全部来自免密钥公开源(SEC EDGAR、CBOE、Yahoo/Stooq、21 组宏观序列),不需要付费行情或券商账号;分析师另通过代理自带的联网搜索实时取证(**Codex 网页搜索** / **Claude Code 的 WebSearch + WebFetch**),只消耗你已有的 Codex / Claude Code 订阅额度。MIT 开源。 |
|
|
56
56
|
| 📚 **内置研究方法论** | 股票研究与投行事件分析的方法论以**本地 skill** 形式打包(`skills/public-equity-investing`、`skills/investment-banking`)——不依赖 Codex 专属远程工作流,Claude Code 也能获得同等研究深度。 |
|
|
57
57
|
| 📈 **真实行情兜底,免 key** | 内置 `get_quote` 通过 Yahoo + Stooq 拉延迟(~15分钟)的指数 / 股指期货(含夜盘)/ 汇率 / 利率 / 波动率 / 商品 / 个股点位——不用 API key,分析师引用真实数字而非猜测。 |
|
|
58
58
|
| 🧭 **公司、ETF 与指数正确分流** | 先识别资产再研究:公司走发行人财务,ETF 走带时点持仓穿透,指数走聚合方法;QQQ/SPY 不会再被当成有自身营收和 EPS 的公司。 |
|
|
@@ -100,6 +100,17 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
|
|
|
100
100
|
/reload-plugins
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
+
**装完先花 30 秒零成本验证** —— 在跑完整委员会之前,先确认数据层通了:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
/alpha AAPL news
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
这条只调用免密钥数据工具、不派生任何子代理,返回带日期的新闻和公告即说明安装成功;
|
|
110
|
+
然后再跑 `/alpha AAPL` 完整委员会。注意 headless 全量/快速路径还需要已登录的
|
|
111
|
+
**Codex CLI**(每个分析师 worker 都是 `codex exec`);只有 Claude Code 时走可见
|
|
112
|
+
子代理路径,见 [docs/INSTALL.md](docs/INSTALL.md)。
|
|
113
|
+
|
|
103
114
|
## 🚀 用法
|
|
104
115
|
|
|
105
116
|
直接对它说话,@ 一下代理,带上代码或问题:
|
|
@@ -138,7 +149,7 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
|
|
|
138
149
|
|
|
139
150
|
| 输入 | 跑什么 | 额度消耗 |
|
|
140
151
|
|---|---|---|
|
|
141
|
-
| `/alpha <ticker>` |
|
|
152
|
+
| `/alpha <ticker>` | 先问跑多深(三档,带预计时间),再逐人展示全部大师,确认后运行 full | 每个达成立场的 v3 席为确定性立场 + 一个独立 voice worker;弃权席直接发布 |
|
|
142
153
|
| `/alpha <ticker> quick` | 展示全部 27 席,确认 1-4 席(禁用 `all`),再跑插件托管 `quick_v1`(≤10 分钟) | 随选择数量变化 |
|
|
143
154
|
| `/alpha <ticker> screen` | 只跑机械筛选 | **零** |
|
|
144
155
|
| `/alpha <ticker> options` | 隐含波动率期限结构、偏斜、持仓分布 | **零** |
|
|
@@ -151,17 +162,39 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
|
|
|
151
162
|
任何上市股票:`/alpha AAPL` · `/alpha 0700.HK quick` · `/alpha 7203.T news` · `/alpha market rates`。
|
|
152
163
|
基于申报的模式需要美国申报主体;其他市场会通过 `market_coverage` 说明覆盖情况,而不是静默返回空结果。
|
|
153
164
|
|
|
154
|
-
### Full v2 ——
|
|
165
|
+
### Full v2 —— 三档深度,在开场问答里选
|
|
166
|
+
|
|
167
|
+
运行会**先问你要跑多深**,再问要坐哪些方法席。你不需要输入任何速度关键词:
|
|
168
|
+
`begin_council_selection` 会返回菜单,每档并列给出预计耗时与硬上限。
|
|
169
|
+
|
|
170
|
+
| 档位 | 预计 | 硬上限 | 每证据席 | 每轮辩论每侧 |
|
|
171
|
+
| --- | --- | --- | --- | --- |
|
|
172
|
+
| `fast` 快速 | ~12 分钟 | 15 分钟 | 3.5 分钟 | 90 秒 |
|
|
173
|
+
| `normal` 标准(默认) | ~20 分钟 | 30 分钟 | 6 分钟 | 150 秒 |
|
|
174
|
+
| `slow` 深入 | ~44 分钟 | 60 分钟 | 12 分钟 | 6 分钟 |
|
|
175
|
+
|
|
176
|
+
**三档都是同一个 `full_v2` 契约**——同样 8 个证据席、同样跑完所有所选方法、同样三轮辩论、
|
|
177
|
+
同样 PM。档位只改**每席能想多久**,不改跑哪些席。两个数字都给,是因为只给上限会被读成预估,
|
|
178
|
+
于是每次 fast 都看起来要 15 分钟。
|
|
179
|
+
|
|
180
|
+
档位同时抬升总额与**每个分段上限**,并且还会调整对 worker 的产出要求。后半句很关键:光有上限
|
|
181
|
+
只是超时,同一份提示词配更短的引信买到的是**没写完的包**,不是更快的好包。LLM 单次调用的
|
|
182
|
+
墙钟时间主要由它生成的 token 决定,所以 `fast` 是**用更少的散文要同样的信息**——主张、数字、
|
|
183
|
+
作用域来源 ID、必需报告章节和结论本身永远不在被砍之列,被砍的是复述。`slow` 买到的则是把
|
|
184
|
+
推导逐步写完的空间。
|
|
185
|
+
|
|
186
|
+
所选档位会绑进一次性 `selection_receipt`:执行调用可以重复它,但**不能改**它——批准了 15 分钟
|
|
187
|
+
的运行不会变成一小时,`status.json` 也记录是哪一档跑出来的。quick 没有档位,它是更小的契约,
|
|
188
|
+
不是更慢的。
|
|
155
189
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
进入下一轮,最后才运行 PM。
|
|
190
|
+
8 个必需证据席同波并行。证据门禁通过后,每个所选物理 v3 方法先运行确定性政策并冻结立场;
|
|
191
|
+
**达成立场**的席位会获得一个只属于该 stable ID 的独立 voice worker(可以解释立场,但不能改
|
|
192
|
+
立场或补造 typed fact),而**冻结为弃权**的席位直接用其确定性记录发布,不再消耗 worker。
|
|
193
|
+
三轮中每轮 Bull/Bear 同时启动,二者都完成后才进入下一轮,最后才运行 PM。
|
|
161
194
|
|
|
162
|
-
时限到达时,系统以 `incomplete`
|
|
163
|
-
|
|
164
|
-
`plan_visible_run`
|
|
195
|
+
时限到达时,系统以 `incomplete` 保存终态,并逐项列出超时、失败和跳过的席位。档位上限保证
|
|
196
|
+
的是"必有可审计终态",不是搜索、模型传输或数据源恶化时仍保证全席成功。visible-host 的
|
|
197
|
+
`plan_visible_run` 由外部宿主调度,插件无法强制终止其子代理,因此**完全不享有任何时限承诺**。
|
|
165
198
|
|
|
166
199
|
full 的交付摘要必须列出全部所选 stable master ID、全部 8 个分析师,以及系统行情快照或
|
|
167
200
|
明确的不可用缺口。方法席 voice 是本次运行记录的 provisional lens 解释,**不是真人原话、
|
|
@@ -239,7 +272,7 @@ Claude Code、OpenCode、Grok Build 装完即可用。Codex 的 prompts 是用
|
|
|
239
272
|
- **无可解析时间戳的新闻条目被剔除**,不会被展示为「最新」。
|
|
240
273
|
- **报 `iv = 0` 的合约被丢弃** —— CBOE 对已过期和深度实值合约返回 0,而 0 混进均值不像缺失值,像一只很平静的股票。
|
|
241
274
|
|
|
242
|
-
## 🏛️ 大师议席 ——
|
|
275
|
+
## 🏛️ 大师议席 —— 27 位
|
|
243
276
|
|
|
244
277
|
这是对公开方法论的重构,**不是本人的任何表述**。每一位都写明自己怎么思考、最先注意什么、典型追问是什么,以及**自己的失败模式** —— 说不出自己怎么错的席位,出错时不会举手。
|
|
245
278
|
|
|
@@ -251,10 +284,10 @@ Claude Code、OpenCode、Grok Build 装完即可用。Codex 的 prompts 是用
|
|
|
251
284
|
| 量化 | 西蒙斯 · Asness · 索普 |
|
|
252
285
|
| 期权 | 塔勒布 · 纳坦伯格 · 辛克莱 |
|
|
253
286
|
| 现代 | Aschenbrenner |
|
|
254
|
-
| v3 扩展 | 达莫达兰 · 阿克曼 · 凯茜·伍德 · Pabrai · 琼琼瓦拉 |
|
|
287
|
+
| v3 扩展 | 达莫达兰 · 阿克曼 · 凯茜·伍德 · Pabrai · 博格 · 琼琼瓦拉 |
|
|
255
288
|
|
|
256
289
|
1.0.0 `solo_test` 目录已有 27 个可选的物理 v3 包,但 **27 个物理包不等于 27 个已获批的
|
|
257
|
-
方法模型**。所有 27 席都只是 provisional `operator_lens`;
|
|
290
|
+
方法模型**。所有 27 席都只是 provisional `operator_lens`;54 个工具是可执行的
|
|
258
291
|
`provisional_derived_proxy` 测试代理,不是经过人工审批的公式归因。`operational` 与
|
|
259
292
|
`method_model` 数量均为 0,正式生产 GA 继续 fail-closed。
|
|
260
293
|
|
|
@@ -269,7 +302,7 @@ Bull/Bear 陈述和短 PM;它不运行图中的 verifier 节点。
|
|
|
269
302
|
flowchart TD
|
|
270
303
|
U["@alphacouncil-agent"] --> G[("Established facts<br/>filings · quotes · macro · options")]
|
|
271
304
|
G --> AG{{"Analyst council"}}
|
|
272
|
-
G --> MS{{"Master bench<br/>
|
|
305
|
+
G --> MS{{"Master bench<br/>27 lenses"}}
|
|
273
306
|
AG --> A1["Market data"]
|
|
274
307
|
AG --> A2["Earnings"]
|
|
275
308
|
AG --> A3["Valuation"]
|
|
@@ -294,7 +327,7 @@ flowchart TD
|
|
|
294
327
|
PM --> R[["final_report.md"]]
|
|
295
328
|
```
|
|
296
329
|
|
|
297
|
-
大师从事实分叉,而非从分析师的证据包分叉。让
|
|
330
|
+
大师从事实分叉,而非从分析师的证据包分叉。让 27 位大师共用一位分析师对「什么重要」的取舍,会给他们同一个盲区 —— 一个又大又完全相关的误差 —— 也就取消了设立议席的理由。
|
|
298
331
|
|
|
299
332
|
关键文件:
|
|
300
333
|
|
|
@@ -311,7 +344,7 @@ flowchart TD
|
|
|
311
344
|
|
|
312
345
|
| | Codex 版 | Claude Code 版 |
|
|
313
346
|
|---|---|---|
|
|
314
|
-
| 委员会执行 | 插件托管 `codex exec` worker;full headless ≤30 分钟 | 宿主调度 `Task` 子代理;插件无法强制时限 |
|
|
347
|
+
| 委员会执行 | 插件托管 `codex exec` worker;full headless 按所选档位 ≤15/30/60 分钟 | 宿主调度 `Task` 子代理;插件无法强制时限 |
|
|
315
348
|
| 每个分析师上下文 | 独立进程 | 独立子代理,各自完整独立上下文窗口 |
|
|
316
349
|
| 取证 | `codex exec --search` | 每个分析师在自己上下文里用 `WebSearch` + `WebFetch` |
|
|
317
350
|
| 证据 → 辩论 | 8 席同波并行后经过硬 barrier | 基于运行相位机的硬性 barrier 门控 |
|
package/SECURITY.md
CHANGED
|
@@ -20,9 +20,19 @@ AlphaCouncil Agent runs an autonomous research workflow. Be aware that:
|
|
|
20
20
|
captured from third-party pages. These are **not** committed (ignored by
|
|
21
21
|
`.gitignore`) — mind what you share.
|
|
22
22
|
- Never commit API keys, tokens, brokerage credentials, or private filings.
|
|
23
|
+
- `preflight_permissions` reads the host's own configuration files
|
|
24
|
+
(`~/.claude/settings.json`, `~/.claude/settings.local.json`, OpenCode config)
|
|
25
|
+
**read-only**, to detect whether background agents would silently lose web
|
|
26
|
+
search and degrade into unsourced reports. Nothing is written and nothing
|
|
27
|
+
leaves the machine.
|
|
28
|
+
- Worker subprocesses are launched sandboxed: `codex exec` runs with
|
|
29
|
+
`-s read-only -a never --ephemeral --ignore-user-config`, so an analyst
|
|
30
|
+
worker cannot write to disk, auto-approve actions, or recursively load the
|
|
31
|
+
user's own MCP configuration.
|
|
23
32
|
- This software is for educational/research use only and is **not investment
|
|
24
33
|
advice** (see the README disclaimer).
|
|
25
34
|
|
|
26
35
|
## Supported versions
|
|
27
36
|
|
|
28
|
-
|
|
37
|
+
Only the latest published release (npm `latest`) and the current `main` branch
|
|
38
|
+
are supported. Older versions receive no fixes.
|
package/commands/alpha.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Equity research council — full run, quick read, mechanical screen, or market narrative
|
|
3
|
-
argument-hint: [ticker] [quick|screen|market|options|news] · or just a question
|
|
3
|
+
argument-hint: [ticker] [fast|slow|quick|screen|market|options|news] · or just a question
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# /alpha
|
|
@@ -12,7 +12,8 @@ Request: **$ARGUMENTS**
|
|
|
12
12
|
| `$ARGUMENTS` looks like | Do this |
|
|
13
13
|
|---|---|
|
|
14
14
|
| *(empty)* | Print the mode table below and stop. Do not start a run. |
|
|
15
|
-
| a ticker alone, or a question | **Full council
|
|
15
|
+
| a ticker alone, or a question | **Full council** at the `normal` pace. Go to "Full council" below. Plugin-managed headless is bound by the selected pace; visible-host execution has no bound at all. |
|
|
16
|
+
| ticker + `fast` / `slow` / `deep` | Full council with that tier **prefilled**. Still show the pace menu and take the answer, exactly as with a named master. |
|
|
16
17
|
| ticker + `quick` | The plugin-managed headless `quick_v1` council: 4 fixed analysts, 1-4 selected methods, one parallel bull/bear round and a short PM inside a hard 10-minute ceiling. |
|
|
17
18
|
| ticker + `screen` | `screen_ticker` only. No language-model judgment, no subagents. |
|
|
18
19
|
| ticker + `options` | `get_options_chain` only. |
|
|
@@ -22,15 +23,22 @@ Request: **$ARGUMENTS**
|
|
|
22
23
|
When `$ARGUMENTS` is empty, print exactly this and stop:
|
|
23
24
|
|
|
24
25
|
```
|
|
25
|
-
/alpha <TICKER> full council —
|
|
26
|
+
/alpha <TICKER> full council — asks how deep to go, then shows every master
|
|
27
|
+
/alpha <TICKER> fast same, with the 15-minute tier prefilled
|
|
28
|
+
/alpha <TICKER> slow same, with the 60-minute tier prefilled
|
|
26
29
|
/alpha <TICKER> quick quick_v1: 4 analysts incl. news + 1-4 masters + 1 parallel debate round (<=10m)
|
|
27
30
|
/alpha <TICKER> screen mechanical filings screen only (no model spend)
|
|
28
31
|
/alpha <TICKER> options IV term structure, skew, positioning (no model spend)
|
|
29
32
|
/alpha <TICKER> news dated filings and headlines (no model spend)
|
|
30
33
|
/alpha market <theme> what the market is talking about (no model spend)
|
|
31
34
|
|
|
35
|
+
you do not have to type a speed: the run asks, and shows the predicted time for each
|
|
36
|
+
tier. all three tiers are the same full_v2 contract at three depths; quick is a SMALLER
|
|
37
|
+
contract (4 analysts, 1 debate round) and is never full-equivalent
|
|
38
|
+
|
|
32
39
|
examples
|
|
33
40
|
/alpha AAPL /alpha 0700.HK quick /alpha 7203.T news
|
|
41
|
+
/alpha NVDA slow /alpha MSFT fast
|
|
34
42
|
/alpha NVDA screen /alpha market rates /alpha "is TSM cheap?"
|
|
35
43
|
```
|
|
36
44
|
|
|
@@ -51,24 +59,40 @@ the same in Claude Code, Codex, OpenCode and Grok Build.
|
|
|
51
59
|
1. Call `begin_council_selection` with the symbol, original request, language, host and the
|
|
52
60
|
intended `council_mode` (`full` by default; exactly `quick` for quick mode). If
|
|
53
61
|
the request explicitly names masters, also pass those stable IDs as
|
|
54
|
-
`preselected_master_ids`;
|
|
55
|
-
|
|
62
|
+
`preselected_master_ids`; if it named a speed, pass `council_pace`. Both highlight a choice
|
|
63
|
+
without confirming it.
|
|
64
|
+
2. **Ask how deep to go first**, from the returned `pace_options`. It is a three-option
|
|
65
|
+
question and the catalog is long, so it goes above the catalog. Show BOTH numbers per tier
|
|
66
|
+
— the expected time and the hard ceiling — because a ceiling alone reads as the estimate:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
本次分析要跑多深?(默认 2)
|
|
70
|
+
1. 快速 预计 ~12 分钟(上限 15) 每证据席 3.5 分钟,每轮辩论每侧 90 秒
|
|
71
|
+
2. 标准 预计 ~20 分钟(上限 30) 每证据席 6 分钟,每轮辩论每侧 150 秒 ← 默认
|
|
72
|
+
3. 深入 预计 ~44 分钟(上限 60) 每证据席 12 分钟,每轮辩论每侧 360 秒
|
|
73
|
+
三档都是完整评议:同样 8 个证据席、同样三轮辩论、同样 PM,只是每席能想多久不同。
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Quick returns an empty menu and rejects the field; say so rather than offering a tier.
|
|
77
|
+
3. Show **every returned master individually, in the returned order and with its stable
|
|
56
78
|
number**. Each row must include `identity`, `method`, `best_for` and `maturity`; a school
|
|
57
79
|
name or a count is not a substitute for the individual catalog.
|
|
58
|
-
|
|
80
|
+
4. Ask for one submission covering both the tier and the seats. In full mode accept one number from `1..N`, combinations,
|
|
59
81
|
ranges, stable IDs/names, or `all`. In quick mode the same complete 26-seat catalog is
|
|
60
82
|
displayed, but the submission must contain **1..4 seats** and `all` / `select_all` is
|
|
61
83
|
forbidden. A host-native multi-select is a convenience only. If it is unavailable or
|
|
62
84
|
cannot show the full catalog, use the numbered text table and plain reply on every host.
|
|
63
|
-
|
|
85
|
+
5. If the original full-mode request already named masters or said `all`, prefill that choice but
|
|
64
86
|
**still show the full catalog and require this run's submission**. Do not silently reuse a
|
|
65
87
|
prior choice. For quick, prefill at most four named methods and ask the user to reduce an
|
|
66
88
|
oversized/`all` request to 1-4. The submitted choice is the confirmation; do not ask a
|
|
67
89
|
second confirmation.
|
|
68
|
-
|
|
69
|
-
`display_ack: true`,
|
|
70
|
-
`selection`. Retain the returned
|
|
71
|
-
|
|
90
|
+
6. Call `confirm_master_selection` with the returned `selection_id`, `catalog_hash`,
|
|
91
|
+
`display_ack: true`, the answered `council_pace` (omit to accept `normal`), and exactly one
|
|
92
|
+
of `selected_master_ids`, `select_all: true`, or `selection`. Retain the returned
|
|
93
|
+
one-use `selection_receipt`. The pace binds into it: an execution call may repeat the confirmed tier
|
|
94
|
+
but never change it, so a user who approved 15 minutes cannot end up running an hour.
|
|
95
|
+
7. Only now call `plan_visible_run` (full only), `collect_evidence` (full only), or
|
|
72
96
|
`analyze_symbol`, passing that `selection_receipt` and the same symbol, prompt, language
|
|
73
97
|
and `council_mode`. Quick must use `analyze_symbol`. Do not also pass `masters` or
|
|
74
98
|
`masters_roster`; the receipt is authoritative and mode-bound. A full receipt cannot start
|
|
@@ -97,14 +121,19 @@ master-selection contract.
|
|
|
97
121
|
fails after its bounded parse repair, do not spend more model calls on masters, bull/bear
|
|
98
122
|
or PM. Persist an `incomplete` run naming the failed evidence and skipped downstream roles.
|
|
99
123
|
7. For the hard runtime contract, call plugin-managed headless `analyze_symbol` once with
|
|
100
|
-
`council_mode:"full"`, `wait_for_completion:false`, the full-mode receipt and
|
|
101
|
-
`
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
124
|
+
`council_mode:"full"`, `wait_for_completion:false`, the full-mode receipt, and
|
|
125
|
+
`council_pace` when the arguments asked for a speed: `fast` for 15 minutes, `slow` (or
|
|
126
|
+
`deep`) for 60, omitted for the 30-minute default. Poll the same durable `run_id` to
|
|
127
|
+
terminal. All eight mandatory evidence roles start in one wave; every selected v3 method
|
|
128
|
+
gets a frozen deterministic stance plus its own isolated voice worker; Bull/Bear run in
|
|
129
|
+
parallel within each of three rounds with a barrier between rounds; then the PM runs.
|
|
130
|
+
Queueing, retries and final persistence share the selected tier's clock. At expiry the
|
|
131
|
+
saved run is `incomplete`, never silently shortened or relabeled complete. This guarantees
|
|
132
|
+
terminal persistence, not all-seat success during search/model/data-provider degradation.
|
|
133
|
+
Pass `total_timeout_ms` only to LOWER the tier's budget; above it the call is rejected.
|
|
134
|
+
Tell the user which pace ran and what it bought: the tier raises every per-stage cap, so
|
|
135
|
+
`slow` gives each evidence seat 12 minutes instead of 6 and each debate round 6 minutes per
|
|
136
|
+
side instead of 150 seconds. All three paces are the same `full_v2` contract.
|
|
108
137
|
8. `plan_visible_run` is owned by the external host. The plugin cannot force-stop its Task
|
|
109
138
|
agents, so visible-host full must not be advertised as meeting the 30-minute deadline.
|
|
110
139
|
9. The terminal full handoff must include the system price snapshot (or explicit unavailable
|
package/docs/INSTALL.md
CHANGED
|
@@ -16,11 +16,11 @@ plain MCP server in the Claude desktop app.
|
|
|
16
16
|
npm install -g alphacouncil-agent
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
That
|
|
19
|
+
That installs the current release. To pin a version or install straight from a tag:
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
npm install -g alphacouncil-agent@
|
|
23
|
-
npm install -g github:Zhao73/alphacouncil-agent#
|
|
22
|
+
npm install -g alphacouncil-agent@latest
|
|
23
|
+
npm install -g github:Zhao73/alphacouncil-agent#main
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
`npm view alphacouncil-agent dist-tags --json` shows what each channel currently serves.
|
|
@@ -83,8 +83,11 @@ voice is a recorded provisional method result, not the named person's words.
|
|
|
83
83
|
### What full headless means
|
|
84
84
|
|
|
85
85
|
Full remains `full_v2`. When launched through plugin-managed headless
|
|
86
|
-
`analyze_symbol(council_mode="full")`, it
|
|
87
|
-
|
|
86
|
+
`analyze_symbol(council_mode="full")`, it runs at one of three depth tiers selected with
|
|
87
|
+
`council_pace` -- `fast` 15 minutes, `normal` (default) 30, `slow` 60 -- measured from durable
|
|
88
|
+
queueing through terminal artifact persistence. The tier raises every per-stage cap with the
|
|
89
|
+
total, which is where the depth difference lives; all three are the same eight-seat,
|
|
90
|
+
three-round `full_v2` contract:
|
|
88
91
|
|
|
89
92
|
- all eight mandatory evidence workers start in one parallel wave;
|
|
90
93
|
- after the fail-closed evidence barrier, each selected physical v3 method freezes its
|
|
@@ -112,7 +115,7 @@ runs full. It is managed by the plugin's headless `analyze_symbol` path so the M
|
|
|
112
115
|
enforce a wall-clock deadline. `plan_visible_run` rejects `council_mode=quick` rather than
|
|
113
116
|
pretending an external host Task can be force-stopped by the plugin.
|
|
114
117
|
|
|
115
|
-
- Stage 0 still displays the complete
|
|
118
|
+
- Stage 0 still displays the complete 27-seat catalog, but quick accepts exactly 1-4 selected
|
|
116
119
|
methods and forbids `all` / `select_all`.
|
|
117
120
|
- The receipt is bound to symbol, prompt, language and `council_mode`; it cannot be reused
|
|
118
121
|
across quick and full.
|