CASE 1
- 一致率
- 78.1%
- PF
- 1.02
- 最大DD
- 71%
EA REVERSE ENGINEERING / RESEARCH
中のプログラムは読めません。読めるのは、EAが実際に出した注文だけです。その注文の時刻・価格・損切り位置と、当時の相場を照らし合わせて、売買ルールを逆から推定していく——その研究の記録です。
ソースコードは使いません。使うのは、外から見える注文の履歴と市場データだけです。
30秒で分かる
雪の上に残った足跡から、その人の歩幅や進む向きを推測する——やっていることは、それに近いことです。工程は4つあります。
4 が一番重要な工程です。ここを省くと、ただの偶然当てになります。この記事では、自分たちが4で落とした仮説も同じだけ記録しています。
いまの到達点
この研究は途中経過です。読めるようになった部分と、まだ読めていない部分が、はっきり分かれています。
ある1つの解析対象では、価格水準の候補式が134水準に対し 97.0% 一致しました。どの価格に注文を並べているか、という部分は、かなりの精度で言い当てられています。
ところが同じ対象で、最終的な約定の一致は 58.5% まで下がります。「なぜ、その瞬間に注文を出したのか」は、まだ読めていません。
97.0%はEA全体の解析精度ではありません。読めた部分と読めていない部分が同居しているのが現状です。さらに、一度 72〜81% の一致を示した仮説を、検定の結果として自分たちで棄却しています。高い一致率そのものは、発見の証拠になりません。
なぜ調べているのか
同じような成績に見えるEAでも、中身は全く違います。値動きの節目に注文を置いているのか、時間帯で決めているのか、それとも過去の相場に合わせ込んだだけなのか。外から見えるのは結果の数字だけで、その裏側は分かりません。
この研究は、その裏側を、注文の履歴という共通の材料から読み解こうとしています。目的は「当てること」ではなく、読めた部分と読めなかった部分を、どちらも同じ精度で記録することです。以下は、その記録です。
もう少し詳しく
前提と規模
EA(自動売買プログラム)は、ソースコードが与えられなければ内部の判断過程が見えないブラックボックスです。一方、実際に動かすと注文・約定・決済という外部から観測可能な痕跡が残ります。
何時に、いくらで、買ったのか売ったのか、損切り・利益確定をどこに置いたのか、どれくらい持っていたのか——これらは全部、取引レポートに記録されます。
この研究は、その痕跡と当時の市場データ(価格・移動平均・ボラティリティなど)を照合して、出力から内部のルールを逆算しようとするものです。数学でいう逆問題にあたります。
対象にしたブラックボックス挙動は、これまでに 35件。以下では、名前を伏せた代表的なケースで「どこまで読めて、どこから読めないか」を紹介します。
数字はすべて実測値です。63,099件は最も大規模な1対象(32戦略)の5.13年分、13/13はある1ケースで検証してすべて外れた仮説の族の数を指します。
材料と工程
材料にしているのは、EAが外に残したものだけです。エントリー・決済の時刻と価格、買いか売りか、ロット、損切り(SL)・利益確定(TP)の位置、保有時間、同時保有数、そして、その各時点の市場データ。
この研究ではソースコードや静的解析を前提にせず、EAが外部に残した挙動を解析材料にしています。見ているのは、あくまで振る舞いです。
一番大事なのは 5 の「偶然の一致を落とす」工程です。ここが甘いと、ただの相関当てゲームになります。次の節がその実例です。
ケース 01
ある上位足のスイング(相場の山・谷)を基準に価格水準を組み立てる、と仮定した候補式が、対象の実際の注文の 97.0% と一致しました。511件の注文から推定したものです。
これだけ見れば「ロジックを見つけた」と言いたくなります。でも、高い一致率は偶然でも起こりえます。そこで時計をずらす検定をかけます。
EAが出した注文の価格はそのままに、参照する市場データの時刻だけを7日ずらして、同じ式でもう一度照合する。もし本当に相場構造を見ているなら、時計をずらせば一致は崩れるはずです。
ケース 01・続き
同じ対象で、価格水準の候補式は97.0%一致したのに、最終的な約定の一致は58.5%にとどまりました。
理由はシンプルです。「どこに注文を置くか」を当てても、「その注文が実際に約定するか」「約定したあとどう決済するか」まで完全に一致させないと、取引そのものは再現できません。
価格水準の特定と、EA全体の再現は、まったく別のこと。
ケース 02
別の対象では、発注水準を「過去のある極値と一致する」と仮定したところ、72〜81% という高い一致が出ました。普通なら発見と呼びたい数字です。
参照する窓を広げるほど一致率が上がっていく。調べると、これは相場が同じ価格帯を何度も通ったことによる見かけの一致でした。金相場は同じ値を繰り返し訪れるので、「過去のどこかの極値」にはいずれ当たってしまう。帰無検定にかけると、この一致は消えました。
もし検定を怠っていれば、これを「発見」として公開していたはずです。
一致率が高いだけでは、発見とは呼べない。
ケース 02・続き
同じ対象の発注水準を説明しようと、値動きの節目を捉える代表的な考え方を横断して 13の仮説系統を検証しました。
ケース 03
ある対象は 32戦略を同時に走らせる大規模なもので、63,099件の保留注文がありました。注文が多ければ解きやすい、と思うかもしれません。
戦略を分離して64の側面それぞれで水準式を当てたところ、未使用期間(holdout)での一致は中央値55.1%、はっきり信頼できる水準(70%超)は9側面、最良で87.6%でした。時計をずらした対照(正解のはずがない偽の条件。ここでの一致率が偶然の目安になります)では 10.8% まで落ちており、上位側面については、偶然一致だけでは説明しにくい差が残りました。
しかし全64側面のうち約半分は、偶然と区別しきれない帯に残りました。
注文数の多さは、解ける保証にはならない。
ケース 01・再訪
ある発注の癖を実際に観測しました。観測そのものは、対照でも消えませんでした。ところが、その癖を再現モデルにそのまま組み込むと——
同じことは別の場面でも起きました。ある発注ゲート(条件がそろった時だけ発注を許可する、EA内部のスイッチ)は1つのデータでは検定を通ったのに、同系統の別対象に持っていくと、64側面すべてで帰無を超えられませんでした(0/64)。1つのデータで検定を通っただけでは、一般的な構造とは言えない、ということです。
一致率と収益性
再現モデルが元の挙動にどれだけ似ているかと、そのモデルが実運用に近い条件で使えるかは、まったく違う軸でした。
一致率だけを追いかけると、この判断を誤ります。似ている度合いは、実運用に耐えるかどうかを保証しません。
いちばん難しいところ
ひとことで言えば「EAが動かなかった理由は、記録に残らない」という問題です。
注文が発生すれば、時刻・価格・方向・SL・TPといった痕跡が残ります。だから「どこに注文を置くか」は調べられる。
けれど、何もしなかった瞬間は、注文履歴に一切残りません。発注しなかった時点の市場状態そのものは調べられます。しかし、その瞬間に内部ゲートがOFFだったという事実そのものは、注文履歴から直接観測できません。
出口(SL/TP)については、複数の対象で距離とTP/SLの比に非常に強い定数構造を確認できました。ここは読めます。でも発注のオン・オフは、材料そのものに証拠が残らない。
価格水準は読める。
発注ゲートは、まだ読めない。
現在地
完全解析ではありません。ソースコードを復元したわけでも、EAを複製したわけでもありません。
ブラックボックスの「どこまで読めて、どこから読めないか」の境界線が、かなり明確になってきた——それが今の到達点です。
今後
今後は解析対象を広げながら、特に現在大きく残っている発注ゲートの識別と、再現モデルとの差がどこから生まれるのかを引き続き調べていきます。
研究は継続中です。開発の状況は LAB で随時公開していきます。
研究記事
本記事は、外部から観測可能な取引挙動を材料とした推定研究の記録です。掲載する一致率・検定結果は特定期間・特定条件での実測値であり、対象の内部実装を確認したものではありません。過去のバックテスト結果は将来の成績を保証しません。本記事は特定の金融商品・取引手法の購入や利用を推奨する投資助言ではありません。