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.

Articles

TWAP vs VWAP vs POV: bajarilish benchmarkini tanlash (va har biri qachon sizni aldashini bilish)

TWAP vs VWAP vs POV: bajarilish benchmarkini tanlash (va har biri qachon sizni aldashini bilish)

TWAP, VWAP va POV — hajm prognoziga qo'yilgan tikishlardir. Biz har bir schedulerning yashirin taxminlarini tahlil qilamiz, kripto kun ichidagi hajm egri chiziqlarini quramiz va uchalasini qayta o'ynatilgan L2 ma'lumotlarida yuzma-yuz sinaymiz.

Almgren-Chriss usulini chala tushuntirishlarsiz: bir kunda amalga oshirish mumkin bo'lgan optimal ijro

Almgren-Chriss usulini chala tushuntirishlarsiz: bir kunda amalga oshirish mumkin bo'lgan optimal ijro

Almgren-Chriss optimal ijro modelining to'liq xulosasi: chiziqli impact, sinh/cosh traektoriyasi, samarali chegara va Binance L2 hamda savdo ma'lumotlaridan eta, gamma va sigma parametrlarini kalibrlash uchun ishlaydigan Python kodi.

Halol salbiy natija: oʻn minglab bektestlar, beshta yetakchi koin, mustahkam ustunlik yoʻq

Halol salbiy natija: oʻn minglab bektestlar, beshta yetakchi koin, mustahkam ustunlik yoʻq

Qidiruv va overfitting haqidagi yoʻnalishning yakuniy maqolasi — va u salbiy natija bilan tugaydi, bu esa aynan toʻgʻri natija. ETHUSDT ustida bitta simvolli, ikki taymfreymli qidiruv out-of-sample testda +16.35% va tegilmagan holdoutda +2.62% beradigan konfiguratsiyani topdi; ~37,000 sinovni hisobga olgan Deflyatsiyalangan Sharp koeffitsienti uni 0.00 gacha deflyatsiya qildi. Beshta yetakchi koin (ETH/BTC/SOL/BNB/XRP, har biri ~1.18M 1m bar) boʻyicha, out-of-sample medianasi asosida tanlaydigan kross-instrumental sinov uni uzil-kesil yoʻq qiladi: ikki taymfreymda DSR 0.24 / PBO 0.264, uch taymfreymda DSR 0.14 / PBO 0.327 — ikkalasi ham geytlardan oʻtmaydi. Chempion 5 simvoldan 1 tasida foydali, qolganlarida salbiy. Anti-overfit apparati aynan shu uchun kerak: shovqinning eng yaxshisini alfa sifatida ishga tushirishingizga yoʻl qoʻymaslik uchun.

Ko'p vaqt oralig'idagi bektestlarda kelajakka qarash yo'qligini isbotlash: kelajakni buzib, o'tmish uni ko'ra olmasligini isbotlash

Ko'p vaqt oralig'idagi bektestlarda kelajakka qarash yo'qligini isbotlash: kelajakni buzib, o'tmish uni ko'ra olmasligini isbotlash

Ko'p vaqt oralig'idagi (multi-timeframe) bektestlar hali yakuniy yopilish narxi mavjud bo'lmagan, shakllanayotgan yuqori vaqt oralig'idagi bar orqali kelajakni sizib chiqaradi. Kodni ko'rib chiqish orqali ishonchga erisha olmaysiz — buni sinab ko'rish kerak. Biz jonli botning yopiq-bar qoidasini aynan takrorlaymiz, so'ngra kelajakni siljitadigan tekshiruv bilan sizib chiqishning yo'qligini isbotlaymiz: kelajakdagi har bir barni buzamiz va o'tmishdagi har bir signal hamda savdo bit-baytiga o'zgarmasligini tasdiqlaymiz. 25/25 paritet tekshiruvlari, va tekshiruvning haqiqiy tishi bor.

GPU qachon o'zini oqlaydi: parametr qidiruvi roofline'i — sarlavhadagi 167x aslida 27x algoritm karra 6.2x apparat

GPU qachon o'zini oqlaydi: parametr qidiruvi roofline'i — sarlavhadagi 167x aslida 27x algoritm karra 6.2x apparat

