EA REVERSE ENGINEERING / RESEARCH

EAは、なぜ
そこで買ったのか。

中のプログラムは読めません。読めるのは、EAが実際に出した注文だけです。その注文の時刻・価格・損切り位置と、当時の相場を照らし合わせて、売買ルールを逆から推定していく——その研究の記録です。

ソースコードは使いません。使うのは、外から見える注文の履歴と市場データだけです。

30秒で分かる

やっていることは、
足跡から歩き方を当てること

雪の上に残った足跡から、その人の歩幅や進む向きを推測する——やっていることは、それに近いことです。工程は4つあります。

  1. 足跡を集めるEAが出した注文を、時刻・価格・損切りの位置まで1件ずつ並べます。
  2. その時の相場と重ねる注文が出た瞬間、価格がどこにいて、値動きがどれだけ荒かったのかを突き合わせます。
  3. 「この条件では?」と当ててみるルールの候補を作り、実際の注文をどれだけ言い当てられるかを数えます。
  4. 偶然を疑う時計をずらした偽の条件でも同じくらい当たるなら、それは発見ではありません。ここで候補の大半が落ちます。

4 が一番重要な工程です。ここを省くと、ただの偶然当てになります。この記事では、自分たちが4で落とした仮説も同じだけ記録しています。

いまの到達点

分かったこと、
まだ分からないこと

この研究は途中経過です。読めるようになった部分と、まだ読めていない部分が、はっきり分かれています。

読めた:注文を置く「場所」

97.0%

ある1つの解析対象では、価格水準の候補式が134水準に対し 97.0% 一致しました。どの価格に注文を並べているか、という部分は、かなりの精度で言い当てられています。

読めない:発注する「瞬間」

58.5%

ところが同じ対象で、最終的な約定の一致は 58.5% まで下がります。「なぜ、その瞬間に注文を出したのか」は、まだ読めていません。

97.0%はEA全体の解析精度ではありません。読めた部分と読めていない部分が同居しているのが現状です。さらに、一度 72〜81% の一致を示した仮説を、検定の結果として自分たちで棄却しています。高い一致率そのものは、発見の証拠になりません。

なぜ調べているのか

成績の数字だけでは、
中で何をしているか分からない

同じような成績に見えるEAでも、中身は全く違います。値動きの節目に注文を置いているのか、時間帯で決めているのか、それとも過去の相場に合わせ込んだだけなのか。外から見えるのは結果の数字だけで、その裏側は分かりません。

この研究は、その裏側を、注文の履歴という共通の材料から読み解こうとしています。目的は「当てること」ではなく、読めた部分と読めなかった部分を、どちらも同じ精度で記録することです。以下は、その記録です。

もう少し詳しく

結論を5つ

  1. 注文をどこに置くかは、かなり読める。ある解析対象では、価格水準の候補式が134水準に対し 97.0% 一致しました。
  2. それでも取引そのものを再現できたわけではない。同じ対象で、最終的な約定の一致は 58.5% まで下がります。「水準を当てる」ことと「同じ取引を再現する」ことは、まったく別の問題でした。
  3. 高い一致率は、それだけでは発見ではない。一度 72〜81% の一致を示した仮説を、検定にかけて自分たちで棄却しました。
  4. 似ていることと、利益が出ることは別軸。一致率が高くても実運用に耐えない対象があり、一致率が中程度でも収益検定を通った対象がありました。
  5. 「どこに注文を置くか」は読めるが、「なぜ、その瞬間に発注したか」はまだ読めない。これは工数の問題ではなく、注文履歴という材料そのものの構造的な限界です。
97.0% 価格水準の候補式との一致
(134水準)
58.5% 最終的な約定の一致
部分構造を説明できても、EA全体を再現したことにはならない。 同一対象で、価格水準の候補式は134水準に対し97.0%一致しましたが、最終的な約定の一致は58.5%でした。97.0%はEA全体の解析精度ではありません。

前提と規模

見えない中身を、
残った痕跡から推定する

EA(自動売買プログラム)は、ソースコードが与えられなければ内部の判断過程が見えないブラックボックスです。一方、実際に動かすと注文・約定・決済という外部から観測可能な痕跡が残ります。

何時に、いくらで、買ったのか売ったのか、損切り・利益確定をどこに置いたのか、どれくらい持っていたのか——これらは全部、取引レポートに記録されます。

この研究は、その痕跡と当時の市場データ(価格・移動平均・ボラティリティなど)を照合して、出力から内部のルールを逆算しようとするものです。数学でいう逆問題にあたります。

