リピートイフダン注文、バックテスト高速化のアイデア
前書き
いちおう m2j問い合わせに「しばらく公知にしないようにしましょうか?」みたいに投げて、回答で待てとも言われなかったので投稿します。なお回答はとても丁寧でした。
背景
マネースクエアジャパンのリピートイフダン注文 1 を想定しています。FXで有名ですが、最近株価指数等でのCFDも始まりました。
FXは上下がありますが、株価指数は基本的に右肩上がりなので、CFDだと塩漬け状態になりにくそうです。ワクワクしてきます。
いくつかパラメータがあるので、バックテストで試行錯誤したいです。
ナイーブに時系列シミュレーションやってもよいのですが、なんかうまいこと効率化できるんじゃないかと思いました。
本題
あらかじめ分析データを用意しておくことで、時系列でのシミュレーション不要でバックテストが行えます。
分析データを用意する方法
①ある指値を想定します。例えば36000とします。
②tickデータ等にて、指値を下に突き抜けた(36000より大→36000以下となった)タイミングを洗い出します。
③そのタイミング間で、安値/高値を記録します。
→記録データ:指値、タイミング始点、安値、高値、タイミング終点
④その商品の最安値~最高値について、最小単位値幅ずつ指値をずらしながら、①~③を行います。
上記は買いの場合ですが、売りの場合は向きを逆にすればOKです。
バックテスト方法
この分析データに対して、バックテスト期間と注文内容でフィルタして、件数を集計すれば結果を得られます。
BIツールを使えば、パタパタ切り替えながら瞬時に分析ができるんじゃないでしょうか。
ロストリガ(損切)は利益確定の決済に優先します2。
※トレールは対応できません。時系列シミュレーション相当が必要じゃないかと思います。
後書き・感想
たいてい数十か月ごとに急騰するので、利益確定値幅を大きくしたほうが利益は大きい傾向がありました。
ただし件数は減るため、定期収入みたいにしたければ ある程度値幅を狭めたほうがよさそうです。
なお公式のヒストリカルデータは日足なので、細かい利益値幅だとバックテストの漏れが多そうです。
長期では結局右肩上がりのトレンドなので、あまり具体的な金額でのバックテストは効果が薄いように思い始めました。
正規化3すればよいかも?
-
リピートイフダン注文とは、イフダン注文を自動でリピートしてくれる注文です。
イフダン注文は雑に説明すると、新規指値(この値段になったら買う)と決済(買った後この値段になったら売る)をペアにした注文です。決済はトリガ(ここまで下がったら売る=損切)と指値(ここまで上がったら売る=利益確定)の2種類あります。
つまり、リピートイフダン注文を行うと「ある値段になったら買い、そしてある値段になったら売る」というのを延々と繰り返してくれます。
うまいところに仕掛けられたら、頻繁に不労所得が入りますね。 ↩ -
②で下に突き抜けたタイミングとしていることから、必ず安値→高値の順になります。 ↩
-
分析データで、指値は長期平均との乖離率、安値/高値は指値との差や比率とするなど。 ↩