analyze-move-risk-gauges-leadlag
npx skills add https://github.com/fatfingererr/macro-skills --skill analyze-move-risk-gauges-leadlag
Agent 安装分布
Skill 文档
<essential_principles>
MOVE Indexï¼ç¾æææ¬æ³¢åçææ¸ï¼æ¯è¡¡éç¾åååµé¸ææ¬é±å«æ³¢åççææ¨ï¼
- MOVE ä½/ä¸éï¼å©çå¸å ´å°æªä¾æ³¢åé æéä½ï¼é¢¨éªå好ä¸å
- MOVE é«/ä¸åï¼å©çå¸å ´ææ ï¼é¿éªéæ±å¢å
MOVE 常被è¦çºãåµå¸ç VIXãï¼å¯ä½çºå ¶ä»é¢¨éªææ¨çé å è¨èã
ä½¿ç¨ Cross-Correlation 夿·å ©åºåçé å /è½å¾éä¿ï¼
- å¨ [-L, +L] ä½ç§»ç¯åå §è¨ç®ç¸éä¿æ¸
- æå¤§ç¸éåºç¾å¨ lag > 0ï¼X é å Y
- æå¤§ç¸éåºç¾å¨ lag < 0ï¼X è½å¾ Y
- æå¤§ç¸éåºç¾å¨ lag â 0ï¼åæ¥ç§»å
å ¸åè¨å®ï¼L = 20ï¼äº¤ææ¥ï¼ï¼é åå¹³æ»èçéä½åªé³ã
檢é©ãå©çäºä»¶ï¼å¦ JGB æ®å©çè·³åï¼ç¼çæï¼MOVE æ¯å¦ææ ãï¼
- å®ç¾©è¡æäºä»¶ï¼|ÎY[t-k:t]| ⥠thresholdï¼å¦ 15bpï¼
- 檢æ¥äºä»¶çªå § MOVE è®å
- è¥ MOVE åæ < æ·å²åå¸ä¸ä½æ¸ â “not spooked”
æ¤é輯å¯é©èãå©çæ³¢åçå°æäºä»¶ä¸ææãçæäºã
æ¬ skill ä½¿ç¨ Chrome CDP 飿¥å° MacroMicro æåçå¯¦æ¸æï¼
- MOVE Index: MacroMicro (CDP) – https://en.macromicro.me/charts/35584/us-treasury-move-index
- JGB 10Y: MacroMicro (CDP) – https://en.macromicro.me/charts/944/jp-10-year-goverment-bond-yield
- VIX: Yahoo Finance (yfinance)
- Credit (IG OAS): FRED (BAMLC0A0CM)
éè¦ï¼MOVE å JGB éè¦éé Chrome CDP ç¬è²åå¾ï¼è«åç
§ <quick_start> çæ¥é©åå Chromeã
</essential_principles>
- æ¸ææåï¼å¾å ¬é便ºåå¾ MOVEãVIXãä¿¡ç¨å©å·®ãJGB æ®å©ç
- æ¨æºåèçï¼Z 忏ãå¹³æ»èçãé »çå°é½
- é å è½å¾åæï¼äº¤åç¸éæ¾åº MOVE vs VIX / ä¿¡ç¨å©å·®ç lead/lag
- äºä»¶çªæª¢å®ï¼JGB è¡æäºä»¶ä¸ MOVE æ¯å¦ã䏿æ ã
- æ¹åä¸è´æ§ï¼MOVE ä¸è¡æï¼å ¶ä»é¢¨éªææ¨æ¯å¦åæ¥ä¸è¡
輸åºï¼é å è½å¾å¤å®ãææ æª¢å®çµæãæ¹åä¸è´æ§æ¯ä¾ãéåèæã
<quick_start>
å·è¡åæåï¼å¿ é å åå Chrome 調試模å¼
Step 1ï¼ééææ Chrome è¦çª
Step 2ï¼ç¨èª¿è©¦ç«¯å£åå Chromeï¼Windowsï¼
"C:\Program Files\Google\Chrome\Application\chrome.exe" ^
--remote-debugging-port=9222 ^
--remote-allow-origins=* ^
--user-data-dir="%USERPROFILE%\.chrome-debug-profile" ^
"https://en.macromicro.me/charts/35584/us-treasury-move-index"
Step 3ï¼å¨ç覽å¨ä¸éå第äºååé ï¼è¼å ¥ JGB é é¢
https://en.macromicro.me/charts/944/jp-10-year-goverment-bond-yield
Step 4ï¼çå¾ å ©åé é¢çå表é½å®å ¨è¼å ¥ï¼ç´ 30-40 ç§ï¼
Step 5ï¼å·è¡åæ
cd .claude/skills/analyze-move-risk-gauges-leadlag/scripts
pip install pandas numpy yfinance requests websocket-client matplotlib # 馿¬¡ä½¿ç¨
python analyze.py --start 2024-01-01 --end 2026-01-31 --output-mode markdown
Step 6ï¼å¯é¸ï¼ï¼çæ Bloomberg é¢¨æ ¼è¦è¦ºåå表
# æ¹å¼ä¸ï¼åææåæçæå表
python analyze.py --start 2024-01-01 --end 2026-01-31 --output-mode markdown --chart
# æ¹å¼äºï¼å®ç¨çæå表ï¼èªå使ç¨å¿«åæ¸æï¼
python visualize.py --start 2024-01-01 --end 2026-01-31
å表é è¨è¼¸åºè·¯å¾ï¼{å°æ¡æ ¹ç®é}/output/move-leadlag-YYYY-MM-DD.png
輸åºç¯ä¾ï¼
## çµè«
- å©çæ³¢åçï¼MOVEï¼å°ãJGB æ®å©çè¡æãåæåå¼± / æªé¡¯èåæº« â **not spooked**
- MOVE çè®åå¨çµ±è¨ä¸åç¾ **é å
4-6 天** çç¹å¾µ
- MOVE ä¸è¡æï¼VIX / ä¿¡ç¨å©å·®åæ¥èµ°ä½çæ¯ä¾ï¼VIX = 62%ãCredit = 60%
</quick_start>
- å¿«éæª¢æ¥ – æ¥çç®å MOVE çé å è½å¾çæ èææ ç¨åº¦
- 宿´åæ – å·è¡å®æ´çé å è½å¾èäºä»¶çªåæ
- è¦è¦ºåå表 – çæå¤é¢æ¿åæçµæå表
- æ¹æ³è«å¸ç¿ – äºè§£ Lead/Lag åæèäºä»¶çªæª¢å®çé輯
è«é¸ææç´æ¥æä¾åæåæ¸ã
éè¦ï¼å·è¡åæåå¿ é ç¢ºä¿ Chrome CDP å·²åå並è¼å ¥ MOVE å JGB é é¢ã
<directory_structure>
analyze-move-risk-gauges-leadlag/
âââ SKILL.md # æ¬æä»¶ï¼è·¯ç±å¨ï¼
âââ skill.yaml # å端å±ç¤ºå
æ¸æ
âââ manifest.json # æè½å
æ¸æ
âââ cache/ # æ¸æå¿«åç®é
âââ workflows/
â âââ analyze.md # 宿´åæå·¥ä½æµ
â âââ visualize.md # è¦è¦ºå工使µ
âââ references/
â âââ data-sources.md # è³æä¾æºèæ¿ä»£æ¹æ¡
â âââ methodology.md # Lead/Lag èäºä»¶çªæ¹æ³è«
â âââ input-schema.md # 宿´è¼¸å
¥åæ¸å®ç¾©
âââ templates/
â âââ output-json.md # JSON è¼¸åºæ¨¡æ¿
â âââ output-markdown.md # Markdown å ±åæ¨¡æ¿
âââ scripts/
âââ analyze.py # 主åæè
³æ¬
âââ fetch_data.py # æ¸ææåå·¥å
· (CDP + FRED + Yahoo)
âââ visualize.py # Lead/Lag ç¶åå表繪åå·¥å
·
âââ visualize_rates_move.py # å©ç vs MOVE ææ
å°é¡å表ï¼å¯å¸¶å
¥ä»»ä½åå®¶åµå¸ï¼
</directory_structure>
<reference_index>
æ¹æ³è«: references/methodology.md
- Lead/Lag 交åç¸éåæ
- Z åæ¸æ¨æºå
- äºä»¶çªæª¢å®é輯
è³æä¾æº: references/data-sources.md
- MOVE Index: MacroMicro CDP
- JGB 10Y: MacroMicro CDP
- VIX: Yahoo Finance
- Credit (IG OAS): FRED
- æ¸æé »çèå°é½
è¼¸å ¥åæ¸: references/input-schema.md
- 宿´åæ¸å®ç¾©
- é è¨å¼è建è°ç¯å
</reference_index>
<workflows_index>
| Workflow | Purpose | ä½¿ç¨ææ© |
|---|---|---|
| analyze.md | 宿´é å è½å¾åæ | éè¦è©³ç´°åæå ±åæ |
| visualize.md | çæè¦è¦ºåå表 | éè¦å表å±ç¤ºæ |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON 輸åºçµæ§å®ç¾© |
| output-markdown.md | Markdown å ±åæ¨¡æ¿ |
| </templates_index> |
<scripts_index>
| Script | Command | Purpose |
|---|---|---|
| analyze.py | --quick |
å¿«éæª¢æ¥ç¶åçæ |
| analyze.py | --start DATE --end DATE |
宿´åæ |
| analyze.py | --start DATE --end DATE --chart |
åæä¸¦çæ Lead/Lag ç¶åå表 |
| analyze.py | --start DATE --end DATE --rates-chart |
åæä¸¦çæå©ç vs MOVE å°é¡å表 |
| analyze.py | --rates-chart --rates-col BUND10Y --rates-name "Bund 10Y" |
æå®å ¶ä»åå®¶åµå¸åæ |
| fetch_data.py | --start DATE --end DATE |
å®ç¨æåæ¸æ |
| visualize.py | --start DATE --end DATE |
ç¨ç«çæ Lead/Lag ç¶åå表 |
| visualize_rates_move.py | --start DATE --end DATE --rates-col JGB10Y --rates-name "JGB 10Y" |
ç¨ç«çæå©ç vs MOVE ææ å°é¡å表 |
| </scripts_index> |
<input_schema_summary>
æ ¸å¿åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| start_date | string | – | èµ·å§æ¥æ (YYYY-MM-DD) |
| end_date | string | – | çµææ¥æ (YYYY-MM-DD) |
| rates_vol_symbol | string | MOVE | å©çæ³¢åçææ¨ |
| equity_vol_symbol | string | VIX | è¡å¸æ³¢åçææ¨ |
| credit_spread_symbol | string | CDX_IG_PROXY | ä¿¡ç¨å©å·®/é¢¨éªææ¨ |
| jgb_yield_symbol | string | JGB10Y | æ¥æ¬ 10Y æ®å©ç |
åæåæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| freq | string | D | é »çï¼D=æ¥ / W=é±ï¼ |
| smooth_window | int | 5 | å¹³æ»ç§»åå¹³åçª |
| zscore_window | int | 60 | Z 忏åççª |
| lead_lag_max_days | int | 20 | 交åç¸éæå¤§ä½ç§»å¤©æ¸ |
| shock_window_days | int | 5 | äºä»¶çªå¤©æ¸ |
| shock_threshold_bps | float | 15 | JGB è¡æéæª» (bps) |
| output_mode | string | markdown | è¼¸åºæ ¼å¼ |
宿´åæ¸å®ç¾©è¦ references/input-schema.mdã
</input_schema_summary>
<output_schema_summary>
{
"skill": "analyze-move-risk-gauges-leadlag",
"as_of": "2026-01-23",
"status": "ok",
"headline": "MOVE not spooked by JGB yield moves and appears to lead VIX/Credit lower.",
"leadlag": {
"MOVE_vs_VIX": {"best_lag_days": 6, "corr": 0.72},
"MOVE_vs_CREDIT": {"best_lag_days": 4, "corr": 0.61}
},
"spooked_check": {
"shock_definition": "abs(JGB10Y change over 5d) >= 15bp",
"shock_count": 3,
"mean_MOVE_reaction_on_shocks": 0.8,
"MOVE_zscore_now": -0.4
},
"direction_alignment": {
"MOVE_down_and_VIX_down_ratio": 0.58,
"MOVE_down_and_CREDIT_down_ratio": 0.55
}
}
宿´è¼¸åºçµæ§è¦ templates/output-json.mdã
</output_schema_summary>
<success_criteria> å·è¡æåææç¢åºï¼
- MOVE vs VIX / Credit çæä½³é å 天æ¸èç¸éä¿æ¸
- JGB è¡æäºä»¶æ¸éè MOVE å¹³ååæ
- MOVE ç¶å Z åæ¸ï¼ææ ç¨åº¦ï¼
- æ¹åä¸è´æ§æ¯ä¾
- ä¸å¥è©±çµè«èéåèæ
- è¦è¦ºåå表ï¼å¯é¸ï¼ </success_criteria>
<chrome_cdp_reference>
Chrome CDP ååæä»¤
Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" ^
--remote-debugging-port=9222 ^
--remote-allow-origins=* ^
--user-data-dir="%USERPROFILE%\.chrome-debug-profile" ^
"https://en.macromicro.me/charts/35584/us-treasury-move-index"
macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--remote-allow-origins=* \
--user-data-dir="$HOME/.chrome-debug-profile" \
"https://en.macromicro.me/charts/35584/us-treasury-move-index"
é©èé£ç·
curl -s http://127.0.0.1:9222/json
éè¦éåçé é¢
- MOVE Index: https://en.macromicro.me/charts/35584/us-treasury-move-index
- JGB 10Y: https://en.macromicro.me/charts/944/jp-10-year-goverment-bond-yield
</chrome_cdp_reference>
<visualization_reference>
Bloomberg é¢¨æ ¼è¦è¦ºåå表
æ¬ skill çæçå表éµå¾ª thoughts/shared/guide/bloomberg-style-chart-guide.md è¦ç¯ã
åè¡¨çµæ§ï¼2×3 ä½å±ï¼
ââââââââââââââââ¬ââââââââââââââââââââââââââââââââââ
â 交åç¸éåæ â æ³¢åçææ¨æéåºå â
â (1,1) â (1,2) + (1,3) â
ââââââââââââââââ¼ââââââââââââââââââââââââââââââââââ¤
â äºä»¶åæåå¸ â æ¨æºååºåï¼Z åæ¸ï¼ â
â (2,1) â (2,2) + (2,3) â
ââââââââââââââââ´ââââââââââââââââââââââââââââââââââ
| ä½ç½® | 颿¿å稱 | å §å®¹ |
|---|---|---|
| å·¦ä¸ (1,1) | 交åç¸éåæ | MOVE vs VIX/Credit ç lead/lag æ²ç· |
| å·¦ä¸ (2,1) | äºä»¶åæåå¸ | JGB è¡ææ MOVE è®åç´æ¹å + å¤å®çµæ |
| å³ä¸ (è·¨2æ ¼) | æ³¢åçæéåºå | MOVE Index + VIXï¼é軸ï¼+ è¡æäºä»¶æ¨è¨ |
| å³ä¸ (è·¨2æ ¼) | æ¨æºååºå | MOVE/VIX/Credit Z 忏 + ç¶å MOVE æ¨è¨ |
é è²æ¹æ¡
COLORS = {
"background": "#1a1a2e", # æ·±èé»è²èæ¯
"primary": "#ff6b35", # æ©ç´
è²ï¼MOVEï¼
"secondary": "#ffaa00", # æ©é»è²ï¼VIXï¼
"tertiary": "#ffff00", # é»è²ï¼Creditï¼
"jgb": "#00ff88", # ç¶ è²ï¼JGB/æªææ
ï¼
"shock_line": "#ff4444", # ç´
è²ï¼è¡æ/ææ
ï¼
}
å表輸åº
- é è¨è·¯å¾:
{å°æ¡æ ¹ç®é}/output/move-leadlag-YYYY-MM-DD.png - è§£æåº¦: 150 DPI
- 尺寸: 18×10 è±å¯¸
- æ ¼å¼: PNG
CLI 忏
# åææèªåçæ Lead/Lag ç¶åå表
python analyze.py --start 2024-01-01 --end 2026-01-31 --chart
# çæå©ç vs MOVE ææ
å°é¡å表ï¼é è¨ JGB 10Yï¼
python analyze.py --start 2024-01-01 --end 2026-01-31 --rates-chart
# æå®å
¶ä»åå®¶åµå¸ï¼å¦ Bund 10Yï¼
python analyze.py --start 2024-01-01 --end 2026-01-31 --rates-chart \
--rates-col BUND10Y --rates-name "Bund 10Y"
# åæçæå
©ç¨®å表
python analyze.py --start 2024-01-01 --end 2026-01-31 --chart --rates-chart
# å®ç¨çæå表
python visualize.py --start 2024-01-01 --end 2026-01-31
python visualize_rates_move.py --start 2024-01-01 --end 2026-01-31 --rates-col JGB10Y --rates-name "JGB 10Y"
</visualization_reference>
<rates_move_chart_reference>
å©ç vs MOVE ææ å°é¡å表
éç¨çå©çæ³¢åçææ åæå表ï¼å¯å¸¶å ¥ä»»ä½åå®¶/å°åçåµå¸æ®å©çã
å°æ³¨æ¼åçï¼ãMOVE æ¯å¦å° [æå®åµå¸] æ®å©çè®åæå°ææ ï¼ã
æ¯æ´çåµå¸ï¼é卿¸æä¸åå¨ï¼
| åæ¸å¼ (–rates-col) | 顯示å稱 (–rates-name) | 說æ |
|---|---|---|
| JGB10Y | “JGB 10Y” | æ¥æ¬ 10 å¹´æå ¬åµï¼é è¨ï¼ |
| UST10Y | “UST 10Y” | ç¾å 10 å¹´æå ¬åµ |
| BUND10Y | “Bund 10Y” | å¾·å 10 å¹´æå ¬åµ |
| GILT10Y | “Gilt 10Y” | è±å 10 å¹´æå ¬åµ |
| ï¼èªè¨ï¼ | ï¼èªè¨ï¼ | ä»»ä½å¨æ¸æä¸åå¨çå©çæ¬ä½ |
使ç¨ç¯ä¾
# åæ JGB 10Y vs MOVEï¼é è¨ï¼
python analyze.py --start 2024-01-01 --end 2026-01-31 --rates-chart
# åæ Bund 10Y vs MOVE
python analyze.py --start 2024-01-01 --end 2026-01-31 --rates-chart \
--rates-col BUND10Y --rates-name "Bund 10Y"
# ç¨ç«çæå表
python visualize_rates_move.py --start 2024-01-01 --end 2026-01-31 \
--rates-col JGB10Y --rates-name "JGB 10Y"
åè¡¨çµæ§
âââââââââââââââââââââââââââââââââââââââââââââââââââ
â [å©çå稱] vs MOVE æåºå â
â ï¼éè»¸å°æ¯ + è¡æäºä»¶æ¨è¨ï¼ â
âââââââââââââââââââââââââ¬ââââââââââââââââââââââââââ¤
â å©çè®å vs MOVE â ææ
å¤å®åè¡¨æ¿ â
â åææ£é»å + åæ¸ç· â ï¼çµ±è¨æ¸æ + çµè«ï¼ â
âââââââââââââââââââââââââ´ââââââââââââââââââââââââââ
| ä½ç½® | 颿¿å稱 | å §å®¹ |
|---|---|---|
| 䏿¹ | æåºå°æ¯ | æå®å©çï¼ç¶ ï¼+ MOVEï¼æ©ï¼é軸åï¼é»è²èç·æ¨è¨è¡æäºä»¶ |
| å·¦ä¸ | æ£é»åæ | å©çè®å(bps) vs MOVE è®åï¼å«åæ¸ç·èç¸éä¿æ¸ |
| å³ä¸ | å¤å®åè¡¨æ¿ | ææ /æªææ å¤å®çµæãçµ±è¨æ¸æãè§£è®èªªæ |
é è²æ¹æ¡
COLORS = {
"move": "#ff6b35", # æ©ç´
è²ï¼MOVEï¼
"rates": "#00ff88", # ç¶ è²ï¼å©çï¼
"spooked": "#ff4444", # ç´
è²ï¼ææ
å¤å®ï¼
"not_spooked": "#00ff88", # ç¶ è²ï¼æªææ
å¤å®ï¼
"shock_marker": "#ffff00", # é»è²ï¼è¡æäºä»¶æ¨è¨ï¼
}
輸åºè·¯å¾
- é è¨è·¯å¾:
{å°æ¡æ ¹ç®é}/output/{rates-name}-move-panic-YYYY-MM-DD.png - ç¯ä¾ï¼
output/jgb-10y-move-panic-2026-01-23.png
</rates_move_chart_reference>