GPUning CPUdan ustunligi paket hajmi bilan o'sadi — ko'p taymfreymli indikatorlarni oldindan hisoblashimizda har chaqiruvga bitta kombinatsiyada 54.5x dan 61 tasida 359.6x gacha — chunki kichik qidiruv kernelni ishga tushirish va uzatish ustamasini amortizatsiya qila olmaydi. Sarlavhadagi 167x ni CPUga ham naf keltiradigan 27x algoritmik yutuq karra 6.2x apparat yutug'iga ajratamiz, GPUning eng yaxshi CPUdan haqiqiy ustunligi bitta taymfreymda atigi 3.2x, ko'p taymfreymda 6.2x ekanini ko'rsatamiz va GPU sotib olish o'zini oqlashi uchun qidiruv qanchalik keng bo'lishi kerakligi haqida qaror qo'llanmasini beramiz.

GPU aniqlik tuzogi: Apple Metal ustidagi fp32 backtest qanday qilib jimgina axlat qaytaradi

GPU aniqlik tuzogi: Apple Metal ustidagi fp32 backtest qanday qilib jimgina axlat qaytaradi

Apple'ning Metal GPU'sida float64 yoq. Vektorlashtirilgan backtestni unga soddadillik bilan kochirsangiz, jozibali prefiks-yigindi WMA fp32'dan toshib ketadi — maksimal nisbiy xato 211× — biroq u baribir ishlaydi va ishonarli korinuvchi raqamlar qaytaradi. Yechim koproq aniqlik emas; bu boshqacha formulirovka: togridan-togri oynali konvolyutsiya, fp32 uchun xavfsiz 8×10⁻⁷ va bir oqimli numba'dan 55.9× tezroq. Tuzoq, arifmetika va unga tushmaganingizni qanday isbotlash.

Aniqlik darvozasi: agar arzon proksi konfiguratsiyalarni qimmat baholash kabi saralamasa, yirikdan-nozikkacha bektest sizni tezroq aldaydi

Aniqlik darvozasi: agar arzon proksi konfiguratsiyalarni qimmat baholash kabi saralamasa, yirikdan-nozikkacha bektest sizni tezroq aldaydi

