watchlist-manager
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseWatchlist Manager (US markets)
Watchlist Manager(美国市场)
Maintains a single source-of-truth watchlist file that the and skills read.
Informational tool only. Never place, modify, or cancel a trade. Editing the watchlist is not trading.
price-alertswatchlist-brief维护一个作为单一事实来源的观察名单文件, 和 skills 会读取该文件。
仅用于信息管理。绝不执行、修改或取消交易。 编辑观察名单不属于交易行为。
price-alertswatchlist-briefFile location
文件位置
- if set, else
$WATCHLIST_FILEin the working directory (YAML./watchlist.jsonworks if PyYAML is installed).watchlist.yaml - If none exists, create it from structure with an empty
examples/watchlist.jsonlist. Ask before overwriting an existing file.tickers
- 如果已设置 ,则使用该路径;否则使用工作目录中的
$WATCHLIST_FILE(如果安装了 PyYAML,YAML 格式的./watchlist.json也受支持)。watchlist.yaml - 如果文件不存在,则根据 的结构创建文件,并将
examples/watchlist.json列表设为空。覆盖已有文件前应先询问。tickers
Schema (version 1)
Schema(版本 1)
json
{
"version": 1,
"settings": { "cooldown_minutes": 240, "rearm_pct": 0.5, "sessions": ["regular"],
"volume_spike_multiple": 2.0, "near_52w_pct": 2.0, "earnings_days": 3,
"max_alerts_per_run": 20, "extra_closures": [], "stale_after_seconds": 900 },
"tickers": [{
"symbol": "NVDA", // required, uppercase; class shares as BRK.B or BRK-B
"side": "long", // long | short | watch
"added": "2026-10-15",
"thesis": "AI datacenter capex",
"entry": 160.0, "targets": [190.0, 220.0], "stop": 140.0,
"tags": ["ai", "semis"],
"alerts": [ {"type": "price_below", "value": 150, "cooldown_minutes": 60} ],
"notes": ""
}]
}Alert values and their meaning are documented in .
A implies a alert and imply automatically.
typevalueskills/price-alerts/SKILL.mdstopstop_hittargetstarget_hitjson
{
"version": 1,
"settings": { "cooldown_minutes": 240, "rearm_pct": 0.5, "sessions": ["regular"],
"volume_spike_multiple": 2.0, "near_52w_pct": 2.0, "earnings_days": 3,
"max_alerts_per_run": 20, "extra_closures": [], "stale_after_seconds": 900 },
"tickers": [{
"symbol": "NVDA", // required, uppercase; class shares as BRK.B or BRK-B
"side": "long", // long | short | watch
"added": "2026-10-15",
"thesis": "AI datacenter capex",
"entry": 160.0, "targets": [190.0, 220.0], "stop": 140.0,
"tags": ["ai", "semis"],
"alerts": [ {"type": "price_below", "value": 150, "cooldown_minutes": 60} ],
"notes": ""
}]
}提醒 的可选值及其 含义记录在 中。
设置 会自动隐含 提醒,设置 会自动隐含 提醒。
typevalueskills/price-alerts/SKILL.mdstopstop_hittargetstarget_hitOperations (prefer the script; it validates and writes atomically)
操作
scripts/npx skills addscripts/bash
python3 scripts/watchlist.py init
python3 scripts/watchlist.py init --empty
python3 scripts/watchlist.py add NVDA --thesis "AI capex" --entry 160 --target 190 --target 220 --stop 140 --tag ai --tag semis --alert price_below:150
python3 scripts/watchlist.py add NVDA --file swing.json --alert price_below:150
python scripts/watchlist.py update NVDA --stop 145
python scripts/watchlist.py update NVDA --tag megacap --alert rsi_above:75 --append
python scripts/watchlist.py remove NVDA
python scripts/watchlist.py list [--tag semis]
python scripts/watchlist.py show NVDA
python scripts/watchlist.py validateIf Python is unavailable, edit the JSON by hand following the schema and the validation rules below.
优先使用脚本;它会进行校验并以原子方式写入。
执行 后, 目录会随附在此 旁。可从此 skill 目录运行,也可从 git clone 仓库中运行(根目录下的 是同一组文件):
npx skills addscripts/SKILL.mdscripts/bash
python3 scripts/watchlist.py init
python3 scripts/watchlist.py init --empty
python3 scripts/watchlist.py add NVDA --thesis "AI capex" --entry 160 --target 190 --target 220 --stop 140 --tag ai --tag semis --alert price_below:150
python3 scripts/watchlist.py add NVDA --file swing.json --alert price_below:150
python scripts/watchlist.py update NVDA --stop 145
python scripts/watchlist.py update NVDA --tag megacap --alert rsi_above:75 --append
python scripts/watchlist.py remove NVDA
python scripts/watchlist.py list [--tag semis]
python scripts/watchlist.py show NVDA
python scripts/watchlist.py validate如果 Python 不可用,则按照 Schema 和下方的校验规则手动编辑 JSON。
Workflow
工作流
- Resolve the ticker. Uppercase it. If the user gives a company name, confirm the symbol (e.g. "Alphabet" -> GOOGL or GOOG?). Reject non-US listings or say they are unsupported by default data.
- Sanity-check with a live quote: . If the user's stop is above price for a long (or target below), point it out and ask.
python scripts/quotes.py NVDA - Capture the why. If no thesis is given, ask once for a one-line reason; store if they decline. Don't invent a thesis.
"" - Suggest, don't impose, alerts. Reasonable defaults to offer: stop/target levels, ,
earnings_within: 3(last vs prior close). If they want a drop that trades through a % and then recovers, offer opt-inpct_move: 5/intraday_low_pctand say those use session low/high, not last. Mentionintraday_extreme_pct/iv_aboveonly if they ask about vol or today's range — ATM IV is unofficial Yahoo, not IV rank. Only add what they agree to.intraday_range_pct - Write, validate, confirm. Show the resulting entry (symbol, entry, stop, targets, alerts) in one compact line.
- 解析 ticker。 将其转为大写。如果用户提供公司名称,请确认 symbol(例如,“Alphabet” → GOOGL 还是 GOOG?)。拒绝非美国上市标的,或明确说明默认数据不支持它们。
- 使用实时报价进行合理性检查: 。如果用户的
python scripts/quotes.py NVDA仓位所设long高于当前价格(或stop低于当前价格),应指出问题并询问。target - 记录原因。 如果未提供 ,询问一次用户愿意给出的单行理由;如果用户拒绝,则存为
thesis。不要自行编造 thesis。"" - 建议提醒,但不要强制添加。 可提供的合理默认值包括:/
stop水平、target、earnings_within: 3(最新价相对前收盘价)。如果用户希望捕捉价格跌破某个百分比后又恢复的情况,可选择启用pct_move: 5/intraday_low_pct,并说明它们使用的是交易时段最低价/最高价,而不是最新价。只有当用户询问波动率或当日区间时,才提及intraday_extreme_pct/iv_above——ATM IV 来自 Yahoo 的非官方数据,并非 IV rank。仅添加用户同意的提醒。intraday_range_pct - 写入、校验并确认。 以一行紧凑格式展示结果条目(symbol、entry、stop、targets、alerts)。
Validation rules
校验规则
- Symbol matches ; no duplicates.
^[A-Z]{1,5}([.-][A-Z]{1,2})?$ - ,
entry,stopare numbers. Fortargets[], stop < entry; forside: long, stop > entry.side: short - if present is a non-empty list of
settings.sessions/regular/pre.after - if present is ISO dates (
settings.extra_closures) for unscheduled full-day closures.YYYY-MM-DD - Every alert is a known type.
type
- 必须匹配
symbol;不允许重复。^[A-Z]{1,5}([.-][A-Z]{1,2})?$ - 、
entry、stop必须为数字。对于targets[],stop < entry;对于side: long,stop > entry。side: short - 如果存在 ,它必须是非空列表,且只能包含
settings.sessions/regular/pre。after - 如果存在 ,它必须是计划外全天休市日期的 ISO 日期列表(
settings.extra_closures)。YYYY-MM-DD - 每个 alert 都必须是已知类型。
type
Listing format
列表格式
Compact table: Ticker | Side | Entry | Stop | Targets | Tags | Thesis. Add a live price column only if the user asks or you're already fetching quotes.
紧凑表格:Ticker | Side | Entry | Stop | Targets | Tags | Thesis。仅当用户要求或当前已经在获取报价时,才添加实时价格列。
Don'ts
禁止事项
- Don't delete tickers without explicit instruction; for "clean up my list" propose removals first.
- Don't give buy/sell recommendations. You may describe levels and risk (e.g. "stop is 12% below entry").
- 未经明确指示,不要删除 ticker;遇到“清理我的列表”这类请求时,应先提出删除建议。
- 不要给出买入/卖出建议。可以描述价格水平和风险(例如,“stop 比 entry 低 12%”)。