SuperAPI AI Directory

analyze-move-risk-gauges-leadlag

General & other

View repository

Updated 10-15 21:41

About this skill

<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":

  1. Define shock events: |ΔY[t-k:t]| ≥ threshold (e.g., 15bp)
  2. Check the change in MOVE within the event window
  3. 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:

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>

  1. Data retrieval: Obtain MOVE, VIX, credit spreads, and JGB yields from public sources
  2. Standardization processing: Z-scores, smoothing, frequency alignment
  3. Lead-lag analysis: Cross-correlation to find the lead/lag of MOVE vs VIX / credit spreads
  4. Event window testing: Whether MOVE is "not spooked" during JGB shock events
  5. 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>

  1. Quick check - Check the current lead-lag status and panic level of MOVE
  2. Full analysis - Run the complete lead-lag and event window analysis
  3. Visualization charts - Generate multi-panel analysis result charts
  4. 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

  1. MOVE Index: https://en.macromicro.me/charts/35584/us-treasury-move-index
  2. 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>