Pythonで加重移動平均線(WMA)を実装、描画する方法

スポンサーリンク

今回は、Pythonで加重移動平均を計算してみましょう。

Weight Moving AverageまたはWMAは、取引のセットアップで広く使用されています。


スポンサーリンク

移動平均を理解する

移動平均は、完全なデータセットの異なる部分集合の平均を計算することによって、時系列データを分析するために使用されます。

移動平均は、転がり平均や走行平均としても知られています。

また、データセットの平均を取ることから、Rolling MeanまたはMoving Meanとも呼ばれます。

移動平均は、主に時系列データで使用され、より長いトレンドに焦点を当てながら、短期的な変動を捕捉します。

データを平滑化することができる。

ARIMA(Autoregressive Integrated Moving Average Model)アルゴリズムは、時系列データの予測に移動平均を使用します。

例 株価、天気予報、大気質、国内総生産、雇用など。


移動平均の種類

  • 単純移動平均 (SMA)
  • 累積移動平均(CMA)
  • 指数移動平均(EMA)
  • 加重移動平均(WMA)

単純移動平均 (SMA)

単純移動平均(SMA)は、スライディングウィンドウを使用して、設定された期間 の平均を取ります。

単純移動平均は、取引システムや投資判断の枠組みを構築するために価格シ リーズに適用できる、いくつかの移動平均のうちの1つに過ぎません。

その中でも、金融市場で一般的に使用されている移動平均は、次の2つです。

  • 加重移動平均
  • 指数移動平均(Exponential Moving Average

加重移動平均 (WMA)

加重移動平均(WMA)は、直近のデータポイントに大きなウェイトを、遠い過去のデータポイントに小さなウェイトを割り当てるテクニカル指標です。

データセット内の各数値にあらかじめ決められた重みをかけ、その結果を合計することでWMAが得られます。

WMAは、トレーダーが株式の売買タイミングを示す売買シグナルを生成するために使用されます。

ここで簡単な例を挙げてみましょう。


日足チャート上の3つの終値のWMAを計算する必要があるとします。

価格はそれぞれ₹10、₹12、₹15で、₹15は最新の価格です。

各価格には、その価格の新しさに基づいて重みが付けられます。

つまり、この場合、₹15は3、₹12は2、₹10は1という重みが割り当てられます。

これは単純化しすぎた計算で、実際のシナリオでは、計算の重みが小数点以下であることもあることを覚えておいてください。

次に、時間帯の重みの和を計算するので、1+2+3=6となります。

最後に、次のように重みをつけてWMAを計算します。

[(₹15 * 3) + (₹12 * 2) + (₹10 * 1)]/6 = 13.1666666667

計算上、上記価格の3期間WMAは13.1666666667となる。


Pythonで加重移動平均式を実装する

それでは、先ほどお話したWMAの計算式をPythonで実装してみましょう。

以下の関数は、関数に渡す時系列データであれば、どのようなものでも使用できます。

def weightedmovingaverage(Data, period):
    weighted = []
    for i in range(len(Data)):
            try:
                total = np.arange(1, period + 1, 1) # weight matrix
                matrix = Data[i - period + 1: i + 1, 3:4]
                matrix = np.ndarray.flatten(matrix)
                matrix = total * matrix # multiplication
                wma = (matrix.sum()) / (total.sum()) # WMA
                weighted = np.append(weighted, wma) # add to array
            except ValueError:
                pass
    return weighted

ランダム価格データで出力。

Wma

まとめ

加重移動平均は、遠い過去のデータポイントよりも現在のデータポイントの方がより関連性が高いため、より重い加重を割り当てます。

加重の合計は1(または100%)になるはずです。

単純移動平均の場合、重み付けは等しく配分されます。

Pythonに関する他の記事もお楽しみに!

タイトルとURLをコピーしました