2007年10月17日

ランダムなトレンド?

前回記事「ランダムウォーク&行動ファイナンス理論のすべて」のレビューの続きです。

この本には「ランダムなトレンド」というちょっと気になる言葉が何度か出てきます。

ランダムなトレンド? ランダムってトレンドのないことじゃないの? と思う人も多いかもしれません。
おそらくそう感じる人は、ランダムウォークのことをランダムノイズと勘違いしているのだと思います。

乱数の値そのものが価格になるのであれば、乱高下の嵐のような動きになるので、とてもトレンドなんて発生しないでしょう。しかし、ランダムウォークは価格の差がランダムノイズで与えられるので、実際の相場の動きに近いものが作れます。トレンドや保ち合いはお手のもので、ずっと続けているとバブルに似た相場だって作れてしまうのです。→参照記事

この本でも相場は思っている以上にランダムウォークに近いということで、トレンドに見える部分すら大半はランダムだと言っています。しかし、トレンドの中にもランダムなトレンドとランダムでないトレンドがあるので、収益の機会が全くないというわけではありません。

以下、個人的な感想です。

一般的にトレンドフォロー型のシステムは過去において長期的に好成績を上げているものが多いです。
これは過去においてランダムでないトレンドがあったということを意味します。将来にわたり、相場の性質が変わらなければ、このシステムは有効でしょう。
しかし、最近の相場では同じシステムが利益をあまり上げていないような感じがしています。相場の性質が変わったから、ということかもしれませんが、単に相場の性質が変わったと言っても、ランダムでない部分、つまり相場の非効率性がトレンド以外の別の形に変わったのであれば、それに対応させることでシステムを改善させることができます。
しかし、もし、相場の非効率性そのものが減少する形で相場の性質が変わったのであれば、勝てる確率は理論上減ることになります。

いずれにしろ、システムトレードというのは、不確実性の闇の中からわずかな宝を探す大変な作業だということには変わりはないと思います。

にほんブログ村 為替ブログへ上位ランキングのブログ記事はこちら

2006年12月17日

GARCHモデル

久々にランダムウォークの記事です。

以前、ジオメトリック(幾何)ランダムウォークの記事を書きましたが、そのおさらいです。
幾何ランダムウォークとは、1サンプル前との価格の対数の差が正規分布になっていると仮定するモデルです。

e(n) = log(y(n)) - log(y(n-1))

e(n)が正規分布となるわけですが、ここでは為替を対象に考えると、平均0、ドル円などのメジャー通貨ペアでは1年間のボラティリティが8%程度なので、1日あたりのボラティリティは、8/√260≒0.5%となります。(為替は土日以外ほとんど動いているので年間営業日数を260日としています)

つまり、v(n) を1日あたりのボラティリティ、w(n)を平均0、分散1の正規乱数系列とすると、

e(n) = v(n) w(n)

と書けます。ランダムウォークの場合、v(n) = 0.005 など一定値として考えます。

e(n)が求まれば、ランダムウォークは

y(n) = y(n-1)exp(e(n)) ≒ y(n-1)(1+e(n))

のように書けます。

ところで、ボラティリティ v(n) は実際には一定ではなく、相場とともに変化します。一般に、ボラティリティは相場が大きく動くと大きくなり、一種のトレンドのように大きくなったり、小さくなったりを繰り返します。こういうボラティリティの動きを数式として表したものをGARCHモデルと呼ぶそうです。

詳しいことは省略しますが、GARCHの原型であるARCHモデルを開発したEngleさんは2003年のノーベル経済学賞を受賞したということです。

GARCHの一番簡単な形は

v(n)2 = c + b v(n-1)2 + a e(n-1)2

となります。ボラティリティv(n)が過去のボラティリティv(n-1)と、過去の変動率e(n-1)の影響を受けるということです。a,b,c はそれぞれ定数でc>0, b,a≧0となります。

本来なら、実際の相場から a, b, c を推定するわけですが、ここでは適当に決めてみます。a=0.000001, b=0.80, c=0.15 としたときのv(n)の変動の一例です。乱数使っていますから毎回違います。

ボラティリティのチャートというのはあまり見たことがないのですが、こんな感じでしょうかね。

ただ、ボラティリティが0.5%から1%に変化しても、これから作った価格の時系列データを見たところで違いはほとんどわかりません。GARCHモデルは、あくまでボラティリティの変動を実際に近づけただけで、やはり上がるか下がるかはランダムということには違いはないのです。

ボラティリティはオプション価格に影響してきますから、オプション価格を予測するのには使えるのかもしれません。

にほんブログ村 為替ブログへ上位ランキングのブログ記事はこちら

2006年08月01日

ジオメトリック・ランダムウォーク

