Invocation context
Read the following inputs:
.cache/{ticker}/dimensions.json— 19-dimension scoring.cache/{ticker}/raw_data.json— raw datascripts/lib/investor_db.py— 65-person metadatascripts/lib/seat_db.py— 22 hot-money range rules
Output:
.cache/{ticker}/panel.json— 50 Signals + vote statistics
Strict output format (Pydantic Signal, copied from ai-hedge-fund)
Each investor must returnstrict JSON:
{
"investor_id": "buffett",
"name": "巴菲特",
"group": "A",
"avatar": "avatars/buffett.svg",
"signal": "bullish | neutral | bearish",
"confidence": 87,
"score": 82,
"verdict": "强烈买入 | 买入 | 关注 | 观望 | 等待 | 回避 | 不达标 | 不适合",
"reasoning": "1-3 句具体逻辑",
"comment": "用该投资者语言风格的金句 1-2 句",
"pass": ["..."],
"fail": ["..."],
"ideal_price": 16.20,
"period": "3-5 年"
}
Confidence calibration rules:
- 85-100: All core methodology hard criteria are hit or all are missed
- 60-84: Majority hit
- 30-59: Partial hit, need to wait for signal
- 0-29: Methodology not applicable to this stock / insufficient information
Execution steps
Step 1: Load metadata
from lib.investor_db import INVESTORS, by_group
from lib.seat_db import SEATS, is_in_range
Step 2: For each investor
- Retrieve the
fieldswhitelist - Extract relevant fields from dimensions.json
- Read the reference file of the group the investor belongs to (as needed)
- Generate a Signal using the investor's methodology + language samples (Claude generates it itself)
- Validate JSON legality
Step 3: Hot-money range pre-filter (Group F special)
For the 22 hot-money investors, first use is_in_range(nickname, ticker_features) to determine whether within range:
- Within range → normal scoring
- Not within range →
signal: "neutral",verdict: "不适合",confidence: 90,comment: "{nick}的射程是{style},这只票不在风格内。"
Step 4: Aggregate votes
{
"panel_consensus": (bullish_count / 50) * 100,
"vote_distribution": Counter(verdict for i in investors),
"signal_distribution": Counter(signal for i in investors),
"investors": [...]
}
Detailed methodology of the 7 major schools
Read the following references as needed:
| Group | File | Headcount |
|---|---|---|
| A Classic Value | references/group-a-classic-value.md |
6 |
| B Growth Investing | references/group-b-growth.md |
4 |
| C Macro Hedge | references/group-c-macro-hedge.md |
5 |
| D Technical Trend | references/group-d-technical.md |
4 |
| E Chinese Value Investing | references/group-e-china-value.md |
6 |
| F Hot Money | references/group-f-china-youzi.md |
22 |
| G Quantitative Systems | references/group-g-quant.md |
3 |
📚 Corpus (required reading)
Before generating each commentMust read references/quotes-knowledge-base.md to look up the investor's real public quotes and "style" field. This is the knowledge base's single source of truth.
Language style guidelines
Each investor's comment field mustsound like the person themselves:
- Buffett: gentle, references Omaha, uses "we"
- Munger: caustic, inverse thinking, references psychological biases
- Soros: philosophical, mentions "reflexivity"
- Zhang Mengzhu: bold and expansive, mentions "big picture", does not discuss details
- Zhao Laoge: direct, talks about "themes", talks about "second board"
- Duan Yongping: plain, asks about "business model" "people" "price"
- Chen Xiaoqun: jianghu flavor, talks about "divergence" "yixiantian" "nuclear button"
At the end of each group's reference file there are 3-5 sentencesreal public quotesas few-shot.
Completion check
- panel.json contains 50 Signals
- Each Signal has all fields complete
- At least N of the 22 active capital players returned "not suitable" (unless this stock is the leader of a hot theme)
- The three summary fields panel_consensus / vote_distribution / signal_distribution have been calculated