ファイナンス機械学習:バックテストの危険性
バックテストは、過去のデータを使っての仮想シミュレーションであり、ベットサイズ、売買回転率、取引コストを考慮に入れたある戦略の過去の一定期間においての振る舞いを見て、整合性のチェックを行うことができる。
バックテストを行うにあたり、バックテストデータの期間中に破綻した会社や上場廃止された証券を投資ユニバースから外したり、シミュレーション期間中には明らかになっていない情報を入れると、誤ったバイアスに導かれた結果になる。
バックテストの目的は、悪いモデル(戦略)を切り捨てることで、改善することではないから、テストデータを使った後にパラメータを修正して再度訓練することは意味がない。
また機械学習アルゴリズムのリサーチツールは、特徴量の重要度分析であって、バックテストではない。バックテストから偶然得られた結果にストーリーをつけて正当性を持たせるのは無意味であると同時に、滅多に起こらない稀な現象に焦点を当てた戦略もバックテストの意味から外れる。
特徴量の分析は、投資戦略の収益の可能性の有無ではなく、機械学習アルゴリズムが新たに発見したパターンの性質への理解を助ける。
取り引きコストは、実際に実行しなければ設定することが難しく、ある程度のエラーが見込まれるし、売りポジションを取ったと仮定しても、買いポジションを取る相手が実際にいなければ、売買は成立しないなど、実験でしかないことを念頭に置いておくべきである。
故に、バックテストには数をこなすことが重要であっても、時間をかけるのは、データの構造化、ラベリング、重み付け、アンサンブル学習、効果検証、特徴量の分析、ベットサイズなど、モデルの構成要素を正しく揃えることである。
バックテストは過学習を起こすことが非常に容易い。よって、モデルは特定証券だけでなく、資産クラス全体、または投資ユニバース全体に対して構築すべきで、分散投資をすることにより、ある特定の証券の振る舞いに強く依存したバイアスを減らすことができる。
過学習か否かを判定するのには、バギングを使用する。バギングでパフォーマンスが下がる戦略は、過学習している可能性が高い。
同じデータで実地したバックテストの結果は全て保存し、最終結果に対し、過学習の確率を推定できるようにしておく。
