バックテスト
売買ルールを過去の価格データに当てはめて、そのルールで取引していたら成績がどうなっていたかを検証すること。実際の資金を使わずに、ルールの妥当性を数字で確認できる。
用語集
バックテストの結果や仕様を読むときによく出てくる用語をまとめました。一般的な定義に加えて、AIトレードナビでの実装(計算式・仕様)が分かるものには併記しています。
売買ルールを過去の価格データに当てはめて、そのルールで取引していたら成績がどうなっていたかを検証すること。実際の資金を使わずに、ルールの妥当性を数字で確認できる。
過去のチャートを、未来を隠した状態で 1 本ずつ進めながら、自分の判断で成行・指値・逆指値を発注していく検証方法。プログラムのルールではなく、裁量の判断そのものを検証する。
本サービスでは 1 分足を最小単位に足を進め、SL / TP に触れると自動で決済され、残高・証拠金・含み損益に反映される。表示足を進めた分だけ 1 分足も内部で処理されるため、飛ばした時間帯の SL / TP も正しく判定される。
過去データではなく、これから先の相場でルールを検証すること。バックテストが「過去にどうだったか」を見るのに対し、フォワードテストは「これから同じルールを使い続けたらどうなるか」を確かめる。
データを「最適化に使う期間」と「検証に使う期間」に分け、最適化した条件を検証期間でそのまま試す方法。期間をずらしながら繰り返すことで、特定の期間だけに合わせ込んだ結果(カーブフィッティング)でないかを確かめる。
特定の期間の値動きに条件を合わせ込みすぎて、その期間の成績だけが良く見える状態。パラメーターを細かく調整するほど過去の成績は良くなりやすいが、別の期間や将来では機能しないことが多い。
逆算分析は指定した期間の「理想トレード」から効いたシグナルを探す手法のため、原理的にこの傾向を持つ(同期間の評価であることを画面上に明示している)。
価格が更新されるたびに記録される最小単位のデータ。1 分足・1 時間足などの OHLC(始値・高値・安値・終値)はティックデータを一定時間で集約したもの。
本サービスは 1 分足の OHLC(4 点)で足の中の値動きを近似しており、ティックデータそのものは使用していない。
全トレードのうち、利益で決済できたトレードの割合。
勝率 = 勝ちトレード数 ÷ 総トレード数 × 100(%)
総利益と総損失の比率。1.0 を超えていれば、そのルールは(そのバックテスト期間において)損失より利益が多かったことを意味する。
プロフィットファクター = 総利益 ÷ 総損失
1 トレードあたり平均してどれだけの損益が見込めるかを示す値。勝率だけでなく、勝ったときと負けたときの損益の大きさも加味する。
期待値 = (勝率 × 平均利益) − (敗率 × 平均損失)。勝率が低くても、勝ったときの利益が損失より十分大きければ期待値はプラスになりうる。
資産推移の中で、直前の最高値から最も大きく落ち込んだ下落幅(率)。そのルールを使い続けたときに、最悪でどれだけ資産が減る局面があったかを示す。
リターンを、そのリターンのばらつき(リスク)で割った指標。同じリターンでも、値動きが安定しているほどシャープレシオは高くなる。マイナスの場合、そのリスクに見合ったリターンが得られていないことを示す。
損切り幅(リスク)に対する利確幅(リワード)の比率。RR 1:2 であれば、損切り幅の 2 倍を利確目標にしていることを意味する。
勝率が低くても RR が高ければ期待値がプラスになりうるため、勝率と RR は必ずセットで見る必要がある。
成行注文は現在の価格で即座に約定させる注文。指値注文は指定した価格まで有利な方向に動いたら約定する注文(買いなら現在価格より安い価格を指定)。逆指値注文は指定した価格まで不利な方向に動いたら約定する注文(買いなら現在価格より高い価格を指定。損切りやブレイクアウトの追随に使う)。
本サービスの手動バックテストは、成行・指値(Buy Limit / Sell Limit)・逆指値(Buy Stop / Sell Stop)の 4 種に対応している。
買値(Ask)と売値(Bid)の差。取引コストの一部で、発注直後はスプレッド分だけ含み損の状態から始まる。
本サービスの手動バックテストでは、銘柄ごとに固定スプレッド(pips 単位)を設定でき、買いは Ask、売りは Bid で約定・評価する。
注文を出した価格と、実際に約定した価格のずれ。値動きが速い場面や指値・逆指値の約定でよく起こる。
本サービスの手動バックテストでは、成行注文は発注時点の価格でスリッページ無しに即時約定する仕様にしている。待機注文(指値・逆指値)と SL / TP は、1 分足の始値→高値/安値→終値の 4 点で足内の値動きを近似して判定する。
為替レートの変動幅を表す共通単位。多くの通貨ペアでは価格の小数点第 4 位(0.0001)、円が絡むペアでは小数点第 2 位(0.01)を 1 pip として扱うのが市場の慣行。
本サービスでは通貨ペアごとに定義した pip サイズをもとに、価格差から pips・pips から価格への換算を自動で行う。
取引数量の単位。FX では 1 ロット = 100,000 通貨単位(例: USD/JPY で 1 ロット = 10 万ドル)を標準とすることが多い。
本サービスでは 1 lot = 100,000 通貨単位を基準に、0.01 lot 刻みで指定できる。
証拠金に対して、その何倍の金額を取引できるかを示す倍率。レバレッジが高いほど少ない資金で大きな取引ができる反面、損益の振れ幅も大きくなる。
本サービスの手動バックテストでは、セッションごとにレバレッジを 1〜1000 倍の範囲で設定できる(既定 25 倍)。
ポジションを保有するために口座に置いておく必要がある担保金。必要証拠金はポジションを持つために要る金額、有効証拠金は残高に含み損益を加えた金額、証拠金維持率は有効証拠金が必要証拠金の何%あるかを示す。
必要証拠金 = ロット数 × 契約サイズ(100,000)× 価格 ÷ レバレッジ。本サービスの手動バックテストでは、余剰証拠金が不足すると新規発注を拒否する。
含み損が拡大し、証拠金維持率が一定水準を下回った際に、ブローカーが保有ポジションを強制的に決済する仕組み。資産がマイナスになるのを防ぐための機能。
本サービスの手動バックテストでは、有効証拠金(残高+含み損益)が 0 以下になった時点で、保有中の全建玉を強制決済する。
MetaTrader(MT4/MT5)上で動く、あらかじめプログラムしたルールに従って自動で発注・決済を行うプログラム。開発には MQL という専用言語を使う。
本サービスは EA の開発・実行機能を持たない。日本語で書いたルールを DSL に変換して検証する自動バックテストと、裁量判断を検証する手動バックテストの 2 本立てで、自動売買そのものは対象外としている。
実際にこれらの指標が算出される画面を見たい場合は、自然言語バックテストや手動バックテストを無料でお試しください。