<essential_principles>
The MOVE Index (Merrill Lynch Option Volatility Estimate Index) is an indicator that measures the implied volatility of U.S. Treasury options:
- MOVE low/falling: The rates market expects lower future volatility, and risk appetite rises
- MOVE high/rising: The rates market is in panic, and demand for hedging increases
MOVE is often regarded as the "VIX of the bond market" and can serve as a leading signal for other risk indicators.
Use Cross-Correlation to determine the leading/lagging relationship between two series:
- Calculate the correlation coefficient within the shift range [-L, +L]
- The maximum correlation appears at lag > 0: X leads Y
- The maximum correlation appears at lag < 0: X lags Y
- The maximum correlation appears at lag ≈ 0: Moving synchronously
Typical setting: L = 20 (trading days), with smoothing applied to reduce noise.
Test "whether MOVE is spooked when interest rate events (such as a JGB yield jump) occur":
- Define shock events: |ΔY[t-k:t]| ≥ threshold (e.g., 15bp)
- Check the change in MOVE within the event window
- If the MOVE response < the median of the historical distribution → "not spooked"
This logic can verify the narrative that "interest rate volatility is insensitive to a certain event."
This skill uses Chrome CDP to connect to MacroMicro and retrieve real data:
- 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)
Important: MOVE and JGB need to be obtained through a Chrome CDP crawler. Please refer to <quick_start> for the steps to start Chrome.
</essential_principles>
- Data retrieval: Obtain MOVE, VIX, credit spreads, and JGB yields from public sources
- Standardization processing: Z-scores, smoothing, frequency alignment
- Lead-lag analysis: Cross-correlation to find the lead/lag of MOVE vs VIX / credit spreads
- Event window testing: Whether MOVE is "not spooked" during JGB shock events
- Directional consistency: When MOVE moves down, whether other risk indicators also move down simultaneously
Output: lead-lag determination, panic test results, directional consistency ratio, quantitative evidence.
<quick_start>
Before running the analysis, Chrome debugging mode must be started first
Step 1: Close all Chrome windows
Step 2: Start Chrome with the debugging port (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: Open a second tab in the browser and load the JGB page
https://en.macromicro.me/charts/944/jp-10-year-goverment-bond-yield
Step 4: Wait for the charts on both pages to fully load (about 30-40 seconds)
Step 5: Run the analysis
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 (optional): Generate Bloomberg-style visualization charts
# 方式一:分析時同時生成圖表
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
Default chart output path:{專案根目錄}/output/move-leadlag-YYYY-MM-DD.png
Output example:
## 結論
- 利率波動率(MOVE)對「JGB 殖利率衝擊」反應偏弱 / 未顯著升溫 → **not spooked**
- MOVE 的變化在統計上呈現 **領先 4-6 天** 的特徵
- MOVE 下行時,VIX / 信用利差同步走低的比例:VIX = 62%、Credit = 60%
</quick_start>
- Quick check - Check the current lead-lag status and panic level of MOVE
- Full analysis - Run the complete lead-lag and event window analysis
- Visualization charts - Generate multi-panel analysis result charts
- Methodology learning - Understand the logic of Lead/Lag analysis and event window testing
Please choose or directly provide the analysis parameters.
Important: Before running the analysis, you must ensure that Chrome CDP has been started and the MOVE and JGB pages have been loaded.
<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>
Methodology: references/methodology.md
- Lead/Lag Cross-Correlation Analysis
- Z-Score Standardization
- Event Window Test Logic
Data Sources: references/data-sources.md
- MOVE Index: MacroMicro CDP
- JGB 10Y: MacroMicro CDP
- VIX: Yahoo Finance
- Credit (IG OAS): FRED
- Data Frequency and Alignment
Input Parameters: references/input-schema.md
- Complete Parameter Definitions
- Default Values and Recommended Ranges
</reference_index>
<workflows_index>
| Workflow | Purpose | When to Use |
|---|---|---|
| analyze.md | Complete Lead/Lag Analysis | When a detailed analysis report is needed |
| visualize.md | Generate Visualized Charts | When chart presentation is needed |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON Output Structure Definition |
| output-markdown.md | Markdown Report Template |
| </templates_index> |
<scripts_index>
| Script | Command | Purpose |
|---|---|---|
| analyze.py | --quick |
Quickly check the current status |
| analyze.py | --start DATE --end DATE |
Complete analysis |
| analyze.py | --start DATE --end DATE --chart |
Analyze and generate a comprehensive Lead/Lag chart |
| analyze.py | --start DATE --end DATE --rates-chart |
Analyze and generate an interest rate vs MOVE thematic chart |
| analyze.py | --rates-chart --rates-col BUND10Y --rates-name "Bund 10Y" |
Specify bond analysis for other countries |
| fetch_data.py | --start DATE --end DATE |
Fetch data separately |
| visualize.py | --start DATE --end DATE |
Independently generate a comprehensive Lead/Lag chart |
| visualize_rates_move.py | --start DATE --end DATE --rates-col JGB10Y --rates-name "JGB 10Y" |
Independently generate an interest rate vs MOVE panic thematic chart |
| </scripts_index> |
<input_schema_summary>
Core Parameters
| Parameter | Type | Default Value | Description |
|---|---|---|---|
| start_date | string | - | Start date (YYYY-MM-DD) |
| end_date | string | - | End date (YYYY-MM-DD) |
| rates_vol_symbol | string | MOVE | Interest Rate Volatility Indicator |
| equity_vol_symbol | string | VIX | Equity Market Volatility Indicator |
| credit_spread_symbol | string | CDX_IG_PROXY | Credit Spread/Risk Indicator |
| jgb_yield_symbol | string | JGB10Y | Japan 10Y Yield |
Analysis Parameters
| Parameter | Type | Default Value | Description |
|---|---|---|---|
| freq | string | D | Frequency (D=Daily / W=Weekly) |
| smooth_window | int | 5 | Smoothing Moving Average Window |
| zscore_window | int | 60 | Z-Score Lookback Window |
| lead_lag_max_days | int | 20 | Maximum Cross-Correlation Lag Days |
| shock_window_days | int | 5 | Event Window Days |
| shock_threshold_bps | float | 15 | JGB Shock Threshold (bps) |
| output_mode | string | markdown | Output Format |
For complete parameter definitions, see 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
}
}
For the complete output structure, see templates/output-json.md。
</output_schema_summary>
<success_criteria> On successful execution, the following should be produced:
- The optimal lead days and correlation coefficient for MOVE vs VIX / Credit
- Number of JGB shock events and average MOVE response
- MOVE current Z-Score (panic level)
- Directional consistency ratio
- One-sentence conclusion and quantitative evidence
- Visualized charts (optional) </success_criteria>
<chrome_cdp_reference>
Chrome CDP Launch Command
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"
Verify Connection
curl -s http://127.0.0.1:9222/json
Pages to Open
- 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-Style Visualized Charts
The charts generated by this skill follow the thoughts/shared/guide/bloomberg-style-chart-guide.md specification.
Chart Structure (2x3 Layout)
┌──────────────┬─────────────────────────────────┐
│ 交叉相關分析 │ 波動率指標時間序列 │
│ (1,1) │ (1,2) + (1,3) │
├──────────────┼─────────────────────────────────┤
│ 事件反應分布 │ 標準化序列(Z 分數) │
│ (2,1) │ (2,2) + (2,3) │
└──────────────┴─────────────────────────────────┘
| Position | Panel Name | Content |
|---|---|---|
| Top Left (1,1) | Cross-Correlation Analysis | Lead/lag curve of MOVE vs VIX/Credit |
| Bottom Left (2,1) | Event Response Distribution | Histogram of MOVE changes during JGB shocks + determination results |
| Top Right (spanning 2 columns) | Volatility Time Series | MOVE Index + VIX (dual axis) + shock event markers |
| Bottom right (spanning 2 columns) | Standardized series | MOVE/VIX/Credit Z-score + current MOVE marker |
Color scheme
COLORS = {
"background": "#1a1a2e", # 深藍黑色背景
"primary": "#ff6b35", # 橙紅色(MOVE)
"secondary": "#ffaa00", # 橙黃色(VIX)
"tertiary": "#ffff00", # 黃色(Credit)
"jgb": "#00ff88", # 綠色(JGB/未恐慌)
"shock_line": "#ff4444", # 紅色(衝擊/恐慌)
}
Chart output
- Default path:
{專案根目錄}/output/move-leadlag-YYYY-MM-DD.png - Resolution: 150 DPI
- Size: 18x10 inches
- Format: PNG
CLI parameters
# 分析時自動生成 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>
Interest Rates vs MOVE Panic Feature Chart
A general-purpose interest rate volatility panic analysis chart,can be populated with bond yields from any country/region。
Focused on answering: "Is MOVE panicking about [specified bond] yield changes?"
Supported bonds (must exist in the data)
| Parameter value (--rates-col) | Display name (--rates-name) | Description |
|---|---|---|
| JGB10Y | "JGB 10Y" | Japan 10-year government bond (default) |
| UST10Y | "UST 10Y" | US 10-year government bond |
| BUND10Y | "Bund 10Y" | Germany 10-year government bond |
| GILT10Y | "Gilt 10Y" | UK 10-year government bond |
| (Custom) | (Custom) | Any interest rate column present in the data |
Usage example
# 分析 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"
Chart structure
┌─────────────────────────────────────────────────┐
│ [利率名稱] vs MOVE 時序圖 │
│ (雙軸對比 + 衝擊事件標記) │
├───────────────────────┬─────────────────────────┤
│ 利率變化 vs MOVE │ 恐慌判定儀表板 │
│ 反應散點圖 + 回歸線 │ (統計數據 + 結論) │
└───────────────────────┴─────────────────────────┘
| Position | Panel name | Content |
|---|---|---|
| Top | Time series comparison | Dual-axis chart of specified rate (green) + MOVE (orange), with yellow dashed lines marking shock events |
| Bottom left | Scatter analysis | Rate change (bps) vs MOVE change, including regression line and correlation coefficient |
| Bottom right | Determination dashboard | Panic/no-panic determination result, statistics, interpretation notes |
Color scheme
COLORS = {
"move": "#ff6b35", # 橙紅色(MOVE)
"rates": "#00ff88", # 綠色(利率)
"spooked": "#ff4444", # 紅色(恐慌判定)
"not_spooked": "#00ff88", # 綠色(未恐慌判定)
"shock_marker": "#ffff00", # 黃色(衝擊事件標記)
}
Output path
- Default path:
{專案根目錄}/output/{rates-name}-move-panic-YYYY-MM-DD.png - Example:
output/jgb-10y-move-panic-2026-01-23.png
</rates_move_chart_reference>