本来の算術ランダムウォークはガウスノイズを順次加えていって作るものなのですが、前回のランダムウォークでは、価格がマイナスになってはいけないということと、変動幅は絶対値ではなく、割合で表すのが自然ということで、単に変動の割合をガウスノイズにしていました。

前回3万個のデータ(と言っても日足なら100年分)だと何となく相場データっぽくなっていたのですが、試しに50万個のデータまで増やしてみると、ほとんどの場合で0に収束してしまうことに気づきました。

これは価格が小さくなればなるほど変動幅も小さくなるので、0に近づいていくとそこから上がれなくなるからなのですが、このやり方だと必ずダウントレンドになってしまいます。

そこで再びランダムウォークについて調べなおしたところ(前回見逃していただけ)、相場のモデルとして適当なものに、Geometric Random Walk というものがありました。これも直訳すると幾何ランダムウォークっていうのでしょうが、よくわからないので、ここではジオメトリック・ランダムウォークと言っておきます。以下のサイトを参考にしました。

http://www.duke.edu/~rnau/411georw.htm

これは、価格のLOGを取ったものの差分がガウスノイズになるように作るものです。後でexpを取るので、結局は前日の価格にexp(ガウスノイズ)をかければいいだけです。

この方法にすると、価格が0に収束することはなくなりました。が、1から始めても、非常に大きな値になることもしばしば現れるようになりました。実際に標準偏差を0.07%としたときの300万個のランダムウォーク(なんと1万年分)を作ってみました。

この図は縦軸をLOGスケールにしていますが、実際には大きなところで20000近い価格になっています。株価ならこのような動きもありそうですが、為替でも1万年もかかれば何万倍も違ってくることもあるのかもしれません。

それより興味深かったことはバブルのような動きがランダムウォークで作れるということです。下の図を見てください。

これは上のと同じ条件で30万個のランダムウォークを作り、縦軸をリニアスケールで表したものです。バブルのときの相場に似ていませんか?
これまでバブルみたいな動きはランダムウォークとは違うものだと思っていましたが、これを見るとバブルもランダムウォークの一部なのかもしれません。

次回はシステムについて考えてみたいと思います。

にほんブログ村 為替ブログへ上位ランキングのブログ記事はこちら

2006年07月31日

ランダムウォーク続き

前回、ランダムウォークの乱数の作り方で終わってしまいましたが、どうやら良い乱数の作り方としてメルセンヌ・ツイスタ法というのがあるそうです。

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html

詳しいことはおいておいて、簡単に言うと長周期、高次元均等分布ということらしいです。周期は2の19937乗(10進数6000桁)ととてつもなく長いです。
さらに生成速度も速く、メモリ効率もよいということなので、文句なく採用です。
Cのソースコードも公開されているので、簡単に実装することができました。

これで白色ノイズが作れたので、続いてガウスノイズです。これは白色ノイズから作るのですが、中心極限定理、Box Muller 法が知られています。但し、中心極限定理では乱数の数を固定しておかなくてはいけないのでちょっと都合が悪いです。
Box Muller 法では2個の一様乱数から2個の正規乱数を作っていくので乱数の長さに関係ないということで、以下のサイトを参考にして三角関数の計算を省略できる高速版を採用してみました。

http://www.taygeta.com/random/gaussian.html

ランダムウォークも大詰めです。ガウスノイズは平均0、標準偏差1ですが、これを実際の為替の動きに合うように動き幅を決める必要があります。
ここで、実際の為替の日足チャートを参考にし、EUR/USD, GBP/USD, USD/CHF, USD/JPY のメジャー通貨ペアから1日での動き幅の平均と標準偏差を求めてみました。
10年近いデータなので、やはり平均はほとんど0に近く、標準偏差はだいたい0.5%から0.7%くらい(ちなみに0.5%なのは意外にポンドドル)なので、大きめに取って0.7%としてみました。

ガウスノイズに0.007をかけ、それに1を加えたものを前日の終値にかけることでランダムウォーク系列を生成してみました。初期値を1として、3万個のデータを作った一例です。

当然ながら毎回全然違う形状のものができてきます。ただ、今回はプログラムを無限に回すことにより事実上無限に長いランダムウォークを生成することができました。
次回はこのデータを元にいくつかのシステムを適用してパフォーマンスを調べてみることにします。

にほんブログ村 為替ブログへ上位ランキングのブログ記事はこちら

2006年07月28日

ランダムウォークも奥が深い

相場はランダムウォークか? とよく話題に出てきますが、ランダムウォークって本当はどういうものでしょう? 本当のランダムウォークってどうやって作るのでしょう?
どうにも気になるので、「ランダムウォーク」っていうカテゴリーを新設して、しばらく調べていきます。

