Stock Copilot Pro
Global Multi-Source Stock Analysis with QVeris.
SEO Keywords
OpenClaw, stock analysis skill, AI stock copilot, China A-shares, Hong Kong stocks, US stocks, quantitative analysis, fundamental analysis, technical analysis, sentiment analysis, industry radar, morning evening brief, watchlist, portfolio monitoring, QVeris API, THS iFinD, Caidazi, Alpha Vantage, Finnhub, X sentiment, investment research assistant
Supported Capabilities
- Single-stock analysis (
analyze): valuation, quality, technicals, sentiment, risk/timing
- Multi-stock comparison (
compare): cross-symbol ranking and portfolio-level view
- Watchlist/holdings management (
watch): list/add/remove for holdings and watchlist
- Morning/Evening brief (
brief): holdings-focused daily actionable briefing
- Industry hot-topic radar (
radar): multi-source topic aggregation for investable themes
- Multi-format output:
markdown, json, chat
- OpenClaw LLM-ready flow: structured data in code + guided narrative in
SKILL.md
Data Sources
- Core MCP/API gateway:
qveris.ai (QVERIS_API_KEY)
- CN/HK quote and fundamentals:
ths_ifind.real_time_quotation
ths_ifind.financial_statements
ths_ifind.company_basics
ths_ifind.history_quotation
- CN/HK news and research:
caidazi.news.query
caidazi.report.query
caidazi.search.hybrid.list
caidazi.search.hybrid_v2.query
- Global news sentiment:
alpha_news_sentiment
finnhub.news
- X/Twitter sentiment and hot topics:
qveris_social.x_domain_hot_topics
qveris_social.x_domain_hot_events
qveris_social.x_domain_new_posts
x_developer.2.tweets.search.recent
What This Skill Does
Stock Copilot Pro performs end-to-end stock analysis with five data domains:
- Market quote / trading context
- Fundamental metrics
- Technical signals (RSI/MACD/MA)
- News and sentiment
- X sentiment
It then generates a data-rich analyst report with:
- value-investing scorecard
- event-timing anti-chasing classification
- safety-margin estimate
- thesis-driven investment framework (drivers/risks/scenarios/KPIs)
- multi-style playbooks (value/balanced/growth/trading)
- event radar with candidate ideas from news and X
- scenario-based recommendations
- standard readable output (default) + optional full evidence trace (
--evidence)
Key Advantages
- Deterministic tool routing via
references/tool-chains.json
- Evolution v2 parameter-template memory to reduce recurring parameter errors
- Strong fallback strategy across providers and markets
- US/HK/CN market-aware symbol handling
- Structured outputs for both analyst reading and machine ingestion
- Safety-first handling of secrets and runtime state
Core Workflow
Resolve user input to symbol + market (supports company-name aliases, e.g. Chinese name -> 600089.SH).
Search tools by capability (quote, fundamentals, indicators, sentiment, X sentiment).
Route by hardcoded tool chains first (market-aware), then fallback generic capability search.
- For CN/HK sentiment, prioritize
caidazi channels (report/news/wechat).
- For CN/HK fundamentals, prioritize THS financial statements (income/balance sheet/cash flow), then fallback to company basics.
Before execution, try evolution parameter templates; if unavailable, use default param builder.
Run quality checks:
- Missing key fields
- Data recency
- Cross-source inconsistency
Produce analyst report with:
- composite score
- safety margin
- event-driven vs pullback-risk timing classification
- structured thesis (driver/risk/scenario/KPI)
- event radar (timeline/theme) and candidate ideas
- style-specific execution playbooks
- market scenario suggestions
- optional parsed/raw evidence sections when
--evidence is enabled
Preference routing (public audience default):
- If no preference flags are provided, script returns a questionnaire first.
- You can skip this with
--skip-questionnaire.
Command Surface
Primary script: scripts/stock_copilot_pro.mjs
- Analyze one symbol:
node scripts/stock_copilot_pro.mjs analyze --symbol AAPL --market US --mode comprehensive
node scripts/stock_copilot_pro.mjs analyze --symbol "<company-name>" --mode comprehensive
- Compare multiple symbols:
node scripts/stock_copilot_pro.mjs compare --symbols AAPL,MSFT --market US --mode comprehensive
- Manage watchlist:
node scripts/stock_copilot_pro.mjs watch --action list
node scripts/stock_copilot_pro.mjs watch --action add --bucket holdings --symbol AAPL --market US
node scripts/stock_copilot_pro.mjs watch --action remove --bucket watchlist --symbol 0700.HK --market HK
- Generate brief:
node scripts/stock_copilot_pro.mjs brief --type morning --format chat
node scripts/stock_copilot_pro.mjs brief --type evening --format markdown
- Run industry radar:
node scripts/stock_copilot_pro.mjs radar --market GLOBAL --limit 10
OpenClaw scheduled tasks (morning/evening brief and radar)
To set up morning brief, evening brief, or daily radar in OpenClaw, use only the official OpenClaw cron format and create jobs via the CLI or Gateway cron tool. Do not edit ~/.openclaw/cron/jobs.json directly.
- Reference: the
jobs array in config/openclaw-cron.example.json; each item is one cron.add payload (fields: name, schedule: { kind, expr, tz }, sessionTarget: "isolated", payload: { kind: "agentTurn", message: "..." }, delivery).
- Example (morning brief):
openclaw cron add --name "Stock morning brief" --cron "0 9 * * 1-5" --tz Asia/Shanghai --session isolated --message "Use stock-copilot-pro to generate morning brief: run brief --type morning --max-items 8 --format chat" --announce. To deliver to Feishu, add --channel feishu --to <group-or-chat-id>.
- Incorrect: using the legacy example format (e.g.
schedule as string, command, delivery.channels array) or pasting the example into jobs.json will cause Gateway parse failure or crash.
CN/HK Coverage Details
- Company-name input is supported and auto-resolved to market + symbol for common names.
- Sentiment path prioritizes
caidazi (research reports, news, wechat/public-account channels).
- Fundamentals path prioritizes THS financial statements endpoints, and always calls THS company basics for profile backfill:
revenue
netProfit
totalAssets
totalLiabilities
operatingCashflow
industry
mainBusiness
tags
Output Modes
markdown (default): human-readable report
json: machine-readable merged payload
chat: segmented chat-friendly output for messaging apps
summary-first: compact output style via --summary-only
Preference & Event Options
Preference flags:
--horizon short|mid|long
--risk low|mid|high
--style value|balanced|growth|trading
--actionable (include execution-oriented rules)
--skip-questionnaire (force analysis without preference Q&A)
Event radar flags:
--event-window-days 7|14|30
--event-universe global|same_market
--event-view timeline|theme
Dynamic Evolution
- Runtime learning state is stored in
.evolution/tool-evolution.json.
- One successful execution can update tool parameter templates.
- Evolution stores
param_templates and sample_successful_params for reuse.
- Evolution does not decide tool priority; tool priority is controlled by
tool-chains.json.
- Use
--no-evolution to disable loading/saving runtime learning state.
Safety and Disclosure
- Uses only
QVERIS_API_KEY.
- Calls only QVeris APIs over HTTPS.
full_content_file_url fetching is kept enabled for data completeness, but only HTTPS URLs under qveris.ai are allowed.
- Does not store API keys in logs, reports, or evolution state.
- Runtime persistence is limited to
.evolution/tool-evolution.json (metadata + parameter templates only).
- Watchlist state is stored at
config/watchlist.json (bootstrap from config/watchlist.example.json).
- OpenClaw scheduled tasks: see
config/openclaw-cron.example.json. Create jobs with the official format (schedule.kind, payload.kind, sessionTarget, etc.) via openclaw cron add or the Gateway cron tool; do not paste or merge the example JSON into ~/.openclaw/cron/jobs.json (schema mismatch can cause Gateway parse failure or crash). Set delivery.channel and delivery.to for your channel (e.g. feishu).
- External source URLs remain hidden by default; only shown when
--include-source-urls is explicitly enabled.
- No package installation or arbitrary command execution is performed by this skill script.
- Research-only output. Not investment advice.
Single Stock Analysis Guide
When analyzing analyze output, act as a senior buy-side analyst and deliver a professional but not overlong report.
Required Output (7 Sections)
- Data Snapshot (required)
- Start with a compact metrics table built from
data fields.
- Include at least: price/change, marketCap, PE/PB, profitMargin, revenue, netProfit, RSI, 52W range.
- Example format:
| Metric | Value |
|--------|-------|
| Price | $264.58 (+1.54%) |
| Market Cap | $3.89T |
| P/E | 33.45 |
| P/B | 57.97 |
| Profit Margin | 27% |
| Revenue (TTM) | $394B |
| Net Profit | $99.8B |
| RSI | 58.3 |
| 52W Range | $164 - $270 |
Key view (30 seconds)
- One-line conclusion: buy/hold/avoid + key reason.
Investment thesis
- Bull case: 2 points (growth driver, moat/catalyst)
- Bear case: 2 points (valuation/risk/timing)
- Final balance: what dominates now.
Valuation and key levels
- PE/PB vs peer or history percentile (cheap/fair/expensive)
- Key levels: current price, support, resistance, stop-loss reference
Recommendation (required)
- Different advice by position status:
- No position
- Light position
- Heavy position / underwater
- Each suggestion must include concrete trigger/price/condition.
Risk monitor
- Top 2-3 risks + invalidation condition (what proves thesis wrong).
Data Sources (required)
- End with a source disclosure line showing QVeris attribution and data channels actually used.
- Include generation timestamp and list of source/tool names from payload metadata such as
dataSources, meta.sourceStats, or data.*.selectedTool.
- Example format:
> Data powered by [QVeris](https://qveris.ai) | Sources: Alpha Vantage (quote/fundamentals), Finnhub (news sentiment), X/Twitter (social sentiment) | Generated at 2026-02-22T13:00:00Z
Quality Bar
- Avoid data dumping; each key number must include interpretation.
- Every numeric claim must be grounded in actual payload values; do not fabricate numbers.
- Keep concise but complete (target 250-500 characters for narrative).
- Must include actionable guidance and time window.
- Ticker and technical terms in English.
Daily Brief Analysis Guide
When analyzing brief output, generate an actionable morning/evening briefing for OpenClaw conversation.
Morning Brief
- Market overview: risk-on/off + key overnight move + today's tone, plus an index snapshot table from
marketOverview.indices (index name, price, % change, timestamp)
- Holdings check: holdings that need action first, with per-holding price/% change/grade when available
- Radar relevance: which radar themes impact holdings
- Today's plan (required): specific watch levels / event / execution plan
- Data Sources (required): one-line QVeris attribution and channels used in this brief
Evening Brief
- Session recap: index + sector + portfolio one-line recap, with key index close/% change
- Holdings change: biggest winners/losers and why, with quantized move (%) where available
- Thesis check: whether thesis changed
- Tomorrow's plan (required): explicit conditions and actions
- Data Sources (required): one-line QVeris attribution and channels used in this brief
Quality Bar
- Prioritize user holdings, not generic market commentary.
- Quantify changes when possible (%, levels, counts).
- Keep concise and decision-oriented.
- Include a short source disclosure line at the end to improve traceability and credibility.
Hot Topic Analysis Guide
When analyzing radar output, cluster signals into investable themes and provide concise actionable conclusions.
Required Output (per theme)
- Theme: clear, investable label
- Driver: what changed and why now
- Impact: beneficiaries/losers + magnitude + duration
- Recommendation (required): concrete trigger or level
- Risk note: key invalidation or monitoring signal
- Source tag (required): include
source label for each theme (for example: caidazi_report, alpha_news_sentiment, x_hot_topics)
Execution Rules
- Cluster into 3-5 themes max.
- Cross-verify sources; lower confidence for social-only signals.
- Distinguish short-term trade vs mid-term allocation.
- Keep each theme concise (<200 characters preferred).
- End with a QVeris source disclosure line listing channels that contributed to this radar run.
1---2name: stock-copilot-pro3description: OpenClaw stock analysis skill for US/HK/CN markets. Combines QVeris data sources (THS, Caidazi, Alpha Vantage, Finnhub, X sentiment) for quote, fundamentals, technicals, news radar, morning/evening brief, and actionable investment insights.4---5
6# Stock Copilot Pro
7
8Global Multi-Source Stock Analysis with QVeris.
9
10## SEO Keywords
11
12OpenClaw, stock analysis skill, AI stock copilot, China A-shares, Hong Kong stocks, US stocks, quantitative analysis, fundamental analysis, technical analysis, sentiment analysis, industry radar, morning evening brief, watchlist, portfolio monitoring, QVeris API, THS iFinD, Caidazi, Alpha Vantage, Finnhub, X sentiment, investment research assistant
13
14## Supported Capabilities
15
16- Single-stock analysis (`analyze`): valuation, quality, technicals, sentiment, risk/timing
17- Multi-stock comparison (`compare`): cross-symbol ranking and portfolio-level view
18- Watchlist/holdings management (`watch`): list/add/remove for holdings and watchlist
19- Morning/Evening brief (`brief`): holdings-focused daily actionable briefing
20- Industry hot-topic radar (`radar`): multi-source topic aggregation for investable themes
21- Multi-format output: `markdown`, `json`, `chat`
22- OpenClaw LLM-ready flow: structured data in code + guided narrative in `SKILL.md`
23
24## Data Sources
25
26- Core MCP/API gateway: `qveris.ai` (`QVERIS_API_KEY`)
27- CN/HK quote and fundamentals:
28 - `ths_ifind.real_time_quotation`
29 - `ths_ifind.financial_statements`
30 - `ths_ifind.company_basics`
31 - `ths_ifind.history_quotation`
32- CN/HK news and research:
33 - `caidazi.news.query`
34 - `caidazi.report.query`
35 - `caidazi.search.hybrid.list`
36 - `caidazi.search.hybrid_v2.query`
37- Global news sentiment:
38 - `alpha_news_sentiment`
39 - `finnhub.news`
40- X/Twitter sentiment and hot topics:
41 - `qveris_social.x_domain_hot_topics`
42 - `qveris_social.x_domain_hot_events`
43 - `qveris_social.x_domain_new_posts`
44 - `x_developer.2.tweets.search.recent`
45
46## What This Skill Does
47
48Stock Copilot Pro performs end-to-end stock analysis with five data domains:
49
501. Market quote / trading context
512. Fundamental metrics
523. Technical signals (RSI/MACD/MA)
534. News and sentiment
545. X sentiment
55
56It then generates a data-rich analyst report with:
57- value-investing scorecard
58- event-timing anti-chasing classification
59- safety-margin estimate
60- thesis-driven investment framework (drivers/risks/scenarios/KPIs)
61- multi-style playbooks (value/balanced/growth/trading)
62- event radar with candidate ideas from news and X
63- scenario-based recommendations
64- standard readable output (default) + optional full evidence trace (`--evidence`)
65
66## Key Advantages
67
68- Deterministic tool routing via `references/tool-chains.json`
69- Evolution v2 parameter-template memory to reduce recurring parameter errors
70- Strong fallback strategy across providers and markets
71- US/HK/CN market-aware symbol handling
72- Structured outputs for both analyst reading and machine ingestion
73- Safety-first handling of secrets and runtime state
74
75## Core Workflow
76
771. Resolve user input to symbol + market (supports company-name aliases, e.g. Chinese name -> `600089.SH`).
782. Search tools by capability (quote, fundamentals, indicators, sentiment, X sentiment).
793. Route by hardcoded tool chains first (market-aware), then fallback generic capability search.
80 - For CN/HK sentiment, prioritize `caidazi` channels (report/news/wechat).
81 - For CN/HK fundamentals, prioritize THS financial statements (income/balance sheet/cash flow), then fallback to company basics.
824. Before execution, try evolution parameter templates; if unavailable, use default param builder.
835. Run quality checks:
84 - Missing key fields
85 - Data recency
86 - Cross-source inconsistency
876. Produce analyst report with:
88 - composite score
89 - safety margin
90 - event-driven vs pullback-risk timing classification
91 - structured thesis (driver/risk/scenario/KPI)
92 - event radar (timeline/theme) and candidate ideas
93 - style-specific execution playbooks
94 - market scenario suggestions
95 - optional parsed/raw evidence sections when `--evidence` is enabled
96
977. Preference routing (public audience default):
98 - If no preference flags are provided, script returns a questionnaire first.
99 - You can skip this with `--skip-questionnaire`.
100
101## Command Surface
102
103Primary script: `scripts/stock_copilot_pro.mjs`
104
105- Analyze one symbol:
106 - `node scripts/stock_copilot_pro.mjs analyze --symbol AAPL --market US --mode comprehensive`
107 - `node scripts/stock_copilot_pro.mjs analyze --symbol "<company-name>" --mode comprehensive`
108- Compare multiple symbols:
109 - `node scripts/stock_copilot_pro.mjs compare --symbols AAPL,MSFT --market US --mode comprehensive`
110- Manage watchlist:
111 - `node scripts/stock_copilot_pro.mjs watch --action list`
112 - `node scripts/stock_copilot_pro.mjs watch --action add --bucket holdings --symbol AAPL --market US`
113 - `node scripts/stock_copilot_pro.mjs watch --action remove --bucket watchlist --symbol 0700.HK --market HK`
114- Generate brief:
115 - `node scripts/stock_copilot_pro.mjs brief --type morning --format chat`
116 - `node scripts/stock_copilot_pro.mjs brief --type evening --format markdown`
117- Run industry radar:
118 - `node scripts/stock_copilot_pro.mjs radar --market GLOBAL --limit 10`
119
120## OpenClaw scheduled tasks (morning/evening brief and radar)
121
122To set up morning brief, evening brief, or daily radar in OpenClaw, use **only** the official OpenClaw cron format and create jobs via the CLI or Gateway cron tool. Do not edit `~/.openclaw/cron/jobs.json` directly.
123
124- Reference: the `jobs` array in `config/openclaw-cron.example.json`; each item is one `cron.add` payload (fields: `name`, `schedule: { kind, expr, tz }`, `sessionTarget: "isolated"`, `payload: { kind: "agentTurn", message: "..." }`, `delivery`).
125- Example (morning brief): `openclaw cron add --name "Stock morning brief" --cron "0 9 * * 1-5" --tz Asia/Shanghai --session isolated --message "Use stock-copilot-pro to generate morning brief: run brief --type morning --max-items 8 --format chat" --announce`. To deliver to Feishu, add `--channel feishu --to <group-or-chat-id>`.
126- Incorrect: using the legacy example format (e.g. `schedule` as string, `command`, `delivery.channels` array) or pasting the example into jobs.json will cause Gateway parse failure or crash.
127
128## CN/HK Coverage Details
129
130- Company-name input is supported and auto-resolved to market + symbol for common names.
131- Sentiment path prioritizes `caidazi` (research reports, news, wechat/public-account channels).
132- Fundamentals path prioritizes THS financial statements endpoints, and always calls THS company basics for profile backfill:
133 - `revenue`
134 - `netProfit`
135 - `totalAssets`
136 - `totalLiabilities`
137 - `operatingCashflow`
138 - `industry`
139 - `mainBusiness`
140 - `tags`
141
142## Output Modes
143
144- `markdown` (default): human-readable report
145- `json`: machine-readable merged payload
146- `chat`: segmented chat-friendly output for messaging apps
147- `summary-first`: compact output style via `--summary-only`
148
149## Preference & Event Options
150
151- Preference flags:
152 - `--horizon short|mid|long`
153 - `--risk low|mid|high`
154 - `--style value|balanced|growth|trading`
155 - `--actionable` (include execution-oriented rules)
156 - `--skip-questionnaire` (force analysis without preference Q&A)
157
158- Event radar flags:
159 - `--event-window-days 7|14|30`
160 - `--event-universe global|same_market`
161 - `--event-view timeline|theme`
162
163## Dynamic Evolution
164
165- Runtime learning state is stored in `.evolution/tool-evolution.json`.
166- One successful execution can update tool parameter templates.
167- Evolution stores `param_templates` and `sample_successful_params` for reuse.
168- Evolution does not decide tool priority; tool priority is controlled by `tool-chains.json`.
169- Use `--no-evolution` to disable loading/saving runtime learning state.
170
171## Safety and Disclosure
172
173- Uses only `QVERIS_API_KEY`.
174- Calls only QVeris APIs over HTTPS.
175- `full_content_file_url` fetching is kept enabled for data completeness, but only HTTPS URLs under `qveris.ai` are allowed.
176- Does not store API keys in logs, reports, or evolution state.
177- Runtime persistence is limited to `.evolution/tool-evolution.json` (metadata + parameter templates only).
178- Watchlist state is stored at `config/watchlist.json` (bootstrap from `config/watchlist.example.json`).
179- OpenClaw scheduled tasks: see `config/openclaw-cron.example.json`. Create jobs with the official format (`schedule.kind`, `payload.kind`, `sessionTarget`, etc.) via `openclaw cron add` or the Gateway cron tool; do not paste or merge the example JSON into `~/.openclaw/cron/jobs.json` (schema mismatch can cause Gateway parse failure or crash). Set `delivery.channel` and `delivery.to` for your channel (e.g. feishu).
180- External source URLs remain hidden by default; only shown when `--include-source-urls` is explicitly enabled.
181- No package installation or arbitrary command execution is performed by this skill script.
182- Research-only output. Not investment advice.
183
184## Single Stock Analysis Guide
185
186When analyzing `analyze` output, act as a senior buy-side analyst and deliver a **professional but not overlong** report.
187
188### Required Output (7 Sections)
189
1900. **Data Snapshot (required)**
191 - Start with a compact metrics table built from `data` fields.
192 - Include at least: price/change, marketCap, PE/PB, profitMargin, revenue, netProfit, RSI, 52W range.
193 - Example format:
194
195```markdown
196| Metric | Value |
197|--------|-------|
198| Price | $264.58 (+1.54%) |
199| Market Cap | $3.89T |
200| P/E | 33.45 |
201| P/B | 57.97 |
202| Profit Margin | 27% |
203| Revenue (TTM) | $394B |
204| Net Profit | $99.8B |
205| RSI | 58.3 |
206| 52W Range | $164 - $270 |
207```
208
2091. **Key view (30 seconds)**
210 - One-line conclusion: buy/hold/avoid + key reason.
211
2122. **Investment thesis**
213 - Bull case: 2 points (growth driver, moat/catalyst)
214 - Bear case: 2 points (valuation/risk/timing)
215 - Final balance: what dominates now.
216
2173. **Valuation and key levels**
218 - PE/PB vs peer or history percentile (cheap/fair/expensive)
219 - Key levels: current price, support, resistance, stop-loss reference
220
2214. **Recommendation (required)**
222 - Different advice by position status:
223 - No position
224 - Light position
225 - Heavy position / underwater
226 - Each suggestion must include concrete trigger/price/condition.
227
2285. **Risk monitor**
229 - Top 2-3 risks + invalidation condition (what proves thesis wrong).
230
2316. **Data Sources (required)**
232 - End with a source disclosure line showing QVeris attribution and data channels actually used.
233 - Include generation timestamp and list of source/tool names from payload metadata such as `dataSources`, `meta.sourceStats`, or `data.*.selectedTool`.
234 - Example format:
235
236```markdown
237> Data powered by [QVeris](https://qveris.ai) | Sources: Alpha Vantage (quote/fundamentals), Finnhub (news sentiment), X/Twitter (social sentiment) | Generated at 2026-02-22T13:00:00Z
238```
239
240### Quality Bar
241
242- Avoid data dumping; each key number must include interpretation.
243- Every numeric claim must be grounded in actual payload values; do not fabricate numbers.
244- Keep concise but complete (target 250-500 characters for narrative).
245- Must include actionable guidance and time window.
246- Ticker and technical terms in English.
247
248## Daily Brief Analysis Guide
249
250When analyzing `brief` output, generate an actionable morning/evening briefing for OpenClaw conversation.
251
252### Morning Brief
253
2541. **Market overview**: risk-on/off + key overnight move + today's tone, plus an index snapshot table from `marketOverview.indices` (index name, price, % change, timestamp)
2552. **Holdings check**: holdings that need action first, with per-holding price/% change/grade when available
2563. **Radar relevance**: which radar themes impact holdings
2574. **Today's plan (required)**: specific watch levels / event / execution plan
2585. **Data Sources (required)**: one-line QVeris attribution and channels used in this brief
259
260### Evening Brief
261
2621. **Session recap**: index + sector + portfolio one-line recap, with key index close/% change
2632. **Holdings change**: biggest winners/losers and why, with quantized move (%) where available
2643. **Thesis check**: whether thesis changed
2654. **Tomorrow's plan (required)**: explicit conditions and actions
2665. **Data Sources (required)**: one-line QVeris attribution and channels used in this brief
267
268### Quality Bar
269
270- Prioritize user holdings, not generic market commentary.
271- Quantify changes when possible (%, levels, counts).
272- Keep concise and decision-oriented.
273- Include a short source disclosure line at the end to improve traceability and credibility.
274
275## Hot Topic Analysis Guide
276
277When analyzing `radar` output, cluster signals into investable themes and provide concise actionable conclusions.
278
279### Required Output (per theme)
280
281- **Theme**: clear, investable label
282- **Driver**: what changed and why now
283- **Impact**: beneficiaries/losers + magnitude + duration
284- **Recommendation (required)**: concrete trigger or level
285- **Risk note**: key invalidation or monitoring signal
286- **Source tag (required)**: include `source` label for each theme (for example: `caidazi_report`, `alpha_news_sentiment`, `x_hot_topics`)
287
288### Execution Rules
289
290- Cluster into 3-5 themes max.
291- Cross-verify sources; lower confidence for social-only signals.
292- Distinguish short-term trade vs mid-term allocation.
293- Keep each theme concise (<200 characters preferred).
294- End with a QVeris source disclosure line listing channels that contributed to this radar run.
295