Eugen Soloviov
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.
Articles
誠実なネガティブ結果:数万回のバックテスト、主要5銘柄、頑健なエッジはゼロ
サーチと過学習をめぐる一連の記事の締めくくり——そしてそれはネガティブな結果、すなわち正しい結果で終わる。ETHUSDT単一銘柄のデュアルタイムフレームサーチは、アウトオブサンプルで+16.35%、手つかずのホールドアウトで+2.62%に値する設定を見つけた。だが約37,000回の試行を考慮したデフレーテッド・シャープレシオは、それを0.00までデフレートした。主要5銘柄(ETH/BTC/SOL/BNB/XRP、各約118万本の1分足)に対してアウトオブサンプルの中央値で選抜する銘柄横断のパスが、とどめを刺す:デュアルはDSR 0.24 / PBO 0.264、トリプルはDSR 0.14 / PBO 0.327——どちらもゲートに不合格。チャンピオンが利益を出すのは5銘柄中1つで、残りはマイナス。反過学習の装置はこのためにある:ノイズの最良をアルファとして出荷するのを止めるために。
マルチタイムフレーム・バックテストにおける先読み排除の証明:未来を揺さぶり、過去がそれを見ていないことを証明する
マルチタイムフレーム・バックテストは、最終終値がまだ存在しない形成中の上位足バーを通じて未来を漏らす。コードレビューだけで確信は得られない — テストするしかない。私たちはライブボットの確定足(closed-bar)ルールを正確に再現し、未来シフト・プローブによって漏れがないことを証明する:未来のすべてのバーを揺さぶり、過去のすべてのシグナルとトレードがビット単位で不変であることを確認する。25/25の整合性チェックに合格し、そのプローブには実効性がある。
GPUが元を取るとき:パラメータスイープのルーフライン——見出しの167倍は実は27倍のアルゴリズム×6.2倍のハードウェア
GPUのCPUに対する優位はバッチサイズとともに拡大します——私たちのマルチタイムフレームのインジケーター事前計算では、1呼び出しあたり1コンボの54.5倍から、61コンボの359.6倍まで——なぜなら小さなスイープではカーネル起動と転送のオーバーヘッドを償却できないからです。見出しの167倍を、CPUをも助ける27倍のアルゴリズム的勝利と6.2倍のハードウェア的勝利に分解し、GPU対最良CPUの本当の優位はシングルタイムフレームでわずか3.2倍、マルチで6.2倍にすぎないことを示し、GPUに投資する価値が出るまでにスイープがどれほど広くなければならないかの判断ガイドを与えます。
GPU精度の罠: Apple Metal上のfp32バックテストが静かにゴミを返す仕組み
AppleのMetal GPUにはfloat64が存在しない。ベクトル化されたバックテストを何も考えずに移植すると、魅力的なprefix-sum方式のWMAはfp32をオーバーフローさせ、最大相対誤差は211倍に達する。それでも処理は完走し、もっともらしい数値を返してくる。解決策は精度を上げることではなく、別の定式化にある。すなわち直接的なウィンドウ畳み込みであり、fp32でも8×10⁻⁷まで安全で、シングルスレッドのnumbaより55.9倍速い。この罠、その算術、そして自分が罠に落ちていないことをどう証明するか。
フィデリティゲート: 安価なプロキシが高価な評価と同じ順位付けをしない限り、粗密探索バックテストはより速くあなたを欺く
ドリルダウン/マルチフィデリティ探索(ASHA、successive halving、Hyperband)は、数千の設定を安価にスクリーニングし、生き残ったものだけを高価なフル評価に昇格させる。これは正真正銘の高速化だが、低フィデリティの順位付けが高フィデリティの順位付けと食い違うと静かに崩壊する。我々はフォールド単位の順位相関を測定した。1フォールドではSpearman ρが0.03(ほぼランダムな順位付け)になり得るが、フォールドが増えるにつれて0.43、0.67、0.78、0.91へと上昇していく。解決策はたった一つの必須ゲートだ。まずρ(安価, フル)を測定し、ρ ≥ 0.5となる最初のラングまで最小フィデリティを自動的に引き上げる。
ランダム探索 vs スマート探索:交差点はアルゴリズムではなく評価コストにある
1回のバックテストが安価なとき、単純にシャッフルしたSobol列が生のスループットで「スマート」なサンプラー(TPE、CMA-ES、ASHA)を圧倒する——これらはPythonのask/tell税を払わされ、速度が20分の1に落ち、同じ経過時間内で評価できる点の数がはるかに少なくなり、負ける。各評価を高コストにする(マルチTF + walk-forwardフォールド)と、この交差点は逆転する。私たちは両方のレジームを計測し、フォールドのランク忠実度(ρ@1が0.03→0.43へ上昇)がなぜ枝刈りが報われるための前提条件なのかを示した。
2軸パラメータ空間: なぜスイープの大部分はほぼ無料であるべきなのか
すべてのパラメータが同じ探索コストを持つわけではない。戦略のパラメータは、高価な軸(インジケーター — 系列全体で再計算が必要)と安価な軸(判断の閾値 — 事前計算済みシグナルに対するO(n)のパス)に分かれる。インジケーターは閾値に対して不変であるため、一度だけ計算すればよく、閾値の組み合わせを毎秒約5,600件のペースでスイープできる — これは設定ごとに再計算する場合よりおよそ1,600倍安い。次元の呪いの再評価。
フレームワーク税: バックテストライブラリが素朴な pandas ループより遅くなるとき
8 つのバックテストエンジンを、まったく同一のパラメータスイープでベンチマークした — 150k バー、80 通りの HMA クロス、取引数のパリティを 2707 に固定。最も人気のあるイベント駆動フレームワークのうち 2 つが、手書きの pandas ループより遅い結果になり、一方でベクトル化/コンパイル済みエンジンは同じ作業を約 13,000 倍高速に実行した。人気ライブラリが償却するようには決して設計されていなかった、バーごとのオーバーヘッドの研究。
バックテスト過学習の確率:あなたのサーチはコイン投げに勝ったか?
デフレーテッド・シャープレシオは勝利した戦略の値段を付ける。PBOはその戦略を選んだサーチの値段を付ける。Combinatorially Symmetric Cross-Validationは1000x200のパフォーマンス行列に対してC(16,8) = 12,870通りの訓練/テスト分割を実行し、こう問う:インサンプルの勝者はアウトオブサンプルで下位半分に落ちるか?ほとんどの人が見逃す落とし穴——PBOの帰無仮説は1ではなく0.5だ。200個のゼロエッジ戦略において、インサンプルの最良年率シャープレシオ1.98はアウトオブサンプルで0.06まで崩壊し、PBO = 0.476:コイン投げであり、完全な過学習だ。本物のエッジ(年率シャープレシオ2.38)を仕込むとPBOは0.001まで下がり、インサンプルの3.73はアウトオブサンプルの2.34まで生き残る。純粋なランダムウォーク上の移動平均グリッドにもアウトオブサンプルのスキルはない——60個の行列にわたって平均したPBOは0.463で、統計的に帰無仮説と区別がつかない——そして1つの代表的な行列では、その蜃気楼が鮮やかに現れる:最良インサンプルシャープレシオ2.33は、アウトオブサンプルの中央値-0.22まで崩壊し、PBO 0.573、63%の確率で損失となる。
IPC税:バックテストエンジンをソケットの向こうに置くと13%失う——そのほとんどはソケットのせいではない
numbaのバックテストカーネルを一行一行Rustに移植し、4通りの方法でプロセス境界越しに呼び出した。等価性ゲートは最後のトレードまでPnLが完全一致することを確認する。1.2 MBの価格系列全体をUnixソケット経由で送るコストは約2 ms——ジョブ全体の約0.1%。同じペイロードをJSONでエンコードすると生バイトの1348倍のコストがかかり、コンボごとのチャッティな呼び出しはデータを80回再送し、バーごとの呼び出しパターンは2.0秒のジョブに対して2.1秒もの純粋なIPCコストを支払うことになる。境界そのものは安い——税金はどう越えるかにある。
デフレーテッド・シャープレシオ:バックテストの「勝者」のうち、多重検定を生き延びるのは何割か?
パラメータサーチは幸運を製造する機械である。純粋なノイズ——真のエッジがゼロの戦略1,000個——の上で、最良の年率シャープレシオは平均1.63に達し、素朴な有意性検定は100%の確率で「発見」を宣言する。私たちは制御された既知の正解を構築し、デフレーテッド・シャープレシオ、Harvey-Liuヘアカット、Whiteのリアリティチェックが誠実さを取り戻すことを示す:偽発見は1.000から0.001-0.057まで下がり、ノイズ天井を超える本物のエッジは検出力~1で維持される——そして生のDSRが過剰にデフレートし、判定を1つではなく有効試行数推定量の帯全体で読む必要がある、現実の落とし穴(相関したグリッド)が1つある。
目的関数設計:最適化する指標が、密かにあなたの戦略を選んでいる
「最良の」戦略を探すには、まず「最良」を定義しなければならない——そしてそのスカラーが密かに勝者を選んでいる。既知のエッジを仕込んだ合成データ(600シード、T=2000、閾値80通り)において、素朴な1トレードあたりシャープレシオは宝くじを王座に据える:56%のシードでエクスポージャー5%未満の勝者を選び、57%で退化する——最も極端なシードでは、8回のトレードがインサンプルでシャープレシオ21.09を記録し、アウトオブサンプルでは0.13まで崩壊する。誠実な修復はほとんど退屈なものだ:タイムライン全体で測定すればよく、これは決して退化しない(アウトオブサンプル1.71)。トレード数(conf_k)による縮小とエクスポージャーの下限は1トレードあたりの指標を事後的に補修できるが、完全に修復してもフルタイムラインのシャープレシオに追いつくだけで(1.70 対 1.71)、決してそれを上回ることはない。バックテストの中のグッドハートの法則、制御された既知の正解とともに。