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

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.

O imposto IPC: coloque o motor de backtest atrás de um socket e perca 13% — quase nada disso é do socket

O imposto IPC: coloque o motor de backtest atrás de um socket e perca 13% — quase nada disso é do socket

Portamos um kernel de backtest numba linha por linha para Rust e o chamamos através de uma fronteira de processo de quatro formas, com um portão de equivalência confirmando PnL idêntico até a última operação. Enviar toda a série de preços de 1,2 MB por um socket Unix custa ~2 ms — cerca de 0,1% do trabalho. Codificar o mesmo payload em JSON custa 1348x mais que bytes brutos, chamadas tagarelas por combinação reenviam os dados 80 vezes, e um padrão de chamada por barra pagaria 2,1 s de IPC pura em um trabalho de 2,0 s. A fronteira é barata; o imposto está em como você a atravessa.

O Deflated Sharpe Ratio: Quantos dos seus 'vencedores' de backtest sobrevivem ao multiple testing?

O Deflated Sharpe Ratio: Quantos dos seus 'vencedores' de backtest sobrevivem ao multiple testing?

Uma busca de parâmetros é uma máquina de fabricar sorte. Em ruído puro — 1.000 estratégias com zero de edge real — o melhor Sharpe anualizado tem média de 1,63 e o teste de significância ingênuo aponta uma descoberta em 100% das vezes. Construímos uma verdade fundamental controlada e mostramos que o Deflated Sharpe Ratio, o haircut de Harvey-Liu e o Reality Check de White restauram a honestidade: os falsos positivos caem de 1,000 para 0,001-0,057, edges genuínos acima do teto de ruído são mantidos com poder ~1 — e uma armadilha real (grids correlacionados) onde o DSR bruto deflaciona em excesso e o veredito precisa ser lido em toda uma faixa de estimativas de trials efetivos, não em um único número.

Design da função objetivo: a métrica que você otimiza escolhe secretamente sua estratégia

Design da função objetivo: a métrica que você otimiza escolhe secretamente sua estratégia

Para buscar a 'melhor' estratégia é preciso primeiro definir 'melhor' — e esse escalar escolhe o vencedor em silêncio. Em dados sintéticos com um edge conhecido (600 seeds, T=2000, 80 limiares), um Sharpe por trade ingênuo coroa uma loteria: escolhe um vencedor com menos de 5% de exposição em 56% das seeds e degenera em 57% — na seed mais extrema, 8 trades produzem um Sharpe in-sample de 21.09 que desaba para 0.13 fora da amostra. O conserto honesto é quase entediante: medir na linha do tempo completa, que nunca degenera (out-of-sample 1.71). Um shrinkage por número de trades (conf_k) e um piso de exposição podem remendar uma métrica por trade, mas mesmo totalmente corrigidos eles apenas igualam o Sharpe de linha do tempo completa (1.70 contra 1.71) — nunca o superam. A lei de Goodhart, num backtest, com verdade fundamental controlada.

Look-Ahead Bias: como um erro de uma vela fabrica um Sharpe de 15 a partir de puro ruído

Look-Ahead Bias: como um erro de uma vela fabrica um Sharpe de 15 a partir de puro ruído

Um estudo controlado das sutis fugas de look-ahead que inflam silenciosamente os backtests. Sem nenhum edge real, uma execução na mesma vela fabrica um Sharpe anualizado de +14,8 a partir de puro ruído; uma espiada de um indicador uma vela à frente, +4,8. A taxonomia, as magnitudes medidas e como detectar cada fuga antes que ela lhe custe dinheiro.

A Escada de Velocidade do Backtest: 298x em uma CPU de Laptop, PnL Idêntico Até o Último Trade

A Escada de Velocidade do Backtest: 298x em uma CPU de Laptop, PnL Idêntico Até o Último Trade

Cinco implementações do mesmo sweep de 80 combinações de parâmetros, todas verificadas para produzir PnL idêntico: pandas rolling.apply leva 69,9 segundos, numpy 3,1, numba 2,0, numba paralelo 0,23 — um speedup medido de 298x em um Apple M2 Max sem nenhuma mudança de hardware, e ainda assim ~13x sobre uma baseline vetorizada competente. O que cada degrau compra, por que a GPU não é a peça que falta, e onde realmente está o gargalo na busca massiva de parâmetros.

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: Skills do Claude Code que constroem uma proposta a prova de golpe para investidores

algo-investor-skills: Skills do Claude Code que constroem uma proposta a prova de golpe para investidores

Um olhar aprofundado sobre algo-investor-skills — um conjunto de skills do Claude Code que levam uma estratégia de algotrading de fatos brutos medidos a uma proposta de investidor auditada e voltada para a honestidade. Seis skills combináveis, um motor de modelos financeiros, um pacote de prova de verificação independente e um portão de auditoria obrigatório por um investidor cético que nunca fabrica um número.

O critério de Kelly para estratégias: como dimensionar posições e alocar capital

O critério de Kelly para estratégias: como dimensionar posições e alocar capital

Uma estratégia com valor esperado positivo ainda pode destruir sua conta se o tamanho da aposta estiver errado. Percorremos o critério de Kelly desde a dedução da fórmula até uma carteira de estratégias: por que o Kelly completo é perigoso, como o Kelly fracionário captura 75% do crescimento com metade da volatilidade, e uma calculadora interativa que mostra como a fração de Kelly move o retorno e o risco.

Daily Stock Analysis: um sistema de IA que transforma uma watchlist em um painel de decisão diário

Daily Stock Analysis: um sistema de IA que transforma uma watchlist em um painel de decisão diário

Uma análise aprofundada do daily_stock_analysis, de ZhuLinsen — um sistema de código aberto que busca dados de mercado de A-shares, HK, EUA e outros, executa análise técnica e de notícias via LLM, e envia um 'painel de decisão' estruturado para seu mensageiro a cada dia de negociação. Arquitetura, fallback de dados, estratégias de agentes, limitações.

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.

Predição Conformal para Dimensionamento de Posição Sensível ao Risco

Predição Conformal para Dimensionamento de Posição Sensível ao Risco

Intervalos de predição livres de distribuição com garantia de cobertura. Usamos split conformal, jackknife+ e inferência conformal adaptativa para calibrar o risco de negociação e dimensionar posições sem suposições paramétricas.