対象にしたブラックボックス挙動は、これまでに 35件。以下では、名前を伏せた代表的なケースで「どこまで読めて、どこから読めないか」を紹介します。

35
ブラックボックス挙動を解析
63,099
1対象で解析した保留注文
(まだ約定していない予約注文)
13 / 13
1ケースで棄却した仮説系統

数字はすべて実測値です。63,099件は最も大規模な1対象(32戦略)の5.13年分、13/13はある1ケースで検証してすべて外れた仮説の族の数を指します。

内部は見えず、出力だけが観測できることを示す概念図 ??? 内部の判断過程は見えない BUY SELL CLOSE 観測できる痕跡 市場
内部の判断過程は観測できません。観測できるのは、EAが外へ出した注文・約定・決済だけです。この研究は右側だけを材料にして、左側を推定します。

材料と工程

どうやって候補ロジックを作るのか

材料にしているのは、EAが外に残したものだけです。エントリー・決済の時刻と価格、買いか売りか、ロット、損切り(SL)・利益確定(TP)の位置、保有時間、同時保有数、そして、その各時点の市場データ。

この研究ではソースコードや静的解析を前提にせず、EAが外部に残した挙動を解析材料にしています。見ているのは、あくまで振る舞いです。

  1. 注文イベントの正規化多戦略なら、まず戦略ごとに分離する
  2. 時刻・価格・値幅の特徴抽出どこに、いつ、どれだけ離して置いたか
  3. 市場データと結合その瞬間の価格・平均・ボラティリティを突き合わせる
  4. 候補ロジックの生成と一致率候補式ごとに、実際の注文をどれだけ再現できるか測る
  5. 時計ずらし・Placebo偶然の一致をここで落とす
  6. 未使用期間での検証(holdout)候補を決めるのに使っていない期間で確かめる
  7. 棄却、または残った構造対照を超えない候補は捨てる
  8. 再現モデルの実装と収益検定実運用に近い条件のバックテストにかける

一番大事なのは 5 の「偶然の一致を落とす」工程です。ここが甘いと、ただの相関当てゲームになります。次の節がその実例です。

ケース 01

97%一致したケース

ある上位足のスイング(相場の山・谷)を基準に価格水準を組み立てる、と仮定した候補式が、対象の実際の注文の 97.0% と一致しました。511件の注文から推定したものです。

これだけ見れば「ロジックを見つけた」と言いたくなります。でも、高い一致率は偶然でも起こりえます。そこで時計をずらす検定をかけます。

EAが出した注文の価格はそのままに、参照する市場データの時刻だけを7日ずらして、同じ式でもう一度照合する。もし本当に相場構造を見ているなら、時計をずらせば一致は崩れるはずです。

候補式との一致97.0%
時計を7日ずらした対照2.2%
注文価格はそのままに、参照する市場データの時刻だけを7日ずらして再照合した結果です。この候補式には、時計をずらした対照では残らない説明力がある——単純な偶然一致だけでは説明しにくい結果になりました。

ケース 01・続き

それでも、約定の一致は
58.5%だった

同じ対象で、価格水準の候補式は97.0%一致したのに、最終的な約定の一致は58.5%にとどまりました。

理由はシンプルです。「どこに注文を置くか」を当てても、「その注文が実際に約定するか」「約定したあとどう決済するか」まで完全に一致させないと、取引そのものは再現できません。

価格水準の特定と、EA全体の再現は、まったく別のこと。

ケース 02

72〜81%の「発見」を、
自分たちで捨てた

別の対象では、発注水準を「過去のある極値と一致する」と仮定したところ、72〜81% という高い一致が出ました。普通なら発見と呼びたい数字です。

72〜81% REJECTED / 棄却

参照する窓を広げるほど一致率が上がっていく。調べると、これは相場が同じ価格帯を何度も通ったことによる見かけの一致でした。金相場は同じ値を繰り返し訪れるので、「過去のどこかの極値」にはいずれ当たってしまう。帰無検定にかけると、この一致は消えました。

もし検定を怠っていれば、これを「発見」として公開していたはずです。

一致率が高いだけでは、発見とは呼べない。

ケース 02・続き

13系統すべてが外れた

同じ対象の発注水準を説明しようと、値動きの節目を捉える代表的な考え方を横断して 13の仮説系統を検証しました。

  • Donchian
  • Swing
  • Pivot
  • Session Range
  • Past Extremes
  • OHLC系列
  • ほか計13系統
13 / 13 検証した仮説系統/すべて棄却
これは失敗ではありません。「この仮説の族では、この対象は説明できない」と確定した研究結果です。どの候補も一致率のカーブが平坦で、突出したピークが出ない——これは「この方向では解けない」というはっきりした信号でした。

