用領先和同時指標建構景氣模型,並判讀兩種景氣階段:景氣擴張期 (Risk-On) 與景氣收縮期 (Risk-Off),並根據理論給出 "撞冰山" 與 "下沉" 事件訊號。
Resources
6Install
npx skillscat add fatfingererr/macro-skills/zeberg-salomon-rotator Install via the SkillsCat registry.
SKILL.md
**兩態切換模型核心**
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/ 目錄,可直接執行。
- 建構指標:從 FRED 數據合成 LeadingIndex 與 CoincidentIndex
- 偵測事件:識別「冰山」(領先轉弱)與「下沉」(同時確認)
- 切換訊號:產生 RISK_ON ↔ RISK_OFF 切換事件
- 回測績效:計算累積報酬、MaxDD、CAGR、與 benchmark 比較
輸出:切換事件清單、指標時間序列、回測摘要、診斷資訊。
最快的方式:執行預設回測
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 模型的邏輯
請選擇或直接提供分析參數。
路由後,閱讀對應文件並執行。
方法論: references/methodology.md
- Zeberg-Salomon 模型概念
- 冰山/下沉事件定義
- 兩態切換邏輯
資料來源: references/data-sources.md
- FRED 系列代碼(領先/同時)
- Yahoo Finance 資產代碼
- 數據頻率與對齊
輸入參數: references/input-schema.md
- 完整參數定義
- 預設值與建議範圍
| 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> |
核心參數
| 參數 | 類型 | 預設值 | 說明 |
|---|---|---|---|
| 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。
完整輸出結構見 templates/output-json.md。
</output_schema_summary>
- 當前狀態(RISK_ON 或 RISK_OFF)
- LeadingIndex 與 CoincidentIndex 數值
- 冰山/下沉事件判定
- 切換事件清單(含日期、原因)
- 回測績效摘要(CAGR, MaxDD, 換手次數)
- 與 benchmark 比較(買入持有、60/40)
- 診斷資訊(各指標貢獻)
- 視覺化圖表(可選,輸出至
output/目錄)</success_criteria>