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
Дәлдік қақпасы: егер арзан прокси конфигурацияларды қымбат бағалаумен бірдей ретте саралай алмаса, ірі-ден-нақтыға қарай бэктестілеу сізді тезірек алдайды
Тереңдете іздеу / көп дәлдікті іздеу (ASHA, бірізді жартылау, Hyperband) мыңдаған конфигурацияны арзан бағамен сүзіп, тек аман қалғандарын ғана қымбат толық бағалауға өткізеді. Бұл — шынайы жылдамдату, бірақ төмен дәлдіктегі сараптама жоғары дәлдіктегімен келіспесе, ол дыбыссыз құлайды. Біз фолд-ранг корреляциясын өлшедік: бір фолдта Spearman ρ 0.03-ке дейін түсуі мүмкін (конфигурациялар кездейсоқ дерлік сараланады), ал фолдтар көбейген сайын 0.43, 0.67, 0.78, 0.91-ге дейін өседі. Шешім — бір міндетті қақпа: алдымен ρ(арзан, толық) мәнін өлшеп, ең төменгі дәлдікті ρ ≥ 0.5 болатын алғашқы сатыға дейін автоматты түрде көтеру керек.
Кездейсоқ іздеу vs ақылды іздеу: кроссоверді алгоритм емес, бағалау құны анықтайды
Бір бэктест арзан болғанда, қарапайым scrambled Sobol таза өткізу қабілеті (throughput) бойынша жеңеді - ақылды сэмплерлер (TPE, CMA-ES, ASHA) Python ask/tell салығын төлейді, бұл оларды 20 есе баяулатады, сондықтан олар бірдей нақты уақытта әлдеқайда аз нүкте бағалайды да ұтылады. Әр бағалауды қымбат етіп жасаңыз (multi-TF + walk-forward фолдтары) - кроссовер керісінше өзгереді. Біз екі режимді де өлшедік, және неге fold-rank fidelity (ρ@1 0.03-тен 0.43-ке дейін өсуі) кесудің пайда әкелуінің алғышарты екенін көрсеттік.
Екі осьті параметрлер кеңістігі: неге іздеуіңіздің көбі дерлік тегін болуға тиіс
Барлық параметрлер бірдей іздеу құнын талап етпейді. Стратегия параметрлері қымбат оське (индикаторлар — бүкіл қатар бойынша қайта есептеледі) және арзан оське (шешім табалдырықтары — алдын ала есептелген сигналдар бойынша O(n) өту) бөлінеді. Индикаторлар табалдырықтарға тәуелсіз болғандықтан, оларды бір рет есептеп, мыңдаған табалдырық конфигурациясын шамамен 5,600 cfg/с жылдамдықпен аралап шығуға болады — бұл конфигурация сайын қайта есептеуден шамамен 1,600 есе арзан. Өлшемділіктің қарғысын қайта бағалау.
Фреймворк салығы: бэктест кітапханаңыз қарапайым pandas циклінен баяу болғанда
Біз сегіз бэктест қозғалтқышын бір бірдей параметр сканерлеуінде өлшедік — 150k бар, 80 HMA қиылысу комбинациясы, мәмілелер саны 2707-де бекітілген паритетпен. Ең танымал оқиғаға негізделген екі фреймворк қолмен жазылған pandas циклінен де баяу шықты, ал векторланған/компиляцияланған қозғалтқыш сол жұмысты шамамен 13,000× жылдам орындады. Танымал кітапханалар ешқашан амортизациялауға арналмаған бар сайынғы үстеме шығынды зерттеу.
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% жоғалту — оның ішінде сокетке қатысты дерлік ештеңе жоқ
Біз numba бэктест ядросын жолма-жол Rust тіліне порттап, оны процесс шекарасы арқылы төрт түрлі жолмен шақырдық, соңғы мәмілеге дейін бірдей PnL растайтын эквиваленттілік қақпасымен. 1.2 МБ баға сериясының барлығын Unix сокеті арқылы жіберу ~2 мс тұрады — тапсырманың шамамен 0.1%. Сол пейлоудты JSON форматында кодтау шикі байттардан 1348 есе қымбатқа түседі, комбинация сайынғы "chatty" шақырулар деректерді 80 рет қайта жібереді, ал бар сайынғы шақыру үлгісі 2.0 с тапсырмада 2.1 с таза IPC-ге ақы төлер еді. Шекара арзан; салық оны қалай кесіп өтуіңізде жатыр.
Deflated Sharpe Ratio: Бэктест 'жеңімпаздарыңыздың' қаншасы көптеген тестілеуден аман қалады?
Параметрлерді іздеу — сәттілікті жасанды түрде өндіретін машина. Таза шуда — шынайы эджі нөлге тең 1000 стратегияда — үздік жылдық Sharpe орта есеппен 1.63-ке жетеді, ал шикі маңыздылық тесті жаңалықты 100% жағдайда белгілейді. Біз бақыланатын шынайы негіз құрып, Deflated Sharpe Ratio, Harvey-Liu haircut және White's Reality Check әдістерінің шындықты қалай қалпына келтіретінін көрсетеміз: жалған жаңалықтар 1.000-нен 0.001-0.057-ге дейін төмендейді, шу шегінен жоғары шынайы эдждер ~1 қуатпен сақталады — және бір нақты тұзақ (корреляцияланған торлар) бар, мұнда шикі DSR шамадан тыс дефляцияланады да, қорытынды бір ғана бағалаудан емес, тиімді сынақтар санының бүкіл диапазонынан оқылуы керек.
Мақсат-функциясын жобалау: сіз оңтайландыратын метрика стратегияңызды жасырын түрде таңдайды
"Ең жақсы" стратегияны іздеу үшін алдымен "ең жақсыны" анықтау керек — және сол скаляр жеңімпазды үнсіз таңдайды. Белгілі edge бар синтетикалық деректерде (600 seed, T=2000, 80 табалдырық) қарапайым per-trade Sharpe лотереяны тәж киеді: ол 56% seed-те 5%-дан төмен экспозициясы бар жеңімпазды таңдайды және 57%-да азғындайды — ең айқын seed-те 8 мәміле in-sample Sharpe 21.09 көрсетеді, ол out of sample кезінде 0.13-ке дейін құлайды. Адал жөндеу дерлік жалықтырарлық: толық уақыт өсінде өлшеу, ол ешқашан азғындамайды (out-of-sample 1.71). Мәміле санына негізделген shrinkage (conf_k) және экспозиция табалдырығы per-trade метрикасын жөндей алады, бірақ толығымен түзетілсе де олар тек full-timeline Sharpe-пен теңеседі (1.70-ге қарсы 1.71) — ешқашан одан асып түспейді. Гудхарт заңы, бэктестте, бақыланатын негізгі шындықпен.
Look-Ahead Bias: бір бардың қатесі таза шудан қалай 15 Sharpe жасап шығарады
Бэктесттерді байқаусызда ісіндіретін нәзік look-ahead ағып кетулерін бақыланатын түрде зерттеу. Нақты edge мүлдем болмаса да, бір бардағы орындалу таза шудан +14.8 жылдық Sharpe жасап шығарады; индикатордың бір барға алдын ала қарауы — +4.8. Таксономия, өлшенген шамалар және әр ағып кетуді ақшаңызға тиер алдында қалай анықтау керек.
Бэктест жылдамдығының сатысы: ноутбук CPU-да 298 есе, соңғы транзакцияға дейін бірдей PnL
Бір 80 комбинациялы параметр сканерлеуінің бес имплементациясы, бәрі бірдей PnL беретіні тексерілген: pandas rolling.apply 69.9 секунд алады, numpy 3.1, numba 2.0, параллельді numba 0.23 — Apple M2 Max-та ешқандай аппараттық өзгеріссіз өлшенген 298 еселік жеделдету, әрі әбден жарамды векторланған базистен де әлі ~13 есе жоғары. Әр саты не береді, GPU неге жетіспейтін бөлік емес, және жаппай параметр іздеудегі нағыз тар жер қайда.
researcher: A Searchable Quant-Research Archive for Humans and AI Agents
How we built researcher.marketmaker.cc — a unified, full-text-searchable archive of quant research (arXiv papers, GitHub repos, quant blogs, TradingView Pine scripts) that humans browse and AI agents query over MCP.
algo-investor-skills: алаяқтықтан қорғалған инвестор ұсынысын құратын Claude Code скилдері
algo-investor-skills — алгосауда стратегиясын өлшенген нақты деректерден аудиттелген, адалдыққа бағытталған инвестор ұсынысына айналдыратын Claude Code скилдерінің жиынтығына терең шолу. Алты құрастырылатын скил, қаржылық модельдер қозғалтқышы, тәуелсіз тексеру дәлел пакеті және ешқашан сан ойдан шығармайтын міндетті скептик-инвестор аудитінің қақпасы.