Eugen Soloviov

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.

Artikel

Fidelity Gate: Backtesting Coarse-to-Fine Menipu Anda Lebih Cepat, Kecuali Proxy Murah Memberi Peringkat yang Sama dengan yang Mahal

Fidelity Gate: Backtesting Coarse-to-Fine Menipu Anda Lebih Cepat, Kecuali Proxy Murah Memberi Peringkat yang Sama dengan yang Mahal

Pencarian drill-down / multi-fidelitas (ASHA, successive halving, Hyperband) menyaring ribuan konfigurasi secara murah dan hanya mempromosikan yang bertahan ke evaluasi penuh yang mahal. Ini adalah percepatan yang nyata — tetapi runtuh secara diam-diam jika peringkat fidelity rendah tidak sesuai dengan peringkat fidelity tinggi. Kami mengukur korelasi peringkat antar-fold: pada satu fold, Spearman ρ bisa hanya 0.03 (mengurutkan hampir secara acak), lalu naik menjadi 0.43, 0.67, 0.78, 0.91 seiring bertambahnya fold. Solusinya adalah satu gate wajib — ukur ρ(murah, penuh) terlebih dahulu, lalu naikkan otomatis fidelity minimum ke rung pertama di mana ρ ≥ 0.5.

Random vs Smart Search: Titik Crossover Ada di Biaya Evaluasi, Bukan Algoritma

Random vs Smart Search: Titik Crossover Ada di Biaya Evaluasi, Bukan Algoritma

Ketika satu backtest murah, scrambled Sobol yang 'bodoh' menang telak dalam throughput mentah — sampler pintar (TPE, CMA-ES, ASHA) membayar pajak ask/tell Python yang menurunkan kecepatannya 20x, sehingga mereka mengevaluasi jauh lebih sedikit titik pada wall-clock yang sama dan kalah. Buat setiap evaluasi menjadi mahal (multi-TF + fold walk-forward) dan titik crossover-nya berbalik. Kami mengukur kedua rezim ini, dan mengapa fidelity fold-rank (ρ@1 naik dari 0.03→0.43) menjadi prasyarat agar pruning membuahkan hasil.

Ruang Parameter Dua Sumbu: Mengapa Sebagian Besar Sweep Anda Seharusnya Nyaris Gratis

Ruang Parameter Dua Sumbu: Mengapa Sebagian Besar Sweep Anda Seharusnya Nyaris Gratis

Tidak semua parameter sama mahalnya untuk dicari. Parameter sebuah strategi terbelah menjadi sumbu mahal (indikator — dihitung ulang atas seluruh deret) dan sumbu murah (ambang keputusan — satu lintasan O(n) atas sinyal yang sudah dihitung sebelumnya). Karena indikator invarian terhadap ambang, Anda menghitungnya sekali lalu menyisir ribuan konfigurasi ambang pada ~5,600 cfg/s — kira-kira 1,600x lebih murah dibanding menghitung ulang per konfigurasi. Sebuah penaksiran ulang harga kutukan dimensionalitas.

Pajak Framework: Saat Library Backtest Anda Lebih Lambat daripada Loop Pandas yang Naif

Pajak Framework: Saat Library Backtest Anda Lebih Lambat daripada Loop Pandas yang Naif

Kami membandingkan delapan mesin backtest pada satu parameter sweep yang identik — 150 ribu bar, 80 kombinasi HMA-cross, paritas jumlah trade dikunci di 2707. Dua framework event-driven paling populer ternyata lebih lambat daripada loop pandas buatan tangan, sementara mesin vectorized/compiled menjalankan pekerjaan yang sama ~13.000× lebih cepat. Sebuah kajian tentang overhead per-bar yang memang tidak pernah dirancang untuk diamortisasi oleh library-library populer.

Probability of Backtest Overfitting: Apakah Pencarian Anda Mengalahkan Lemparan Koin?

Probability of Backtest Overfitting: Apakah Pencarian Anda Mengalahkan Lemparan Koin?

Deflated Sharpe Ratio memberi harga pada strategi pemenang; PBO memberi harga pada pencarian yang memilihnya. Combinatorially Symmetric Cross-Validation menjalankan C(16,8) = 12,870 pemisahan train/test di atas matriks performa 1000x200 dan bertanya: apakah pemenang in-sample mendarat di separuh bawah out of sample? Jebakan yang hampir semua orang lewatkan — null PBO adalah 0.5, bukan 1. Pada 200 strategi ber-edge nol, Sharpe tahunan in-sample terbaik sebesar 1.98 runtuh menjadi 0.06 out of sample dan PBO = 0.476: sebuah lemparan koin, sepenuhnya overfit. Tanamkan edge nyata (Sharpe tahunan 2.38) dan PBO turun ke 0.001, angka in-sample 3.73 bertahan menjadi 2.34 out of sample. Grid moving-average pada random walk murni juga tidak memiliki skill out-of-sample — PBO 0.463 dirata-ratakan atas 60 matriks, secara statistik tak terbedakan dari null — dan pada satu matriks representatif fatamorgananya jelas: Sharpe in-sample terbaik sebesar 2.33 runtuh menjadi median out-of-sample -0.22, PBO 0.573, peluang 63% mengalami kerugian.

Pajak IPC: Taruh Engine Backtest di Balik Socket dan Rugi 13% — Nyaris Tak Ada yang Disebabkan oleh Socket-nya

Pajak IPC: Taruh Engine Backtest di Balik Socket dan Rugi 13% — Nyaris Tak Ada yang Disebabkan oleh Socket-nya

