移動平均のソースを表示
←
移動平均
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''移動平均'''(いどうへいきん)は、[[時系列]]データ(より一般的には時系列に限らず系列データ)を[[平滑化]]する手法である<ref>{{Cite web |url=https://www.stat.go.jp/teacher/glossary-a-i.html#moving-average |title=基本用語集(い) |website=統計学習の指導のために(先生向け) |publisher=[[統計局]] |language=ja |accessdate=2024-06-22}}</ref>。音声や画像等のデジタル信号処理に留まらず、[[金融]](特に[[テクニカル分析]])分野、[[気象]]、[[水象]]を含む[[計測]]分野等、広い技術分野で使われる。[[有限インパルス応答]]に対する[[ローパスフィルタ]]([[デジタルフィルタ]])の一種であり、分野によっては'''移動積分'''とも呼ばれる。 主要なものは、単純移動平均と加重移動平均と指数移動平均の3種類である。普通、移動平均といえば、単純移動平均のことをいう。 ==単純移動平均== '''単純移動平均''' ({{lang-en-short|Simple Moving Average}}; SMA) は、直近の ''n'' 個のデータの重み付けのない単純な[[平均]]である。例えば、10日間の終値の単純移動平均とは、直近の10日間の終値の平均である。それら終値を <math>p_{M}</math>, <math>p_{M-1}</math>, ..., <math>p_{M-9}</math> とすると、単純移動平均 SMA(''p'',10) を求める式は次のようになる: :<math>\text{SMA}_{M} = { p_{M} + p_{M-1} + \cdots + p_{M-9} \over 10 }</math> 翌日の単純移動平均を求めるには、新たな終値を加え、一番古い終値を除けばよい。つまり、この計算では、改めて総和を求め直す必要はない<ref group="注釈">[[数値計算]]上は、丸め誤差が累積する事に注意。</ref>。 :<math>\text{SMA}_\mathrm{today} = \text{SMA}_\mathrm{yesterday} - {p_{M-n+1} \over n} + {p_{M+1} \over n}</math> テクニカル分析では様々な ''n'' の値が使われる(5、22、55、200など)<ref name="ForexAbode">[http://www.forexabode.com/technical-analysis/moving-averages Moving Averages page] at ForexAbode.com</ref>。期間の選択は注目している動きの種類に依存する。すなわち短期間の動きなのか、中期間の動きなのか、長期間の動きなのか、である。いずれにしても、移動平均線は、市場が上昇傾向(ブルマーケット)にある場合は[[支持線 (テクニカル分析)|サポート]]として働き、下降傾向(ベアマーケット)にある場合は[[抵抗線 (テクニカル分析)|レジスタンス]]として働く。 一般に移動平均線は実際の動きから少し遅れて平滑化した上で追随する。SMA をあまりに長期間の平均を取るようにすると、現在の平均的な価格からかけ離れた古い価格の影響を受けすぎることがある。これに対処するために考案された、最近の価格に大きな重み付けを与える方式として、後述する[[#加重移動平均|WMA]]と[[#指数加重移動平均|EMA]]がある。 SMAの特徴として、データに周期的変動があるとき、その周期でSMAを求めると周期が平滑化される。しかし、経済や金融では完全な周期的変動が生じることはほとんどない<ref>Ya-lun Chou, ''Statistical Analysis'', Holt International, 1975, ISBN 0030894220, section 17.9.</ref>。 ==加重移動平均== 加重平均とは、個々のデータに異なる重みをつけて平均を計算するものである。単に'''加重移動平均''' ({{lang-en-short|Weighted Moving Average}}; WMA) と言った場合、'''線形加重移動平均''' ({{lang-en-short|Linear Weighted Moving Average}}; LWMA) のことを指し、重みを徐々に線形に(一定量ずつ)減らす手法を指す。''n'' 日間の WMA では、最も現在に近い日の重みを ''n'' とし、その前日を ''n''-1、…… のように重みを減らしていって、最終的にゼロにする。 :<math>\text{WMA}_{M} = { n p_{M} + (n-1) p_{M-1} + \cdots + 2 p_{M-n+2} + p_{M-n+1} \over n + (n-1) + \cdots + 2 + 1}</math> [[画像:Weighted moving average weights N=15.svg|thumb|right|WMA の重み付け N=15 の場合]] 翌日の WMA を計算するには、<math>\text{WMA}_{M+1}</math> と <math>\text{WMA}_{M}</math> の分子 (numerator) の差分が <math>n p_{M+1} - p_{M} - \cdots - p_{M-n+1}</math> であることに注目する。ここで、''n'' 日間の総和 <math>p_{M} + \cdots + p_{M-n+1}</math> を <math>\text{Total}_{M}</math> で表すと、次のようになる: :<math>\text{Total}_{M+1} = \text{Total}_{M} + p_{M+1} - p_{M-n+1}</math> :<math>\text{Numerator}_{M+1} = \text{Numerator}_{M} + n p_{M+1} - \text{Total}_{M}</math> :<math>\text{WMA}_{M+1} = { \text{Numerator}_{M+1} \over n + (n-1) + \cdots + 2 + 1}</math> この分母は[[三角数]]であり、<math>n(n+1)\over2</math> として簡単に計算できる。 上図は、WMA での重みがどのように変化(減少)するかを示したものである。次節の指数平滑移動平均での重みと比較するとよい。 ==指数移動平均== [[画像:Exponential moving average weights N=15.png|thumb|right|EMA の重み付け N=15 の場合]] '''指数移動平均'''({{lang-en-short|Exponential Moving Average}}; EMA) では、[[指数関数]]的に重みを減少させる。'''指数加重移動平均''' ({{lang-en-short|Exponentially Weighted Moving Average}}; EWMA)、'''指数平滑移動平均''' ({{lang-en-short|Exponentially Smoothed Moving Average}}) とも呼ばれる。重みは[[指数関数的減衰|指数関数的に減少]]するので、最近のデータを重視するとともに古いデータを完全には切り捨てない(重みは完全にゼロにはならない)。右図は、重みの減少する様子を表したものである。なお、EMA は移動平均とは呼べないとする立場もあり、その場合は'''指数平滑平均''' ({{lang-en-short|Exponential Average}}) と呼ぶ。 重みの減少度合いは'''平滑化係数'''と呼ばれる 0 と 1 との間の値をとる定数 {{mvar|α}} で決定される。{{mvar|α}} は百分率で表現されることもあり、平滑化係数が 10% というのは {{mvar|α}}=0.1 と同じことを表している。{{mvar|α}} を時系列区間 ''N'' で表すこともあり、その場合は <math>\alpha={2\over{N+1}}</math> となる。例えば、''N''=19 なら {{mvar|α}}=0.1 となる。重みの半減期(重みが0.5以下となる期間)は、約 ''N''/2.8854 である(''N''>5 のとき1%の精度で)。 時系列上のある時点 ''t'' の値を ''Y''<sub>''t''</sub> で表し、ある時点 ''t'' での EMA を ''S''<sub>''t''</sub> で表す。''S''<sub>1</sub> は定義しない。''S''<sub>2</sub> の値をどう設定するかにはいくつかの手法があり、''S''<sub>2</sub> の値を ''Y''<sub>1</sub> とすることが多いが、''S''<sub>2</sub> を時系列上の最初の4つか5つのデータの平均とすることもある。{{mvar|α}} が小さい場合、''S''<sub>2</sub> をどう設定するかは比較的重要であるが、{{mvar|α}} が大きい場合は(古い値の重みが小さくなるので)重要ではない。 ''t''≧3 の場合の EMA の計算式は次のとおりである。<ref name="#1">[http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc431.htm NIST/SEMATECH e-Handbook of Statistical Methods: Single Exponential Smoothing] [[アメリカ国立標準技術研究所]]</ref> :<math>S_{t} = \alpha \times Y_{t-1} + (1-\alpha) \times S_{t-1}</math> この計算式は Hunter (1986)によるものである<ref name="#1"/>。各データの重みは、<math>\alpha(1-\alpha)^x Y_{t-(x+1)}</math> になる。Roberts (1959) では ''Y''<sub>''t''-1</sub> の代わりに ''Y''<sub>''t''</sub> を使っていた<ref>[http://www.itl.nist.gov/div898/handbook/pmc/section3/pmc324.htm NIST/SEMATECH e-Handbook of Statistical Methods: EWMA Control Charts] [[アメリカ国立標準技術研究所]]</ref>。 この式をテクニカル分析の用語を使って表すと次のようになる。用語が異なるだけで同じ式である :<math>\text{EMA}_\mathrm{today} = \text{EMA}_\mathrm{yesterday} + \alpha \times (\text{price}_\mathrm{yesterday} - \text{EMA}_\mathrm{yesterday})</math> この式で <math>\text{EMA}_\mathrm{yesterday}</math> を展開すると次式のような[[べき級数]]となり、各時点の価格 ''p''<sub>1</sub>, ''p''<sub>2</sub>, …… が指数関数的に重み付けされている。 :<math>\text{EMA}_{M} = \alpha \times \left( p_{M} + (1-\alpha) p_{M-1} + (1-\alpha)^2 p_{M-2} + \cdots \right)</math><ref group="注釈"><math>1/\alpha = 1+(1-\alpha)+(1-\alpha)^2+\cdots</math> なので、 :<math>\text{EMA} = { p_{M} + (1-\alpha) p_{M-1} + (1-\alpha)^2 p_{M-2} + (1-\alpha)^3 p_{M-3} + \cdots \over 1 + (1-\alpha) + (1-\alpha)^2 + (1-\alpha)^3 + \cdots }</math></ref> 理論上これは[[総和]]であるが、1−{{mvar|α}} が 1より小さいので、項はどんどん小さくなって、ある項から先は無視できる大きさになる。 ''N'' 日間の EMA といった場合の ''N'' は単に係数 {{mvar|α}} を示すに過ぎず、実際の計算は ''N'' 日間のデータだけでは済まない。ただし、直近の ''N'' 日間のデータが EMA において 86 %の重みをもつ。証明: :<math> {{\alpha \times \left(1+(1-\alpha)+(1-\alpha)^2+\cdots +(1-\alpha)^N \right)} \over {\alpha \times \left( 1+(1-\alpha)+(1-\alpha)^2+\cdots +(1-\alpha)^\infty \right)}} = 1-{\left(1-{2 \over N+1}\right)}^{N+1}</math> :(左辺の分母は1であり、分子の[[等比数列]]の和が右辺の形になる<ref group="注釈">分子は <math>\alpha \left({1-(1-\alpha)^{N+1} \over 1-(1-\alpha)}\right)</math> である。</ref>。)この極限値は、 ::<math>\lim_{N \to \infty} \left[ 1 - \left(1-{2 \over N+1}\right)^{N+1} \right]</math> = 1−e<sup>−2</sup> ≒ 0.8647 :になる<ref group="注釈">(1+''x''/''n'')<sup>''n''</sup> の極限値は、''n''→∞ のとき e<sup>''x''</sup> になる。</ref>(e は[[ネイピア数]])。 実際には、上のべき級数の式を使って最初のある日までの EMA を計算し、その翌日以降は最初のほうで示した式を使えばよい。 初期値の問題に戻る。古いデータに極めて大きな値があった場合、たとえその重みが小さくても全体には大きな影響を与える。そういう場合には、価格変動がそれほど大きくないと仮定できるなら、重みだけを考慮してある項目数 ''k'' までで計算を打ち切ればよい。このとき、省略される項の重みは : <math>\alpha \times \left( (1-\alpha)^k + (1-\alpha)^{k+1} + (1-\alpha)^{k+2} + \cdots \right)</math> :<math>= \alpha \times (1-\alpha)^k \times \left(1 + (1-\alpha) + (1-\alpha)^2 + \cdots \right)</math> :<math>= (1-\alpha)^k</math> となる。すなわち、全体の重み 1 に対して <math>(1-\alpha)^k</math> に相当する部分が省略されることになる。 例えば、99.9 %の重み(精度)で計算したい場合には、計算する項目数を <math>k={ \log (0.001) \over \log (1-\alpha)}</math> とすればよい。<math>\log\,(1-\alpha)</math> は ''N'' が増えるに従って <math>-\alpha = {-2 \over {N+1}}</math> に近づいていく<ref group="注釈">{{mvar|α}}→0 のとき、[[テイラー展開]]によって、log(1−{{mvar|α}}) = −{{mvar|α}} −{{mvar|α}}<sup>2</sup>/2 - … → −{{mvar|α}} である。</ref>から、''N'' が大きいときは <math>k=3.45(N+1)</math> <ref group="注釈">log<sub>e</sub>(0.001) / 2 = -3.45</ref>とすればほぼ 99.9% の精度となる。 なお、<math>\alpha={2\over{N+1}}</math> ではなく <math>\alpha={1\over{N}}</math> とする EMA もある(次節)。 ===修正移動平均=== '''修正移動平均''' (Modified Moving Average; MMA) は、Running Moving Average (RMA)、'''平滑移動平均''' (Smoothed Moving Average) などと呼ばれる。 定義は次式による。 :<math>\text{MMA}_\mathrm{today} = {(N - 1) \times \text{MMA}_\mathrm{yesterday} + \text{price} \over{N}}</math> 要するに、<math>\alpha={1\over{N}}</math> とした指数移動平均である。 ==三角移動平均== Triangular Moving Average (TMA)。三角形移動平均ともいう。単純移動平均を2回適用したものである。 定義は以下のとおり。''w'' は (N+1)/2 の切り上げとする。 :<math>\text{TMA} = \text{SMA}(\text{SMA}(\text{price}, w), w)</math> 重みのグラフが[[二等辺三角形]]となる。''w'' - 1 日前に最も大きな重みがかかる。 ==正弦加重移動平均== Sine Weighted Moving Average (SWMA)。加重移動平均において、重みのかけ方に[[正弦波]]([[三角関数]])を利用する。線形加重移動平均に近い <math>\cos</math> を利用する方法と、三角移動平均に近い <math>\sin</math> を利用する方法がある。 ==累積移動平均== Cumulative moving Average (CA)。全期間の平均をとった移動平均。 定義は次式のとおり。 :<math>\text{CA}_i = {{x_1 + \cdots + x_i} \over i}</math> <ref group="注釈"><math>\text{CA}_{i} = {i \text{CA}_{i-1} + {x_{i}} \over {i}}</math> としても計算できる。</ref> ==一般化した移動平均== より一般化し、重みを任意に決めたものは、移動平均とは呼ばれず、[[畳み込み]]や[[有限インパルス応答|FIR]]フィルタリングなどと呼ばれることが多い。 しかし、「[[自己回帰移動平均モデル]]」の「移動平均」は、この一般化した意味である。 ==KZフィルタ== 単純移動平均より良好な周波数特性を得るため、単純移動平均を数回繰り返すことがある。この操作によってかけられるフィルタを[[コルモゴロフ・ズルベンコ・フィルタ]] (Kolmogorov-Zurbenko filter、KZフィルタ) という。 回数を十分増やすと、KZフィルタの[[インパルス応答]]は[[ガウス関数]]に[[漸近]]する。 ==脚注== {{脚注ヘルプ}} === 注釈 === {{Notelist}} === 出典 === {{reflist}} == 関連項目 == {{columns-list|35em| *[[平均]] *[[テクニカル分析]] *[[大数の法則]] *[[罫線表]] *[[移動平均線]] *[[株式]] *[[株価]] *[[為替]] *[[外国為替]] *[[システムトレード]] *[[三尊天井]] }} <!-- 移動平均の範囲から逸脱している == 罫線表の種類 == * 価格の変動を表す罫線表 ** 横軸に定間隔に時間をとる罫線表 *** [[とめ足]] *** [[ほし足]] *** [[棒足]] *** [[いかり足]] *** [[ローソク足]] *** [[移動平均線]] *** [[一目均衡表]] *** [[MACD]] *** [[RSI]] *** [[W%R]] *** [[ボリンジャーバンド]] *** [[ストキャスティクス]] *** [[ペンタゴンチャート]] ** 横軸に不定な時間をとる罫線表 *** [[かぎ足]] *** [[練行足]](練り足) *** [[新値足]] *** [[ポイントアンドフィギュア]] * その他の罫線表 ** [[逆ウォッチ曲線]] ** [[サイコロジカルライン]] ** [[騰落レシオ]] --> ==外部リンク== *[https://www.investopedia.com/terms/m/movingaverage.asp Moving Averages at Investopedia] *[http://www.noviway.com/Code/Statistics.aspx Moving Average Code Implementation] [[Category:テクニカル分析|いとうへいきん]] [[Category:信号処理|いとうへいきん]] [[Category:統計学|いとうへいきん]] [[Category:時系列分析|いとうへいきん]]
このページで使用されているテンプレート:
テンプレート:Cite web
(
ソースを閲覧
)
テンプレート:Columns-list
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Mvar
(
ソースを閲覧
)
テンプレート:Notelist
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
移動平均
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報