バックテストという言葉は知っていても、
「そもそもバックテストってどうやってやるの??」
という方は非常に多いです。
そこで今回は
バイナリーオプションのバックテストの方法3選
バックテストの代行を依頼する時の注意ポイント
についてバックテストを行ってツール開発を行っている開発者の視点で詳しく解説します。
バックテストに関する疑問や代行の依頼も受付中です!
目次
バイナリーオプションのバックテストの方法(やり方)
目視での計測
そもそもバックテストとは「その手法を使った時の勝率などのデータを取得する事」です。
極端な話、自分自身でチャートを開き、各ローソク足がエントリーの水準を満たしているか1本ずつ確認し、その勝敗を数えればデータを取得することができます。
例えば、以下の条件のロジックのバックテストを目視(手動)で確認するとします。
ポイント
- RSI70以上でLowエントリー
- RSI30以下でHighエントリー
この手法の場合、当然ですがRSIが70以上または30以下のポイントを探さなければいけません。
実際に下記の画像を見た時にどのポイントが条件を満たしているかパット見てもわからないと思います。
実際にどこが条件を満たしているかというと
矢印が表示されているポイントが条件を満たしたロウソク足になります。
そしてこのポイント1つ1つの勝敗を確認していかなければいけません。
ちなみにこのチャートは半日分しか表示していません。
通常、バックテストは数年単位で行います。
たった半日分のチャートを見るのも大変なのに数年分、そして複数通貨のデータを手動で取得するのがどれだけ非効率で現実的ではない事がおわかりいただけたと思います。
エクセルで計算する
2つ目はエクセルを利用する方法です。
過去のレート(価格)をエクセル上に入力し、手法の条件を計算式で表して勝敗を計算します。
「手法の条件を計算式で表す」
と言われても、バックテストの経験が無い方にとってはいまいちピンとこないと思いますが、インジケーターの値は全て計算できるんです。
例えばRSIであれば以下の計算式で算出できます。
RSIの計算式
RSI = A ÷(A+B)×100
A:ロウソク足14本の値上がり幅の平均
B:ロウソク足14本の値下がり幅の平均
ロウソク足のレートから各インジケーターの値をエクセル上で算出し、条件を満たしてたポイント(エントリーポイント)の勝敗を計算することができます。
このエクセルによるバックテストのメリットは単純な手法であれば複数の条件を同時にデータを取得することができる点です。
例えば、先程の「RSI70以上でLowエントリー」という条件を「RSI75以上でLowエントリー」に変更した場合のデータも同時に取得する事ができます。
プログラミング言語でコード化する
3つ目が、バックテストを取得したい手法をプログラミング言語を用いてコード化しMT4で分析する方法です。
ちなみに我々Traders HERO%はこの方法でバックテストを行っています。
急に「コード化する」と言われてもわけがわからないと思います。
そもそもMT4はMQLというプログラミング言語で動いています。
そして、バックテストを行いたい手法をこのMQL言語でコードに変換します。
コード化さえしてしまえば後は、MT4で過去の相場に当てはめて分析し、分析したデータを専用のソフトで解析すればデータの取得完了です。
バックテストの流れ
- 手法をコードに変換
- 変換したコードをMT4で分析
- 分析したデータを解析
ざっくりとですが上記の3つのステップでバックテストを行います。
解析に使用するソフトにもよりますが、我々が使用しているソフトの場合、以下のデータを取得することができます。
取得データ
- 取引回数
- 勝数
- 負数
- 引分数
- 勝率
- 最大連勝数
- 最大連敗数
- 最大連勝購入日時
- 最大連敗購入日
- 平均連勝数
- 平均連敗数
- PF:プロフィットファクター(総利益 ÷ 総損失)
- 最大DD:ドローダウンの最大値(最大資産からの下落率)
- 総損益
- 1日平均取引回数
- 月間平均期待値(円)
- 平均取得Pips数
- 平均取得Pips数(勝ち)
- 平均取得Pips数(負け)
上記データを「年別」、「月別」、「時間別」、「分別」で取得可能です。
解析ソフトの画面
この方法のメリットは、どんなに複雑な条件でも明確に言語化できるのであればバックテストが可能である事です。
例えば、
- 5分足の条件と1分足の条件を組み合わせた手法
- 相場が〇〇の条件の時は手法A、△△の時は手法B
などなど、どんな複雑な条件でも明確に言語化できるのであればバックテストが可能です。
一方デメリットとしては、初心者にはハードルが非常に高い事です。
MQLを独学で学ぶことも不可能ではないのですが、自分が書いたコードが正常に稼働しなくても質問できる相手がいないので、実用レベルになるにはかなりの時間を必要とするでしょう。
バックテストの代行
今回紹介した3つの方法の内、手動以外の「エクセル」と「プログラミングによるコード化」によるバックテストはどちらもスキルが必要となるため初心者の方には難しいでしょう。
かといって手動によるバックテストだと必要な時間と正確性を考えたら現実的ではありません。
では、何も経験がない初心者の方がバックテストデータを取得するには代行(依頼)するしかありません。
「ココナラ」や「ランサーズ」といった仕事を依頼できるサイト上ではバイナリーオプションのバックテストを請け負っている方はたくさんいますし、我々Traders HERO%でも請け負っています。
しかし、代行業者によってデータを取得する年数、取得できる通貨ペアの数や取れるデータの種類など様々です。
ですので、バックテストの経験が無い方からしたら、どの業者に依頼すればいいのかわからないと思います。
そこでツール開発者の目線で、どのようなデータを取得してくれる業者を選べばいいのかポイントを解説します。
取得年数
バックテストでは、過去何年分のデータを取得するかが重要となってきます。
なぜなら、短期間だけ勝率が高い手法だとしても長い期間で見た時に勝率が低いなんてことも往々にしてあるからです。
この説明だけではあんまりピンとこないですよね??
例えば、以下の2つの手法を比べた時にどちらの手法を使いたいと思いますか?
- 手法A:勝率65%
- 手法B:勝率60%
この情報だけだと手法Aの方が優れた手法に見えますよね?
では、こちらの場合はどうでしょうか?
- 手法A:勝率65%(バックテスト取得期間:1ヶ月間)
- 手法B:勝率60%(バックテスト取得期間:5年間)
手法Aの方が勝率が高く見えていましたが、実はたった1ヶ月間のデータだったんです。
そうなると、この手法Aが今後も勝率65%をキープしてくれかはわかりません。
一方、手法Bに関しては手法Aより勝率が下がりますが、5年間において勝率60%を出しているのであれば手法Aよりデータの信頼性は高いと言えるでしょう。
このようにバックテストデータを取得する年数が長いほど、そのデータの信頼性は高まります。
ただし、単純に取得する年数が長ければいいという問題ではありません。
その勝率の中身も重要となってきます。
詳しく説明します。
例えば、同じ勝率60%の以下の2つの手法があったとします。
- 手法A:勝率60%(バックテスト取得期間:6年間)
- 手法B:勝率60%(バックテスト取得期間:6年間)
どちらも勝率が同じ60%でバックテストの取得期間も同じなので優劣をつけることはできません。
しかし、一見同じような手法に見えても、過去6年間でどのような勝率の推移を示したかを見ると全く異なる手法であることがわかります。
先程の手法の年別の勝率が以下のような推移を示したとします。
年別 | 手法A | 手法B |
2015年 | 63% | 58% |
2016年 | 64% | 60% |
2017年 | 59% | 61% |
2018年 | 60% | 59% |
2019年 | 57% | 61% |
2020年 | 56% | 61% |
手法Aに関しは2015年〜2016年は高い勝率を出していましたが、以降徐々に勝率が落ち、直近では56%まで勝率が落ちてしまっています。
一方、手法Bに関しては年代にかかわらず、安定して60%前後の勝率を出しています。
となると手法Bの方が今後も安定した勝率を出してくれる可能性が高いと判断できまよね?
このように年代別の勝率を確認することが重要となってきます。
時間別勝率
できれば、時間帯別の勝率を取得できる業者を選びましょう。
為替相場は24時間動いているとはいえ、時間帯によって値動きの特徴がガラリと変わります。
こちらは実際の時間帯別のデータです。
ご覧のように時間によって勝率が大きく異なるのがわかると思います。
最大連勝数と最大連敗数
この2つはあまり馴染みのないデータかもしれませんが重要なデータです。
その名の通り、バックテストを行った期間において「最大で何連勝したか?」「最大で何連敗したか?」を示したデータです。
バイナリーオプションにかかわらず、投資においては資金を溶かさないことは非常に重要です。
仮に勝率が高かったとしても、極端に最大連敗数が大きい手法であれば相場によっては大きな資金を失う可能性があるということです。
バックテストに関する疑問や代行を検討されている方はお気軽にお問い合わせください。
他の項目
上記で解説した項目は特に重要なものですが、絶対に必要ではなないけどあったほうがいい項目を紹介します。
他の項目
- 最大連勝購入日時
- 最大連敗購入日
- 1日平均取引回数
- 月間平均期待値(円)
- 平均取得Pips数
- 月別データ
- 分別データ
平均獲得pipsとは、エントリー時と判定時の値幅の差(=獲得pips)の平均を示したデータです。
この平均獲得pipsが大きいほど安定した勝率を出せることができますし、反対にこの数値が小さいほどレートのズレやスプレッドによって勝率が下がる原因となりますのでロジックの開発を行う上では重要なデータとなります。
また、最大連勝購入日時や最大連敗購入日などを知ることにより、そのロジックが「どのような相場で強いのか?弱いのか?」を知る手がかりとなります。
このように取得したデータを活用する事によって、その手法の改善や実際にその手法を使って取引する際の大きな手助けとなります。
まとめ
今回の記事ではバックテストの方法とバックテストの代行業者を選ぶ際のポイントをお伝えしました。
バックテストの方法としては以下の3つがあり
ポイント
- 目視での計測
- エクセルでの計算
- プログラミング言語でコード化する
3つ目の「プログラミング言語でコード化する」の方法が最も多様な手法のバックテストに対応しており、取得できるデータも豊富なのでおすすです。
また、バックテストの代行を依頼する際には、最低限以下のデータを取得できることを確認しましょう。
バックテストの必須項目
- 勝率
- 取引回数
- 年別データ
- 時間帯別勝率
- 最大連敗数
- 最大連勝数
- 過去5年以上のデータ
我々Traders HERO%でも「プログラミング言語でコード化」を利用したバックテストの代行も行っておりますので、依頼を検討されている方は、「【業界最高品質!!】バイナリーオプションのバックテスト代行サービス」をご覧になってください(当然、上記のデータを含む豊富なデータを取得可能です)。