この記事は、MT5のEA売買(トラックA)とは別の口座・別の仕組みで動かしている「AI直接売買」の記録です。ClaudeがOANDAのAPIを通じて直接発注しています。仕組みの全体像はAI直接売買とはをご覧ください。
前回、AIに直接発注させる実験を始め、同時に「そのエントリー条件に本当に優位性があるのか」を過去データで確かめる道具を作った、と書きました。今回はその検証の記録です。9月7日から8日にかけての、ほぼ2日間の話になります。
最初の結果:現行ルールは「エッジなし」
6ペア、2021〜2024年の4年間を学習期間として、実弾で動かしていた順張りルールをそのまま回しました。結果はPF 0.99(プロフィットファクター=総利益÷総損失。1.0を下回ると損のほうが大きい)、10,000通貨換算で−93,811円。要するに、コイントスと変わりません。
EAトラックで1年かけて学んだことが、初日にそのまま出ました。「教科書的な順張り条件」には、少なくともこの期間・この時間足では優位性がない。
A/B/Cで回す——ただし「良い数字」を探さない
ここからは改善のループです。ただ、EAトラックで痛い目を見た「パラメータを削り込んで成績表を良くする」作業は、絶対にやらないと決めていました。AIにこれをやらせると、人間の何倍も速く、深く、過去にぴったり合ったルールを作ってしまいます。
そこで役割を3つに分けました。
- A(立案):「なぜ効くはずか」の理屈つきで仮説を出す。理屈のない総当たりは禁止
- B(検証):バックテストを回して数字を返すだけ。解釈しない。コードを触って数字を良くするのも禁止。これはAIではなく、決定論的なプログラム
- C(評価):AとBを突き合わせて採用・棄却を判定する。「良い数字が出た」だけでは採用しない。過学習を疑う係
採用基準も先に決めました。学習期間でトレード数300以上、PF 1.3以上、月次勝ち越し60%以上、最大DD(資金の最大の落ち込み)25%以下、6ペア中4ペアでPF>1、パラメータを±20%動かしてもPFが1を割らない。これを通ったルールだけを、検証用に取り分けた2025年以降のデータに1回だけかける。検証期間を何度も見たら、それはもう「未知の期間」ではなくなるからです。
見つからなかったもの
結果を先に並べます。2日間で約260通り、7系統。
| 試した系統 | 結果 |
|---|---|
| H1 EMA順張り(6ペア、15変種) | PF最良1.11。利益の87〜126%が特定の3ヶ月に集中 |
| USD_JPYブレイクアウト(v4_c_bo10) | 学習期間PF 1.45で「合格」に見えた。しかし中身は2021〜24年の円安トレンドを買い持ちしていただけ。2015〜20年ではPF 0.94 |
| H1 ボリンジャー平均回帰 | コスト差し引き前でもPF 0.93 |
| VPSで動いているEA(Fable5_BB_Final)を移植 | 2015〜20年でPF 0.68。勝ち年は6年中1年。優位性は円安局面そのもの |
| レジームゲート(週足・日足の環境判定)×順張り | DD 25%以下の組み合わせがゼロ。ただし週足の方向判定には本物の情報があった |
| 28ペア週次トレンドフォロー | CAGR(年率)−3.4〜−7.2% |
いちばん堪えたのは4行目です。VPSで実際に動かしているEAを、この検証装置に移植して10年分回したら、円安が始まる前の6年間は負け続けていた。EAトラックの「主力」の優位性は、ルールではなく2021年からの円安局面そのものだった。EAトラックの「バックテストに頼るのをやめる」という決断の裏には、この数字があります。
途中、Cが検証プログラム自体の欠陥も見つけています。同時保有の制約がない、円換算が固定、スリッページが片道、などの13件。直すたびに数字は少し悪くなりました。「実装の不備を直せば良くなる」という直感は、2回とも外れました。
「信号を逆にしたら勝った」
28ペアの週次トレンドフォローが全滅したあと、Cが「本当に信号に情報がないのか、それとも方向が逆なのか」を切り分けるために、売買を反転させて回しました。
結果は+3.75%/年、28ペア中23ペアがプラス、10年中7年勝ち。円クロスを外しても+5.39%。つまり2015〜2024年のFXは、週足で見ると「トレンドに乗る」のではなく「行き過ぎたら戻る」市場だった。しかも特定の通貨ではなく、ほぼ全部のペアで。約200通り試して初めて出てきた、幅のある信号でした。
ここで大事なのは、この反転結果を「採用」しなかったことです。あくまで手がかり。ここから仮説を事前登録して、改めて検証しました。
M1:唯一残った候補
事前登録した平均回帰ルール「M1」の定義はこうです。
- 対象:主要8通貨のうち、円を含まない21ペア(円クロス4本は実質「円」という1つのポジションなので分散にならない)
- 信号:週足終値が直近13週の高値を更新したら翌週始値でショート。安値更新ならロング
- 出口:週足終値がSMA26(26週移動平均)を逆に抜けた翌週始値、または保有8週
- STOP:含み損が口座の2%に達したら手仕舞い
- サイジング:ボラティリティに応じて口座の0.5%ずつ。総想定元本は口座の3倍まで、通貨別の偏りはその半分まで
学習期間(2015〜2024)でCAGR 8.93%、10年中9年プラス、最悪の年が−1.3%、8通貨中7通貨がプラス。初めて「分散した形」の優位性が出ました。頑健性のチェック(パラメータ±20%で8通り、通貨を1つずつ抜く、3年窓を8回ずらす)も全部通過。
そして、検証期間(2025年1月〜2026年9月)を1回だけ使いました。
| 学習 2015–2024 | 検証 2025–2026/9 | 合格ライン | |
|---|---|---|---|
| CAGR | 8.93% | 8.16% | 4%以上 ✅ |
| 最大DD | 31.3% | 11.5% | 30%以下 ✅ |
| 幅(PF>1のペア) | 62% | 35% | 50%以上 ❌ |
| 通貨別 | 7/8プラス | 6/7プラス | — |
収益性とリスクは期間外でも保った。でも「幅」だけ不合格。形式上は不合格です。
中身を見ると、20ヶ月で1ペアあたり3〜4回しかトレードがなく、スワップ補正で−438円動いただけで3ペアの判定が入れ替わっていました。「幅」はこの短さでは測れない指標だった、つまり合格ラインの設計ミスです。でも、事前に決めた基準を、結果を見てから緩めるのはやらない。それをやった瞬間に、EAトラックで100本作った1年に戻ります。
判断:実弾インキュベーション
Claudeから出た選択肢は2つ。「未確立として棚上げ」か、「検証期間の3回目は使わず、これからの相場を新しい未知データとして、小さく実弾で走らせる」か。
後者を選びました。レバレッジ1.5倍。やめる条件も先に決める——累積−8%、DD 20%、26週時点で通貨別プラスが7中4未満、月次勝ち越し40%未満のどれかに当たったら止める。26週生き残ったら3倍へ。
運用は週次です。月曜にプログラムが目標ポジションを出し、Claudeは中銀会合・介入警戒・選挙のあるペアだけ外す「拒否権」を持つ。執行して記録。金曜に実績と期待値を照合。AIの役割は、相場を当てることではなく、イベントの前で降りることだけに絞りました。
9月8日深夜、最初のトレード。AUD_CHFショート883通貨、ストップロスは口座の2.00%ぴったり(−5,981円)の位置。同じ週のもう1本、EUR_AUDロングは9月10日のECB(欧州中央銀行)会合を理由にClaudeが拒否権を使いました。
2日間で学んだこと
- 単一ペア・単一時間足のH1ルールは、10年に1回の相場(今回は円安)に依存する。優位性は「時間足を上げて、市場を広げる」ことで初めて分散した形になった
- 負ける戦略は「信号に情報がない」とは限らない。反転とコストゼロで切り分ける
- 探索を増やすほど、最良値はノイズの天井に近づく。事前登録した仮説だけ回す
- 合格基準は手法の頻度だけでなく、検証期間の長さにも合わせる。1ペア3回のPFで「幅」は測れない
- 検証期間を使い切ったあとの未知データは「これからの実弾」しかない
こうしてM1は実弾で走り始めました。——が、次の記事で書くとおり、3日後に自分で止めることになります。
コメントを残す