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.

Artikelen

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.

De IPC-belasting: zet de backtest-engine achter een socket en verlies 13% — bijna niets daarvan komt door de socket

De IPC-belasting: zet de backtest-engine achter een socket en verlies 13% — bijna niets daarvan komt door de socket

We hebben een numba-backtestkernel regel voor regel naar Rust geport en op vier manieren over een procesgrens aangeroepen, met een equivalentiepoort die identieke PnL tot de laatste trade bevestigt. Het versturen van de volledige 1,2 MB prijsserie via een Unix-socket kost ~2 ms — ongeveer 0,1% van de taak. JSON-codering van dezelfde payload kost 1348x meer dan ruwe bytes, chatty aanroepen per combinatie versturen de data 80 keer opnieuw, en een aanroeppatroon per bar zou 2,1 s pure IPC kosten op een taak van 2,0 s. De grens is goedkoop; de belasting zit in hoe je hem oversteekt.

De Deflated Sharpe Ratio: Hoeveel van je Backtest-'Winnaars' Overleven Multiple Testing?

De Deflated Sharpe Ratio: Hoeveel van je Backtest-'Winnaars' Overleven Multiple Testing?

Een parameterzoektocht is een machine voor het fabriceren van geluk. Op pure ruis — 1.000 strategieën met nul echte edge — behaalt de beste jaarlijkse Sharpe gemiddeld 1,63 en signaleert de naïeve significantietoets 100% van de tijd een ontdekking. We bouwen een gecontroleerde ground truth en laten zien dat de Deflated Sharpe Ratio, de Harvey-Liu haircut en White's Reality Check de eerlijkheid herstellen: valse ontdekkingen dalen van 1,000 naar 0,001-0,057, echte edges boven het ruisplafond blijven behouden met een power van ~1 — en één echte valkuil (gecorreleerde grids) waar de rauwe DSR overdeflateert en het oordeel over een hele band van effectieve-trials-schattingen gelezen moet worden, niet over één getal.

Objective-Function Design: de metriek die je optimaliseert kiest stiekem je strategie

Objective-Function Design: de metriek die je optimaliseert kiest stiekem je strategie

Om naar de 'beste' strategie te zoeken, moet je eerst 'beste' definiëren — en die scalair kiest in stilte de winnaar. Op synthetische data met een bekende edge (600 seeds, T=2000, 80 drempels) kroont een naïeve per-trade Sharpe een loterij: hij kiest in 56% van de seeds een winnaar met minder dan 5% exposure en degenereert in 57% — bij de meest extreme seed leveren 8 trades een in-sample Sharpe van 21.09 op die out of sample instort tot 0.13. De eerlijke reparatie is bijna saai: meten over de volledige tijdlijn, die nooit degenereert (out-of-sample 1.71). Een trade-count (conf_k) shrinkage en een exposure floor kunnen een per-trade metriek repareren, maar zelfs volledig gerepareerd evenaren ze slechts de full-timeline Sharpe (1.70 tegen 1.71) — nooit meer dan dat. De wet van Goodhart, in een backtest, met gecontroleerde grondwaarheid.

Look-Ahead Bias: hoe een fout van één bar een Sharpe van 15 fabriceert uit pure ruis

Look-Ahead Bias: hoe een fout van één bar een Sharpe van 15 fabriceert uit pure ruis

Een gecontroleerde studie van de subtiele look-ahead-lekken die backtests stilletjes opblazen. Zonder enige echte edge fabriceert een fill op dezelfde bar een geannualiseerde Sharpe van +14,8 uit pure ruis; een vooruitblik van één bar door een indicator, +4,8. De taxonomie, de gemeten grootteordes, en hoe je elk lek opspoort voordat het je geld kost.

De Backtest-snelheidsladder: 298x op een laptop-CPU, identieke PnL tot de laatste trade

De Backtest-snelheidsladder: 298x op een laptop-CPU, identieke PnL tot de laatste trade

Vijf implementaties van dezelfde sweep over 80 parametercombinaties, allemaal geverifieerd op identieke PnL: pandas rolling.apply doet er 69,9 seconden over, numpy 3,1, numba 2,0, parallelle numba 0,23 — een gemeten versnelling van 298x op een Apple M2 Max zonder enige hardwarewijziging, en nog altijd ~13x ten opzichte van een degelijke gevectoriseerde baseline. Wat elke trede oplevert, waarom een GPU niet het ontbrekende stukje is, en waar het echte knelpunt in massale parametersearch zich bevindt.

researcher: A Searchable Quant-Research Archive for Humans and AI Agents

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 Skills die een fraudebestendig investeerdersvoorstel bouwen

algo-investor-skills: Claude Code Skills die een fraudebestendig investeerdersvoorstel bouwen

Een diepgaande blik op algo-investor-skills — een set Claude Code skills die een algotrading-strategie van ruwe, gemeten feiten naar een geauditeerd, eerlijkheid-voorop investeerdersvoorstel brengen. Zes samenstelbare skills, een financiële-modellen-engine, een onafhankelijk verificatie-bewijspakket, en een verplichte skeptische-investeerder-auditpoort die nooit een cijfer verzint.

Het Kelly-criterium voor strategieën: hoe posities dimensioneren en kapitaal alloceren

Het Kelly-criterium voor strategieën: hoe posities dimensioneren en kapitaal alloceren

Een strategie met een positieve verwachtingswaarde kan je account alsnog opblazen als de inzetgrootte verkeerd is. We doorlopen het Kelly-criterium van de afleiding van de formule tot een portfolio van strategieën: waarom volledige Kelly gevaarlijk is, hoe fractionele Kelly 75% van de groei behaalt bij de helft van de volatiliteit, en een interactieve rekenmachine die laat zien hoe de Kelly-fractie rendement en risico beïnvloedt.

Daily Stock Analysis: een AI-systeem dat een watchlist omzet in een dagelijks beslissingsdashboard

Daily Stock Analysis: een AI-systeem dat een watchlist omzet in een dagelijks beslissingsdashboard

Een diepgaande blik op daily_stock_analysis van ZhuLinsen — een opensourcesysteem dat marktdata ophaalt voor A-aandelen, HK, VS en meer, technische en nieuwsanalyse uitvoert via een LLM, en elke handelsdag een gestructureerd 'beslissingsdashboard' naar je messenger stuurt. Architectuur, data-fallback, agentstrategieën, beperkingen.

Temporal Fusion Transformers for Multi-Horizon Portfolio Forecasting

Temporal Fusion Transformers for Multi-Horizon Portfolio Forecasting

How Google's Temporal Fusion Transformer brings interpretable multi-horizon forecasting to quantitative portfolio management, with attention-based variable selection, quantile outputs, and a worked pytorch-forecasting pipeline.

Conformal Prediction voor Risicobewuste Positiegrootte

Conformal Prediction voor Risicobewuste Positiegrootte

Distributievrije predictie-intervallen met gegarandeerde dekking. We gebruiken split conformal, jackknife+ en adaptive conformal inference om handelsrisico te kalibreren en posities te bepalen zonder parametrische aannames.