Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/fatfingererr/macro-skillsnpx agentmods add skills/fatfingererr/macro-skills/monitor-etf-holdings-drawdown-riskWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/fatfingererr/macro-skills/monitor-etf-holdings-drawdown-risk)<a href="https://agentmods.dev/skills/fatfingererr/macro-skills/monitor-etf-holdings-drawdown-risk"><img src="https://agentmods.dev/badge/skills/fatfingererr/macro-skills/monitor-etf-holdings-drawdown-risk/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/fatfingererr/macro-skills/monitor-etf-holdings-drawdown-risk"><img src="https://agentmods.dev/badge/skills/fatfingererr/macro-skills/monitor-etf-holdings-drawdown-risk.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00076 | $0.02934 |
| Opus 5 | $0.00038 | $0.01467 |
| Sonnet 5 | $0.00015 | $0.00587 |
| Haiku 4.5 | $0.00008 | $0.00293 |
Grade A, and why
monitor-etf-holdings-drawdown-risk scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 272 lines — stays where its author put it; the contents beside it link to each section on GitHub.
<essential_principles>
背離事件定義:
- 價格上漲:
price_return >= min_price_return_pct(如 +15%) - 庫存下滑:
inventory_change <= -min_inventory_drawdown_pct(如 -10%) - 同時發生:在相同視窗期(如 180 天)內同時滿足
當價格與庫存同向時(同漲同跌)為正常;逆向時(價漲庫跌)才需要警覺。
不能直接把「庫存下降」解讀為「實物被搶」,需要交叉驗證:
| 假設 | 支持條件 | 反駁條件 |
|---|---|---|
| 實物緊張 | COMEX/LBMA 下降、backwardation、lease rates 上升、零售溢價擴大 | 其他庫存穩定、contango、溢價平穩 |
| 資金流/贖回 | ETF 流出但交易所庫存穩定、期貨結構不緊 | 多重庫存同步下降 |
輸出兩種解釋,讓用戶判斷哪個更符合當前數據。
本 skill 優先使用:
- ETF 官網庫存:Selenium 模擬人類瀏覽器行為抓取(避免 API 限制)
- Yahoo Finance:
yfinance套件取得現貨/期貨價格 - 交叉驗證:COMEX 庫存、期貨結構等公開數據
腳本位於 scripts/ 目錄,遵循 references/data-sources.md 的反偵測策略。
stress_score = 100 × min(1.0,
0.6 × divergence_severity + # 背離嚴重度
0.2 × decade_low_bonus + # 十年低點加成
0.2 × ratio_extreme_bonus # 比值極端加成
)
| 分數區間 | 解讀 |
|---|---|
| 0-30 | 正常,無明顯背離 |
| 30-60 | 輕度背離,值得關注 |
| 60-80 | 中度背離,建議深入驗證 |
| 80-100 | 重度背離,高度警戒 |
</essential_principles>
- 偵測背離:價格上漲但 ETF 庫存下滑
- 評估嚴重度:計算背離程度、十年低點、比值極端
- 交叉驗證:使用 COMEX、期貨結構、零售溢價等指標
- 產出洞察:提供兩種對立假設,避免單一敘事偏誤
輸出:背離狀態、壓力分數、交叉驗證結果、下一步檢查建議。
<quick_start>
最快的方式:檢查 SLV 背離狀態
cd skills/monitor-etf-holdings-drawdown-risk
pip install pandas numpy yfinance selenium webdriver-manager beautifulsoup4 matplotlib # 首次使用
python scripts/divergence_detector.py --etf SLV --quick
輸出範例:
{
"asof": "2026-01-20",
"divergence": false,
"price_return_window": 1.92,
"inventory_change_window": 0.15,
"inventory_decade_low": false,
"stress_score_0_100": 20.0,
"interpretations": ["Physical Tightness", "ETF Flow Hypothesis"]
}
完整分析 + 視覺化報告:
# 1. 執行背離偵測
python scripts/divergence_detector.py \
--etf SLV \
--start 2010-01-01 \
--end 2026-01-20 \
--output result.json
# 2. 生成視覺化報告
python scripts/visualize_divergence.py \
--result result.json \
--output ../../../output/
輸出:
- JSON 分析結果:
result.json - 視覺化報告:
output/SLV_divergence_report_20260120.png - PDF 報告:
output/SLV_divergence_report_20260120.pdf
</quick_start>
- 快速檢查 - 查看指定 ETF 目前的背離狀態與壓力分數
- 完整分析 - 執行完整的歷史背離分析
- 交叉驗證 - 使用多指標驗證背離訊號的真實性
- 監控模式 - 設定持續監控與背離警報
- 方法論學習 - 了解背離偵測與雙重假設邏輯
請選擇或直接提供分析參數(如 ETF 代碼)。
路由後,閱讀對應文件並執行。
<directory_structure>
monitor-etf-holdings-drawdown-risk/
├── SKILL.md # 本文件(路由器)
├── skill.yaml # 前端展示元數據
├── manifest.json # 技能元數據
├── workflows/
│ ├── analyze.md # 完整背離分析工作流
│ ├── monitor.md # 持續監控工作流
│ └── cross-validate.md # 交叉驗證工作流
├── references/
│ ├── data-sources.md # ETF 庫存與價格資料來源
│ ├── methodology.md # 背離偵測方法論
│ └── input-schema.md # 完整輸入參數定義
├── templates/
│ ├── output-json.md # JSON 輸出模板
│ └── output-markdown.md # Markdown 報告模板
└── scripts/
├── divergence_detector.py # 主偵測腳本
├── fetch_etf_holdings.py # ETF 庫存抓取(Selenium)
└── fetch_prices.py # 價格數據抓取
</directory_structure>
What ships with it
14 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- manifest.json 2.8 KB
- references/data-sources.md 8.1 KB
- references/input-schema.md 5.5 KB
- references/methodology.md 5.6 KB
- scripts/divergence_detector.py 11 KB runs code
- scripts/fetch_etf_holdings.py 23 KB runs code
- scripts/fetch_prices.py 3.2 KB runs code
- scripts/visualize_divergence.py 11 KB runs code
- skill.yaml 18 KB
- templates/output-json.md 6.3 KB
- templates/output-markdown.md 4.6 KB
- workflows/analyze.md 5.9 KB
- workflows/cross-validate.md 7.0 KB
- workflows/monitor.md 4.8 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 272 lines · 76 tokens per session scan A e2b42d79c70a
monitor-etf-holdings-drawdown-risk is a skill published in the GitHub repository fatfingererr/macro-skills (3 stars, last pushed 7mo ago), licensed MIT. It adds 76 tokens to every session and 2,934 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
sector-rotation
An analysis framework for comparing industries in the Chinese A-share stock market, using business conditions, price momentum, valuation, and money flows. It produces rankings and higher- or lower-allocation suggestions.
strategy-pivot-designer
Detect backtest iteration stagnation and generate structurally different strategy pivot proposals when parameter tuning reaches a local optimum.
twitter-reader
Read Twitter/X for financial research using opencli (read-only). Use this skill whenever the user wants to read their Twitter feed, search for financial tweets, view bookmarks, look up user profiles, or gather market sentiment from Twitter/X. Triggers include: "check my feed", "search Twitter for", "show my…
chenhao-limit-up
A framework for judging Chinese A-share stocks that have reached the daily price-rise limit, using market mood, sector leadership, and trading momentum.
furusato
A Japanese hometown-tax donation manager for furusato nozei, a system where donations to municipalities can qualify for an income-tax or local-tax deduction. It reads donation receipts, stores donation records, and calculates deduction limits.
reading-receipt
An image-reading workflow for extracting structured information from receipts, invoices, and hometown-tax donation certificates. It can first extract text from PDFs and otherwise read their images.