バックテストスコアの今後の改良方針

Pocket
LINEで送る

バックテストスコアは現在バージョン1.00としています。

バージョンナンバーを付けているのは、これからもドンドン改良していくぞ!という意思表明です。

 

これまでに何件かバックテストスコアを測定してみて、気づいた点などでてきたので記事にまとめてみました。

 

今後の改良予定

いくつか思いついた改良点を紹介します。

 

ポジション保有時間を評価に加える

成績を良く見せるため、頑なに損切りしないEAが存在します。

いわゆるコツコツドカン型のEAに多いですね。

このタイプのEAはバックテスト結果の資産曲線は右肩上がりで綺麗ですが、大きな破産リスクを抱えています。

たまたまバックテスト期間中にドカンが来なかっただけで、実際に運用してみるとドカンをくらってバックテストと全然違う成績になる可能性が高いです。

こういったEAをバックテストから見分けるために、ポジション保有時間を使用する方法を検討しています。

 

具体的には取引毎にポジション保有時間を算出して、平均保有時間を割り出します。

平均保有時間に対して、何倍も長い時間保有している取引がある場合は、得点を下げるようなことを考えています。

例としては、平均1時間で決済しているのに、1ヶ月保有しているポジションが合った場合などです。

こういった取引では、ポジションが含み損を抱えていて、プラ転まで塩漬けにしていた可能性があります。

そのためバックテストスコアでも得点を下げることを考えています。

 

ただし必ずしも塩漬けしているとは限らず、損切りを小さくして利益をトコトン伸ばしている可能性もあります。

この場合は減点するべきではないので、塩漬けかどうかの判定をどうしようか悩んでおります。

 

必要証拠金の計算を改良

現在バックテストスコアの計算では必要証拠金を1ロット(10万通貨)あたり1万ポイントで計算しています。

円建て口座の場合、USDJPYでもGBPJPYでも100万円となる計算です。

実際には選択している通貨ペアによって証拠金は変わるべきです。

このままだとバックテストスコアの計算上、有利な通貨ペア・不利な通貨ペアが出てきます。

この点は改良していかなくては行けないなと感じている部分です。

 

しかし通貨ペアごとに可変にすると、それはそれで面倒な部分もでてきます。

例えば今はUSDJPYが約110円ですので、10万通貨ならレバレッジ25倍で44万円程度です。

もし今後USDJPYが220円になったり、55円になったりすると、その都度証拠金計算のロジックを修正して再計算する必要がでてきます。

あるいはレバレッジが変わったりすると、必要証拠金も変わってくるので、やはり再計算する必要がでてきます。

それは流石に面倒なので避けたいとの思いで、現在は固定のpoint数で算出しています。

 

現在考えている改良案としては、バックテストの取引履歴から価格を取得して証拠金を計算する方法を考えています。

履歴の一番最後の価格を取得し、その価格を元にして必要証拠金を計算できないか検討中です。

この方法であればレバレッジが変わらない限りは大丈夫だと思います。

 

バックテストスコアの弱点

これまでの検証でバックテストスコアの弱点を感じたので紹介します。

 

利益さえ出ていればマイナス得点にならない

バックテストスコアは年利を元にして算出しております。

最初にスプレッド分の補正をかけた純益を算出し、この純益から年利を計算する仕組みです。

算出された年利に4種類の補正をかけて最終的なバックテストスコアとする流れで計算しています。

4種類の補正値はいずれも0以上1以下の値をとります。

そのため、最初に算出された年利がプラスの値だと、その時点でバックテストスコアは0以上が確定します。

 

どんなにテスト期間が短かくても、モデリング品質が低くても、取引回数が少なくても0より小さくなりません。

しかし実際には、上記のような項目を満たしていて品質が低いバックテストのEAは、フォワードではマイナスの成績になると考えています。

この問題はバックテストスコアが0点の「SpeedScalpingEx」のフォワード成績がマイナスだったのを見て感じました。

 

バックテストスコアの得点が、なるべく実際の運用時の成績を表すようにしたいので、品質の低いバックテストでも0点が下限になってしまうと困ります。

この点を解決できるような補正方法に変更していきたいと考えています。

 

カーブフィッティングを見抜く仕組みがもっと欲しい

バックテストスコアはバックテストファイルの成績から、EAの良し悪しを点数で評価することを目的としています。

点数はバックテストから求められるため、バックテスト自体がカーブフィッティングされていると得点が高くなってしまう欠点があります。

一応テスト期間の短いバックテストは評価を下げたり、総取引数が少ないバックテストの評価を下げたりと、カーブフィッティングのバックテストは得点が下がるような施策を加えていますが、まだ不十分だなと感じています。

 

できればカーブフィッティングをバックテスト時点で見抜いてバックテストスコアに反映したいと考えています。

 

後書き

今後の改良ポイントをご紹介いたしました。

バックテストスコアがより信頼性の高い指標となるよう、これからも頑張っていきますので応援何卒よろしくお願いいたします。

こうした方がいいのでは?みたいなご意見も常時募集中ですのでお気軽にコメントして下さい。

Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)