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: аткаруу бенчмаркин тандоо (жана алардын ар бири качан сизди алдаарын билуу)

TWAP vs VWAP vs POV: аткаруу бенчмаркин тандоо (жана алардын ар бири качан сизди алдаарын билуу)

TWAP, VWAP жана POV — булар кɵлɵм божомолуна коюлган коюмдар. Ар бир пландоочунун жашыруун божомолдорун талдап, крипто ичиндеги кɵлɵм ийри сызыктарын курабыз жана уч алгоритмди тең кайра ойнотулган L2 маалыматтарында бетме-бет салыштырабыз.

Ашык-айкын Almgren-Chriss: бир түштөн кийин ишке ашыра турган оптималдуу аткаруу

Ашык-айкын Almgren-Chriss: бир түштөн кийин ишке ашыра турган оптималдуу аткаруу

Almgren-Chriss оптималдуу аткаруу моделинин толук чыгарылышы: сызыктуу таасир, sinh/cosh траекториясы, натыйжалуу чек ара жана Binance L2 менен соода маалыматтарынан eta, gamma, sigma параметрлерин калибрлөө үчүн иштеген Python коду.

Чынчыл терс натыйжа: он миңдеген бэктест, беш ири монета, туруктуу артыкчылык жок

Чынчыл терс натыйжа: он миңдеген бэктест, беш ири монета, туруктуу артыкчылык жок

Издөө жана оверфиттинг багытындагы макалалардын жыйынтыктоочусу — жана ал терс натыйжа менен бүтөт, ал эми бул туура натыйжа. ETHUSDT боюнча бир символдук, кош таймфреймдүү издөө үлгүдөн тышкары +16.35% жана тийбеген холдаутта +2.62% берген конфигурацияны тапты; ~37,000 сыноону эске алган Дефляцияланган Шарп коэффициенти аны 0.00гө чейин дефляциялады. Беш ири монета боюнча (ETH/BTC/SOL/BNB/XRP, ар бири ~1.18 млн 1 мүнөттүк бар) үлгүдөн тышкаркы медиана менен тандаган инструменттер аралык текшерүү аны биротоло жокко чыгарды: кош таймфрейм DSR 0.24 / PBO 0.264, үч таймфрейм DSR 0.14 / PBO 0.327 — экөө тең гейттерден өтпөйт. Чемпион 5 символдун 1инде гана кирешелүү, калгандарында терс. Оверфиттингге каршы аппарат так ушул үчүн бар: шумдун эң мыктысын альфа катары ишке чыгарып жибербешиң үчүн.

Multi-Timeframe Backtest'терде Look-Ahead Жоктугун Далилдөө: Келечекти Бузуп, Өткөндүн Аны Көрө Албастыгын Далилде

Multi-Timeframe Backtest'терде Look-Ahead Жоктугун Далилдөө: Келечекти Бузуп, Өткөндүн Аны Көрө Албастыгын Далилде

Multi-timeframe backtest'тер келечекти агызып жиберет — себеби али калыптанып жаткан жогорку timeframe bar'ынын акыркы close'у азырынча жок. Ишенимге код-ревью аркылуу жетүүгө болбойт, аны текшерүү керек. Биз live боттун closed-bar эрежесин так кайра жаратып, андан кийин shifted-future probe менен агуу жоктугун далилдейбиз: ар бир келечектеги bar'ды бузуп, ар бир өткөн сигнал жана trade bitwise өзгөрбөгөнүн ырастайбыз. 25тен 25 parity текшерүүсү өттү, жана probe чын эле иштейт.

GPU качан өзүн актайт: параметр сыдыруунун roofline модели, же жарнамалык 167x чындыгында — 27x алгоритм менен 6.2x жабдыктын көбөйтүндүсү

GPU качан өзүн актайт: параметр сыдыруунун roofline модели, же жарнамалык 167x чындыгында — 27x алгоритм менен 6.2x жабдыктын көбөйтүндүсү

GPU-нун CPU-дан озуусу топтомдун өлчөмү менен өсөт — биздин көп таймфреймдүү индикаторлорду алдын ала эсептөөдө чакырыгына бир комбинацияда 54.5x болсо, 61 комбинацияда 359.6x-ке жетет — анткени кичине сыдыруу ядрону ишке киргизүү жана маалымат ташуу үстөк чыгымын амортизациялай албайт. Биз жарнамалык 167x-ти CPU-га да жардам берген 27x алгоритмдик утушка жана 6.2x жабдык утушуна ажыратабыз, GPU менен эң мыкты CPU ортосундагы чыныгы озуу бир таймфреймде болгону 3.2x, көп таймфреймде 6.2x экенин көрсөтөбүз жана GPU сатып алганга татышы үчүн сыдыруу канчалык кенен болушу керектиги боюнча чечим колдонмосун беребиз.

GPU тактыгынын тузагы: Apple Metal үстүндөгү fp32 бэктест кантип үнсүз таштанды кайтарат

GPU тактыгынын тузагы: Apple Metal үстүндөгү fp32 бэктест кантип үнсүз таштанды кайтарат

Apple'дын Metal GPU'сунда float64 жок. Векторлоштурулган бэктестти ага акылсызча которсоңуз, азгырган prefix-sum WMA fp32'ни толуп кетирет — максималдуу салыштырма ката 211× — бирок ал баары бир иштеп, ынанымдуу көрүнгөн сандарды кайтарат. Чечим — көбүрөөк тактык эмес; бул башка формулировка: түз терезелик convolution, fp32 үчүн 8×10⁻⁷ чейин коопсуз жана бир агымдуу numba'дан 55.9× тезирээк. Тузак, арифметика жана сиз ага түшпөгөнүңүздү кантип далилдөө керек.

