股票分析
该技能每次生成相同的报告:
- 一个概览表格
- 每个代码一个面板,包含:
- 事实数据
- 周线图(相对于52周高点)
- 收益情况
- 下跌驱动因素
- 看涨/看跌观点
- 持仓、数据缺口及计算日志
脚本负责所有算术和HTML。您的工作是研究和检查。不要重新设计页面或手写HTML。
SKILL_DIR 是包含此文件的文件夹。通过在此SKILL.md路径上运行 dirname 找到它。
文件
| 路径 | 用途 |
|---|---|
scripts/compute_drawdown.py | 每日CSV → 52周高点和低点、%跌幅、收益、周收盘价 |
scripts/verify.py | 从CSV重新衍生每个标题数字,检查字段和来源,写入 verified.json,如有任何问题则退出并返回1 |
scripts/build_report.py | 工人JSON + verified.json → 一个独立的HTML页面(使用 assets/report.css) |
scripts/build_email.py | 相同的已验证数字 → 可发送的 drawdown_report.eml(邮件安全HTML + 文本,附带报告);验证邮箱地址 |
scripts/send_email.py | 供用户在自己的电脑上运行:通过SMTP发送 .eml,包括确认提示和本地输入的应用专用密码 |
defaults.json | 用户未指定代码时使用的默认观察列表(可编辑) |
references/worker_brief.md | 每个工人遵循的简要说明(填入 {…} 占位符) |
references/schema.md | <TICKER>.json 的合约 |
examples/run-2026-10-16/ | 一个完整的参考运行(FTEC, QQQ, SMH, ARTY):四个工人JSON和完成的 report.html。将其作为深度、语气和引用风格的标准。 |
工作流程
1. 设置
- 从用户请求中读取代码列表。
- 未指定代码(“运行我的股票分析”、“市场距高点如何?”):读取
$SKILL_DIR/defaults.json并按顺序使用其default_watchlist。在第一行说明您正在使用默认观察列表并列出它。 - 指定了代码: 精确使用那些代码;除非用户要求(例如“通常的加上NVDA”),否则不要添加默认值。
- 指数(S&P 500, Dow Jones, Nasdaq Composite…):研究指数本身,使用
defaults.json中的id(SPX, DJI)或诸如COMP的短标签作为文件名中的代码。告知工人这是一个指数(参见简要中的指数说明)。
- 未指定代码(“运行我的股票分析”、“市场距高点如何?”):读取
- 创建工作文件夹:
WORK_DIR=$PWD/drawdown-<YYYY-MM-DD>。 - 创建任务列表,包含:
- 每个代码一个任务
- “验证数字”
- “构建并发布报告”
2. 分派
为每个代码生成一个子代理,并行并在后台运行。每个代理的提示是:
references/worker_brief.md的完整文本,- 其中
{TICKER}、{WORK_DIR}、{SKILL_DIR}和{TODAY}已填入, - 加上任何值得检查的代码特定角度。例如,对于芯片基金:出口管制、超大规模资本支出、内存周期。
当用户仅指定一两个代码且未要求子代理时,您可以自己按照相同的简要进行研究。
3. 等待
当一个工人完成时,勾掉其任务并发布一行:代码、其%跌幅以及其高点日期。不要阅读工人转录。
4. 验证
运行:
python3 $SKILL_DIR/scripts/verify.py --dir $WORK_DIR --tickers <T...>
如果报告 MISMATCH、MISSING 或 NO SOURCE/TS,在构建前修复问题:
- 算术或手抄错误: 重新运行
compute_drawdown.py并从<T>_metrics.json更正JSON。 - 缺少研究: 使用SendMessage将工人送回。
UNCITED 和 NO CROSS-CHECK 是警告。如果它们仍然存在,在回复中提及。
5. 构建
运行:
python3 $SKILL_DIR/scripts/build_report.py --dir $WORK_DIR --tickers <T...> \
--out $WORK_DIR/drawdown_report.html --title "<2-4字名称>" --eyebrow "<例如 ETF 回撤回顾>"
选择标题: 选择一个简短具体的名称,例如“科技ETF回撤”或“芯片股回调”。对同一资产组合的重复运行使用相同标题。
6. 发布
使用Artifact工具发布HTML,使用 icon: "chart" 和一句描述,包含代码和截止日期。
- 同一资产组合的重复运行: 如果用户希望保留旧链接,则重新发布到该Artifact的URL。
- 不要编辑生成的HTML。 报告级别的更改应放到
build_report.py或assets/report.css中。
7. 电子邮件(仅当用户提供了邮箱地址时)
除非用户自己的消息中包含邮箱地址(例如“…并发送到[email protected]”),否则跳过此步骤。如果他们说“发给我”但没有地址,请询问一个;切勿猜测或重复使用其他地方的地址。
没有连接器。 不要使用Gmail、Outlook或任何其他电子邮件连接器或浏览器自动化,也永远不要要求或处理电子邮件密码。发送发生在用户端:您准备一封可发送的消息,用户发送它。
- 构建电子邮件。
退出码2表示地址无效:要求用户更正。脚本写入python3 $SKILL_DIR/scripts/build_email.py --dir $WORK_DIR --tickers <T...> --to <地址...> \ --report $WORK_DIR/drawdown_report.html --artifact-url <已发布链接> --title "<相同标题>"drawdown_report.eml(HTML + 纯文本,附带报告,收件人和主题已填好),以及email_body.html、email_body.txt和email.json。 - 交付它。 使用SendUserFile发送
drawdown_report.eml(显示attach)。 - 告知用户如何发送它,用两或三行:
- 在Outlook中打开
.eml(作为草稿打开)或Apple Mail(邮件 → 再次发送),检查,然后点击发送。 - 或者,在他们自己的电脑上通过终端:
python3 send_email.py drawdown_report.eml --from <他们的地址>。脚本会显示收件人,请求确认,并自行提示输入应用专用密码。如果他们要求,也发送scripts/send_email.py。
- 在Outlook中打开
- 链接的隐私性。 Artifact对用户私有。如果收件人是其他人,请说明除非用户共享页面,否则他们将依赖附带的报告。
8. 回复
保持回复简短:
- 一句话说明页面是什么。
- 一个按跌幅排序的markdown表格,列包括:代码、最新收盘价、52周高点(日期)、跌幅。
- 两或三个要点,总结跨代码的主要发现。
- 一个简短的“数据缺口”说明,涵盖影响本次运行的工具故障。
- 如果请求了电子邮件:一行说明
.eml已准备好发送以及如何发送。
不要重述步骤。
不可协商事项
- 每个数字都来自工具调用,带有其来源和时间戳。
- “无数据”优于猜测。
- 所有数学运算都在脚本中完成。
- 仅限只读工具。 永远不要碰订单、警报或观察列表工具。永远不要自行发送电子邮件;步骤7仅准备供用户发送的消息。
- 不提供买入或卖出建议。 公平地呈现两种观点。