Kami mem-port kernel backtest numba baris demi baris ke Rust dan memanggilnya lintas batas proses dengan empat cara, dengan gerbang ekuivalensi yang mengonfirmasi PnL identik hingga transaksi terakhir. Mengirim seluruh seri harga 1.2 MB melalui Unix socket berbiaya ~2 ms — sekitar 0.1% dari total pekerjaan. Meng-encode payload yang sama sebagai JSON berbiaya 1348x lebih mahal daripada raw bytes, panggilan chatty per-kombo mengirim ulang data 80 kali, dan pola panggilan per-bar akan membayar 2.1 s IPC murni pada pekerjaan 2.0 s. Batasnya murah; pajaknya ada pada cara Anda menyeberanginya.

Deflated Sharpe Ratio: Berapa Banyak 'Pemenang' Backtest Anda yang Selamat dari Multiple Testing?

Deflated Sharpe Ratio: Berapa Banyak 'Pemenang' Backtest Anda yang Selamat dari Multiple Testing?

Pencarian parameter adalah mesin pembuat keberuntungan. Pada noise murni — 1,000 strategi dengan edge sejati nol — Sharpe tahunan terbaik rata-rata 1.63 dan uji signifikansi naif menandai penemuan 100% dari waktu. Kami membangun ground truth terkontrol dan menunjukkan bahwa Deflated Sharpe Ratio, haircut Harvey-Liu, dan Reality Check milik White memulihkan kejujuran: penemuan palsu turun dari 1.000 menjadi 0.001-0.057, edge sejati di atas plafon noise dipertahankan dengan power ~1 — dan satu jebakan nyata (grid berkorelasi) di mana DSR mentah over-deflate dan vonisnya harus dibaca melintasi seluruh rentang estimator effective-trial, bukan satu angka saja.

Objective-Function Design: Metrik yang Anda Optimalkan Diam-Diam Memilih Strategi Anda

Objective-Function Design: Metrik yang Anda Optimalkan Diam-Diam Memilih Strategi Anda

Untuk mencari strategi 'terbaik' Anda harus lebih dulu mendefinisikan 'terbaik' — dan skalar itu diam-diam memilih pemenangnya. Pada data sintetis dengan edge yang diketahui (600 seed, T=2000, 80 threshold), per-trade Sharpe yang naif menobatkan sebuah lotre: ia memilih pemenang ber-eksposur di bawah 5% pada 56% seed dan berdegenerasi pada 57% — pada seed paling ekstrem, 8 trade mencetak Sharpe in-sample 21.09 yang runtuh menjadi 0.13 out-of-sample. Perbaikan yang jujur nyaris membosankan: ukur pada seluruh timeline, yang tidak pernah berdegenerasi (out-of-sample 1.71). Shrinkage jumlah-trade (conf_k) dan sebuah exposure floor bisa merombak metrik per-trade, tetapi bahkan setelah sepenuhnya diperbaiki keduanya hanya menyamai full-timeline Sharpe (1.70 vs 1.71) — tidak pernah mengalahkannya. Hukum Goodhart, dalam sebuah backtest, dengan ground truth terkontrol.

Look-Ahead Bias: Bagaimana Kesalahan Satu Bar Menciptakan Sharpe 15 dari Noise Murni

Look-Ahead Bias: Bagaimana Kesalahan Satu Bar Menciptakan Sharpe 15 dari Noise Murni

Studi terkontrol tentang kebocoran look-ahead halus yang diam-diam menggelembungkan backtest. Dengan edge nyata nol, fill same-bar menciptakan Sharpe tahunan +14.8 dari noise murni; intipan indikator satu bar, +4.8. Taksonominya, magnitudo yang terukur, dan cara mendeteksi setiap kebocoran sebelum merugikan Anda.

Tangga Kecepatan Engine Backtest: 298x pada CPU Laptop, PnL Identik hingga Transaksi Terakhir

Tangga Kecepatan Engine Backtest: 298x pada CPU Laptop, PnL Identik hingga Transaksi Terakhir

Lima implementasi dari sweep parameter 80-kombinasi yang sama, semuanya diverifikasi menghasilkan PnL identik: pandas rolling.apply membutuhkan 69.9 detik, numpy 3.1, numba 2.0, numba paralel 0.23 — percepatan terukur 298x pada Apple M2 Max tanpa perubahan hardware sama sekali, dan tetap ~13x lebih cepat dibanding baseline vektorisasi yang kompeten. Apa yang didapat dari setiap anak tangga, mengapa GPU bukan bagian yang hilang, dan di mana bottleneck sebenarnya dalam pencarian parameter skala besar berada.

researcher: Arsip Riset Kuantitatif yang Dapat Dicari untuk Manusia dan Agen AI

researcher: Arsip Riset Kuantitatif yang Dapat Dicari untuk Manusia dan Agen AI

Bagaimana kami membangun researcher.marketmaker.cc — arsip riset kuantitatif yang terpadu dan dapat dicari secara teks penuh (makalah arXiv, repositori GitHub, blog kuant, skrip Pine TradingView) yang ditelusuri manusia dan dikueri agen AI melalui MCP.

algo-investor-skills: Claude Code Skills yang Menyusun Proposal Investor Anti-Penipuan

algo-investor-skills: Claude Code Skills yang Menyusun Proposal Investor Anti-Penipuan

Tinjauan mendalam tentang algo-investor-skills — sekumpulan Claude Code skills yang membawa strategi algotrading dari fakta terukur mentah menjadi proposal investor yang telah diaudit dan mengutamakan kejujuran. Enam skill yang dapat dikomposisikan, sebuah mesin model finansial, paket bukti verifikasi independen, dan gerbang audit investor skeptis yang wajib dan tidak pernah mengarang angka.