自動売買Botを作るうえでバックテストでその性能を確認することは欠かせません。
ただ、全体の収益率というわかりやすい指標のみで判断していると、実は有力なモデルも有力でないとみなしてしまいかねません。
継続的に利益を上げていくには、適切な指標を用いて適切に判断していくことが大切になります。
ということで今回は、『ファイナンス機械学習』で紹介されているモデルのパフォーマンスを測る指標11種類について紹介していきます。
ご自身のモデルパフォーマンス評価に是非お役立てください。
投資戦略パフォーマンス指標11種類
今回紹介するパフォーマンスを測る際に有用な指標は以下の通りです。
- PnL
- ロングポジションPnL
- 年率換算収益率
- ヒット率
- 利益の平均リターン
- 損失の平均リターン
- リターン集中度
- ドローダウンとアンダーウォーター期間
- シャープレシオ
- 確率的シャープレシオ
- 収縮シャープレシオ
それぞれ詳しく見ていきます。
①PnL
まずは、PnL(Profit &Loss)です。
代表的なので皆さんもご存知かと思います。
これは単純にバックテストでの損益を表します。
プラスに大きいほうがパフォーマンスが良く、マイナス値だと全体として利益が出ていないことを意味します。
②ロングポジションPnL
次はロングポジションPnLです。
これはロングポジションから発生した損益の合計値になります。
つまり、ロングでどれくらい勝てているかの指標です。
著者曰く、この指標はロングショートやマーケットニュートラル戦略のバイアスを評価するために重要な値だそうです。
この指標について詳しくは以下の記事で解説していますので、さらに詳しく見たい方は是非ご参考ください。
③年率換算収益率
年率換算収益率とは、配当やクーポン、コストなどを含んだ時間加重平均の年間の総収益率のことです。
仮想通貨の売買であれば、配当などはないので取引コストと損益の時間加重平均したものになるかと思います。
時間加重平均の詳しい計算式等は書籍に記載されていますが、バックテストに使えるライブラリ「Backtesting.py」であれば年換算収益率をReturn (Ann.) [%]という指標で出してくれるので、これでよいかなと思います。
④ヒット率
ヒット率とは、利益をもたらしたPnLの割合を示します。
言い換えると、勝率のことで、こちらのほうが聞き覚えあるかもしれませんね。
算出方法は『勝った取引数÷全体の取引数』で出せます。
⑤利益の平均リターン
これは、文字通り利益の平均を示す指標です。
利益が出た取引が平均的にどの程度利益をもたらすのかを示します。
算出方法は『利益の合計÷利益の出た取引数』で導き出せます。
⑥損失の平均リターン
こちらは、先ほどの反対で、損失の平均を示す指標です。
算出方法は、『損失の合計÷損失の出た取引数』で導き出せます。
⑦リターン集中度
リターン集中度とは、損益がある特定の期間にどれだけ集中しているのかを示す指標です。
この指標を用いることで、損失が連続している期間(=損失が集中している)がわかり、ランを適切に評価することができます。
この指標で導き出された値(h+またはh-)が低いほど理想的とされています。
⑧ドローダウンとアンダーウォーター期間
ドローダウンとは、損益の最高点からの最大損失を示します。
アンダーウォーター期間とは、損益の最高点から一旦下落し、再度その最高点を超えるまでの期間のことを示します。
ドローダウンとアンダーウォーター期間の解釈の仕方など詳しくは以下の記事で解説していますので、ご覧ください。
⑨シャープレシオ
シャープレシオは、投資戦略や投資家のスキルを評価する際に良く用いられる指標の1つです。
これも良く聞くパフォーマンス指標なので知っている人も多いかと思います。
あまり知らないという方は、以下のページで詳しく解説されているのでそちらをご参考ください。
⑩確率的シャープレシオ
確率的シャープレシオとは、観測されたシャープレシオがユーザー定義のシャープレシオよりも大きくある確率の推定値です。
つまり、その戦略が自身の設定したシャープレシオより大きくなり、良いパフォーマンスを発揮するかを推測できます。
確率的シャープレシオについて詳しくは以下の記事をご参考ください。
⑪収縮シャープレシオ
収縮シャープレシオとは、ベンチマークであるシャープレシオに試行回数を反映するように調整された確率的シャープレシオのことです。
正直、詳しくは私もあまり深く理解できていません。
わかる方いれば教えてください。
ちなみに、具体的な話は以下の記事に記載されていますので、詳しく知りたい方はご参照ください。
モデリングの評価関数におけるシャープレシオの取り扱い – Qiita
個人的には確率的シャープレシオの期待シャープレシオ(閾値)をどう設定するかの違いが主なポイントという感じです。
パフォーマンス指標を見る上での注意点
ここまでモデルやストラテジーのパフォーマンスを測定する指標を紹介してきました。
これらの指標を用いて評価した際に、非常に良い結果を出すものも出てくるかと思いますが、そこで注意しておかないといけない点としては、これらの指標は将来のパフォーマンスを約束するものではないということです。
これらの指標から得られるスコアは、すべて過去のデータに基づいて導き出されたものであり、将来にわたって同じパフォーマンスを維持できるとは限りません。
なので、良いパフォーマンススコアが得られたとしても、実運用を行いながらその過程でのパフォーマンスも常に評価していくことが大切かなと思います。
実際はどの指標を使っている?
上記でいろいろとパフォーマンス測定指標を紹介しましたが、実際に勝っているBotterの方々はどんな指標を使っているのでしょうか?
結論、人それぞれなようです。
自身が所属しているBotterコミュニティで利益を上げられている方々に聞いたところ、
- 自作指標含めいろいろ試したが、結局総収益率に収まった
- T検定やrichmanbtcさん考案のP平均、収益率など様々な指標から判断
といった感じで一概に採用されている絶対指標のようなものは特にありませんでした。
なので、自分でいろいろな指標を見て、良い結果とつながったものを採用していくのが良いのかなと感じています。
まとめ
今回は、バックテストでのパフォーマンスを測る指標をいくつか紹介しました。
これらの指標を複数用いて総合的に判断することで、より信頼性高くモデルを評価することができ、実運用での利益につなげられます。
パフォーマンス指標の参考になれば幸いです。
さらに詳しく学びたい方は以下の書籍がかなりお勧めです。自動売買で勝っていてこれを読んでいない人はいないというぐらい伝説の書籍なので、学びも多いと思います。