Yirikdan-nozikkacha / ko'p-aniqlikli qidiruv (ASHA, ketma-ket ikkiga bo'lish, Hyperband) minglab konfiguratsiyalarni arzon narxda saralaydi va faqat omon qolganlarni qimmat, to'liq baholashga o'tkazadi. Bu haqiqiy tezlashuv — lekin agar past aniqlikdagi reyting yuqori aniqlikdagisiga zid kelsa, u sezilmagan holda quladi. Biz fold-reyting korrelyatsiyasini o'lchadik: bitta fold'da Spearman ρ 0.03 bo'lishi mumkin (deyarli tasodifiy saralaydi), fold'lar to'planishi bilan 0.43, 0.67, 0.78, 0.91 gacha ko'tariladi. Yechim — bitta majburiy darvoza: avval ρ(arzon, to'liq)ni o'lchang va minimal aniqlik darajasini ρ ≥ 0.5 bo'lgan birinchi pog'onagacha avtomatik ko'taring.

Tasodifiy qidiruv vs aqlli qidiruv: kesishish nuqtasi baholash narxida, algoritmda emas

Tasodifiy qidiruv vs aqlli qidiruv: kesishish nuqtasi baholash narxida, algoritmda emas

Bitta backtest arzon bo'lganda, ahmoqona aralashtirilgan Sobol xom o'tkazuvchanlikda g'alaba qozonadi — aqlli samplerlar (TPE, CMA-ES, ASHA) Python ask/tell solig'ini to'laydi, bu ularni 20x sekinlashtiradi, shu sababli ular teng wall-clock vaqtida ancha kamroq nuqtani baholaydi va yutqazadi. Har bir baholashni qimmat qiling (multi-TF + walk-forward foldlar) — kesishish nuqtasi teskarilanadi. Biz ikkala rejimni ham o'lchadik, shuningdek nima uchun fold-rank fidelity (ρ@1 0.03→0.43 gacha o'sishi) pruning foyda berishining zaruriy sharti ekanligini aniqladik.

Ikki oʻqli parametr fazosi: nega sweepingizning katta qismi deyarli bepul boʻlishi kerak

Ikki oʻqli parametr fazosi: nega sweepingizning katta qismi deyarli bepul boʻlishi kerak

Barcha parametrlarni qidirish bir xil qimmatga tushmaydi. Strategiyaning parametrlari qimmat oʻqqa (indikatorlar — butun qator boʻyicha qayta hisoblanadi) va arzon oʻqqa (qaror threshold'lari — oldindan hisoblangan signallar boʻyicha O(n) oʻtish) boʻlinadi. Indikatorlar threshold'larga bogʻliq emasligi tufayli siz ularni bir marta hisoblaysiz va minglab threshold konfiguratsiyalarini ~5,600 cfg/s tezlikda sweep qilasiz — bu har bir konfiguratsiya uchun qayta hisoblashdan taxminan 1,600 marta arzon. Oʻlchamlilik laʼnatining qayta narxlanishi.

Freymvork solig'i: qachonki backtest kutubxonangiz oddiy pandas siklidan sekinroq bo'ladi

Freymvork solig'i: qachonki backtest kutubxonangiz oddiy pandas siklidan sekinroq bo'ladi

Biz sakkizta backtest dvigatelini bitta bir xil parametr sweepida solishtirdik — 150k bar, 80 ta HMA-cross kombinatsiyasi, savdolar soni 2707 da bir xil qulflangan. Eng mashhur ikkita hodisaga asoslangan freymvork qo'lda yozilgan pandas siklidan ham sekinroq chiqdi, vektorlashtirilgan/kompilyatsiya qilingan dvigatel esa xuddi shu ishni ~13,000× tezroq bajardi. Mashhur kutubxonalar hech qachon amortizatsiya qilishga mo'ljallanmagan har bir bar uchun yuklama tadqiqoti.

The Probability of Backtest Overfitting: Did Your Search Beat a Coin Flip?

The Probability of Backtest Overfitting: Did Your Search Beat a Coin Flip?

The Deflated Sharpe Ratio prices the winning strategy; PBO prices the search that picked it. Combinatorially Symmetric Cross-Validation runs C(16,8) = 12,870 train/test splits over a 1000x200 performance matrix and asks: does the in-sample winner land in the bottom half out of sample? The catch almost everyone misses — PBO's null is 0.5, not 1. On 200 zero-edge strategies the best in-sample annualized Sharpe of 1.98 collapses to 0.06 out of sample and PBO = 0.476: a coin flip, fully overfit. Plant a real edge (annualized Sharpe 2.38) and PBO drops to 0.001, the in-sample 3.73 surviving to an out-of-sample 2.34. A moving-average grid on a pure random walk has no out-of-sample skill either — PBO 0.463 averaged over 60 matrices, statistically indistinguishable from the null — and on one representative matrix the mirage is vivid: a best in-sample Sharpe of 2.33 collapses to a median out-of-sample -0.22, PBO 0.573, a 63% chance of a loss.

IPC solig'i: backtest dvigatelini soket ortiga qo'ying va 13% yo'qoting — bu deyarli hech narsasi soketga tegishli emas

IPC solig'i: backtest dvigatelini soket ortiga qo'ying va 13% yo'qoting — bu deyarli hech narsasi soketga tegishli emas

Biz numba backtest yadrosini qatorma-qator Rust tiliga ko'chirdik va uni jarayon chegarasi orqali to'rt xil usulda chaqirdik, so'nggi savdogacha bir xil PnL ni tasdiqlovchi ekvivalentlik darvozasi bilan. 1,2 MB narx seriyasining barchasini Unix soketi orqali yuborish ~2 ms turadi — vazifaning taxminan 0,1%. Xuddi shu yukni JSON formatida kodlash xom baytlardan 1348 marta qimmatga tushadi, kombinatsiya boshiga gaplashuvchi chaqiruvlar ma'lumotlarni 80 marta qayta yuboradi, va bar boshiga chaqiruv namunasi 2,0 s vazifada 2,1 s sof IPC to'laydi. Chegara arzon; soliq uni qanday kesib o'tishingizda.