Тактык дарбазасы: арзан прокси кымбат баалоо сыяктуу эле рангдабаса, ириден майдага бектестинг сизди тезирээк алдайт

Тактык дарбазасы: арзан прокси кымбат баалоо сыяктуу эле рангдабаса, ириден майдага бектестинг сизди тезирээк алдайт

Тереңдетип издөө / көп тактыктуу издөө (ASHA, ырааттуу жарымдоо, Hyperband) миңдеген конфигурацияны арзан баада иргеп, аман калгандарын гана кымбат толук баалоого өткөрөт. Бул чындыгында ылдамдатуу берет — бирок төмөн тактыктагы рангдоо жогорку тактыктагыдан айырмаланса, унчукпай кыйрап калат. Биз фолддор боюнча ранг корреляциясын өлчөдүк: бир фолддо Спирмендин ρ 0.03 болушу мүмкүн (дээрлик кокустан рангдайт), фолддор көбөйгөн сайын 0.43, 0.67, 0.78, 0.91гe чейин өсөт. Чечими — милдеттүү бир дарбаза: адегенде ρ(арзан, толук) өлчөп, андан кийин минималдуу тактыкты ρ ≥ 0.5 болгон биринчи тепкичке чейин автоматтык түрдө көтөрүү.

Кокустук издөө vs Акылдуу издөө: Кесилиш чекити — баалоо наркы, алгоритм эмес

Кокустук издөө vs Акылдуу издөө: Кесилиш чекити — баалоо наркы, алгоритм эмес

Бир бэктест арзан болгондо, акылсыз аралаштырылган (scrambled) Sobol таза өткөрүү жөндөмдүүлүгү (throughput) боюнча жеңип чыгат — акылдуу сэмплерлер (TPE, CMA-ES, ASHA) Python'догу ask/tell салыгын төлөйт, бул аларды 20 эсеге жайлатат, ошондуктан алар бирдей wall-clock убакытында бир топ аз чекитти баалайт жана уттурат. Ар бир баалоону кымбат кылсаңыз (multi-TF + walk-forward фолддору), кесилиш чекити тескерисинче которулат. Биз эки режимди тең өлчөдүк жана эмне үчүн фолд-рэнк тактыгы (ρ@1 0.03дон 0.43кө чейин өсүп) кыркуунун (pruning) өзүн актоосу үчүн алгышарт болорун аныктадык.

Эки октуу параметр мейкиндиги: эмне үчүн сиздин издөөнүн көпчүлүгү дээрлик акысыз болушу керек

Эки октуу параметр мейкиндиги: эмне үчүн сиздин издөөнүн көпчүлүгү дээрлик акысыз болушу керек

Бардык параметрлер издөө үчүн бирдей баа турбайт. Стратегиянын параметрлери кымбат окко (индикаторлор — бүт сериянын үстүнөн кайра эсептелет) жана арзан окко (чечим босоголору — алдын ала эсептелген сигналдардын үстүнөн O(n) өтүү) бөлүнөт. Индикаторлор босогого көз каранды эмес болгондуктан, сиз аларды бир жолу эсептеп, миңдеген босого конфигурацияларын ~5 600 cfg/s ылдамдыкта издейсиз — ар бир конфигурация үчүн кайра эсептөөгө караганда болжол менен 1 600 эсе арзан. Өлчөмдүүлүктүн каргышын кайра баалоо.

Фреймворк салыгы: качан сиздин backtest китепканаңыз жөнөкөй pandas циклинен жайыраак болот

Фреймворк салыгы: качан сиздин backtest китепканаңыз жөнөкөй pandas циклинен жайыраак болот

Биз сегиз backtest кыймылдаткычын бирдей параметр свипинде салыштырдык — 150k бар, 80 HMA-cross комбинациясы, сооданын саны 2707де бирдей кулпуланган. Эң популярдуу эки окуяга негизделген фреймворк колдо жазылган pandas циклинен да жайыраак чыкты, ал эми векторлоштурулган/компиляцияланган кыймылдаткыч ошол эле ишти ~13,000× тезирээк аткарды. Популярдуу китепканалар эч качан амортизациялоого арналбаган ар бир бар үчүн жүктөмдүн изилдөөсү.

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 салыгы: бэктест кыймылдаткычын сокеттин артына коюп, 13% жоготуу — анын ичинен дээрлик эч нерсе сокетке байланыштуу эмес

IPC салыгы: бэктест кыймылдаткычын сокеттин артына коюп, 13% жоготуу — анын ичинен дээрлик эч нерсе сокетке байланыштуу эмес

Биз numba бэктест ядросун сап-сабы менен Rust тилине которуп, аны процесс чек арасы аркылуу төрт ыкма менен чакырдык, акыркы бүтүмгө чейин бирдей PnL ырастаган эквиваленттик дарбаза менен. 1.2 МБ баа сериясынын баарын Unix сокети аркылуу жиберүү ~2 мс кетет — тапшырманын болжол менен 0.1%. Ошол эле жүктөмдү JSON форматында коддоо чийки байттардан 1348 эсе кымбат турат, комбинация сайын "chatty" чакыруулар маалыматтарды 80 жолу кайра жиберет, ал бар сайынкы чакыруу үлгүсү 2.0 с тапшырмада 2.1 с таза IPC-ге акы төлөйт. Чек ара арзан; салык аны кантип кесип өтүүдө турат.