zigzag-pattern-classifier について
zigzag-pattern-classifierは、価格関係と市場レジームに基づいて、2ピボットおよび3ピボットのZigZagスイングを分類するリファレンススキルです。網羅的な分類体系、許容誤差の規則、FDによる細分化方法を示します。
主な機能
- 012・3ピボットのパターン分類
- 02高値・同値・安値の比較規則
- 03イプシロン許容誤差の指針
- 04Freedman-Diaconisによる細分化
- 05市場レジームのラベル付け
- 06qta Rustクレートの実装リファレンス
活用シーン
- 01確定したZigZagスイングの分類
- 02RustやPythonのパイプラインでのパターンラベル付け
- 03スイング構造に基づく市場レジームの解釈
- 04許容誤差とビニング規則の設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill zigzag-pattern-classifierインストール後、Claude Code で/zigzag-pattern-classifierを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/binning-methodology.mddata-pipeline.mdepsilon-tolerance-detail.mdeurusd-validation-scenarios.mdnotation-definitions.mdthree-pivot-variants.mdtwo-pivot-variants.md詳細
ZigZagスイングパターン分類器
構造と市場レジームに基づいてZigZagスイングパターンを分類する完全な分類体系です。確認済みのZigZagシーケンスはすべて、ちょうど1つのバリアントに対応します。漏れも重複もありません。
自己進化型スキル:このスキルは使用を通じて改善されます。指示に誤りがある、パラメーターがずれている、または回避策が必要だった場合は、先延ばしにせず、このファイルをすぐに修正してください。実際に再現可能な問題がある場合にのみ更新してください。
使用する場面
- 確認済みのL₀→H₁→L₂(2ピボット)またはL₀→H₁→L₂→H₃(3ピボット)のスイングを分類する場合
- 特定のパターンが市場レジームに与える影響を調べる場合
- 「異なるパターンはいくつあるか」という質問に答え、網羅性を証明する場合
- コードでパターンのラベル付けを実装する場合(Rustの
qtaクレート、Pythonパイプライン) - 「等しい」を定義するイプシロン許容帯を理解する場合
- サブ分類の粒度にFreedman-Diaconisビニングを適用する場合
表記法(唯一の定義元)
| 記号 | 定義 | 例 |
|---|---|---|
| L₀ | 初期安値(最初に確認されたピボット) | 1.0800 |
| H₁ | スイング高値(反転のピーク) | 1.0850 |
| L₂ | 2番目の安値(押し戻し) | 1.0810 |
| H₃ | 3ピボットの場合のみ、2番目の高値 | 1.0870 |
| W | スイング幅:H₁ − L₀ | 0.0050 |
| z | 正規化された押し戻し:(L₂ − L₀) / (H₁ − L₀) | 0.20 |
| o | ボラティリティで正規化されたオーバーシュート:(L₀ − L₂) / ATR₁₄ | 0.35 |
| ε | 「等しい」分類の許容帯 | 5ピップ |
| τ | ZigZagの反転しきい値 | 6.6ピップ |
価格水準の比較
| コード | 意味 | 条件 |
|---|---|---|
| HL | 高値切り上げ | L₂ > L₀ + ε |
| EL | 安値同値 | |L₂ − L₀| ≤ ε |
| LL | 安値切り下げ | L₂ < L₀ − ε |
| HH | 高値切り上げ | H₃ > H₁ + ε |
| EH | 高値同値 | |H₃ − H₁| ≤ ε |
| LH | 高値切り下げ | H₃ < H₁ − ε |
パート1:2ピボットパターン(上昇-下降)
パターン:L₀ → H₁ → L₂(上昇レッグ1つ、下降レッグ1つ)
基本分類(3クラス)
上昇-下降の3点セットはすべて、次のいずれか1つに分類されます。
| クラス | 条件 | 意味 | 頻度 |
|---|---|---|---|
| EL | |L₂ − L₀| ≤ ε | 安値同値(再試し) | ~20–30% |
| HL | L₂ > L₀ + ε | 安値切り上げ(押し戻し) | ~50–60% |
| LL | L₂ < L₀ − ε | 安値切り下げ(下抜け) | ~10–20% |
詳細分類:FDビニングによる9つのバリアント
HLとLLは、それぞれ正規化座標にFreedman-Diaconisビニングを適用して4つのサブクラスに分解されます。
- HLビンではz = (L₂ − L₀) / (H₁ − L₀)を使用し、範囲は0~1です
- LLビンではo = (L₀ − L₂) / ATR₁₄を使用し、範囲は0~∞です
| バリアント | zまたはoの範囲 | 市場レジーム | 確率 |
|---|---|---|---|
| EL | |z| ≤ ε_r | 再試し — サポートが再確立されます | 20–30% |
| HL-FD1 | 0.75 < z < 1.0 | 浅い押し戻し — 買い手が優勢です | 20–25% |
| HL-FD2 | 0.50 < z ≤ 0.75 | 中程度の押し戻し — フィボナッチ38~50% | 15–20% |
| HL-FD3 | 0.25 < z ≤ 0.50 | 深い押し戻し — フィボナッチ61.8% | 10–15% |
| HL-FD4 | 0 < z ≤ 0.25 | ほぼ完全な押し戻し — かろうじて維持 | 5–10% |
| LL-FD1 | o ≤ q₂₀ | 微小な下抜け — 短時間のダマシブレイク | 8–12% |
| LL-FD2 | q₂₀ < o ≤ q₄₀ | 浅い下抜け — 中程度のパニック | 4–8% |
| LL-FD3 | q₄₀ < o ≤ q₆₀ | 深い下抜け — 構造的なブレイク | 2–5% |
| LL-FD4 | o > q₆₀ | 極端な下抜け — テールイベント | <2% |
取引への影響
| バリアント | エントリーシグナル | 損切り | 目標 |
|---|---|---|---|
| EL | L₀+εからロング | L₀−ε | H₁ + ΔH |
| HL-FD1 | L₂からロング | L₂−ε | H₁ + ΔH |
| HL-FD2 | 確認時にロング | L₂−ε | 直近のH + ΔH |
| HL-FD3 | サイズを縮小して待機 | L₂−ε | サポート + ΔH |
| HL-FD4 | 極端なリスク、回避 | L₂−ε | 重大水準 |
| LL-FD1 | 急騰時のショート取引 | L₂+急騰幅 | L₀ |
| LL-FD2 | 反転を待つ | ブレイクアウト | L₀ |
| LL-FD3 | ショート継続 | 反転 | 新安値 |
| LL-FD4 | 危機モード、ヘッジ | 投げ売り | 未定 |
任意のサブ分類フラグ
より豊富なコンテキストを加えるため、任意のバリアントに付与します。
| フラグ | 意味 | シグナル |
|---|---|---|
| +C | H₁→L₂の間に終値がL₀未満になる | 弱気姿勢の強まり |
| +S | L₂が単一のバーで発生(急騰) | 急反転、平均回帰 |
| +X | ヒゲのみL₀を下回り、終値は下回らない | 流動性狩り、偽のブレイク |
ラベルの例:HL-FD2+C、LL-FD4+S+C、EL+X
パート2:3つのピボットパターン(上昇-下降-上昇)
パターン:L₀ → H₁ → L₂ → H₃(上昇脚、下降脚、上昇脚)
網羅的な9つのバリアント
独立した2つの次元がそれぞれ3つの値を取るため、3×3 = 9個の相互に排他的で、全体として網羅的なバリアントがあります。
次元1 — L₂とL₀の比較:{HL, EL, LL} 次元2 — H₃とH₁の比較:{HH, EH, LH}
| # | L₂とL₀の比較 | H₃とH₁の比較 | 名称 | 市場レジーム |
|---|---|---|---|---|
| 1 | HL | HH | 継続インパルス | 強気トレンドの継続 |
| 2 | HL | EH | ダブルトップの試し | レンジ、強気バイアス |
| 3 | HL | LH | 三角保ち合いの収束 | 中立的な持ち合い |
| 4 | EL | HH | レンジ上抜け | 強気への転換 |
| 5 | EL | EH | 長方形 | 均衡レンジ |
| 6 | EL | LH | フラットな底での切り下げ高値 | レンジ、弱気バイアス |
| 7 | LL | HH | V字反転/スプリング | 強気反転 |
| 8 | LL | EH | 下抜け後の停滞 | ボラティリティの高いレンジ |
| 9 | LL | LH | ラリーの失敗 | 弱気トレンドの継続 |
網羅性の証明
すべてのバリアントは、以下の必須条件を満たします。
- L₀ < H₁(最初の上昇トレンドが存在する)
- L₂ < H₁(押し戻しがピークを超えない)
- H₃ > L₂(2回目の上昇トレンドが存在する)
L₂とL₀の関係は、ちょうど3通り(上、同値、下)です。H₃とH₁の関係も、ちょうど3通り(上、同値、下)です。これらの次元は独立しており、どの組み合わせも除外する制約はありません。したがって、実現可能なバリアントは3 × 3 = 9通りで、欠けているものはありません。
自然な分類
- 強気(4):HL+HH、EL+HH、HL+EH、LL+HH
- 中立(3):HL+LH、EL+EH、LL+EH
- 弱気(2):EL+LH、LL+LH
レジームの割り当て
| レジーム | バリアント |
|---|---|
| トレンド継続 | HL+HH(強気)、LL+LH(弱気) |
| レンジ持ち合い | HL+LH、EL+EH、LL+EH |
| 強気への転換 | EL+HH、HL+EH |
| 弱気への転換 | EL+LH |
| 反転 | LL+HH |
Part 3:27 通りへの拡張
独立した第 3 の次元として H₃ vs L₀ を追加します。
- L₂ vs L₀:{HL, EL, LL}
- H₃ vs H₁:{HH, EH, LH}
- H₃ vs L₀:{Above, Equal, Below}
これにより、3×3×3=27 のサブバリアントが得られます。制約によって数学的に成立しないものもあります(例:HL+LH+H₃<L₀ は、H₃ < L₀ < L₂ < H₃ を要求するため矛盾します)。
アナリストは、この第 3 の次元を「L₀ を奪回する」対「L₀ の奪回に失敗する」という二値に単純化することがよくあります。
イプシロン許容帯
許容帯 ε によって、「等しい」の意味が決まります。これはボラティリティと市場のマイクロストラクチャーに応じて調整されます。
基本式
ε = min(ε_max, max(ε_min, √[(a·S)² + (b·ATR₁₄)²]))
ここで:
- S = ローリング中央値スプレッド(ビッド・アスク)
- ATR₁₄ = 14 バーの Average True Range
- a = 2.0(スプレッドのスケーリング)
- b = 0.05(M5-M30)または 0.07(H1-D1)
上限と下限(EURUSD のデフォルト)
ε_min = max(3 ticks, 1×S) = max(0.00003, S)
ε_max = min(5 pips, 0.20 × swing) = min(0.00050, 0.20 × W)
ε を使った分類
ε_r = ε / W (relative tolerance)
EL if |z| ≤ ε_r
HL if z > ε_r
LL if z < −ε_r
実用的な代替策
ビッド・アスクスプレッドを利用できない場合:
- ATR のみ:ε = 0.05 × ATR₁₄(M5-M30)、0.07 × ATR₁₄(H1-D1)
- 固定帯:3 ピップス(日中)、5 ピップス(スイング)、10 ピップス(日足)
感度分析を含む詳細な計算例については、references/epsilon-tolerance-detail.md を参照してください。
Freedman-Diaconis ビニング
FD ルールは、データから統計的に最適なビン境界を計算します。
h = 2 × IQR(X) × n^(-1/3) (bin width)
K = clip(⌈(max−min) / h⌉, 3, 6) (number of bins)
edges = linspace(min, max, K+1)
HL パターンの手順
- 2~3 年分の UP-DOWN トリプレットを収集します
- HL(z > ε_r)に絞り込みます
- z を 0.5%-99.5% の範囲でウィンザー化します
- z ∈ (ε_r, 1) に対して FD ビン境界を計算します
- HL-FD1(最も浅い)から HL-FDK(最も深い)までラベル付けします
LL パターンの手順
- LL(z < −ε_r)に絞り込みます
- o = (L₀ − L₂) / ATR₁₄ を計算します
- o を 0.5%-99.5% の範囲でウィンザー化します
- o ∈ (ε_r, ∞) に対して FD ビン境界を計算します
- LL-FD1(微小)から LL-FDK(極端)までラベル付けします
レジームのドリフトを追跡するため、ビン境界は毎月または四半期ごとに再計算してください。サンプル数が 400 未満の場合は、分位点ビニングに切り替えてください。
実装リファレンス
Rust クレート qta(crates/qta/)は、この分類フレームワークで使用するピボットを生成するコア ZigZag ステートマシンを実装しています。
ZigZagConfig::new(reversal_depth, epsilon_multiplier, bar_threshold_dbps)completed_segmentにbase_class(EL/HL/LL)とzスコアを含むZigZagState::process_bar(&bar) → ZigZagOutput- このクレートは、
bar_threshold_dbpsからピボットごとに τ と ε を動的に計算します
このスキルの分類フレームワークは、FD ビニング、3 ピボット分析、市場レジームのラベル付けによって、クレートの出力を拡張します。
詳細リファレンスファイル
ASCII 図、計算例、実装の疑似コードについては、必要に応じて以下のリファレンスファイルを参照してください。
| ファイル | 内容 |
|---|---|
references/notation-definitions.md | 唯一の信頼できる情報源:すべての記号、数式、略語、パターンクラス |
references/two-pivot-variants.md | 9 通りすべての 2 ピボット ASCII 図、取引ルール、フラグの例 |
references/three-pivot-variants.md | 9 通りすべての 3 ピボット ASCII 図、27 通りへの拡張、HL+LH の詳細なサブバリアント |
references/epsilon-tolerance-detail.md | ε の完全な式、計算例、感度分析、疑似コード |
references/binning-methodology.md | Freedman-Diaconis アルゴリズムの詳細、FD と分位点の比較、計算例 |
references/data-pipeline.md | 11 ステップのエンドツーエンドパイプライン:生クオート → OHLC → ATR → ピボット → 分類 → 出力 |
references/eurusd-validation-scenarios.md | ε と τ を検証する 3 つの市場シナリオの計算例(通常、ボラティリティ大、暴落) |
実行後の振り返り
このスキルの実行後、終了する前に次の点を確認してください。
- コマンドは成功しましたか? — 成功していない場合は、失敗の原因となった手順またはエラーテーブルを修正します。
- パラメーターや出力に変更はありましたか? — 基盤となるツールのインターフェースに変更があった場合は、使用例とパラメーターテーブルを更新して一致させます。
- 回避策が必要でしたか? — 別のフラグや追加手順など、その場で工夫する必要があった場合は、次回の実行で同じ回避策が不要になるよう、この SKILL.md を更新します。
問題が実際に発生し、再現可能な場合にのみ更新してください。推測で更新しないでください。