お水の花道:ストキャス計算できますか?
ボリンジャーバンド(Bollinger bands)を勉強し始めたら,そもそも(そもそもオジサン出動!)ボリンジャーバンドを考案したジョン・ボリンジャー氏は,1950年代にジョージ・レーン氏が考案したインジケータ,ストキャスティクス(stochastic oscillator)の改良版として(ボラティリティを考慮するために)ボリンジャーバンドを考案したということが判明した.しかもボリンジャー氏は「ストキャスティクスはスイス軍のアーミーナイフのようだ」と言って,その万能性を褒め称えているという.
というわけで,「ボリンジャーバンドの前にストキャスティクスの理解を」と思い立ったのではあるが,如何せんちゃんと定義から説明してくれる動画・サイトが皆無に等しいことに気付いた.かろうじて,小次郎講師は定義から説明してくれてはいるが,やはり数式を前面に出すのは気が引けるらしく,最終的には直感的な説明に終わっている.そこで,ChatGPTに質問するも,明らかに誤った回答をしてくる始末.英語版のWikipediaが間違っている(2024年12月現在)ので推して知るべしと言ったところか.というわけで,自分でまとめるしかないと思ったのが,本稿執筆の切っ掛けである.
Wikipedia英語版(2024年12月現在)は何を間違っているのかを先に言うと,$${\%D}$$の計算方法である($${\%SD}$$に関しては計算方法は書いていない.また,日本語版は正しい).「$${\%D}$$は$${\%K}$$の$${Y}$$期間単純移動平均」(典型的には$${Y=3}$$)として定義される.ここまではいいが,例えば,3つの$${\%K}$$の値$${\%K_1, \%K_2, \%K_3}$$の平均は明らかにそれらの算術平均$${\frac{\%K_1+\%K_2+\%K_3}{3}}$$ではない.しかし,Wikipedia英語版はこうした間違いを平然としているのである(推し並べてWikipediaのテクニカル分析に関する記述は英語版も日本語版もお粗末である).割合の平均は割合の算術平均でないことは,一般に二つの食塩水を混ぜたときの濃度が二つの濃度の算術平均でないのと同じで,中学生でも知ってる常識である.この点を理解している人は,以下を読む必要はない.
%K, %D, %SDの定義
まずは,ストキャスティクスで用いられる3つの値,$${\%K, \%D, \%SD}$$(slow $${\%D}$$を$${\%SD}$$と書くことにする)を定義してみよう.ある通貨ペアに関して日足の為替レート(株価でもよい)がデータとして与えられていることを想像して頂きたい.そのとき,ある日の$${\%K}$$は,その日の終値を$${C}$$,その日から数えて日付を遡って$${X}$$日間のなかの最高値(さいたかね)を$${H}$$,最安値(さいやすね)を$${L}$$として,次のように定義される.
$$
\begin{align*}{}
\% K:=\frac{C-L}{H-L} \times 100.
\end{align*}
$$
コップの底に最安値$${L}$$,コップの飲み口に最高値$${H}$$,コップに入っている水の水面に終値$${C}$$を対応させるならば,$${\%K}$$はコップの容積の何%を水の体積が占めているかを表す量である(図2).
そして,$${\%D}$$は$${\%K}$$の$${Y}$$日にわたる単純移動平均(SMA: Simple Moving Average),$${\%SD}$$は$${\%D}$$の$${Z}$$日にわたる単純移動平均として定義される(これを次のように書く慣習があるらしい).
$$
\begin{align*}{}
\% D&:=SMA(\%K, Y),\\
\% SD&:=SMA(\%D, Z).
\end{align*}
$$
ポイント:割合の平均は割合の算術平均にあらず!
ここまではどこにでも書いてあるストキャスティクスの定義で,間違いはない.問題は上で定義された$${\%D, \%SD}$$をどうやって計算するかという点である.先に述べたように,$${\%K}$$は割合(比率)であるから,$${Y}$$個の$${\%K}$$があったときに,それらの算術平均(相加平均)として$${\%D}$$を求めることはできない.これはコップの水で考えれば当たり前である.大きさの異なる二つのコップに異なる割合で水が入っていて,それらの水を二つのコップの容積の合計と同じだけの容積をもつ大きなコップに注いだとき(図3),大きなコップの容積を水の体積が占める割合は,元の二つのコップの水の割合の算術平均ではない.
正しい計算は次式で与えられる.
$$
\begin{align*}{}
\% D&=\frac{\sum_{i=1}^Y (C_i-L_i)}{\sum_{i=1}^Y (H_i-L_i)} \times 100.
\end{align*}
$$
ここで,$${C_i, H_i, L_i \;(i=1,2,\cdots,Y)}$$は$${Y}$$個の$${X}$$日期間それぞれにおける終値,最高値,最安値である.分母は$${Y}$$個のコップの容積の合計,分子は水の体積の合計に対応する.ちなみに,$${i}$$番目の$${X}$$日期間における$${\%K}$$は次式で与えられる.
$$
\begin{align*}{}
\% K_i=\frac{C_i-L_i}{H_i-L_i} \times 100 \;\;\; (i=1,2,\cdots,Y).
\end{align*}
$$
例で考える
$${\%SD}$$まで考えようとすると,さらに込み入ってくるので,ここいらで少し具体的に考える.ある通貨ペアの為替レートの9日分の終値がデータとして与えられているとしよう(図4).まず,そのデータから期間$${X=4}$$の$${\%K_i \; (i=1,2,\cdots,6)}$$を算出する(番号の付け方に注意:便宜上,日付の遅い方から$${1,2,\cdots,6}$$と番号を振っている).次に,$${Y=3}$$個の$${\%K_i}$$の平均として$${\%D_i \; (i=1,2,3,4)}$$を算出する.そして最後に,$${Z=2}$$個の$${\%D_i}$$の平均として$${\%SD_i \; (i=1,2,3)}$$を算出することにする.
$${K_i}$$の計算は既に述べたように,
$$
\begin{align*}{}
\% K_i=\frac{C_i-L_i}{H_i-L_i} \times 100 \;\;\; (i=1,2,\cdots,6)
\end{align*}
$$
となる.続いて,$${D_i}$$の計算は($${\%K_i}$$の算術平均ではなく)次のようになる.
$$
\begin{align*}{}
\% D_1 &= \frac{\sum_{i=1}^3 (C_i-L_i)}{\sum_{i=1}^3 (H_i-L_i)} \times 100,\\
\% D_2 &= \frac{\sum_{i=2}^4 (C_i-L_i)}{\sum_{i=2}^4 (H_i-L_i)} \times 100,\\
\% D_3 &= \frac{\sum_{i=3}^5 (C_i-L_i)}{\sum_{i=3}^5 (H_i-L_i)} \times 100,\\
\% D_4 &= \frac{\sum_{i=4}^6 (C_i-L_i)}{\sum_{i=4}^6 (H_i-L_i)} \times 100.
\end{align*}
$$
そして最後に,$${\%SD_i}$$は($${\%D_i}$$の算術平均ではなく)次のように計算される.
$$
\begin{align*}{}
\% SD_1 &= \frac{\sum_{i=1}^3 (C_i-L_i)+\sum_{i=2}^4 (C_i-L_i)}{\sum_{i=1}^3 (H_i-L_i)+\sum_{i=2}^4 (H_i-L_i)} \times 100,\\
\% SD_2 &= \frac{\sum_{i=2}^4 (C_i-L_i)+\sum_{i=3}^5 (C_i-L_i)}{\sum_{i=2}^4 (H_i-L_i)+\sum_{i=3}^5 (H_i-L_i)} \times 100,\\
\% SD_3 &= \frac{\sum_{i=3}^5 (C_i-L_i)+\sum_{i=4}^6 (C_i-L_i)}{\sum_{i=3}^5 (H_i-L_i)+\sum_{i=4}^6 (H_i-L_i)} \times 100.
\end{align*}
$$
ここまであからさまに$${\%SD}$$の表式を書いてくれている文献は,少なくともネット上には見つけられなかったので,ひょっとしたら誰かの役に立つのかもしれない.
議論
一般の$${X,Y,Z}$$に関しても$${\%D_i, \%SD_i}$$に関する公式を作ることができそうだけど,煩雑になるからやめておこう.
例えば,$${\%SD_1}$$を見ると,$${i=2,3}$$からの寄与が$${i=1}$$(や$${i=4}$$)からの寄与より大きくなることが分かる.本来$${\%SD_1}$$は9日目における相場の様子に関する量であって欲しいから,これはあまり好まし性質とは言えない.これは,「平均の平均」をとったことによる弊害とも言える.こう考えると,より最近の為替レート(または株価)からの寄与に重みをつける指数平滑移動平均という考え方の重要性が窺える.
小次郎講師は下の動画で本稿の基本的な部分を説明してくれている.