zeberg-salomon-rotator
npx skills add https://github.com/fatfingererr/macro-skills --skill zeberg-salomon-rotator
Agent 安装分布
Skill 文档
<essential_principles>
ZebergâSalomon 模åå°å¸å ´ç°¡åçºå ©ç¨®çæ ï¼
- RISK_ON: ææè¡ç¥¨ï¼SPYï¼ï¼æ¯æ°£æ´å¼µæ
- RISK_OFF: ææé·åµï¼TLTï¼ï¼æ¯æ°£æ¶ç¸®æ
åæéè¼¯åºæ¼ãé å ææ¨å è½å¼±ï¼åæææ¨å¾ç¢ºèªãçæ¯æ°£å¾ªç°è¦å¾ã
| é¡å | ä½ç¨ | å ¸åæå | é å æé |
|---|---|---|---|
| Leading | é è¦ | æ®å©çæ²ç·ãæ°è¨å®ãæ¿å¸è¨±å¯ | 6-12 æ |
| Coincident | ç¢ºèª | å°±æ¥ãå·¥æ¥çç¢ã實質æ¶å ¥ | 忥 |
åææ¹å¼ï¼
- ååºåå transformï¼yoy/mom/diffï¼
- çµ±ä¸æ¹åï¼direction +1/-1ï¼
- Rolling z-score æ¨æºå
- EMA å¹³æ»
- å æ¬åæ
Iceberg Event: LeadingIndex < iceberg_threshold
â é è¦ï¼æ¯æ°£éå§è½å¼±
â æé
ãé å
ææ¨ä¸éã+ å¯é¸ãå¸å ´äº¢å¥®ã濾é¡
Sinking Event: CoincidentIndex < sinking_threshold
â 確èªï¼å¯¦é«ç¶æ¿æ¶ç¸®
â éå¸¸å¨ Iceberg ä¹å¾æ¸æç¼ç
çæ æ©é輯ï¼
- RISK_ON â RISK_OFFï¼Iceberg é£çºç¢ºèª + æççºè²
- RISK_OFF â RISK_ONï¼é å ææ¨ååè¶ é (threshold + hysteresis)
æ¬ skill 使ç¨ç¡é API key çè³æä¾æºï¼
- FRED CSV:
https://fred.stlouisfed.org/graph/fredgraph.csv?id={SERIES_ID} - Yahoo Finance:
yfinanceå¥ä»¶æå SPY, TLT, VIX
è
³æ¬ä½æ¼ scripts/ ç®éï¼å¯ç´æ¥å·è¡ã
</essential_principles>
- å»ºæ§ææ¨ï¼å¾ FRED æ¸æåæ LeadingIndex è CoincidentIndex
- 嵿¸¬äºä»¶ï¼èå¥ãå°å±±ãï¼é å è½å¼±ï¼èã䏿²ãï¼åæç¢ºèªï¼
- åæè¨èï¼ç¢ç RISK_ON â RISK_OFF åæäºä»¶
- 忏¬ç¸¾æï¼è¨ç®ç´¯ç©å ±é ¬ãMaxDDãCAGRãè benchmark æ¯è¼
輸åºï¼åæäºä»¶æ¸ å®ãææ¨æéåºåã忏¬æè¦ã診æ·è³è¨ã
<quick_start>
æå¿«çæ¹å¼ï¼å·è¡é è¨å測
cd skills/zeberg-salomon-rotator
pip install pandas numpy yfinance pandas-datareader # 馿¬¡ä½¿ç¨
python scripts/rotator.py --quick
輸åºç¯ä¾ï¼
{
"state": "RISK_ON",
"latest_indices": {"LeadingIndex": 0.41, "CoincidentIndex": 0.22},
"iceberg_event": false,
"sinking_event": false,
"last_switch": {"date": "2023-06-30", "action": "EXIT_LONG_BOND_ENTER_EQUITY"}
}
宿´å測ï¼
python scripts/rotator.py --start 2000-01-01 --end 2026-01-01 --output result.json
</quick_start>
- å¿«éæª¢æ¥ – æ¥çç®åçæ¯æ°£çæ èææ°ææ¨
- 宿´å測 – å·è¡å®æ´çæ·å²å測è績æåæ
- è¦è¦ºåå表 – çæå¤é¢æ¿åæ¸¬çµæå表
- ç£æ§æ¨¡å¼ – è¨å®æçºç£æ§èåæè¦å ±
- æ¹æ³è«å¸ç¿ – äºè§£ Zeberg-Salomon 模åçé輯
è«é¸ææç´æ¥æä¾åæåæ¸ã
è·¯ç±å¾ï¼é±è®å°ææä»¶ä¸¦å·è¡ã
<directory_structure>
zeberg-salomon-rotator/
âââ SKILL.md # æ¬æä»¶ï¼è·¯ç±å¨ï¼
âââ skill.yaml # å端å±ç¤ºå
æ¸æ
âââ manifest.json # æè½å
æ¸æ
âââ workflows/
â âââ backtest.md # 宿´åæ¸¬å·¥ä½æµ
â âââ visualize.md # è¦è¦ºå工使µ
â âââ monitor.md # æçºç£æ§å·¥ä½æµ
â âââ analyze.md # 深度åæå·¥ä½æµ
âââ references/
â âââ data-sources.md # FRED ç³»å代碼èè³æä¾æº
â âââ methodology.md # Zeberg-Salomon æ¹æ³è«è§£æ
â âââ input-schema.md # 宿´è¼¸å
¥åæ¸å®ç¾©
âââ templates/
â âââ output-json.md # JSON è¼¸åºæ¨¡æ¿
â âââ output-markdown.md # Markdown å ±åæ¨¡æ¿
âââ scripts/
âââ rotator.py # 主輪åè
³æ¬
âââ visualize.py # è¦è¦ºå繪åå·¥å
·
âââ fetch_data.py # æ¸ææåå·¥å
·
</directory_structure>
<reference_index>
æ¹æ³è«: references/methodology.md
- Zeberg-Salomon æ¨¡åæ¦å¿µ
- å°å±±/䏿²äºä»¶å®ç¾©
- å ©æ åæé輯
è³æä¾æº: references/data-sources.md
- FRED ç³»å代碼ï¼é å /åæï¼
- Yahoo Finance è³ç¢ä»£ç¢¼
- æ¸æé »çèå°é½
è¼¸å ¥åæ¸: references/input-schema.md
- 宿´åæ¸å®ç¾©
- é è¨å¼è建è°ç¯å
</reference_index>
<workflows_index>
| Workflow | Purpose | ä½¿ç¨ææ© |
|---|---|---|
| backtest.md | 宿´æ·å²å測 | éè¦ç¸¾æåææ |
| visualize.md | çæè¦è¦ºåå表 | éè¦å表å±ç¤ºæ |
| monitor.md | æçºç£æ§çæ | æ¥å¸¸ç£æ§æè¦å ± |
| analyze.md | æ·±åº¦ææ¨åæ | çè§£ç¶åå¸å ´çæ |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON 輸åºçµæ§å®ç¾© |
| output-markdown.md | Markdown å ±åæ¨¡æ¿ |
| </templates_index> |
<scripts_index>
| Script | Command | Purpose |
|---|---|---|
| rotator.py | --quick |
å¿«éæª¢æ¥ç¶åçæ |
| rotator.py | --start DATE --end DATE |
宿´å測 |
| visualize.py | -i result.json -o chart.png |
çæè¦è¦ºåå表 |
| fetch_data.py | --series T10Y3M,PAYEMS |
æå FRED è³æ |
| </scripts_index> |
<input_schema_summary>
æ ¸å¿åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| start_date | string | 2000-01-01 | 忏¬èµ·å§æ¥ |
| end_date | string | today | 忏¬çµææ¥ |
| freq | string | M | é »çï¼M=æï¼ |
| equity_proxy | string | SPY | 風éªè³ç¢ä»£ç |
| bond_proxy | string | TLT | é·åµä»£ç |
éæª»åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| iceberg_threshold | number | -0.3 | é å ææ¨é檻 |
| sinking_threshold | number | -0.5 | åæææ¨é檻 |
| confirm_periods | int | 2 | é£çºç¢ºèªææ¸ |
| hysteresis | number | 0.15 | é²åºå ´éè· |
宿´åæ¸å®ç¾©è¦ references/input-schema.mdã
</input_schema_summary>
<output_schema_summary>
{
"skill": "zeberg-salomon-rotator",
"as_of": "2026-01-14",
"state": "RISK_ON",
"latest_indices": {
"LeadingIndex": 0.41,
"CoincidentIndex": 0.22,
"iceberg_event": false,
"sinking_event": false
},
"switch_events": [...],
"backtest_summary": {
"cagr": 0.123,
"max_drawdown": -0.27,
"turnovers": 10
}
}
宿´è¼¸åºçµæ§è¦ templates/output-json.mdã
</output_schema_summary>
<success_criteria> å·è¡æåææç¢åºï¼
- ç¶åçæ ï¼RISK_ON æ RISK_OFFï¼
- LeadingIndex è CoincidentIndex æ¸å¼
- å°å±±/䏿²äºä»¶å¤å®
- åæäºä»¶æ¸ å®ï¼å«æ¥æãåå ï¼
- 忏¬ç¸¾ææè¦ï¼CAGR, MaxDD, æææ¬¡æ¸ï¼
- è benchmark æ¯è¼ï¼è²·å ¥ææã60/40ï¼
- 診æ·è³è¨ï¼åææ¨è²¢ç»ï¼
- è¦è¦ºåå表ï¼å¯é¸ï¼è¼¸åºè³
output/ç®éï¼ </success_criteria>