傳統 ATR 是絕對值(價格單位),不同價位資產無法比較。
將 ATR 轉換為百分比(ATR / Close * 100)後:
- 可跨資產比較波動強度
- 能建立「常態基準」(3 年移動均值)
- 用「倍率」判定是否進入異常波動區
ATR% = (14-day EMA of True Range) / Close * 100
Ratio = Current ATR% / 3-year Rolling Mean ATR%
| 行情 |
ATR% 條件 |
Ratio 條件 |
市場特徵 |
orderly_market |
常態區間 |
< 1.2 |
技術位有效、停損精準、趨勢追蹤可靠 |
elevated_volatility_trend |
偏高 |
1.2 - 2.0 |
技術位減效、需放寬停損、仍有方向性 |
volatility_dominated_squeeze |
>= 高波門檻 |
>= 2.0 |
技術位失靈、停損頻被掃、反身性主導 |
擠壓行情的判定需要同時滿足:
- ATR% >=
high_vol_threshold_pct(預設 6%)
- Ratio >=
spike_threshold_x(預設 2.0)
當進入 volatility_dominated_squeeze 行情:
價格運動被「被迫流」主導:
- 保證金調整 / 槓桿去化
- 期權 Delta/Gamma 避險
- 空頭回補
- 被動風險平價再平衡
技術位可靠度下降:
- 突破/跌破更常是流動性與風控觸發的結果
- 不代表基本面改變或趨勢確認
停損脆弱性:
- 同一口波動可掃過多層 stops
- 低時間尺度的 conviction trading「結構性受損」
- 宏觀看對也難撐:短期雜訊大到足以讓方向正確的部位先被洗掉
當偵測到擠壓行情時:
| 調整項目 |
秩序市場 |
擠壓行情 |
| 停損倍數 |
1.0-1.5 ATR |
2.0-3.0 ATR |
| 倉位縮放 |
正常 |
降至 1/ATR% |
| 時間框架 |
日內/短線 |
切換到較長週期 |
| 工具選擇 |
裸倉位 |
期權/價差結構 |
| 技術位信任 |
高 |
低(視為雜訊) |
|
|
|
- 計算 ATR%:14 日 EMA 平滑的真實波幅百分比
- 建立基準:3 年滾動均值作為「常態」參照
- 判定行情:比較當前值與基準的倍率
- 輸出建議:停損調整、倉位縮放、技術位信任度
輸出:行情判定、ATR% 數值、倍率、可操作的風控建議。
最快的方式:偵測白銀(SI=F)
cd skills/detect-atr-squeeze-regime
pip install pandas numpy yfinance pandas_ta # 首次使用
python scripts/atr_squeeze.py --symbol SI=F --quick
輸出範例:
{
"symbol": "SI=F",
"as_of": "2026-01-14",
"regime": "volatility_dominated_squeeze",
"atr_pct": 7.23,
"atr_ratio_to_baseline": 2.41,
"tech_level_reliability": "low",
"tech_level_reliability_score": 28,
"suggested_stop_atr_mult": 2.5,
"position_scale": 0.41
}
完整分析:
python scripts/atr_squeeze.py --symbol XAGUSD --start 2020-01-01 --end 2026-01-01 --output result.json
生成視覺化儀表盤:
pip install matplotlib # 首次使用
python scripts/plot_atr_squeeze.py --symbol SI=F --output output/
儀表盤包含:
- 價格走勢圖
- ATR% 波動率時間序列
- ATR 倍率儀表盤
- 當前狀態與風控建議面板
- 快速偵測 - 檢查單一資產的當前行情狀態
- 多資產掃描 - 掃描多個資產尋找擠壓行情
- 歷史回測 - 回溯識別過去的擠壓期間
- 持續監控 - 設定警報當行情切換時通知
- 方法論學習 - 了解 ATR 擠壓行情的理論基礎
請選擇或直接提供資產代碼開始分析。
路由後,閱讀對應文件並執行。
方法論: references/methodology.md
- ATR% 標準化原理
- 三行情分類邏輯
- 反身性機制解讀
- Ole Hansen 白銀擠壓案例
資料來源: references/data-sources.md
- Yahoo Finance 期貨代碼
- Stooq 替代來源
- 數據頻率與對齊
輸入參數: references/input-schema.md
| Script |
Command |
Purpose |
| atr_squeeze.py |
--symbol SI=F --quick |
快速檢查當前狀態 |
| atr_squeeze.py |
--symbol SI=F --start DATE |
完整歷史分析 |
| atr_squeeze.py |
--scan SI=F,GC=F,CL=F |
多資產掃描 |
| plot_atr_squeeze.py |
--symbol SI=F --output output/ |
生成視覺化儀表盤 |
|
|
|
核心參數
| 參數 |
類型 |
預設值 |
說明 |
| symbol |
string |
(required) |
資產代碼 |
| start_date |
string |
today-5y |
取樣開始日 |
| end_date |
string |
today |
取樣結束日 |
| timeframe |
string |
1d |
價格頻率 |
ATR 參數
| 參數 |
類型 |
預設值 |
說明 |
| atr_period |
int |
14 |
ATR 週期 |
| atr_smoothing |
string |
ema |
平滑法(ema/wilder) |
| use_percent_atr |
bool |
true |
是否轉為百分比 |
行情判定參數
| 參數 |
類型 |
預設值 |
說明 |
| baseline_window_days |
int |
756 |
長期基準窗口(約 3 年) |
| spike_threshold_x |
number |
2.0 |
倍率門檻 |
| high_vol_threshold_pct |
number |
6.0 |
絕對 ATR% 高波動門檻 |
完整參數定義見 references/input-schema.md。
完整輸出結構見 templates/output-json.md。
1---2name: detect-atr-squeeze-regime3description: 以 14 日指數平滑 ATR 偵測市場是否從秩序型趨勢轉為波動主導的擠壓(squeeze)行情,並輸出對技術位、停損、交易持有期的可行性評估。4---5
6<essential_principles>
7
8<principle name="atr_percent_normalization">
9**ATR% 標準化核心**
10
11傳統 ATR 是絕對值(價格單位),不同價位資產無法比較。
12將 ATR 轉換為百分比(ATR / Close * 100)後:
13- 可跨資產比較波動強度
14- 能建立「常態基準」(3 年移動均值)
15- 用「倍率」判定是否進入異常波動區
16
17```
18ATR% = (14-day EMA of True Range) / Close * 100
19Ratio = Current ATR% / 3-year Rolling Mean ATR%
20```
21</principle>
22
23<principle name="three_regime_classification">
24**三行情分類**
25
26| 行情 | ATR% 條件 | Ratio 條件 | 市場特徵 |
27|--------------------------------|-------------|------------|------------------------------------|
28| `orderly_market` | 常態區間 | < 1.2 | 技術位有效、停損精準、趨勢追蹤可靠 |
29| `elevated_volatility_trend` | 偏高 | 1.2 - 2.0 | 技術位減效、需放寬停損、仍有方向性 |
30| `volatility_dominated_squeeze` | >= 高波門檻 | >= 2.0 | 技術位失靈、停損頻被掃、反身性主導 |
31
32**擠壓行情**的判定需要**同時**滿足:
331. ATR% >= `high_vol_threshold_pct`(預設 6%)
342. Ratio >= `spike_threshold_x`(預設 2.0)
35</principle>
36
37<principle name="reflexivity_mechanics">
38**反身性機制解讀**
39
40當進入 `volatility_dominated_squeeze` 行情:
41
42**價格運動被「被迫流」主導**:
43- 保證金調整 / 槓桿去化
44- 期權 Delta/Gamma 避險
45- 空頭回補
46- 被動風險平價再平衡
47
48**技術位可靠度下降**:
49- 突破/跌破更常是流動性與風控觸發的結果
50- 不代表基本面改變或趨勢確認
51
52**停損脆弱性**:
53- 同一口波動可掃過多層 stops
54- 低時間尺度的 conviction trading「結構性受損」
55- 宏觀看對也難撐:短期雜訊大到足以讓方向正確的部位先被洗掉
56</principle>
57
58<principle name="actionable_adjustments">
59**可操作的調整建議**
60
61當偵測到擠壓行情時:
62
63| 調整項目 | 秩序市場 | 擠壓行情 |
64|------------|-------------|----------------|
65| 停損倍數 | 1.0-1.5 ATR | 2.0-3.0 ATR |
66| 倉位縮放 | 正常 | 降至 1/ATR% |
67| 時間框架 | 日內/短線 | 切換到較長週期 |
68| 工具選擇 | 裸倉位 | 期權/價差結構 |
69| 技術位信任 | 高 | 低(視為雜訊) |
70</principle>
71
72</essential_principles>
73
74<objective>
75偵測資產是否進入「波動主導的擠壓行情」:
76
771. **計算 ATR%**:14 日 EMA 平滑的真實波幅百分比
782. **建立基準**:3 年滾動均值作為「常態」參照
793. **判定行情**:比較當前值與基準的倍率
804. **輸出建議**:停損調整、倉位縮放、技術位信任度
81
82輸出:行情判定、ATR% 數值、倍率、可操作的風控建議。
83</objective>
84
85<quick_start>
86
87**最快的方式:偵測白銀(SI=F)**
88
89```bash
90cd skills/detect-atr-squeeze-regime
91pip install pandas numpy yfinance pandas_ta # 首次使用
92python scripts/atr_squeeze.py --symbol SI=F --quick
93```
94
95輸出範例:
96```json
97{
98 "symbol": "SI=F",
99 "as_of": "2026-01-14",
100 "regime": "volatility_dominated_squeeze",
101 "atr_pct": 7.23,
102 "atr_ratio_to_baseline": 2.41,
103 "tech_level_reliability": "low",
104 "tech_level_reliability_score": 28,
105 "suggested_stop_atr_mult": 2.5,
106 "position_scale": 0.41
107}
108```
109
110**完整分析**:
111```bash
112python scripts/atr_squeeze.py --symbol XAGUSD --start 2020-01-01 --end 2026-01-01 --output result.json
113```
114
115**生成視覺化儀表盤**:
116```bash
117pip install matplotlib # 首次使用
118python scripts/plot_atr_squeeze.py --symbol SI=F --output output/
119```
120
121儀表盤包含:
122- 價格走勢圖
123- ATR% 波動率時間序列
124- ATR 倍率儀表盤
125- 當前狀態與風控建議面板
126
127</quick_start>
128
129<intake>
130需要進行什麼操作?
131
1321. **快速偵測** - 檢查單一資產的當前行情狀態
1332. **多資產掃描** - 掃描多個資產尋找擠壓行情
1343. **歷史回測** - 回溯識別過去的擠壓期間
1354. **持續監控** - 設定警報當行情切換時通知
1365. **方法論學習** - 了解 ATR 擠壓行情的理論基礎
137
138**請選擇或直接提供資產代碼開始分析。**
139</intake>
140
141<routing>
142| Response | Action |
143|----------------------------------|----------------------------------------------|
144| 1, "快速", "quick", "check" | 執行 `python scripts/atr_squeeze.py --quick` |
145| 2, "掃描", "scan", "multiple" | 閱讀 `workflows/monitor.md` 並執行 |
146| 3, "回測", "backtest", "history" | 閱讀 `workflows/backtest.md` 並執行 |
147| 4, "監控", "monitor", "alert" | 閱讀 `workflows/monitor.md` 並執行 |
148| 5, "學習", "方法論", "why" | 閱讀 `references/methodology.md` |
149| 提供 symbol (如 SI=F, GC=F) | 閱讀 `workflows/detect.md` 並使用參數執行 |
150
151**路由後,閱讀對應文件並執行。**
152</routing>
153
154<directory_structure>
155```
156detect-atr-squeeze-regime/
157├── SKILL.md # 本文件(路由器)
158├── skill.yaml # 前端展示元數據
159├── manifest.json # 技能元數據
160├── workflows/
161│ ├── detect.md # 單資產偵測工作流
162│ ├── monitor.md # 多資產監控工作流
163│ └── backtest.md # 歷史回測工作流
164├── references/
165│ ├── methodology.md # ATR 擠壓行情方法論
166│ ├── input-schema.md # 完整輸入參數定義
167│ └── data-sources.md # 資料來源說明
168├── templates/
169│ ├── output-json.md # JSON 輸出模板
170│ └── output-markdown.md # Markdown 報告模板
171├── scripts/
172│ ├── atr_squeeze.py # 主偵測腳本
173│ └── plot_atr_squeeze.py # 視覺化儀表盤腳本
174└── examples/
175 └── xagusd-squeeze-2024.json # 範例輸出
176```
177</directory_structure>
178
179<reference_index>
180
181**方法論**: references/methodology.md
182- ATR% 標準化原理
183- 三行情分類邏輯
184- 反身性機制解讀
185- Ole Hansen 白銀擠壓案例
186
187**資料來源**: references/data-sources.md
188- Yahoo Finance 期貨代碼
189- Stooq 替代來源
190- 數據頻率與對齊
191
192**輸入參數**: references/input-schema.md
193- 完整參數定義
194- 預設值與建議範圍
195
196</reference_index>
197
198<workflows_index>
199| Workflow | Purpose | 使用時機 |
200|-------------|------------|------------------|
201| detect.md | 單資產偵測 | 需要檢查特定資產 |
202| monitor.md | 多資產監控 | 日常掃描或警報 |
203| backtest.md | 歷史回測 | 驗證識別準確性 |
204</workflows_index>
205
206<templates_index>
207| Template | Purpose |
208|--------------------|-------------------|
209| output-json.md | JSON 輸出結構定義 |
210| output-markdown.md | Markdown 報告模板 |
211</templates_index>
212
213<scripts_index>
214| Script | Command | Purpose |
215|---------------------|----------------------------------|------------------|
216| atr_squeeze.py | `--symbol SI=F --quick` | 快速檢查當前狀態 |
217| atr_squeeze.py | `--symbol SI=F --start DATE` | 完整歷史分析 |
218| atr_squeeze.py | `--scan SI=F,GC=F,CL=F` | 多資產掃描 |
219| plot_atr_squeeze.py | `--symbol SI=F --output output/` | 生成視覺化儀表盤 |
220</scripts_index>
221
222<input_schema_summary>
223
224**核心參數**
225
226| 參數 | 類型 | 預設值 | 說明 |
227|------------|--------|------------|------------|
228| symbol | string | (required) | 資產代碼 |
229| start_date | string | today-5y | 取樣開始日 |
230| end_date | string | today | 取樣結束日 |
231| timeframe | string | 1d | 價格頻率 |
232
233**ATR 參數**
234
235| 參數 | 類型 | 預設值 | 說明 |
236|-----------------|--------|--------|----------------------|
237| atr_period | int | 14 | ATR 週期 |
238| atr_smoothing | string | ema | 平滑法(ema/wilder) |
239| use_percent_atr | bool | true | 是否轉為百分比 |
240
241**行情判定參數**
242
243| 參數 | 類型 | 預設值 | 說明 |
244|------------------------|--------|--------|-------------------------|
245| baseline_window_days | int | 756 | 長期基準窗口(約 3 年) |
246| spike_threshold_x | number | 2.0 | 倍率門檻 |
247| high_vol_threshold_pct | number | 6.0 | 絕對 ATR% 高波動門檻 |
248
249完整參數定義見 `references/input-schema.md`。
250
251</input_schema_summary>
252
253<output_schema_summary>
254```json
255{
256 "skill": "detect-atr-squeeze-regime",
257 "symbol": "SI=F",
258 "as_of": "2026-01-14",
259 "regime": "volatility_dominated_squeeze",
260 "atr_pct": 7.23,
261 "atr_ratio_to_baseline": 2.41,
262 "baseline_atr_pct": 3.0,
263 "tech_level_reliability": "low",
264 "tech_level_reliability_score": 28,
265 "risk_adjustments": {
266 "suggested_stop_atr_mult": 2.5,
267 "position_scale": 0.41,
268 "recommended_timeframe": "weekly",
269 "instrument_suggestion": "options_or_spreads"
270 },
271 "interpretation": {
272 "regime_explanation": "...",
273 "tactics": ["...", "..."]
274 }
275}
276```
277
278完整輸出結構見 `templates/output-json.md`。
279</output_schema_summary>
280
281<success_criteria>
282執行成功時應產出:
283
284- [ ] 當前行情判定(orderly / elevated / squeeze)
285- [ ] ATR% 數值與對基準的倍率
286- [ ] 技術位可靠度評分(0-100)
287- [ ] 建議停損倍數
288- [ ] 建議倉位縮放係數
289- [ ] 行情解釋與戰術建議
290- [ ] 時間序列資料(可選,用於視覺化)
291- [ ] 視覺化儀表盤 PNG(可選,使用 plot_atr_squeeze.py)
292</success_criteria>