この記事の内容
この記事を読むと…
- Ask/Bid損益と中値モデルを照合する。
- スプレッドの二重計上と費用感度を見抜く。
- 判断時刻と結果確定時刻から学習境界を決める。
記事内で用語を調べる
BidとAsk(売値と買値) スプレッド バックテスト 中央銀行 コミッション(売買手数料) ドローダウン過去の勝率が高いだけでは優位性は分かりません。バックテストは、明示したルールを特定のデータと執行モデルで検証するものです。丁寧なテストも将来収益を保証しません。
何を確かめるための検証か
過去の正の期待値は、その試験した標本についての証拠です。偶然、選択や過剰適合でも生じ得ます。独立に残したデータ、費用、頑健性を調べてから範囲を広げます。特定年数で利益が出たことだけで実運用へ進む権利を得るわけではありません。
曖昧なルールと未来情報をなくす
銘柄・時間足・入力・発注時刻・出口・数量計算を記録します。架空の日足規則なら、確定した終値と前足の高値を比較し、その終値が利用可能になった後に発注します。その足の確定終値を使い同じ足の早い始値で入れば未来情報です。既存ポジション、欠損データ、証拠金不足の扱いも決めます。指標設定だけでは、これらの決定や約定は定まりません。
優位性の見つけ方でも、ルール内の矛盾を見つけることと、費用・選択・不確実性を超えた優位性の証明を区別します。検証フレームワークで日々の記録につなぎます。
データと必要な標本の範囲
通貨先物と店頭現物・CFDは異なる契約です。集中した先物データがそのまま個人口座の店頭戦略を再現するとは限りません。提供者、商品、Bid/Ask等の価格の側、時間帯、欠損を保存します。OHLCだけでは同じ足内でSLと目標のどちらが先に触れたか分かりません。
MT5の公式説明では、分足が存在してもティック履歴がない区間に生成ティックを使う場合があります。「実ティック」というモード名だけで全期間の実測を保証せず、履歴とログを確認します。銘柄集合は当時選べたものを残し、経済指標は後日の改定値でなく当時公表済みの値を使います。
100回なら統計的に有意という普遍的な閾値はありません。分散、結果の依存性、効果の大きさ、選択の回数、相場状態の範囲と実効的な標本数を考え、不確実性を報告します。期間を増やしても関連状態を必ず網羅するとは限りません。
スプレッド控除前に価格の側を照合
Ask買い・Bid売りの損益と中値間の変化を同じ例で照合します。
図全体は横スクロールで確認
横にスクロールすると図全体を確認できます。
仮定:同じ架空商品、入口気配100/102、出口103/105、中値は平均。数量1単位を指定したAsk・Bidで正確に約定。手数料・資金調整・ギャップ・滑りなしで、現在の気配や保証約定ではありません。
103−102=+1。中値104−101=+3から入口・出口の中値との差1ずつを引けば3−1−1=+1。全幅2ずつを引く3−2−2=−1は不整合で、Ask→Bid差からさらに2を引くのも二重計上です。
MetaQuotesのBid/Ask説明はチャート生成価格と売買価格を区別します。元データの価格の側を保存し、追加費用や別の約定は別モデルで計算します。
費用を全取引へ一貫して入れる
Ask買い・Bid売りには価格の側の差が含まれます。スプレッドをもう一度引かず、別途の手数料・資金調整・明示した滑りを加えます。架空0.8 pipの幅は200 pip目標の0.4%、5 pip目標の16%ですが、目標距離に対する比率で、戦略の優位性に対する比率や実成績ではありません。
別の架空50取引では、費用前の勝ち30回×40 PLN=1,200 PLN、負け20回×50 PLN=1,000 PLN、差200 PLNです。同じ往復費用を勝ちにも負けにも1回ずつ適用します。PLNは元モデルの単位として残します。
| 1取引の費用 | 純合計 | 純平均 | 純PF |
|---|---|---|---|
| 0 PLN | 200 PLN | 4 PLN | 1.20 |
| 2 PLN | 100 PLN | 2 PLN | 約1.10 |
| 4 PLN | 0 PLN | 0 PLN | 1.00 |
費用2なら勝ち38、負け52 PLNでPF=(30×38)/(20×52)=1,140/1,040≈1.10。割り当てた数の計算で、観測された戦略の証拠ではありません。平均費用の2倍を確保する、あるいは粗利益の20%を費用が超えたら棄却するといった基準も、普遍的な安全率ではありません。あり得る費用と執行変化への感度を調べます。
選択履歴と評価データの境界
パラメータ・銘柄・期間分割の多数候補から最良を選ぶと、履歴特有の変動へ適合し得ます。最適化画面外で捨てた案も全試行へ数えます。パラメータを2個へ減らしても他の選択は消えません。強い選択結果だけで過剰適合を断定することもできません。
分割を調整前に凍結します。70/30は可能な設計の一つ。評価側の悪化は相場状態や標本差でも生じます。評価結果を見て修正すればその区間も開発データとなるため、利用履歴を残します。ウォークフォワードでも情報の利用可能時点を固定します。
架空の判定tの結果がt+3で確定し、最初の評価開始t10より前に学習を終えるとします。候補t1〜t9のうち結果がt10前に利用できるのはt1〜t6だけ。t6の結果はt9、t7〜t9はt10〜t12なのでこの学習に使えません。評価指標の計算に過去価格を使うこととは別です。この除外は設定したラベル重複を解消するだけで、すべての漏洩を消すわけではありません。
JSTで境界を記録する別の演習
別の架空1分モデルで、評価開始10:00 JST、各判断の結果は3分後に確定し、学習終了は10:00より前とします。09:56の結果は09:59で採用可能、09:57は10:00で不可、09:59は10:02で不可。判断時刻だけが10:00前でも結果が未確定なら使えません。元データをUTCで保存するなら10:00 JST=01:00 UTC、09:59 JST=00:59 UTC。時刻変換と結果の利用可能時点を別の列へ保存します。
判断・結果確定・学習終了を別の時刻として保存。JST10:00=UTC01:00の変換でも情報の早期利用は正当化されません。
小さな画面では横にスクロールするか、図を拡大できます。数値と要点は下のテキストにも記載しています。
- 09:56の判断
- 09:59確定・採用可能 – 境界前に結果が利用可能。
- 09:57の判断
- 10:00確定・採用不可 – 同時確定を境界前としない。
- 09:59の判断
- 10:02確定・採用不可 – 判断時刻だけでは決めない。
仮定の勝率から何が計算できるか
勝つ確率0.54、平均勝ち2.3R、平均負け1Rという架空算術なら粗期待値0.54×2.3−0.46=0.782R、PF=(0.54×2.3)/0.46≈2.70。これらからドローダウンや総リターンは決まりません。独立に「正確に5年で+87%」と置けば年複利は1.87^(1/5)−1≈13.34%。取引の勝率や平均Rから導いた数ではありません。
再現可能な試験へ進む手順
- 規則の版を1ファイルへ保存。情報時刻、発注・数量、曖昧・欠損入力の扱いを明記します。
- データ版・期間・時系列分割を調整前に固定します。5年や2年は普遍的な要件ではありません。
- スプレッドの二重控除を避け、手数料・資金調整・滑りを含め感度を比較します。
- 取引数、依存性、分散、不確実性とすべての選択を記録。銘柄追加は単に証拠を増やすのでなく仮説を変える場合があります。
- 損失、出なかった信号、足内順序が曖昧な例を個別再現し、凍結したモデルとデモを比べます。3か月デモは利益や実運用準備の保証ではありません。
実データと再現コードを読む
別の公開研究ではECBのEUR/USD公表2,560件、公表のなかった平日49日をTARGET暦と照合しています。これは価格の欠損と予定非公表を区別する研究で、戦略利益を立証しません。2016〜2025年のECB公表暦・データ・再現コードを確認してください。
理解度を確認
練習の目安: 約2分.
答えと解説を見る
103−102=1。選んだAsk/Bidに含まれた差を再控除しません。
よくある質問
過剰適合とは?
どのソフトを選ぶ?
何年・何取引必要?
良いテストの現実的な成績とは?
出典と検証
- www.metatrader5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.metatrader5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.nict.go.jp
内容の参考資料。記事に記載した範囲と前提を確認してください。
計算例には前提条件を明記しています。現在の市場データや提供会社の取引条件の代わりにはなりません。
