Contra

カーブフィッティングとは

FXのバックテストでカーブフィッティングを回避する3つ方法 -過学習と汎化性能-

2021年07月21日

はじめに

カーブフィッティングはバックテストを行う際、注意すべき項目です。

カーブフィッティングとは一体何なのか?そして、具体的な対応策まで解説します。

この記事を読んでバックテストの罠”カーブフィッティング”に陥らないようにしましょう!

カーブフィッティングとは

FXにおけるカーブフィッティングとは、過去のデータへの過度な調整を意味します。

過度に調整を行うとバックテストでは結果が良くても、実際の運用では利益が出ない場合があるため、
『カーブフィッティングには注意しよう』と言われています。

なお、データ分析においてはカーブフィッティングは日本語で曲線当てはめを意味します。データに当てはまるような曲線を求めることを意味しており、過度な調整という意味を含みません

カーブフィッティングとは

過学習

データ分析では過度な調整を過学習と呼びます。これも過去データに過度に調整(学習)しすぎて、将来のデータに適用できないことを指します。

ニューラルネットワークでもこの過学習を防ぐためにさまざまな手法が考えられています。

neural4_eye

以降ではカーブフィッティング≒過学習として説明を行っていきます。

パラメータ最適化vs過学習

バックテストは過去のデータから良いパラメータを探索し良い手法を探すツールです。つまりこれはパラメータ最適化を行います。

一方、過去のデータに沿って調整しすぎると過学習(カーブフィッティング)を起こします。

最適性と過学習はトレードオフという表裏一体の関係です。
つまり最適化を重視すると過学習に陥りやすく、過学習に気をつけると最適性が失われるという関係です。

最適性と過学習の関係

過学習しすぎない範囲内でパラメータを最適化する必要があるということです。

そこで、機械学習でよく用いられる『汎化性能』の概念を借りてきましょう。

汎化性能

過学習は過去のデータに過度に特化してしまい、未来のデータに対応できないことが問題でした。

つまり、未来のデータへの対応力があれば良いということです。

この未来のデータへの対応力を汎化性能と言います。

汎化性能とは

厳密には未来のデータではなく、未知のデータに対応できればOKです。

未知というのはパラメータを調整している時には与えていないデータのことを指します。
下の具体例は未知データでのチェックを行う例です。

バックテストで汎化性能をチェックするための例

カーブフィッティングを回避する3つの方法

バックテストで過学習を回避する方法を説明します。

上記の例のように汎化性能があるかどうか確認しましょう。

汎化性能があれば実際の運用時でもバックテストと同等のパフォーマンスが期待できます。

検証期間を変える

どの検証期間であっても同じように良いパフォーマンスがあるのかチェックしましょう。

ある年で検証したらとても良い結果であったとしても、それはその年の相場が有利であっただけの可能性もあります。

他の年でも有効性があるか確認しましょう。

バックテストアプリ検証期間の変更

パラメータを変える

用いているインディケータのパラメータをすこしずらした場合でも良い結果が出るか確認しましょう。

こちらの図はRSIの期間と%のパラメータを変化させた場合の結果です。

RSIエリアでのパラメータ検証

エリアで利益が出ている場合はパラメータを少しずらしても良い性能であるということになります。

bt_rsi_thumb
バックテストアプリでのパラメータ変更

通貨や分足を変える

USDJPYで良い手法をEURJPYでも上手くいくか検証する方法です。

また15分足での手法を60分足で検証して良い結果が出れば汎化性能が高いと判断できます。

しかし、通貨ごと、ましては分足ごとの特性もあるため、
前述した検証期間の変更やパラメータの変更によるチェックより重要度は低いです。

もちろん通貨や分足に依存しない手法を見つけられば、素晴らしい手法です。

バックテストアプリ通貨分足の変更

フォワードテスト

バックテストでの過学習対策を確認してきましたが、汎化性能チェックに一番良いのはフォワードテストでしょう。

正真正銘の未知のデータでの結果で確認することでカーブフィッティングしていないか確認できます。

Contraではバックテストだけではなく、フォワードテストへのサービス展開も行う予定です。

まとめ

時折見られる収益率+150%といった結果を宣伝しているサービスも
ある特定の検証期間での成績です。
ある特定の通貨での結果です。

といった特定の条件の注意書きがある場合がほとんどです。

確かにその期間や、その通貨で高い収益率を出すことができたのかもしれませんが、汎化性能があるかどうかは不明です。

なので自分で検証することが何よりも重要です。

コントラは最高のFXアプリを
目指して誠意開発を続けております。

機能の要望や、不具合などありましたらご遠慮なくヘッダーの問い合わせ、フィードバックからご連絡ください。またツイッターからでも大丈夫です!

皆様のFXトレードのお力になるFXアプリを目指しますので、これからもよろしくお願いいたします。

プログラミング知識不要。

FX戦略アプリ

アプリ版のダウンロードはこちら

人気の記事