alphacouncil-agent 1.0.4 → 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 +282 -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-selection.mjs +79 -1
- 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 +21 -2
- 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
|
@@ -28,6 +28,25 @@ Key items: 1.01 material agreement, 2.02 results, 4.01 auditor change, 4.02 prio
|
|
|
28
28
|
4. **Dilution**
|
|
29
29
|
Shares outstanding across several years. Persistent dilution discounts every per-share growth figure, and that is routinely ignored in growth discussions.
|
|
30
30
|
|
|
31
|
+
## How to actually retrieve the filings (EDGAR throttles; this section decides whether this seat has primary evidence at all)
|
|
32
|
+
|
|
33
|
+
EDGAR answers **HTTP 429** to a client without a descriptive User-Agent, and `www.sec.gov` is throttled harder than `data.sec.gov`. **Rapidly trying different URLs makes the throttling worse, not better** -- on one real run eight different URLs were tried in a row, all returned 429, and not a single filing was read.
|
|
34
|
+
|
|
35
|
+
Retrieve in this order and stop as soon as you have what you need:
|
|
36
|
+
|
|
37
|
+
1. `https://data.sec.gov/submissions/CIK##########.json` (CIK zero-padded to ten digits) -- the filing index. The most tolerant endpoint, and one call returns every form type, accession number and filed date.
|
|
38
|
+
2. `https://data.sec.gov/api/xbrl/companyfacts/CIK##########.json` -- XBRL numbers such as share count and stockholders' equity.
|
|
39
|
+
3. `https://www.sec.gov/Archives/edgar/data/<CIK without leading zeros>/<accession without dashes>/<primary document>` -- the specific Form 4 or 8-K text.
|
|
40
|
+
4. EDGAR full-text search and `cgi-bin/browse-edgar` **last**: they are throttled the hardest and tell you nothing the first three cannot.
|
|
41
|
+
|
|
42
|
+
On a 429: **wait a few seconds and retry the same URL** rather than immediately switching to a different one. Retry one document at most three times; if all three are limited, record the retrieval as failed and follow the degradation rule below.
|
|
43
|
+
|
|
44
|
+
**Degradation rule (mandatory, and not to be softened)** -- when no filing was read directly:
|
|
45
|
+
- the first sentence of `summary` must state that no EDGAR original was read and that everything was cross-checked through secondary sources instead;
|
|
46
|
+
- `confidence` is capped at `low`;
|
|
47
|
+
- `open_questions` lists each failed URL with its status code;
|
|
48
|
+
- every item taken from a mirror or aggregator is labelled second-hand. **Never write mirror content as "verified against the filing".**
|
|
49
|
+
|
|
31
50
|
## Hard rules
|
|
32
51
|
|
|
33
52
|
- **Every item carries the filing link and the filed date** -- the filed date, not the period end.
|
|
@@ -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
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "AlphaCouncil plugins for public-equity research.",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.13"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "alphacouncil-agent",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"description": "Multi-agent company, ETF and index research: evidence packets, method seats, bull/bear debate and portfolio-manager synthesis.",
|
|
16
|
-
"version": "1.0.
|
|
16
|
+
"version": "1.0.13",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "Zhao73"
|
|
19
19
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alphacouncil-agent",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"description": "Multi-agent company, ETF and market-index research for Claude Code with sourced evidence, method seats, bull/bear debate and a full portfolio-manager report.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Zhao73"
|
|
@@ -29,6 +29,25 @@ Key items: 1.01 material agreement, 2.02 results, 4.01 auditor change, 4.02 prio
|
|
|
29
29
|
4. **Dilution**
|
|
30
30
|
Shares outstanding across several years. Persistent dilution discounts every per-share growth figure, and that is routinely ignored in growth discussions.
|
|
31
31
|
|
|
32
|
+
## How to actually retrieve the filings (EDGAR throttles; this section decides whether this seat has primary evidence at all)
|
|
33
|
+
|
|
34
|
+
EDGAR answers **HTTP 429** to a client without a descriptive User-Agent, and `www.sec.gov` is throttled harder than `data.sec.gov`. **Rapidly trying different URLs makes the throttling worse, not better** -- on one real run eight different URLs were tried in a row, all returned 429, and not a single filing was read.
|
|
35
|
+
|
|
36
|
+
Retrieve in this order and stop as soon as you have what you need:
|
|
37
|
+
|
|
38
|
+
1. `https://data.sec.gov/submissions/CIK##########.json` (CIK zero-padded to ten digits) -- the filing index. The most tolerant endpoint, and one call returns every form type, accession number and filed date.
|
|
39
|
+
2. `https://data.sec.gov/api/xbrl/companyfacts/CIK##########.json` -- XBRL numbers such as share count and stockholders' equity.
|
|
40
|
+
3. `https://www.sec.gov/Archives/edgar/data/<CIK without leading zeros>/<accession without dashes>/<primary document>` -- the specific Form 4 or 8-K text.
|
|
41
|
+
4. EDGAR full-text search and `cgi-bin/browse-edgar` **last**: they are throttled the hardest and tell you nothing the first three cannot.
|
|
42
|
+
|
|
43
|
+
On a 429: **wait a few seconds and retry the same URL** rather than immediately switching to a different one. Retry one document at most three times; if all three are limited, record the retrieval as failed and follow the degradation rule below.
|
|
44
|
+
|
|
45
|
+
**Degradation rule (mandatory, and not to be softened)** -- when no filing was read directly:
|
|
46
|
+
- the first sentence of `summary` must state that no EDGAR original was read and that everything was cross-checked through secondary sources instead;
|
|
47
|
+
- `confidence` is capped at `low`;
|
|
48
|
+
- `open_questions` lists each failed URL with its status code;
|
|
49
|
+
- every item taken from a mirror or aggregator is labelled second-hand. **Never write mirror content as "verified against the filing".**
|
|
50
|
+
|
|
32
51
|
## Hard rules
|
|
33
52
|
|
|
34
53
|
- **Every item carries the filing link and the filed date** -- the filed date, not the period end.
|
package/.grok/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
|
|
@@ -33,6 +33,25 @@ Key items: 1.01 material agreement, 2.02 results, 4.01 auditor change, 4.02 prio
|
|
|
33
33
|
4. **Dilution**
|
|
34
34
|
Shares outstanding across several years. Persistent dilution discounts every per-share growth figure, and that is routinely ignored in growth discussions.
|
|
35
35
|
|
|
36
|
+
## How to actually retrieve the filings (EDGAR throttles; this section decides whether this seat has primary evidence at all)
|
|
37
|
+
|
|
38
|
+
EDGAR answers **HTTP 429** to a client without a descriptive User-Agent, and `www.sec.gov` is throttled harder than `data.sec.gov`. **Rapidly trying different URLs makes the throttling worse, not better** -- on one real run eight different URLs were tried in a row, all returned 429, and not a single filing was read.
|
|
39
|
+
|
|
40
|
+
Retrieve in this order and stop as soon as you have what you need:
|
|
41
|
+
|
|
42
|
+
1. `https://data.sec.gov/submissions/CIK##########.json` (CIK zero-padded to ten digits) -- the filing index. The most tolerant endpoint, and one call returns every form type, accession number and filed date.
|
|
43
|
+
2. `https://data.sec.gov/api/xbrl/companyfacts/CIK##########.json` -- XBRL numbers such as share count and stockholders' equity.
|
|
44
|
+
3. `https://www.sec.gov/Archives/edgar/data/<CIK without leading zeros>/<accession without dashes>/<primary document>` -- the specific Form 4 or 8-K text.
|
|
45
|
+
4. EDGAR full-text search and `cgi-bin/browse-edgar` **last**: they are throttled the hardest and tell you nothing the first three cannot.
|
|
46
|
+
|
|
47
|
+
On a 429: **wait a few seconds and retry the same URL** rather than immediately switching to a different one. Retry one document at most three times; if all three are limited, record the retrieval as failed and follow the degradation rule below.
|
|
48
|
+
|
|
49
|
+
**Degradation rule (mandatory, and not to be softened)** -- when no filing was read directly:
|
|
50
|
+
- the first sentence of `summary` must state that no EDGAR original was read and that everything was cross-checked through secondary sources instead;
|
|
51
|
+
- `confidence` is capped at `low`;
|
|
52
|
+
- `open_questions` lists each failed URL with its status code;
|
|
53
|
+
- every item taken from a mirror or aggregator is labelled second-hand. **Never write mirror content as "verified against the filing".**
|
|
54
|
+
|
|
36
55
|
## Hard rules
|
|
37
56
|
|
|
38
57
|
- **Every item carries the filing link and the filed date** -- the filed date, not the period end.
|
|
@@ -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
|