とりあえず、以下のサイトを参考にしました。

http://www.riskglossary.com/link/random_walk.htm

まずは、単純ランダムウォーク(Simple Random Walk)ですが、0から始まって、コインの表が出たら+1、裏が出たら-1を加えていく過程です。+1か-1かは白色ノイズとして乱数で決めます。+1、-1の代わりに+k、-kと1以外の値にした場合も同じく単純ランダムウォークと考えられます。

しかし、実際の相場では必ず同じ値幅だけ動くということはあり得ないので、もう少し現実に近づけるために、動く幅をランダムにしてやります。但し、ここを白色ノイズのようにすべての動き幅を一定の確率にしてしまうとまた不自然になってしまうので、動き幅をガウスノイズ(確率が正規分布に従う)にしたものが金融の世界でランダムウォークと考えられているようです。上のサイトでは単純ランダムウォークと区別するために Arithmetic Random Walk と書いてありました。直訳すると算術ランダムウォークとなりますが、この言葉で検索してもあまりヒットしません。

ところでガウスノイズは、白色ノイズから作るのですが、この作り方もいくつかあるそうです。しかし、まずは乱数というのを正確に作らなくてはいけません。

乱数っていうのもこれまであまり深く考えたことはなく、プログラミング言語の標準ライブラリに入っているものをそのまま使っていたのですが、どうやらそれはよい乱数ではないようです。

えーっ、よい乱数、悪い乱数って何?ということで以下のサイトが見つかりました。

http://www001.upp.so-net.ne.jp/isaku/rand.html

通常プログラムのライブラリなどで使われる乱数生成法は線形合同法と言って簡単な計算でできるのですが、その分ビットに規則性があったりして、使い方によっては全く乱数にならない場合もあるようです。しかも、この方法では2の32乗や2の48乗といった周期があります。10進数で10桁から15桁の周期です。それだけ長ければ十分かもしれませんが、それより優れた乱数生成法があるそうです。メルセンヌ・ツイスタというそうですが、これについては次回報告したいと思います。

にほんブログ村 為替ブログへ上位ランキングのブログ記事はこちら

2006年07月27日

新規研究プロジェクト

今日のオプション取引ですが、ポンスイもようやく下がり始め、すべてのポジが安全圏に入ってきたので、
特に調整の必要はありません。新規ポジとしては、EUR/USD のボラが上がったので、1.31 call 売りを建ててみました。

最近システムトレーディング関係でネタがなかったのですが、ちょっと思いつきで次のようなテーマについて考えてみたいと思います。

「ランダムウォークで勝てるシステムはあるか?」

本当に相場がランダムウォークでも長期に運用して勝てるシステムがあれば、それは究極のシステムでしょう。
でも、相場が完全にランダムウォークだったら、無限時間運用時に勝つことはまず無理でしょう。
では、絶対に負けるシステムはできるのでしょうか?
それもできるはずはありません。それができれば逆に売買すれば勝てるシステムになってしまうからです。
とりあえず、次回はランダムウォークについて調べてみましょう。

にほんブログ村 為替ブログへ上位ランキングのブログ記事はこちら

2006年02月17日

相場はランダムウォーク?

下のグラフを見てください。これは、何かの株か為替かのチャートでしょうか?いえ、これはランダムウォークです。

相場はランダムウォークか? これはテクニカル分析やシステムトレーディングに意味があるのかというのと同じく、トレーディングの根本に関わる問題です。

相場がランダムだと言うと、めちゃくちゃに動いているかのような印象を持つ人も多いかと思いますが、ランダムウォークとは、ある一定の間隔でプラスマイナスの一定の幅だけ変化するものです。

上のグラフはエクセルでA1のセルに初期値として100を入れ、A2のセルに

=A1+POWER(-1,ROUND(RAND(),0))

と書いて、後はこれをずっと下までコピーして作ったデータをプロットしたものです。
要は前のセルに半々の確率で+1か-1を足すだけなのですが、もっと簡単な書き方があるのかもしれません。毎回、違った形のチャートが現れるので色々と試してみると面白いでしょう。

これからわかることは、相場がランダムウォークかどうかというより、ランダムウォークは相場と似ているということだ思います。昔、コンピュータがなかった時代では、見た目で判断するしかないので、相場をランダムウォークと見なしたのかもしれません。

相場がこのようなランダムウォークと同じに見える人はトレーディングをやめた方がいいと思います。
相場とランダムウォークは似て非なるものと確信できる人だけが生き残れる世界ではないでしょうか。

ランダムウォークについてもっと調べたい人は下からサーチしてみてください。
  

にほんブログ村 為替ブログへ為替ブログランキング 現在8位

ランダムウォークその他のエントリー