HMA(Hull Moving Average)の計算方法
直接の答え
Hull Moving Average(HMA)は、同じ価格系列の 加重移動平均(WMA) から計算されます。メインの長さと、導出された「半分」の長さを使います。典型的な定義は次のとおりです。
- n をHMAの長さとします。
- 価格系列に対して WMA(n/2) を計算します。
- 価格系列に対して WMA(n) を計算します。
- 中間系列を作ります:
- 2 · WMA(n/2) − WMA(n)
- 最後に、その中間系列を長さ √n のWMAで平滑化します:
HMA(n) = WMA( √n, 2 · WMA(n/2) − WMA(n) )
これにより、単一の移動平均よりも素早く反応しつつ、ある程度の遅れを抑えることを目指した平均になります。
メカニズムと定義
式がどのように機能するかを説明するには、安定した仕組み(数学的な構造)と、変動する条件(入力の選び方や実務上の細部の扱い)を分けて考えると役立ちます。
1) 入力
- 価格系列:データ点の並び(たとえば、1本のバーごとの終値など)。HMAは単一の価格ではなく、系列に対して定義されます。
- 長さ n:正の数で、滑らかさと反応性を制御します。
2) 重要な構成要素:加重移動平均(WMA)
WMAは、古い観測よりも直近の観測により大きな重みを与える移動平均です。選択した長さ L に対する、時刻 t のWMAは概念的に次のように書けます:
- tにおけるWMA(L) = tで終わる直近L個の価格点の加重平均
厳密な重み付けの方式は通常、線形(重みが直近に向かって増える)ですが、HMA計算のすべての部分で一貫したWMA定義を使う必要があります。
3) HMAのデータフロー
HMAは3つの段階を使います:
段階A:半分の長さによる平滑化
- WMA(n/2) を計算します。これは、使う点数が少ない(平滑化が弱い)ため、通常 WMA(n) よりも素早く反応しやすくなります。
段階B:トレンド形成のための組み合わせ
- 半分の長さの平滑化と、フルの長さの平滑化を組み合わせます:
- 2 · WMA(n/2) − WMA(n)
- この「差を取り、その後スケールする」構造は、より速い平均(半分の長さ)と、より遅い平均(フルの長さ)を対比させることで、遅れを調整することを意図しています。
段階C:√nでの最終平滑化
- 段階Bの中間系列に対して、長さ √n を使ってWMAをもう一度適用します。
- √n は n より小さいため(n>1の場合)、この最終平滑化は結果を反応的に保ちつつ、ノイズを抑えることを狙います。
4) 明示すべき実務上の前提
式には n/2 と √n が含まれるため、非整数の長さに対して決定論的なルールが必要です:
- プラットフォームがWMAに整数の期間を要求する場合、n/2 と √n をどう丸めるかを決める必要があります(例:floor、ceil、または最近傍)。
- nが小さい場合、√n が非常に小さな整数に崩れてしまい、最終平滑化が弱くなって出力がギザギザになりやすくなります。
再現できる証拠または例
以下は、自己完結した例のアウトライン(ライブ価格は想定しません)です。任意の数値の価格系列で再現できます。
例のセットアップ
- 長さ n = 16 を選びます。
- すると:
- n/2 = 8
- √n = 4
- 合意したWMA定義を選びます(例:線形の重み 1..L、または電卓が使う任意の一貫した方式)。
- P[t] を時刻 t の価格とします。
手順ごとの計算(概念)
履歴が十分に存在する各時刻 t で:
- A[t] = WMA(8) of P(tで終わる直近8本の価格)を計算します。
- B[t] = WMA(16) of P(tで終わる直近16本の価格)を計算します。
- 中間系列を作ります:
- C[t] = 2 · A[t] − B[t]
- 最終HMAを計算します:
- HMA[t] = WMA(4) of C(tで終わる直近4つのC値)
独立して検証すべきこと
- あなたのHMA計算機が同じ構造に従っていることを確認する:WMA(n/2) と WMA(n) を 2·WMA(n/2) − WMA(n) として組み合わせ、その後 WMA(√n) で平滑化する。
- n/2 と √n が整数でないときにどう丸めるかを確認する。
- WMAを正しい系列に適用していることを確認する(最初のWMAは価格系列;最終のWMAは中間のC系列)。
制限とリスク(計算の失敗として確認できること)
HMAは正しく計算できても、仕組みやデータ制約を無視すると解釈が失敗することがあります。主な制限には次が含まれます:
1) 開始時のエッジ効果
WMA(n) は少なくとも n 個の先行データ点が存在するまで計算できず、最終の WMA(√n) も十分な中間値が揃うまで計算できません。その結果:
- 初期のHMA値は欠ける、遅れる、または実装に応じて短い有効履歴に基づくことがあります。
2) 非整数の長さの扱いが結果を変える
あるプラットフォームが n/2 または √n を整数に変換する方法が異なると、HMA値は目立って変わる可能性があります。「HMAを使っている」2つのチャートを比較するときに、丸めルールが異なることによって起きる典型的な失敗モードです。
3) WMA定義を一致させる必要がある
WMAは「何らかの加重平均」ではありません。あるツールが線形の重みを使い、別のツールが別の重み付け方式を使う場合、同じnで同じ価格系列でもHMAの出力は変わります。
4) ノイズの多い入力と時間解像度への感度
HMAは系列に適用される平滑化手法なので、その見え方は次に依存します:
- 選択した価格タイプ(例:終値 vs 別の系列)、および
- データの間隔(バーのサイズ)。 ある解像度での過去パターンが、別の解像度で同様の挙動を保証するわけではありません。
検証と次に尋ねるべきこと
理解を独立して検証し、食い違いを避けるには:
- WMA( √n, 2·WMA(n/2) − WMA(n) ) に一致するHMAの書式(数式)から始めます。
- n、あなたの WMAの重み付けスキーム、および n/2 と √n の 丸めルール を指定します。
- 小さく手作業で選んだ数値系列でHMAを再計算し、計算機と比較します。
結果が異なる場合、最も有用な次の質問は次です:その計算機は、分数の期間に対して同じWMAの重み付けスキームと丸めを使っていますか?
また、nを変えることで遅れと滑らかさがどう変わるかも調べられますが、それは将来の結果を示す単独の指標として扱わず、平滑化メカニズムの性質として扱ってください。