符号を反転させて、それを洞察と呼んだ日

あるとき、バックテストが返してきた勝率は、私が望んでいたものとほぼ正反対だった。モデルにはおおむね正しくあってほしかったのに、それはおおむね間違っていた——しかもランダムに間違っているのではなく、きれいに、対称的に間違っていた。まるで負けようとしていたかのように。

なぜなのかを問う代わりに、私は一時間ほど見事に思える何かをやってのけた。ロジックを反転させて辻褄を合わせたのだ。もしモデルが安定して間違っているのなら、それが言うことの逆をやれば安定して正しいはずだ、と私は理屈づけた。たった一つの小さな変更で、負けていたルールが、紙の上では勝つルールになった。私は自分の発見を称賛した。

それは発見ではなかった。それは、私が一文字の編集で自分自身に嘘をつき始めた瞬間だった。

ぴったり間違っていた数字

怪しかったのは、結果が悪かったことではけっしてない。悪い結果は当たり前で、それが仕事の大半だ。怪しかったのは、それがあまりにも整然とした、鏡像のような形で悪かったことだ——その種の対称性は、後から振り返ると、本当に「逆向き」な戦略があるのではなく、その下でもっと平凡な何かが壊れていることを示している場合がある。

しかし、対称性は、それが手軽な勝ちを指し示すとき、人を誘惑する。雑然とした悪い結果はあなたをデバッグへ向かわせる。きれいに反転した結果は、近道をささやく。君は思っているより近づいている——ただ逆さまにすればいい。

一文字の修正

そこで私はそれを逆さまにした。条件を反転させ——不等号をひっくり返し——そして負けていたのと同じロジックが、バックテストの中で今度は勝った。私はその変更をコミットし、問題を出し抜いたような気分になった。修正全体は、この一文よりも小さかった。

その小ささこそ警告であるべきだった。本物のエッジは見つけるのが難しく、保つのはもっと難しい。たった一つの反転した文字が、失敗を成功へと変えてしまうように見えるとき、誠実な前提は、隠れた真実を見つけたということではない。隠れたバグを見つけたのであって、自分がそのどちら側に立っているかを変えただけだ、ということだ。

なぜ符号を反転させることが天才のように感じられたのか

そのロジックはほとんど抗いがたい。もし予測器が一貫して間違っているなら、それを反転させれば一貫して正しくなる。逆の天才。逆張りの金鉱。安定して間違っているモデルを、ただ上下逆さまに読むだけでいいなら、誰がそれを断るだろうか。

その推論の欠陥は一貫してという言葉にある。それは、モデルが実際に何かを予測している——ただ方向が間違っているだけだ、と仮定している。そしてその仮定こそ、私が一度も確かめなかった唯一のものだった。

実際に壊れていたもの

モデルは逆向きだったのではない。ほとんど予測していなかったのだ。その出力は退化していた——狭く、情報量のない範囲に押し込められ、何を見せられてもほぼ同じことを言っていた。シグナルを学習してそれを間違った方向に向けたのではない。シグナルを学習しそこね、わずかで無意味な傾きを伴うノイズに近いものを出力していたのだ。

ほとんど裏ばかりの短い試行は、安定して利用可能な偏りを証明しない——それは壊れた、あるいは信頼できないコインである可能性も同じくらいある。ノイズの多いシグナルの読み方を反転させても、そのシグナルが情報を持つようにはならない。それはただノイズに別のラベルを貼り直すだけだ。

反転は事態を悪化させた

これは、バックテストが最終的に私に認めさせた部分だ。ロジックを反転させたあと、パフォーマンスは鏡のように上向いて何か良いものになったりはしなかった。それは悪いままで——いくつかの指標ではむしろ悪化した。反転すべきものなど何もなかったのだ。私はノイズを取り、それをひっくり返し、そしてまたノイズを得た。今度は意図性という衣装をまとって。

私を賢いと感じさせた、つかの間の美しい結果は、以前にも書いたことのある類いの蜃気楼だった。たった一つだけ重要だった問いを投げかけるのを止めさせるのに、ちょうど十分なだけあなたをおだてる数字——そもそもモデルは何かを学習したのか?

本当のバグは私の中にあった

その一文字の反転は、本当のところコードの変更ではけっしてなかった。それはカテゴリー錯誤だった。私は症状——悪い勝率——を、自分がチューニングできる戦略であるかのように扱った。それは本当は、私が下すのを拒んでいた診断だったのに。モデルの出力がなぜそのように見えるのかを問う代わりに、私は数字が緑になるまでバックテストに対して不等号を最適化した。

それこそ、最も純粋で、最も人間的な形のオーバーフィッティングだ。オーバーフィットするのに千個のパラメータは要らない。たった一つの符号でできてしまう——もしあなたが、自分の理解する原因ではなく、自分の望む結果に基づいてそれを選ぶ気があるなら。

意外な結果は答えではなく問いである

私がこれから得た規律は、口で言うのは簡単だが、実践するのは本当に難しい。結果が予想と正反対に出たとき、それは答えではなく問いなのだ。誘惑は、数字を正しく見せる最小の変更に手を伸ばすこと——符号を反転させ、ルールを逆さまにし、比較を入れ替えること——だ。その最小の変更こそ、しばしば最も危険なものだ。なぜなら、それは見かけを修正しながら、原因にはまったく手をつけないまま残すからだ。

今では、何かが私に対して反転すると、私はあの優雅な反転に抗い、代わりに不格好な問いを問おうとする。「どうすればこの数字を正しい方向へ向けられるか?」ではなく、「そもそもここに本物のシグナルはあるのか、どの方向であれ、それを指し示すものはあるのか?」と。たいていの場合、まだそんなものはない。そして反転した符号は、それを製造することはできない。

逆さまに読まれた負けるモデルは、それでもなお負けるモデルだ。反転が変えるのは、あなたがそれに気づくまでにかかる時間だけである。

— シグナルもリターンもなし、投資助言ではありません。