monitor-etf-holdings-drawdown-risk
npx skills add https://github.com/fatfingererr/macro-skills --skill monitor-etf-holdings-drawdown-risk
Agent 安装分布
Skill 文档
<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>
<reference_index>
æ¹æ³è«: references/methodology.md
- èé¢åµæ¸¬é輯
- ééåè¨é©èæ¡æ¶
- å£å忏è¨ç®
è³æä¾æº: references/data-sources.md
- ETF å®ç¶²åº«åæåï¼Seleniumï¼
- Yahoo Finance 广 ¼æ¸æ
- 交åé©èæ¸ææºï¼COMEXãLBMAï¼
è¼¸å ¥åæ¸: references/input-schema.md
- 宿´åæ¸å®ç¾©
- é è¨å¼è建è°ç¯å
</reference_index>
<workflows_index>
| Workflow | Purpose | ä½¿ç¨ææ© |
|---|---|---|
| analyze.md | 宿´èé¢åæ | éè¦å®æ´æ·å²åææ |
| monitor.md | æçºç£æ§çæ | æ¥å¸¸ç£æ§æè¦å ± |
| cross-validate.md | 交åé©èèé¢è¨è | 確èªèé¢çå¯¦æ§æ |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON 輸åºçµæ§å®ç¾© |
| output-markdown.md | Markdown å ±åæ¨¡æ¿ |
| </templates_index> |
<scripts_index>
| Script | Command | Purpose |
|---|---|---|
| divergence_detector.py | --etf SLV --quick |
å¿«éæª¢æ¥èé¢çæ |
| divergence_detector.py | --start DATE --end DATE --output FILE |
宿´æ·å²åæ |
| visualize_divergence.py | --result result.json --output DIR |
çæè¦è¦ºåå ±å |
| fetch_etf_holdings.py | --etf SLV --output holdings.csv |
æå ETF 庫å |
| fetch_prices.py | --symbol SI=F --output prices.csv |
æååå广 ¼ |
| </scripts_index> |
<input_schema_summary>
æ ¸å¿åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| etf_ticker | string | (å¿ å¡«) | ETF/ä¿¡è¨ä»£ç¢¼ï¼å¦ SLVï¼ |
| commodity_price_symbol | string | (å¿ å¡«) | åå广 ¼ä»£ç¢¼ï¼å¦ XAGUSDï¼ |
| start_date | string | 10Y å | åæèµ·å§æ¥ |
| end_date | string | today | åæçµææ¥ |
èé¢åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| divergence_window_days | int | 180 | èé¢è¨ç®è¦çªï¼å¤©ï¼ |
| decade_low_window_days | int | 3650 | åå¹´ä½é»è¦çªï¼å¤©ï¼ |
| min_price_return_pct | float | 0.15 | 广 ¼ä¸æ¼²é檻 |
| min_inventory_drawdown_pct | float | 0.10 | 庫å䏿»é檻 |
宿´åæ¸å®ç¾©è¦ references/input-schema.mdã
</input_schema_summary>
<output_schema_summary>
{
"skill": "monitor-etf-holdings-drawdown-risk",
"asof": "2026-01-16",
"inputs": {
"etf_ticker": "SLV",
"commodity_price_symbol": "XAGUSD"
},
"result": {
"divergence": true,
"price_return_window": 0.32,
"inventory_change_window": -0.18,
"inventory_decade_low": true,
"inventory_to_price_ratio_z": -2.4,
"stress_score_0_100": 78.5
},
"interpretations": [...],
"next_checks": [...]
}
宿´è¼¸åºçµæ§è¦ templates/output-json.mdã
</output_schema_summary>
<success_criteria> å·è¡æåææç¢åºï¼
- èé¢çæ å¤å®ï¼divergence: true/falseï¼
- 广 ¼è®åè庫åè®åæ¸å¼
- åå¹´ä½é»å¤å®
- 庫å/广 ¼æ¯å¼ Z 忏
- å£å忏ï¼0-100ï¼
- å ©ç¨®å°ç«åè¨è§£é
- ä¸ä¸æ¥é©èå»ºè°æ¸ å® </success_criteria>