2009/08/21

フラクタル?呪縛?


先回の投稿で『フラクタル』なる言葉が登場しました。
今回は、フラクタルについて考えるというよりも、為替データを解析していて思わず遭遇してしまったので今回の内容にしました。
まず、『フラクタル』とは、フランスの数学者ブノワ・マンデルブロ (Benoît Mandelbrot) が導入した幾何学の概念。図形の部分と全体が自己相似になっているものなどをいう。(by Wikipedia
為替などの時系列データに置き換えると、いかなる時間足データ間(M1:M5:H1:H4:D1・・・or)を見ても似たような図形、法則が見られることを言う。
で! 今回行った解析が、『値が連続的に増加若しくは減少した、バーの数をカウントして、その出現率を調べる。』です。
【適用内容】
適用通貨ペア:USDJPY
適用範囲  :M1:M5:M30:H1:H4:D1
適用値   :Open[n]-Open[n+1]
プログラム :
+―――――――――――――――――――――+
while(i >= 0)
{
Op = Open[i]-Open[i+1];
Ct=0;
if(Op == 0) Ct = 0;
if(Op > 0) Ct = 1;
if(Op < 0) Ct = -1;
k = Count[i+1];
al = 0;
if(k >= 0 && Ct>=0)al= Ct+k;
if(k > 0 && Ct< 0)al=0;
if(k <= 0 && Ct<=0)al= k+Ct;
if(k < 0 && Ct >0)al=0;
Count[i] = MathAbs (al);
i--;
}
+―――――――――――――――――――――+
【結果】
下図の通り。ただし各データ数にばらつきがあります。
各データ数は、(M1:1000000Bars M5:677716Bars M30:113164Bars H1:56896Bars H4:14747Bars D1:2847Bars)
近似式 出現率=0.435^連続回数 ※0.435は、適当な数値です。
※注意事項:グラフの縦軸は、対数目盛になっています。


【総評】
データ数を考慮に入れると、ほぼ近似するグラフとなりました。これは、『フラクタル』の現象と考えて良いと思われます。
また、出現率が【0.5^連続回数】 を下回ることも新しい発見でした。
【副産物】
今回の解析にあたり、MT4用のスクリプトを作成したので添付しておきます。
スクリプト名 :Export_Indicator_Data.mq4
機能     :指標のデータを為替データと共に、【.CVS】として保存します。(保存先:MT4フォルダ/experts/files)
パラメーター :
extern string IndiMane = " ";指標名
extern int BufIndex = 0;バッファ番号
extern int BarCount = 0;対象バー数(※0なら全データ)
使用方法  :ほかのスクリプトと同じです。
※解析にほかのソフトを利用する場合に便利です。
【まとめ】
フラクタル』とは、面白い現象です。例えば、データを解析するには、多くの信頼のおけるデータが必要です。
これを利用出来れば、ミクロを解析してマクロに生かすことも可能になるかもしれません。
例えば、信頼のおけるミクロデータ(最近のM1データなど)を解析し、H1、H4、1Dで利用するなんて面白いかもしれませんね。
可能かどうかは、まだ分かりませんが今後のプロセスには重要な物になるような気がします。

2009/08/11

『情熱の薔薇』THE BLUE HEARTS が聞こえる!


『♪見てきたことや 聞いたこと いままで覚えた全部 でたらめだったらおもしろい そんな気持ち分かるでしょ!』
昨日から、このワンフレーズが私の頭から離れない。
ことの原因は、【マルチフラクタルを用いた時系列解析 大西立顕】の論文を読んだことから始まった。
『・・・価格差の絶対値は長期相関を持ち、分布は正規分布よりもはるかにすそのの広いベキ分布に従うというような普遍的な統計的特性を持つことが明らかになってきている・・・・・』
『え!ベキ分布って? 普遍的な統計的特性って? 標準偏差はどうなるの?』 
調べてみると。
 



平成20年版国民生活白書 【コラム】正規分布とベキ分布

  【経済物理学 統計物理の目で見る経済現象Ⅰ 高安秀樹】 

 
Coolな経済理論とWarmな金融実務のあいだ~ベキ分布を考える~
ベキ分布―池田信夫blog
上記の内容が見つかった。
※上記を勝手な解釈でまとめてみると
①為替チャートは、統計的フラクタル性(普遍的な統計的特性)を持つこと。
②価格を決定する者(ディーラー)は、数分間(上記論文では2分)の価格差と統計的フラクタル性(普遍的な統計的特性)を元に取引を行っていること。
③価格差の絶対値の分布は、ベキ分布であること。
④価格差の標準偏差の2倍(2σ)内のデータ(全データの約95%)19/20は、ランダムウォークで、残りの約5%(1/20)のデータが、チャートの骨格を成形すること。
⑤お金の非線形【お金は、集まるほど価値が高いので"自然に"集まる性質があること。】
などなど、私の考えを覆す内容がわかってきた。
そして、『♪見てきたことや 聞いたこと いままで覚えた全部 でたらめだったらおもしろい そんな気持ち分かるでしょ!』のフレーズが、頭の中に流れた・・・・『わかるか!!』
【まとめ】
ご存知だった人達から、『今さら何を・・・・』という声が聞こえてきそうだが、私にとって大きな転換点になるだろう。例えば、Mizutoriの概念も修正が必要になし、先回のブログ内容で否定された事項【値幅(価格差)は、値段に比例する】も納得できる。『100年に一度・・・』で片づけていた問題の解決に立ち向かうことができるかもしれない。
【追記】
300年前『それでも地球は回っている!』と言ったガリレオを思いだした。また、自分の無知を発表することになってしまった。

2009/08/06

離散ウェーブレット変換(Haar)


先回のまとめ内に記載したので今回のお題は、データの変換作業の一例としてウェーブレット変換を取り上げてみました。
※ウェーブレット変換で何ができるの?
ウェーブレットには大きく分けると連続ウェーブレットと離散ウェーブレットがあります。
連続ウェーブレット変換
データの周波数の時間的変化を解析することに使用されている。
(はっきり理解できていません・・・・)
参考サイト
短時間フーリエ変換と連続ウェーブレット変換
離散ウェーブレット変換
データの圧縮、ノイズの除去、多重解像度解析に使われている。
参考サイト

   離散ウェーブレット変換 - Wikipedia

http://wwwmp.jwu.ac.jp/mine/SemPPT/2005sem/2005FoundationOfWaveletTransformRevised.pdf
      
今回は、離散ウェーブレット変換の代表であるHaar(以下Haar)を指標化してみました。
※Haarで何をしたいのか?
相場が作る波形を分解し必要な波形を取り出したい。
補足:複雑な波形は、実は単純な波形の組み合わせでできています。
※今回は、Haar理論の説明は省きます。興味がある方は、上記リンクなどを参考にしてください。
下記に添付したファイルにある【DWTHaar.mq4】をもちいて説明します。
選択事項
①波形をどれだけ分割(周波数ごとに)するかを決めます。
【extern int N = 7;】N値が分割数になります。
例)N=3の場合 【高周波数成分中周波数成分低周波数成分】に分割されます。
例)N=5の場合 【高高周波数成分高中周波数成分中周波数成分低中周波数成分低低周波数成分】に分割されます。
※【重要事項】
    N値を上げると細分化が可能になりますが、その際のデータ量が2のN乗必要になり、その分処理能力が落ちてしまいます。
例)N=3の場合のデータ量8:N=5の場合32:N=7の場合128:N=10の場合1024:N=15の場合32768になります。
②どの波形が必要か決定する。
まず、N値最小値に最高周波数成分が対応しN値最大値に最低周波数が対応しています。
【extern int HBs = 3;//高周波カット位置】【extern int LBs = 4;//低周波カット位置】を示しています。ただし、カット位置の数値は含みます。
例)N=3で【HBs=3:LBs=3】の場合【中周波数成分】を出力します。
例)N=5で【HBs=3:LBs=4】の場合【中周波数成分+低中周波数成分】が出力されます。
※一度試してみると分かりやすいと思います。
③その他パラメーター
【Shift = 0】は、検証用のシフトです。シフトしていくと理解しやすいと思います。
※ここまで【DWTHaar.mq4】を試してみると【あれ?】と思うことがあると思います。
今までの指標のように、全期間で指標が表示されません。どうして?
この指標は、あくまでも適用期間(2のN乗)のデータの変換作業を行っているだけだからです。
また、完全に周波数ごとに分解しているのではなく、あいまいに分解していることもわかると思います。
【DWTHaar.mq4】の活用方法
いろいろな活用方法があるかとは思いますが、今回はシンプルな活用方法を提案したいと思います。
【DWTHaar_M.mq4】は、【DWTHaar.mq4】の最新のデータが、期間の平均からどの程度乖離しているかというものです。
※N値を上げた状態で使用すると、(若しくはデータ数が多いと)処理に時間がかかりますので注意してください。
まとめ
今回使用したデータは、初値を使用しています。お好みに応じて変更してください。
また、DWT(離散ウェーブレット変換)は、解析精度を上げると処理能力が、多く必要となります。
それを回避する方法に、高速ウェーブレット変換というものもあるそうです。興味がある方は、検証されてはどうでしょうか?