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.
Bài Viết
Giải phẫu MEV: sandwich, frontrunning, và khu rừng tối của mempool
Mỗi lệnh swap bạn gửi tới một RPC công khai là một lệnh giới hạn hiển thị mà không ai có nghĩa vụ phải tôn trọng. Phân tích kỹ thuật về cách hoạt động của khai thác MEV: thứ tự trong mempool, toán học sandwich trên Uniswap v2, PGA, Flashbots, và các biện pháp phòng thủ cho trader.
Mô phỏng khớp lệnh: bậc thang từ ảo tưởng giá đóng cửa đến thực tế nhận biết hàng đợi
Năm bậc thang về độ trung thực của mô phỏng khớp lệnh — từ khớp theo giá đóng cửa đến các mô hình xác suất theo vị trí trong hàng đợi. Khớp lệnh một phần như một máy trạng thái, cận xác suất khớp lệnh giới hạn như một khung PnL, và một vòng lặp hiệu chỉnh đối chiếu với khớp lệnh thực tế.
TWAP so với VWAP so với POV: chọn benchmark thực thi lệnh (và biết khi nào từng loại đánh lừa bạn)
TWAP, VWAP và POV thực chất là những cược vào dự báo khối lượng giao dịch. Chúng ta mổ xẻ giả định ẩn của từng bộ lập lịch, xây dựng đường cong khối lượng intraday cho crypto, và chạy đối đầu cả ba trên dữ liệu L2 phát lại.
Almgren-Chriss không màu mè: Thực thi tối ưu bạn có thể triển khai trong một buổi chiều
Suy diễn đầy đủ mô hình thực thi tối ưu Almgren-Chriss: impact tuyến tính, quỹ đạo sinh/cosh, đường biên hiệu quả, và code Python để hiệu chỉnh eta, gamma, sigma từ dữ liệu L2 và trade của Binance.
Kết Quả Phủ Định Trung Thực: Hàng Chục Nghìn Backtest, Năm Đồng Lớn, Không Có Edge Bền Vững
Phần đỉnh cao của mạch bài về tìm kiếm tham số và overfitting, và nó khép lại bằng một kết quả phủ định — kết quả đúng. Một tìm kiếm dual-timeframe trên một symbol duy nhất (ETHUSDT) tìm ra một cấu hình đạt +16.35% out-of-sample và +2.62% trên một holdout chưa hề bị động đến; Deflated Sharpe Ratio, sau khi tính đến ~37,000 lần thử, deflate nó về 0.00. Một lượt quét cross-instrument trên năm đồng lớn (ETH/BTC/SOL/BNB/XRP, mỗi đồng ~1.18M nến 1 phút), chọn theo trung vị out-of-sample, dập tắt nó vĩnh viễn: dual DSR 0.24 / PBO 0.264, triple DSR 0.14 / PBO 0.327 — cả hai đều fail các gate. Champion có lãi trên 1/5 symbol và lỗ trên các symbol còn lại. Đây chính là lý do bộ máy chống overfitting tồn tại: để ngăn bạn ship phần tốt nhất của nhiễu thành alpha.
Chứng Minh Không Có Look-Ahead Trong Backtest Đa Khung Thời Gian: Nhiễu Loạn Tương Lai, Chứng Minh Quá Khứ Không Thể Nhìn Thấy Nó
Các backtest đa khung thời gian để lộ dữ liệu tương lai qua một nến khung thời gian cao hơn đang hình thành, mà giá đóng cửa cuối cùng của nó chưa hề tồn tại. Bạn không thể chỉ đọc code để có được sự tin tưởng — bạn phải kiểm tra nó bằng thực nghiệm. Chúng tôi tái tạo chính xác quy tắc nến-đã-đóng (closed-bar) của bot live, sau đó chứng minh không có rò rỉ bằng một probe dịch chuyển tương lai: nhiễu loạn mọi nến tương lai và khẳng định mọi tín hiệu, mọi giao dịch trong quá khứ không đổi ở cấp độ bit. 25/25 kiểm tra parity đạt, và probe này thực sự có hiệu lực.
Khi Nào GPU Đáng Đồng Tiền: Roofline Của Sweep Tham Số, Nơi Con Số Tiêu Đề 167x Thực Ra Là 27x Thuật Toán Nhân 6.2x Phần Cứng
Lợi thế của GPU so với CPU tăng lên theo kích thước lô — 54.5x ở một combo mỗi lời gọi cho đến 359.6x ở 61 combo trên phép precompute chỉ báo đa khung thời gian của chúng tôi — bởi vì một sweep nhỏ không thể khấu hao chi phí khởi chạy kernel và truyền dữ liệu. Chúng tôi phân rã con số tiêu đề 167x thành một chiến thắng thuật toán 27x mà CPU cũng được hưởng và một chiến thắng phần cứng 6.2x, cho thấy lợi thế thực sự của GPU so với CPU tốt nhất chỉ là 3.2x với khung thời gian đơn và 6.2x với đa khung, và đưa ra một hướng dẫn quyết định về việc một sweep phải rộng đến mức nào trước khi đáng để đầu tư vào một GPU.
Cái bẫy độ chính xác GPU: Vì sao một backtest fp32 trên Apple Metal âm thầm trả về rác
GPU Metal của Apple không có float64. Chuyển một backtest được vector hóa sang nó một cách ngây thơ và thủ thuật WMA bằng prefix-sum đầy cám dỗ sẽ tràn fp32 — sai số tương đối lớn nhất 211× — vậy mà nó vẫn chạy và trả về những con số trông có vẻ hợp lý. Cách sửa không phải là thêm độ chính xác; đó là một công thức khác: tích chập cửa sổ trực tiếp, an toàn với fp32 tới 8×10⁻⁷ và nhanh hơn 55,9× so với numba đơn luồng. Cái bẫy, phép số học, và cách chứng minh bạn không rơi vào nó.
Cổng Fidelity: Backtest Từ Thô Đến Tinh Đánh Lừa Bạn Nhanh Hơn Trừ Khi Proxy Rẻ Xếp Hạng Giống Đánh Giá Đắt Tiền
Tìm kiếm đào sâu / đa fidelity (ASHA, successive halving, Hyperband) sàng lọc hàng nghìn cấu hình với chi phí rẻ và chỉ đưa những cấu hình sống sót lên đánh giá đầy đủ đắt đỏ. Đây là một cách tăng tốc thực sự — nhưng nó sụp đổ trong im lặng nếu xếp hạng ở fidelity thấp không khớp với xếp hạng ở fidelity cao. Chúng tôi đã đo tương quan thứ hạng theo fold: ở một fold, Spearman ρ có thể chỉ là 0.03 (xếp hạng gần như ngẫu nhiên), rồi tăng lên 0.43, 0.67, 0.78, 0.91 khi số fold tích lũy dần. Cách khắc phục là một cổng bắt buộc duy nhất — đo ρ(rẻ, đầy đủ) trước, rồi tự động nâng fidelity tối thiểu lên bậc đầu tiên có ρ ≥ 0.5.
Random vs Smart Search: Điểm giao thoa nằm ở chi phí đánh giá, không phải thuật toán
Khi một lần backtest rẻ, Sobol scrambled kém tinh vi thắng về thông lượng thô — các sampler thông minh (TPE, CMA-ES, ASHA) phải trả một khoản thuế ask/tell bằng Python khiến chúng chậm đi 20 lần, nên chúng đánh giá được ít điểm hơn hẳn ở cùng wall-clock và thua cuộc. Khiến mỗi lần đánh giá trở nên đắt đỏ (multi-TF + các fold walk-forward) và điểm giao thoa đảo chiều. Chúng tôi đo cả hai chế độ, và lý do vì sao độ trung thực xếp hạng theo fold (ρ@1 tăng từ 0.03→0.43) là điều kiện tiên quyết để việc cắt tỉa (pruning) mang lại hiệu quả.
Không gian tham số hai trục: Vì sao phần lớn phép quét của bạn nên gần như miễn phí
Không phải tham số nào cũng tốn chi phí tìm kiếm như nhau. Tham số của một chiến lược tách thành trục đắt (chỉ báo — phải tính lại trên toàn chuỗi giá) và trục rẻ (ngưỡng quyết định — một lượt duyệt O(n) trên tín hiệu đã tính sẵn). Vì chỉ báo bất biến với ngưỡng, bạn chỉ tính chúng một lần rồi quét hàng nghìn cấu hình ngưỡng ở tốc độ ~5,600 cfg/s — rẻ hơn khoảng 1,600 lần so với tính lại cho từng cấu hình. Một cách định giá lại lời nguyền số chiều.
Thuế Framework: Khi Thư Viện Backtest Của Bạn Chậm Hơn Cả Một Vòng Lặp Pandas Ngây Thơ
Chúng tôi đã đo hiệu năng tám engine backtest trên cùng một parameter sweep — 150 nghìn bar, 80 tổ hợp HMA-cross, số lệnh khớp chốt ở mức 2707. Hai trong số các framework event-driven phổ biến nhất lại chậm hơn một vòng lặp pandas viết tay, trong khi một engine vectorized/compiled chạy cùng khối lượng công việc đó nhanh hơn ~13.000 lần. Một nghiên cứu về chi phí phụ trội theo từng bar mà các thư viện phổ biến chưa từng được thiết kế để khấu hao.