analyze-silver-miner-metal-ratio
npx skills add https://github.com/fatfingererr/macro-skills --skill analyze-silver-miner-metal-ratio
Agent 安装分布
Skill 文档
<essential_principles>
礦æ¥è¡/é屬æ¯çï¼Miner-to-Metal Ratioï¼ï¼
ratio_t = miner_price_t / metal_price_t
å ¶ä¸ï¼
- miner_priceï¼é礦è¡ä»£è¡¨ï¼ETF å¦ SIL/SILJï¼æèªå»ºç¤¦æ¥è¡ææ¸ï¼
- metal_priceï¼ç½é广 ¼ï¼æè²¨ SI=Fãç¾è²¨ XAGUSDãETF SLVï¼
æ¤æ¯çè¡¡éã礦æ¥è¡ç¸å°æ¼é屬æ¬é«ãç估弿°´ä½ï¼
- æ¯çé«ï¼ç¤¦æ¥è¡ç¸å°ç½éåè²´ï¼å¯è½é度æ¨è§ãæ§æ¡¿æº¢å¹é«ï¼
- æ¯çä½ï¼ç¤¦æ¥è¡ç¸å°ç½éå便å®ï¼å¯è½è¢«ä½ä¼°ãæåæ ææ¬/è¡æ¬ç¨é風éªï¼
ä½¿ç¨æ·å²å使¸ï¼Percentile Rankï¼å¤æ·ç¶åæ¯çä½ç½®ï¼
| å使¸åé | æ¨ç±¤ | ç´è¦º |
|---|---|---|
| ⤠20% | bottom (åºé¨) | 礦æ¥è¡ç¸å°ç½éæ·å²ä¸å¾ä¾¿å® |
| 20-40% | low (åä½) | 礦æ¥è¡ç¸å°ä¼°å¼åä½ |
| 40-60% | neutral (䏿§) | æ·å²ä¸ä½åé |
| 60-80% | high (åé«) | 礦æ¥è¡ç¸å°ä¼°å¼åé« |
| ⥠80% | top (é é¨) | 礦æ¥è¡ç¸å°ç½éæ·å²ä¸å¾è²´ |
åºé¨åéä¸çæ¼ç½éå¿ æ¼²ï¼å¯è½æ¯ç¤¦æ¥è¡å ææ¬/ç¨é被åçå®å¹ã
ç¶åºç¾ãæ¯çä½ + ç½éé«ãççµåï¼
- æ¯çèæ¼åºé¨åï¼ç¤¦æ¥è¡ç¸å°ç½éå便å®
- ç½éèæ¼é«ä½ï¼é屬广 ¼å·²å¨æ·å²é«æª
æ¤ãèé¢ãæå³èï¼
- 礦æ¥è¡å¯è½æè¿½è¶ç©ºéï¼åå¼åæ¸é輯ï¼
- æç¤¦æ¥è¡æ£ç¢ºåæ äºçµæ§æ§åé¡ï¼ææ¬ãç¨éãå°ç·£é¢¨éªï¼
éçµååºæ¬é¢äº¤åé©èï¼èéç²ç®è¦çºè²·å ¥è¨èã
ç®æ¨ï¼è¥æ¯çè¦åå°æ·å²é é¨ï¼æä¸ä½ï¼ï¼éè¦ä»éº¼æ¢ä»¶ï¼
åè¨ç¶åæ¯ç = 1.14ï¼ç®æ¨æ¯çï¼é é¨é檻ï¼= 2.45ï¼
æ å¢ Aï¼ç½éä¸è®ï¼ç¤¦æ¥è¡éæ¼²å¤å°ï¼
miner_multiplier = target_ratio / current_ratio
= 2.45 / 1.14 = 2.15x (éæ¼² 115%)
æ å¢ Bï¼ç¤¦æ¥è¡ä¸è®ï¼ç½ééè·å¤å°ï¼
metal_multiplier = current_ratio / target_ratio
= 1.14 / 2.45 = 0.46 (éè· 54%)
æ¤æ¨æ¼æä¾ã極端æ å¢ãçéååèï¼éé æ¸¬ã
- é »ç鏿ï¼é·é±æè¨è建è°ä½¿ç¨é±é »ï¼1wkï¼ææé »ï¼1moï¼
- å¹³æ»è¦çªï¼å¯é¸ 4 鱿 3 åæç§»åå¹³åéä½éè¨
- äºä»¶å»éï¼é¡æ¯äºä»¶ééé ⥠min_separation_daysï¼å¦ 180 天ï¼
æ¬ skill ä½¿ç¨ yfinance åå¾ ETF/æè²¨æ¸æï¼é è¨é±é »å°é½ã
</essential_principles>
- æ¸ææ´åï¼åå¾ç¤¦æ¥è¡ä»£çèç½é广 ¼åºå
- æ¯çè¨ç®ï¼è¨ç®ç¸å°æ¯ç並å¯é¸å¹³æ»
- å使¸å¤æ·ï¼ç¶åæ¯ç卿·å²çä½ç½®
- 顿¯äºä»¶ï¼æ·å²åºé¨åéçäºä»¶èå¥
- åç»é©èï¼åºé¨äºä»¶å¾ç½éç 1/2/3 年表ç¾
- æ 墿¨æ¼ï¼ç¤¦æ¥è¡éæ¼²å¤å° / ç½ééè·å¤å°æåå°é é¨
輸åºï¼ç¶åçæ ãæ·å²é¡æ¯ãæ 墿¨æ¼ãé¢¨éªæç¤ºã
<quick_start>
æå¿«çæ¹å¼ï¼å·è¡é è¨æ å¢åæ
cd skills/analyze-silver-miner-metal-ratio
pip install pandas numpy yfinance matplotlib # 馿¬¡ä½¿ç¨
python scripts/ratio_analyzer.py --quick
çæè¦è¦ºåå表ï¼åºæ¬çï¼
python scripts/ratio_plotter.py --quick --output-dir ../../output
çæå®æ´çå表ï¼å«åºé¨äºä»¶ãåç»å ±é ¬çµ±è¨ï¼
python scripts/ratio_plotter.py --comprehensive --start-date 2010-01-01 --output-dir ../../output
å表輸åºè·¯å¾ï¼
- åºæ¬çï¼
output/sil_silver_ratio_YYYY-MM-DD.png - 宿´çï¼
output/sil_silver_ratio_comprehensive_YYYY-MM-DD.png
輸åºç¯ä¾ï¼
{
"skill": "analyze_silver_miner_metal_ratio",
"current": {
"ratio": 1.14,
"ratio_percentile": 18.7,
"zone": "bottom",
"bottom_threshold": 1.16,
"top_threshold": 2.45
},
"history_analogs": {
"bottom_event_dates": ["2010-08-06", "2016-01-29", "2020-03-20"],
"forward_metal_returns": {
"252": {"count": 3, "median": 0.42, "win_rate": 1.0}
}
},
"scenarios": {
"target": "return_to_top",
"miner_multiplier_if_metal_flat": 2.15,
"metal_drop_pct_if_miner_flat": 0.54
}
}
宿´æ å¢åæï¼
python scripts/ratio_analyzer.py \
--miner-proxy SIL \
--metal-proxy SI=F \
--start-date 2008-01-01 \
--freq 1wk \
--smoothing-window 4 \
--bottom-quantile 0.20 \
--top-quantile 0.80 \
--output result.json
</quick_start>
- å¿«éåæ – 使ç¨é è¨åæ¸ï¼SIL / SI=Fï¼è¨ç®ç¶åæ¯ççæ
- 宿´åæ – èªè¨åæ¸é²è¡æ å¢åæï¼å¯é¸æç¤¦æ¥è¡/é屬代çãåä½é檻ï¼
- è¦è¦ºåå表 – çææ¯çèµ°å¢åï¼æ¨è¨ç¶åä½ç½®èå使¸åé
- æ·å²é©è – æ¥çåºé¨åéäºä»¶çåç»å ±é ¬çµ±è¨
- æ 墿¨æ¼ – è¨ç®ãåå°é é¨ãéè¦ç礦æ¥è¡æ¼²å¹ æç½éè·å¹
- æ¹æ³è«å¸ç¿ – äºè§£æ¯çé輯èå使¸è§£è®
è«é¸ææç´æ¥æä¾åæåæ¸ã
è·¯ç±å¾ï¼é±è®å°ææä»¶ä¸¦å·è¡ã
<directory_structure>
analyze-silver-miner-metal-ratio/
âââ SKILL.md # æ¬æä»¶ï¼è·¯ç±å¨ï¼
âââ skill.yaml # å端å±ç¤ºå
æ¸æ
âââ manifest.json # æè½å
æ¸æ
âââ workflows/
â âââ analyze.md # 宿´æ
å¢åæå·¥ä½æµ
â âââ data-research.md # æ¸ææºç ç©¶èæ¿ä»£æ¹æ¡
âââ references/
â âââ methodology.md # æ¹æ³è«èè¨ç®é輯
â âââ input-schema.md # 宿´è¼¸å
¥åæ¸å®ç¾©
â âââ data-sources.md # æ¸æä¾æºèç²åæ¹å¼
âââ templates/
â âââ output-json.md # JSON è¼¸åºæ¨¡æ¿
â âââ output-markdown.md # Markdown å ±åæ¨¡æ¿
âââ scripts/
â âââ ratio_analyzer.py # 主è¨ç®è
³æ¬
â âââ ratio_plotter.py # è¦è¦ºåå表è
³æ¬
âââ examples/
âââ sample-output.json # ç¯ä¾è¼¸åº
</directory_structure>
<reference_index>
æ¹æ³è«: references/methodology.md
- æ¯çå®ç¾©èç´è¦º
- å使¸è§£è®é輯
- èé¢è¨èçæç¾©
- æ 墿¨æ¼æ¸å¸
- æ·å²é©èæ¹æ³
è³æä¾æº: references/data-sources.md
- 礦æ¥è¡ä»£çï¼ETF/ææ¸ï¼
- ç½é广 ¼ä»£ç
- æ¸æå°é½åå
è¼¸å ¥åæ¸: references/input-schema.md
- 宿´åæ¸å®ç¾©
- é è¨å¼è建è°ç¯å
</reference_index>
<workflows_index>
| Workflow | Purpose | ä½¿ç¨ææ© |
|---|---|---|
| analyze.md | 宿´æ å¢åæ | éè¦èªè¨åæ¸è¨ç®æ¯çèæ å¢ |
| data-research.md | æ¸ææºç ç©¶ | äºè§£å¦ä½ç²åææ¿ä»£ç¤¦æ¥è¡/éå±¬æ¸æ |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON 輸åºçµæ§å®ç¾© |
| output-markdown.md | Markdown å ±åæ¨¡æ¿ |
| </templates_index> |
<scripts_index>
| Script | Command | Purpose |
|---|---|---|
| ratio_analyzer.py | --quick |
å¿«éåæ SIL/SI=F |
| ratio_analyzer.py | --miner-proxy SILJ --freq 1mo |
èªè¨ç¤¦æ¥è¡èé »ç |
| ratio_analyzer.py | --scenario-target return_to_median |
åå°ä¸ä½æ¸æ å¢ |
| ratio_plotter.py | --quick --output-dir ../../output |
å¿«éçæåºæ¬çå表 |
| ratio_plotter.py | --comprehensive --start-date 2010-01-01 --output-dir ... |
宿´çå表ï¼å«åºé¨äºä»¶ãåç»å ±é ¬çµ±è¨ï¼ |
| </scripts_index> |
<input_schema_summary>
æ ¸å¿åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| miner_proxy | string | SIL | é礦è¡ä»£è¡¨ï¼ETF/ææ¸ä»£èï¼ |
| metal_proxy | string | SI=F | ç½é广 ¼ä»£è¡¨ï¼æè²¨/ç¾è²¨/ETFï¼ |
| start_date | string | 10 å¹´å | æ·å²å溯起é»ï¼YYYY-MM-DDï¼ |
| end_date | string | today | åæçµé» |
| freq | string | 1wk | 忍£é »çï¼1d/1wk/1moï¼ |
é²é忏
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| smoothing_window | int | 4 | æ¯çå¹³æ»è¦çªï¼é±æ¸/ææ¸ï¼ |
| bottom_quantile | float | 0.20 | åºé¨ä¼°å¼åå使¸é檻 |
| top_quantile | float | 0.80 | é é¨ä¼°å¼åå使¸é檻 |
| min_separation_days | int | 180 | 顿¯äºä»¶å»ééé |
| forward_horizons | list | [52, 104, 156] | åç»æï¼é±æ¸ï¼å°æ 1/2/3 å¹´ï¼ |
| scenario_target | string | return_to_top | æ å¢ç®æ¨ï¼return_to_top/medianï¼ |
宿´åæ¸å®ç¾©è¦ references/input-schema.mdã
</input_schema_summary>
<output_schema_summary>
{
"skill": "analyze_silver_miner_metal_ratio",
"inputs": {
"miner_proxy": "SIL",
"metal_proxy": "SI=F",
"start_date": "2010-01-01",
"freq": "1wk"
},
"current": {
"ratio": 1.14,
"ratio_percentile": 18.7,
"zone": "bottom",
"bottom_threshold": 1.16,
"top_threshold": 2.45
},
"history_analogs": {
"bottom_event_dates": ["2010-08-06", "2016-01-29", "2020-03-20"],
"forward_metal_returns": {
"252": {"count": 3, "median": 0.42, "mean": 0.39, "win_rate": 1.0, "worst": 0.18},
"504": {"count": 3, "median": 0.71, "mean": 0.66, "win_rate": 1.0, "worst": 0.31}
}
},
"scenarios": {
"target": "return_to_top",
"target_ratio": 2.45,
"miner_multiplier_if_metal_flat": 2.15,
"metal_multiplier_if_miner_flat": 0.46,
"metal_drop_pct_if_miner_flat": 0.54
},
"summary": "é礦è¡å¹ / é广¯çè½å¨æ·å²ä½åä½ï¼é¡¯ç¤ºç¤¦æ¥è¡ç¸å°ç½éå便å®...",
"notes": [
"æ¯çè¨èè¡¡éçæ¯ãç¸å°ä¼°å¼ãï¼ä¸æ¯å®é广 ¼ä¿èã",
"礦æ¥è¡èé屬å¯è½åæ¼²ï¼ä½ç¤¦æ¥è¡ä¹å¯è½å ææ¬ä¸åãå°ç·£/æ¿ç風éªãå¢ç¼ç¨éèè½å¾ã",
"å»ºè°æé
ï¼ç¤¦æ¥è¡ç²å©ç(ææ¬æ²ç·)ãç½é實質å©ç/ç¾å
ãææ©é¨ä½(COT)ãETF æµéçå交åé©èã"
]
}
宿´è¼¸åºçµæ§è¦ templates/output-json.mdã
</output_schema_summary>
<success_criteria> å·è¡æåææç¢åºï¼
- ç¶åæ¯çèæ·å²å使¸
- ä¼°å¼åéå¤å®ï¼bottom/low/neutral/high/topï¼
- æ·å²åºé¨äºä»¶å表èå»é
- åºé¨äºä»¶å¾çåç»å ±é ¬çµ±è¨ï¼å¹³å/ä¸ä½/åç/æå·®ï¼
- æ 墿¨æ¼ï¼ç¤¦æ¥è¡éæ¼²å¤å° / ç½ééè·å¤å°ï¼
- çµæè¼¸åºçºæå®æ ¼å¼ï¼JSON æ Markdownï¼
- è¦è¦ºåå表輸åºï¼è¥éè¦ï¼
- é¢¨éªæç¤ºèå¾çºç ç©¶å»ºè° </success_criteria>