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
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
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
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
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
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
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
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
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
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
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.
Bid-Ask Spread Modeling and Prediction with Machine Learning
Decomposing and predicting bid-ask spreads with ML — from Roll's implicit estimator to gradient boosting and neural networks — with the units, leakage, and benchmarking pitfalls that bite in production.
DeepLOB: Aprendizado Profundo em Livros de Ofertas Limitadas
Como o DeepLOB combina uma CNN, um módulo inception e uma LSTM para prever movimentos do preço médio a partir de dados brutos do livro de ofertas — a arquitetura, os números reais do FI-2010 e uma reimplementação funcional em PyTorch.