ケース 03

大量の注文があっても、
簡単には解けない

ある対象は 32戦略を同時に走らせる大規模なもので、63,099件の保留注文がありました。注文が多ければ解きやすい、と思うかもしれません。

戦略を分離して64の側面それぞれで水準式を当てたところ、未使用期間(holdout)での一致は中央値55.1%、はっきり信頼できる水準(70%超)は9側面、最良で87.6%でした。時計をずらした対照(正解のはずがない偽の条件。ここでの一致率が偶然の目安になります)では 10.8% まで落ちており、上位側面については、偶然一致だけでは説明しにくい差が残りました。

しかし全64側面のうち約半分は、偶然と区別しきれない帯に残りました。

注文数の多さは、解ける保証にはならない。

ケース 01・再訪

測定は正しいのに、
実装すると悪化した

ある発注の癖を実際に観測しました。観測そのものは、対照でも消えませんでした。ところが、その癖を再現モデルにそのまま組み込むと——

約定一致(組み込み前)58.5%
約定一致(組み込み後)52.4%
収益性(PF)も 1.60 → 1.26 へ悪化しました。元のEAは、他のいくつもの仕組みが噛み合った状態でその癖を使っています。観測した特徴を一つだけ取り出して移植しても、正しくなるとは限りません。

同じことは別の場面でも起きました。ある発注ゲート条件がそろった時だけ発注を許可する、EA内部のスイッチ)は1つのデータでは検定を通ったのに、同系統の別対象に持っていくと、64側面すべてで帰無を超えられませんでした(0/64)。1つのデータで検定を通っただけでは、一般的な構造とは言えない、ということです。

一致率と収益性

似ていることと、
利益が出ることは別だった。

再現モデルが元の挙動にどれだけ似ているかと、そのモデルが実運用に近い条件で使えるかは、まったく違う軸でした。

CASE 1

一致率
78.1%
PF
1.02
最大DD
71%
不採用

CASE 2

約定一致
58.5%
収益検定
通過
収益ゲート通過

一致率だけを追いかけると、この判断を誤ります。似ている度合いは、実運用に耐えるかどうかを保証しません。

いちばん難しいところ

どうしても難しい、
発注ゲート

ひとことで言えば「EAが動かなかった理由は、記録に残らない」という問題です。

注文が発生すれば、時刻・価格・方向・SL・TPといった痕跡が残ります。だから「どこに注文を置くか」は調べられる。

けれど、何もしなかった瞬間は、注文履歴に一切残りません。発注しなかった時点の市場状態そのものは調べられます。しかし、その瞬間に内部ゲートがOFFだったという事実そのものは、注文履歴から直接観測できません。

観測できる

  • 注文価格
  • 時刻
  • 方向
  • SL
  • TP
  • 保有時間

注文履歴から直接観測できない

  • その瞬間、なぜ内部ゲートがONだったか
  • 発注しなかった瞬間に、内部ゲートがOFFだったという事実そのもの

出口(SL/TP)については、複数の対象で距離とTP/SLの比に非常に強い定数構造を確認できました。ここは読めます。でも発注のオン・オフは、材料そのものに証拠が残らない。

価格水準は読める。
発注ゲートは、まだ読めない。

現在地

どこまで読めて、
どこから読めないか

完全解析ではありません。ソースコードを復元したわけでも、EAを複製したわけでもありません。

できている

  • 価格水準の候補——対象によっては高い説明率で推定できる
  • SL / TP構造——複数の対象で明確な形が出る
  • 時間帯の特徴——読める

まだ難しい

  • 発注ゲート——なぜその瞬間に発注したか
  • 内部の隠れた状態
  • 非一意性——同じ注文履歴を生むロジックは複数ありうる

ブラックボックスの「どこまで読めて、どこから読めないか」の境界線が、かなり明確になってきた——それが今の到達点です。

今後

これから調べること

今後は解析対象を広げながら、特に現在大きく残っている発注ゲートの識別と、再現モデルとの差がどこから生まれるのかを引き続き調べていきます。

研究は継続中です。開発の状況は LAB で随時公開していきます。

研究記事

本記事は、外部から観測可能な取引挙動を材料とした推定研究の記録です。掲載する一致率・検定結果は特定期間・特定条件での実測値であり、対象の内部実装を確認したものではありません。過去のバックテスト結果は将来の成績を保証しません。本記事は特定の金融商品・取引手法の購入や利用を推奨する投資助言ではありません。