2010年11月2日火曜日

平均移動からの乖離率を正規化

(例えばRSI等の指標が0-100の範囲で正規化されているのに対し)モーメントや平均移動からの乖離率等の指標は正規化されていないので今一つ使い勝手が良くないと思っていました。しかしモーメントにしても乖離にしても今後システムの中で利用したいなと考えている指標なので何か良い正規化の方法はないかなと考えていました。

いろいろ考えたのですが私の結論としては過去のデータに頼るのがベストなのかなと。

過去のデータでこれらの指標の値を毎足(例えば1時間足であれば毎時)計算してその平均と標準偏差を求めておいて、それらの平均と標準偏差を使った正規化を行うというものです。

具体的には例えば単純平均移動(20)からの乖離率をデータがある分だけすべて計算させたくさん計算された乖離率の平均と標準偏差を求めます。この例で実際に過去10年分16通貨ペアすべての1時間足で計算を行うと平均はほぼゼロ、標準偏差は0.382681との結果がでました。

この数値を使って得られた乖離率の正規化を行おうと考えたのですが、ボリンジャーバンド入門(ボリンジャー氏著)という本に載っていた %b というボリンジャーバンドベースの指標と同じような考え方で±2.0×標準偏差をそれぞれ0と100に対応させるように計算させようと考えました。例えばRSI等のように0を下限、100を上限とするのであれば以下の式で得られた乖離率から0から100の範囲の数値が求められるはずです。(ボリン等と同様確率的に100を超える(ボリンでいうところの2σ超え)こともありますし0以下になることもありますが概ねこの範囲に収まることで良しとすることにしようと考えて計算させてみました)
得られた乖離率÷標準偏差×25+50

結果は以下のとおりで良好な感じです。0以下で結構-方向に乖離しているとわかり、100以上で結構+方向に乖離しているということがわかる(はず)です。

同時期のSMA(20)と終値は以下のとおりです。

もう少し調べてヒストグラムを見てみました。1時間足でSMA(20)からの乖離率を16通貨ペア10年分程のデータ調べたところ以下のような感じです。

分布は正規分布でないようでとても尖がっています。(尖度=18.4215) 正規分布を仮定できない場合の信頼区間はどうやって計算させればよいかいろいろ調べてやっとたどり着いたあるサイトに97.5%と2.5%のパーセンンタイルを求めてそれを使えば良いというようなことが書いてありました。

そこで2×標準偏差の場合とパーセンタイルベースの場合でどのくらい違う結果になるかを見てみました。パーセンタイルベースだと95%信頼区間は -0.78368~0.73508 という結果で標準偏差×2.0だと信頼区間は -0.76536~0.76536 なので自分の中では標準偏差×2.0を使って問題無しと結論づけました。

その後乖離率以外でもやってみようと思い、手始めに標準偏差(20)をやってみました。標準偏差は乖離率と違って分布が以下のように左右対称ではありません。(※標準偏差(20)の20は期間を表しています。今回は時間足なので過去20時間の平均からのばらつきを表しています)

左右対称でないためか乖離率の時のような標準偏差×2.0というやり方は通用しませんでした。今回の平均は 0.2223、標準偏差(標準偏差の標準偏差ということです)は 0.1864でした。そのまま標準偏差×2.0を計算すると下限が0より小さくなって明らかにおかしいことになっています。 なのでパーセンタイルベースで95%信頼区間と99%信頼区間を求めて見ました。95%信頼区間は0.04459~0.69156ということが分かりました。この値を上限下限にして正規化してみた標準偏差と同時期の価格変動(及び参考にボリンバンド)は以下のような感じでなかなか良い感じです。

ボリンで+2σもしくは-2σにタッチしている箇所が何か所かありますがそこでの真ん中の線から2σまでの距離÷2が即ち標準偏差ということなのですが、正規化(と言えるか分かりませんが...)されていた標準偏差を見たほうがこのバンドの幅の部分については良く分かりやすい感じです。

0 件のコメント: