こんばんは、皆様、三頌亭です。これも小ネタ集のひとつです。今回はVBAを使わなくてもできるでしょうw。といいますか1種のフィールドワークのようなものです。まず表題通り、為替の分足データをゲットしてきます。分足データはいろいろあるのですが下記のところで拝借いたしました。通貨ペアはドル円を選びました。
https://www.forexite.com/free_forex_quotes/forex_history.html
ここのデータで1分間の為替レートの変動を6カ月分ストレージします。変動は終値の差分を取りました。ここのところ対数正規だとかいろいろあるのですが、為替レートの場合株式などよりヴォラティリティがだいぶ低いので差分でもまあいいでしょうw。
まずこのデータをもとに度数分布を調べて、これを指数分布(ラプラス分布)に当てはめます。これをもとにエクセルの一様乱数から指数分布の乱数を発生させます。指数分布の乱数については下記が分かりやすいです。
http://godfoot.world.coocan.jp/Exp-Rand.htm
1分間ドル円の変動(λ=0.7,pips) = -(1/λ)*ln( RAND( ) )*(-1)^(RANDBETWEEN(1,10))
(正負両側にするため再度±1を乱数で発生させ乗算。単位をpipsからyenにするためには0.01を掛ける)
この指数分布の乱数を発生させて1日分の為替レートの変動をシミュレーションいたします。昔のデータなので111円をスタートにしてあります。発生した変動分を順次加算していくと1日の為替レートの変動をシミュレーションできることになります。
グラフ1~6番目はそのときの変動の1例です。テクニカル指標でよく使われるボリンジャーバンド(50分)を一緒に表示してあります。どうですか?なかなかそれらしいですねw。実は乱数を使っても、トレンドフォローにいいパターンや雇用統計のような急なパターンの変動が生まれるのかどうかを知りたかったのでこんなものを作ってみました。
因みに指数分布の性質に「無記憶性」というものがあります。わかりやすく言うとどの点でも次の1分後の変動の出現確率は同じで過去のデータには左右されないということです。これではトレーダーさんは「no hope」ですねw~困りましたw