指导型持仓观察看板技能
本技能构建的内容
对于用户提供的任意投资组合,本技能将生成:
- MonitoringConfig — 一个结构化的 JSON 对象,写入 ALFS,作为股票列表、投资期限、指导模式和偏好说明的唯一真相来源。
- 两个自动化数据馈送 —
gpw-fundamentals(财务历史)和gpw-monitor(每日事件分析 + 推送警报),两者均在运行时读取配置。 - 一个投资剧本 —
guided-portfolio-watch,位于https://alva.ai/u/{username}/playbooks/guided-portfolio-watch。 - 每日警报 — 当重大事件发生时,提供以解释性信息优先的通知。
该技能可重复使用:更改 config.json 并重新运行数据馈送,即可为任何新的投资组合生成完整的剧本和警报管道,无需更改代码。
步骤 1 — 解析用户意图
调用 src/intent-to-config.js(或应用其逻辑)从用户消息中提取 MonitoringConfig。在提出任何问题之前执行此操作。
股票代码提取
扫描 1–5 个大写字母序列或类似 BRK.B 的模式。仅接受美国上市的股票。拒绝 ETF、加密货币(例如 BTC、ETH、SOL)、期权以及非美国股票——告知用户并继续处理已接受的代码。
常见词黑名单(即使大写也拒绝):I, A, AN, OR, FOR, AND, AT, IN, ON, MY, ME, THE。
指导模式(偏好推断——并非专业水平声明)
按以下优先级顺序应用。停在第一个匹配项。
1. 显式偏好(始终获胜):
"用通俗语言解释" / "向我解释" / "我是投资新手"
"我不理解" / "帮我理解" → 指导模式
"我要技术细节" / "假设我懂金融"
"跳过基础内容" / "技术分析"(作为偏好) → 标准模式
2. 上下文信号(仅在无显式偏好时使用):
正确使用:EBITDA、FCF、NIM、P/E、基点、净息差、
经营杠杆、CAGR → 标准模式
"我该担心吗?" / "这对我意味着什么?" / "这不好吗?" → 指导模式
3. 默认(混合、冲突或缺失信号):
→ 中性模式
绝不询问 "你是新手吗?" 或 "你的经验水平如何?"。 中性模式默认使用指导模式布局;用户可通过 AGENTS.md 更改。
投资期限
- 关键词:"长期"、"3–5 年"、"永久持有"、"退休" →
long-term - 关键词:"中期"、"1–3 年"、"未来几年" →
medium-term - 关键词:"日内交易"、"波段交易"、"短期"、"< 1 年" → 不支持。告知用户;在执行之前询问长期监控是否可接受。
- 默认(无信号):
long-term。
所有权分类
- "我持有"、"我买了"、"我的仓位"、"我有" →
holding - "关注"、"跟踪"、"留意" →
watchlist - 模糊 →
holding(更安全的默认值;避免告诉持有人他们不拥有该股票)
所有权仅在警报措辞上产生影响。管道对所有代码一视同仁。
权重(可选)
解析显式百分比模式:"50% NVDA、30% TSLA、20% AAPL"。如果提供,则存储为 weights 对象(值 0–1,总和必须为 1.0 ± 0.02;如果因舍入有差异则归一化)。如果未提供,则从配置中省略 weights。
步骤 2 — 必要时澄清(最多一个问题)
仅当答案会实质性改变所构建内容时才询问:
| 场景 | 询问内容 |
|---|---|
| 未提供股票代码 | "您想监控哪些公司?" |
| 投资期限冲突(日内交易) | 告知 + 确认长期监控是否可接受 |
不要询问:股票数量、成本基础、财务目标、经验水平。 不要问第二个问题。
步骤 3 — 组装 MonitoringConfig
构建完整的 MonitoringConfig 对象(参见 config/monitoring-config.schema.json)。
sectorFocusAreas — 通过 arrays-data-api-equity-fundamentals 获取每个股票代码的公司详细信息。使用 sector + industry 字段以及 src/intent-to-config.js 中的查找表,为每个股票代码生成一句话的焦点说明。如果 API 调用失败或行业未知,则使用通用回退:"关注:营收、盈利以及业务特定动态。" 切勿凭空捏造焦点领域。
preferencesNote — 按以下模板从配置字段组装:
用户[持有/跟踪] [股票代码列表]。投资期限:[投资期限]。
[如果为指导模式:] 使用通俗易懂、无术语的英语。首次出现时定义金融术语。
将所有内容围绕用户应关注的重点以及原因进行阐述。
[如果为标准模式:] 假设用户具有中等金融素养。使用标准的金融术语。
[如果为中性模式:] 使用清晰易懂的语言。避免未经解释的行话。
警报策略:仅关注重大的长期业务动态。
排除:纯粹的价格波动、技术分析、未经证实的传闻。
包括:财报/指引变化、监管/法律事件、战略公告,
以及具有多年业务影响的供应链或产品变更。
[如果提供了权重:] 说明性配置:[股票代码] [百分比]%,...(用户提供的场景;未经当前权重核实。)
[每个股票代码的焦点领域:]
[股票代码]:[行业焦点领域]
...
[如果存在未知输入:] 已知数量、成本基础和总投资组合价值未知。不计算或暗示投资组合层面的业绩数据。
步骤 4 — 将配置写入 ALFS
# 将配置序列化到本地临时文件,然后写入 ALFS
alva fs write --path '~/feeds/gpw-monitor/v1/config.json' --file /tmp/gpw-config.json --mkdir-parents
通过以下命令确认写入成功:
alva fs read --path '~/feeds/gpw-monitor/v1/config.json'
同时将配置写入 ~/feeds/gpw-fundamentals/v1/config.json(相同内容——两个数据馈送从各自路径读取以保持解耦)。
步骤 5 — 部署数据馈送(需要用户批准)
在部署之前阅读 references/setup-workflow.md。在用户确认 MonitoringConfig 正确之前不要部署。
馈送 1:gpw-fundamentals(使用模板 templates/gpw-fundamentals.stub.js)
- Cron:
15 6 * * * - 输出:
fundamentals/snapshot(JSON 结构) - 无警报输出
馈送 2:gpw-monitor(使用模板 templates/gpw-monitor.stub.js)
- Cron:
30 6 * * * - 输出:
analysis/decision+alerts/daily(V2 警报输出) - 使用
--push-notify部署
步骤 6 — 构建并发布投资剧本(需要用户批准)
使用模板 templates/gpw-playbook.stub.html。填写所有 [GPW-*] 标记。
遵循完整生命周期:alva lint playbook → alva release playbook-draft → alva release playbook → alva screenshot。
步骤 7 — 启用警报投递(需要用户批准)
发布会自动创建所有者 FEED 警报绑定。通过以下命令确认投递:
alva alert history --automation gpw-monitor
# 预期:至少有一行状态为 "sent"
验收标准
当满足以下条件时,该技能即视为完成:
alva lint playbook通过且没有错误alva screenshot显示可见数据(非空白画面)alva alert history在计划运行后 24 小时内显示一条 "sent" 行- 更改
config.json中的股票代码并重新运行 gpw-fundamentals,能够生成新的公司板块,且不包含旧股票代码的引用
本技能不构建的内容
- 价格走势图或盘中价格监控
- 买入/卖出/持有建议
- 财报日历
- 与基准对比的业绩
- 交易或订单执行