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
The maker-taker decision: fee tiers, rebates, and the true cost of crossing the spread
Maker vs taker is an adverse-selection trade wearing a fee schedule. Break-even math via Glosten-Milgrom, real crypto fee tiers and token discounts, rebate mining history, queue-dependent rebate value, and modeling tiered fees in a backtest.
Implementation shortfall and DIY TCA: measuring what execution actually costs you
Perold's implementation shortfall turned into a working TCA pipeline for crypto bots: arrival-price decomposition, markout curves at t+1s/10s/60s, ~200 lines of Python over your own fills, and feeding the results back into your backtest cost model.
Liquidations on-chain: Aave and Compound mechanics, and the bot business around them
How Aave v3 and Compound liquidations actually work: health factor math, close factors, liquidation bonuses, Chainlink oracle triggers, and what it takes to run a flash-loan liquidation bot in 2026.
Uniswap v3 for Quants: Concentrated Liquidity and Tick Math from First Principles
How Uniswap v3 really works under the hood: virtual reserves, liquidity L, sqrtPriceX96, tick math, feeGrowthInside, and why an LP position is a short-volatility payoff. With exact formulas and a worked numeric example.
MEV anatomy: sandwiches, frontrunning, and the dark forest of the mempool
Every swap you send to a public RPC is a visible limit order nobody has to honor. A technical breakdown of how MEV extraction works: mempool ordering, sandwich math on Uniswap v2, PGAs, Flashbots, and trader defenses.
Fill simulation: the ladder from close-price fantasy to queue-aware reality
Five rungs of fill simulation fidelity — from close-price fills to probabilistic queue-position models. Partial fills as a state machine, limit-fill probability bounds as a PnL bracket, and a calibration loop against live fills.
TWAP vs VWAP vs POV: picking an execution benchmark (and knowing when each lies to you)
TWAP, VWAP and POV are bets on a volume forecast. We dissect each scheduler's hidden assumptions, build crypto intraday volume curves, and run all three head-to-head on replayed L2 data.
Almgren-Chriss Without the Hand-Waving: Optimal Execution You Can Implement in an Afternoon
Full derivation of the Almgren-Chriss optimal execution model: linear impact, the sinh/cosh trajectory, the efficient frontier, and working Python for calibrating eta, gamma, and sigma from Binance L2 and trade data.
The Honest Negative: Tens of Thousands of Backtests, Five Majors, No Robust Edge
The capstone of the search-and-overfit arc, and it ends in a negative result — the correct one. A single-symbol dual-timeframe search on ETHUSDT found a config worth +16.35% out-of-sample and +2.62% on an untouched holdout; the Deflated Sharpe Ratio, accounting for ~37,000 trials, deflated it to 0.00. A cross-instrument pass over five majors (ETH/BTC/SOL/BNB/XRP, ~1.18M 1m bars each), selecting by median out-of-sample, kills it for good: dual DSR 0.24 / PBO 0.264, triple DSR 0.14 / PBO 0.327 — both fail the gates. The champion is profitable on 1 of 5 symbols and negative on the rest. This is what the anti-overfit apparatus is for: to stop you from shipping the best of noise as alpha.
Proving No Look-Ahead in Multi-Timeframe Backtests: Perturb the Future, Prove the Past Can't See It
Multi-timeframe backtests leak the future through a forming higher-timeframe bar whose final close does not exist yet. You cannot code-review your way to confidence — you have to test it. We reproduce the live bot's closed-bar rule exactly, then prove no leakage with a shifted-future probe: perturb every future bar and assert every past signal and trade is bitwise unchanged. 25/25 parity checks, and the probe has teeth.
When the GPU Pays Off: The Parameter-Sweep Roofline, Where a Headline 167x Is Really 27x Algorithm Times 6.2x Hardware
The GPU's lead over CPU grows with batch size — 54.5x at one combo per call up to 359.6x at 61 on our multi-timeframe indicator precompute — because a small sweep cannot amortize kernel-launch and transfer overhead. We decompose a headline 167x into a 27x algorithmic win that also helps the CPU and a 6.2x hardware win, show the true GPU-vs-best-CPU lead is only 3.2x single-timeframe and 6.2x multi, and give a decision guide for how wide a sweep must be before a GPU is worth buying into.
The GPU Precision Trap: How an fp32 Backtest on Apple Metal Silently Returns Garbage
Apple's Metal GPU has no float64. Port a vectorized backtest to it naively and the tempting prefix-sum WMA overflows fp32 — max relative error 211× — yet it still runs and returns plausible-looking numbers. The fix is not more precision; it is a different formulation: a direct windowed convolution, fp32-safe to 8×10⁻⁷ and 55.9× faster than single-thread numba. The trap, the arithmetic, and how to prove you didn't fall in.