マルチファクターモデルのフォワードテストをモンテカルロ法の要素を取り入れて作った戦略
Rでシストレ!
今回はバックテスト2010~2013年+フォワードテスト2014年の1年だけですが、
モンテカルロ法の要素を取り入れて戦略を作る配信をしました。
モンテカルロ法とは
その戦略に大きな影響を及ぼす変数をランダムで取得し検証。という行為を何度も繰り返し、
その戦略のおおまかな着地点を知るというようなその戦略の行き着く先を幅を持って予想するやり方のことです。
(理想は幅が少なく、順調に儲かること)
マルチファクターモデルに使った変数は2つです。
①これはまずバックテストで
N日回帰+私が用意した変数の10個の中から2個を取り出す組み合わせを一通りすべてプログラムで検証し、その中で比較的よかった結果の変数を用意します。
(例:15日回帰+WTIとGOLDの前日の値段を変数とする など)
↓は実際選ばれた変数(Y○、Y○、シャープレシオ、N日変数)
Y○、Y○がそれぞれWTI、GOLDなどに該当します。一番右に数値がN日回帰の日数です。----------------------------------------------
Y1 Y9 1.67751984540508 30
Y1 Y5 1.56471320789214 22
Y1 Y9 1.05598461620331 12
Y3 Y5 2.11809763479855 20
Y1 Y2 1.07039430937465 24
Y1 Y8 1.40236600333574 26
Y3 Y5 1.12571209536221 30
Y3 Y4 1.78087484115073 22
Y1 Y5 2.04200096873188 26
Y1 Y4 1.22375832817442 26
----------------------------------------------
(1回につき約15分~20分)
②そして次はフォワードテストで
さきほどの比較的よかった結果の変数の中から10個をランダムで取得し、
その選ばれた10個の組み合わせを今度は2014年のデータに対して売買検証し、
2014時の累積損益を求めます。
10個それぞれを2014で独立の戦略として売買し、最後に損益を合算して、10で割るイメージです。
10個のサインに10個のポジション、そして10個の損益。
これを1つにまとめて1つの戦略という感じで考えればいいです。
(1回につき約15分~20分)
このような感じで1回に1つ2014年の累積損益が求められます。
このとき、2014年1年間の累積損益と、1年間どのくらい滑らかに儲かったか?の2つの指数を取得します。(TOTAL_CPL_ARRAY, TOTAL_SCORE_2_ARRAY)
③上記①、②の流れを10回繰り返し
2014年1年間の累積損益と1年間どのくらい滑らかに儲かった?の2つのデータを10個貯めます。
2014年の損益に直結する、2つの変数は2010~2013年の結果でよかったものからランダムで取得しているため当然ですが2014年の結果は毎回違うものになります。
(①+②を10回で合計300分~400分)(汗
(画像上が累積損益の10回をそれぞれ並べたもの)
(画像下がそれぞれがどれくらい滑らかに儲かってるか?を指数かしたもの)
(ともに数値が高ければ高いほど優秀です)
④そしてその10回の結果にそれぞれ差がないかなどを比較し、実運用に向けて考慮してみる。
という流れです。
まあ見てる限り、
累積損益は1度大きめのくぼみが4回目にありますが、安定していて
どれくらい滑らかに儲かっているか?の指数もそれなりに安定しています。
ですので実践に向けて進めてみようかな?と思っています。
今回のやり方に関しては自身もまだ及び腰なとこがあるので、検証の仕方などはもっと考えていかねばと思っています。
また今回のシステムは手数料を考慮していないので、かなりコストセンシティブな戦略になるので実運用もTOPIX1枚(TOPIXミニ1枚*10枚)からやってみようかなと思っています。
こうやって進みながらやるときは時間と勇気が必要なものです(涙
マルチファクターモデルは一見儲かりそうに見える戦略はすぐ作れる代わりに、
実運用できる戦略はなかなかできないのでは?というイメージなので扱いが難しそうですね。
次の課題はさらに過去の検証ですねぇ。
2013年、2012年、2011年、2010年くらいまではいきたい(笑