期待値の確からしさ

前回の記事で記述した「期待値の確からしさ」について考察します。

期待値の確からしさは本来であれば理論的に求めるべきなのですが、
現実のデータは複雑に絡み合っており解が求まることはまずありません。
よってこれを求めるには実践的な手法に頼るしかありません。

まずは以下のバランスカーブをご覧下さい。
これはある単純なファクターモデルについてシミュレーションした結果です。

161118-1.png

ベースとなるモデルは説明変数Aと目的変数Zの2つの変数から成り、AとZに不変の相関ρが存在します。
まずAとZについて、正規分布且つ互いに相関ρを持つ乱数をそれぞれN個発生させてデータセットを作り、
これをインサンプルデータとして単純な回帰モデルを求めます。
続いてもう一度乱数をそれぞれM個発生させて、こちらをアウトオブサンプルのデータセットとして
先ほど求めた回帰モデルの精度を検証します。
このバランスカーブが得られたとき、両者の相関係数はどれくらいでしょうか?



種明かしをすると「相関係数は0」です。
同様の内容のシミュレーションを255回繰り返すと以下のようになり、
上記のデータは255回のうちのベストデータとなります。
(255回というのはエクセルの描画限度であり、通常であれば1000回以上は試行します)

161118-2.png

もうお分かりでしょうが、
期待値の確からしさを求めるためにはこのようなランダムシミュレーションを行うしかありません。
これはモンテカルロ法と呼ばれる手法であり、統計の世界では一般的に使われています。
システムの信頼性を把握するためにはリターンの母集団に対して検定を行う手法もありますが、
そのやり方ではこのようなランダム効果の影響を排除することはできません。

もしもAとZの相関係数がρ=0.1の場合は以下のようになります。
ここでもベストデータとモンテカルロシミュレーション結果全体の両方を記載しておきます。

161118-3.png  161118-4.png



では実際のストラテジーの期待値の確からしさの求め方ですが、
十分な母数のトレード対象を確保しつつブートストラップ法によりバランスカーブのばらつきを算出します。
ブートストラップ法はモンテカルロ法の一種であり、
母集団からランダムに復元抽出を繰り返すことで、得られた結果から母集団の性質を推測するものです。
当然ながら、得られたバランスカーブの中で最も中央に位置する代表特性の期待値は、
母集団そのものの期待値とほぼ一致するはずです。
また優れたストラテジーでは代表特性まわりのばらつきが小さくなるはずです。

例えば、よく見掛けるようなトレード数2000回、期待値2%のストラテジーがあったとします。
この場合、この結果が「期待値2%の10万個程度の母集団」から得られた結果であれば信頼できるでしょう。
しかし多くの場合はそうではない筈です。
おそらく「期待値0.1%の10万個程度の母集団」からどうにかして集めた2000個だと思います。
これで実運用で期待値2%が出ると考えるほうがおかしいと思いませんか?

あなたのストラテジーは、上記のように255個のうち最も良いものを選ぶ作り方になっていませんか?
様々な条件を追加し母集団を削りとって都合の良いデータを選別する作業になっていませんか?
目的はバックテストのバランスカーブをきれいにすることでなく、実運用できるストラテジーを作ることです。
とりあえずで追加する「移動平均乖離率≧0」などという条件が、
どれほど統計的な信頼性を損なう愚行であるか、理解できると思います。

少しキツ目の口調になってしまいましたが、ご容赦下さい。


初めまして。システムトレードを勉強している初心者です。質問よろしいでしょうか。
>集団からランダムに復元抽出を繰り返すことで、得られた結果から母集団の性質を推測
これはつまり、説明変数と目的変数の並びをランダムに変えて期待値を再計算してみるという作業を繰り返す、という理解でいいでしょうか。そして元の期待値が、このテスト結果の中央付近であれば信頼できるという事でしょうか。とんちんかんな理解であればすみません。

2016年11月19日 00:04| halURL

コメントありがとうございます。
「ランダムに復元抽出を繰り返す」とは「説明変数と目的変数の並びをランダムに変えて」という意味ではありません。

トレード対象の中から実際にトレードするものをランダムにサンプリングし、それを繰り返し試行する、
その過程において、取り出したサンプルは元に戻してから次のサンプリングを実施する、という意味です。

私がhal様の質問の意図を捉えていないかもしれません、不明点があれば再度コメントをお願い致します。

2016年11月19日 10:08| UKIURL

言葉足らずですみません。
説明変数と目的変数それぞれの値の本来の並びつまり時間順をランダムな順に変えて期待値を再計算してみるという意味です。
説明変数(1,2,3,4,5)⇒(3,5,1,2,4)
目的変数(6,7,8,9,10)⇒(6,10,7,9,8)
こんな感じです。
しかしUKIさんの頂いた返答を見ると、並び順というよりも無作為抽出を繰り返すというようなイメージでしょうか。

2016年11月19日 10:48| halURL

> 頂いた返答を見ると、並び順というよりも無作為抽出を繰り返すというようなイメージでしょうか。

その通りです。無作為抽出を繰り返すということになります。
実際のトレード数に対して、少なくとも10倍以上の数の母集団は必要かと思います。

2016年11月19日 12:58| UKIURL

ブートストラップ法や復元抽出等の用語から調べて理解できました。最初から自分で調べろって感じですよね。ご迷惑おかけしました。次からは自分で調べるようにします。それではまた有意義な記事を期待しています。

2016年11月19日 15:45| halURL