トレード系botをつくるうえで誰もが実装する機能が、バックテスト機能です。
また、世に出ている数々の自動売買ツールなどもそも成績を示す一つの形として、バックテストの結果得られたきれいな右肩上がりの損益チャートが示されています。
私も例にもれず、バックテスト大好き人間です。また、バックテスト結果を少しでもよく見せようとカーブフィッティングに勤しむことも大好きです。
なんだかんだで5年間(うち3年がbotつくり)、自動売買で戦ってきた者としてバックテストについて述べるならば、
① バックテストできれいな右肩上がりのチャートをつくることは非常に簡単
② バックテストの結果でみるべきところは損益チャートの裏に隠れた要素
の2点だと言えます。
まず、①のきれいな右肩上がりのチャートについては、さして努力しなくてもすぐにつくることができます。どうするのかというと、適当なロジックを組み、約定条件を激アマ設定にすればあっという間に完成です。
設定方法としては、例えば、約定の仮想値にスプレッドを無視した価格を入れることや、約定値にバフをかけて有利な値に補正するなどです。
そんなことをしたところで、実際のトレードではそんな思い描いたような約定はしませんのでまったく無意味ですが、バックテストではロジックをいじらずとも、約定値の考え方をすこし緩めるだけで実現できてしまうという甘く深い罠が潜んでいると感じます。
その次に、②のバックテスト結果の裏に潜む要素についてですが、私はバックテストで見るべきポイントはまさにここだと常々自分に言い聞かせています。
バックテストは、ある期間に区切ってその期間内でのデモトレを行い、その結果をプロットするわけですが、おそらくフィッティングをさせまくり、約定値にちょい甘めのバフをかければきれいなチャートが出来て満足します。
付随して最大ドローダウンがいくつとか、最大利益がどれぐらいで・・・と各種の評価指標をぶらさげて表示させて、その結果に満足することでしょう。私もそうでした。。。
そこそこバックテストをやってきたなかで、これだけは絶対にみておかなければならないと痛感したのが、バックテスト終了時の”閉じていないポジション”と”その含み損”です。
ここのチェックに言及されていないバックテスト結果が世の中には流布しているなと感じます。(まあ、私もかつてはそうでしたが)
バックテストには必ず指定期間の終了地点が存在します。
極論を言うと、損切を一切せず、複数ポジションを保有するタイプのロジックであれば、そもそも損切が存在しない=マイナスとなる要素がないので、結果のチャートはきれいな右肩上がりにしかならないです。
それもそれで一つの思想ですが、実際問題、それでは獲得利益よりも含み損のほうが膨らみ、現実的には大赤字で終わります。これを解消するには、愚直に精度を高めることと、一般的な損切り以外のリカバリーの道を探るほかないです。(私はいまその道を掘り進めています)
また、書籍等でもバックテストの実施方法などについて言及されるケースは多々あれ、バックテスト結果の見方、考え方について深く考察されているものは少ないように感じます。
そもそも、シングルポジションのみでロットを積んで戦うか、複数のポジションに散らして戦うかでバックテストの表示の仕方、捉え方も異なりますので、一概に累積損益のチャートだけみても評価はしづらい点もあります。
また、取引所、戦っている環境の状況にも大きく左右されるため、マイナス手数料がかかっている環境であれば、マイナス分の補正をバフとして結果にかけて検証することも現実性を帯びてきます。そうした場合は、本来、不利になるはずの約定条件にかすかなプラス要素を上乗せできますので、含み損問題においても有利に働くことでしょう。
とりあえず、私のbotについてはバックテスト終了時に、終了時点でオープンな状態のポジションとその含み損の情報だけはあわせて出力することを心がけています。
極端なことをいうと、バックテストの結果がプラスで、そのプラスよりも含み損が小さい状態であれば、仮にバックテスト終了時点でオンタイムで全決済すれば、プラス分がちょい残るので、トータルでみれば期待値がもてるロジックだね、と捉えてもよい”希望”がもてます。
これでも、よいロジックかもしれないというかすかな”希望”が残るだけなので、先述の約定値のバフなどが入っていないか、バックテストの条件を厳しくみることにかわりはありません。
なお、先ほど最大ドローダウンの話に少し触れましたが、私はバックテスト期間のポジションと含み損の話を意識してから、最大ドローダウンとしてみるべきだと常々感じており、局所的なドローダウンの最大値だけではそのロジックの実際の動き―例えばポジションをもってからしばらく含み損を抱えてモゴモゴしているとか―を把握できません。
局所的な極大値は評価指標として拾いやすいですが、それは全体的な動きをみたうえでのどういった極大値なのかという視点で捉えるべきだと考えます。
以上、バックテストに関する走り書きです。
コメント
コメント ( 0 )
トラックバックは利用できません。
この記事へのコメントはありません。