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.

Bài Viết

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

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

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 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ơ

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.

Probability of Backtest Overfitting: Tìm Kiếm Của Bạn Có Đánh Bại Được Một Lần Tung Đồng Xu?

Probability of Backtest Overfitting: Tìm Kiếm Của Bạn Có Đánh Bại Được Một Lần Tung Đồng Xu?

Deflated Sharpe Ratio định giá chiến lược thắng cuộc; PBO định giá tìm kiếm đã chọn ra nó. Combinatorially Symmetric Cross-Validation chạy C(16,8) = 12,870 lượt chia train/test trên một ma trận hiệu suất 1000x200 và hỏi: liệu kẻ thắng cuộc in-sample có rơi vào nửa dưới out-of-sample hay không? Cái bẫy mà hầu như ai cũng bỏ lỡ — null của PBO là 0.5, không phải 1. Trên 200 chiến lược không-lợi-thế, Sharpe hàng năm in-sample tốt nhất là 1.98 sụp đổ xuống 0.06 out-of-sample và PBO = 0.476: một lần tung đồng xu, overfit hoàn toàn. Cài đặt một lợi thế thực (Sharpe hàng năm 2.38) thì PBO giảm xuống 0.001, con số in-sample 3.73 sống sót đến out-of-sample 2.34. Một lưới trung bình động trên một random walk thuần túy cũng không có kỹ năng out-of-sample nào — PBO 0.463 trung bình trên 60 ma trận, không thể phân biệt về mặt thống kê với null — và trên một ma trận đại diện, ảo ảnh hiện lên rõ ràng: Sharpe in-sample tốt nhất 2.33 sụp đổ xuống trung vị out-of-sample -0.22, PBO 0.573, 63% xác suất thua lỗ.

Thuế IPC: Đặt Engine Backtest Sau Một Socket Và Mất 13% — Nhưng Gần Như Không Gì Trong Đó Là Do Socket

Thuế IPC: Đặt Engine Backtest Sau Một Socket Và Mất 13% — Nhưng Gần Như Không Gì Trong Đó Là Do Socket

Chúng tôi đã port một kernel backtest numba theo từng dòng sang Rust và gọi nó qua ranh giới tiến trình theo bốn cách khác nhau, với một cổng tương đương xác nhận PnL giống hệt đến tận giao dịch cuối cùng. Truyền toàn bộ chuỗi giá 1.2 MB qua một Unix socket tốn ~2 ms — khoảng 0.1% công việc. Mã hóa JSON cùng payload đó tốn gấp 1348x so với byte thô, các lệnh gọi chatty theo từng combo truyền lại dữ liệu 80 lần, và một mẫu hình gọi theo từng nến sẽ phải trả 2.1 s IPC thuần túy trên một công việc 2.0 s. Ranh giới thì rẻ; thuế nằm ở cách bạn băng qua nó.

Deflated Sharpe Ratio: Có Bao Nhiêu Chiến Lược 'Thắng' Trong Backtest Của Bạn Sống Sót Qua Multiple Testing?

Deflated Sharpe Ratio: Có Bao Nhiêu Chiến Lược 'Thắng' Trong Backtest Của Bạn Sống Sót Qua Multiple Testing?

Một tìm kiếm tham số là một cỗ máy sản xuất may mắn. Trên nhiễu thuần túy — 1,000 chiến lược với lợi thế thực bằng không — Sharpe hàng năm tốt nhất trung bình đạt 1.63 và bài kiểm định ý nghĩa ngây thơ báo hiệu một phát hiện 100% số lần. Chúng tôi xây dựng ground truth có kiểm soát và chỉ ra rằng Deflated Sharpe Ratio, haircut Harvey-Liu, và White's Reality Check khôi phục sự trung thực: phát hiện sai giảm từ 1.000 xuống 0.001-0.057, các lợi thế thực sự trên trần nhiễu được giữ lại với sức mạnh phát hiện ~1 — và một cái bẫy thực sự (lưới tham số tương quan) nơi DSR thô khử lạm phát quá mức và phán quyết phải được đọc trên toàn bộ dải các ước lượng số lần thử hiệu quả, chứ không phải chỉ một.

Thiết Kế Hàm Mục Tiêu: Chỉ Số Bạn Tối Ưu Hóa Âm Thầm Chọn Chiến Lược Của Bạn

Thiết Kế Hàm Mục Tiêu: Chỉ Số Bạn Tối Ưu Hóa Âm Thầm Chọn Chiến Lược Của Bạn

Để tìm kiếm chiến lược 'tốt nhất' bạn trước tiên phải định nghĩa 'tốt nhất' — và con số vô hướng đó âm thầm chọn ra người chiến thắng. Trên dữ liệu tổng hợp với lợi thế đã biết (600 seed, T=2000, 80 ngưỡng), một Sharpe per-trade ngây thơ tôn vinh một vé số: nó chọn một người chiến thắng có mức độ tiếp xúc dưới 5% trong 56% số seed và thoái hóa trong 57% — ở seed cực đoan nhất, 8 giao dịch đạt Sharpe in-sample 21.09 sụp đổ xuống 0.13 out-of-sample. Cách khắc phục trung thực gần như nhàm chán: đo trên toàn bộ dòng thời gian, thứ không bao giờ thoái hóa (out-of-sample 1.71). Một shrinkage theo số lượng giao dịch (conf_k) và một sàn tiếp xúc (exposure floor) có thể vá lại một chỉ số per-trade, nhưng ngay cả khi được sửa hoàn toàn chúng cũng chỉ khớp với Sharpe toàn dòng thời gian (1.70 so với 1.71) — không bao giờ vượt qua nó. Định luật Goodhart, trong một backtest, với ground truth có kiểm soát.

Look-Ahead Bias: Một Sai Lầm Một Nến Tạo Ra Sharpe 15 Từ Nhiễu Thuần Túy

Look-Ahead Bias: Một Sai Lầm Một Nến Tạo Ra Sharpe 15 Từ Nhiễu Thuần Túy

Một nghiên cứu có kiểm soát về các rò rỉ look-ahead tinh vi âm thầm thổi phồng backtest. Với lợi thế thực bằng không, một fill cùng nến tạo ra Sharpe hàng năm +14.8 từ nhiễu thuần túy; một lần nhìn trộm chỉ báo lệch một nến, +4.8. Phân loại đầy đủ, các mức độ đo được, và cách phát hiện từng rò rỉ trước khi nó khiến bạn mất tiền.

Thang Tốc Độ Backtest: 298x Trên CPU Laptop, PnL Giống Hệt Đến Giao Dịch Cuối

Thang Tốc Độ Backtest: 298x Trên CPU Laptop, PnL Giống Hệt Đến Giao Dịch Cuối

Năm cách triển khai của cùng một sweep tham số 80 combo, tất cả được xác minh cho ra PnL giống hệt nhau: pandas rolling.apply mất 69.9 giây, numpy 3.1, numba 2.0, numba song song 0.23 — mức tăng tốc đo được 298x trên Apple M2 Max mà không đổi bất kỳ phần cứng nào, và vẫn còn ~13x so với baseline vector hóa có năng lực. Mỗi bậc mang lại điều gì, tại sao GPU không phải là mảnh ghép còn thiếu, và nút thắt cổ chai thực sự trong tìm kiếm tham số quy mô lớn nằm ở đâu.

researcher: Kho lưu trữ nghiên cứu quant có thể tìm kiếm dành cho con người và AI agent

researcher: Kho lưu trữ nghiên cứu quant có thể tìm kiếm dành cho con người và AI agent

Cách chúng tôi xây dựng researcher.marketmaker.cc — một kho lưu trữ nghiên cứu quant hợp nhất, có thể tìm kiếm toàn văn (bài báo arXiv, repo GitHub, blog quant, script Pine của TradingView) mà con người duyệt và AI agent truy vấn qua MCP.

algo-investor-skills: Bộ kỹ năng Claude Code dựng đề xuất gọi vốn chống lừa đảo

algo-investor-skills: Bộ kỹ năng Claude Code dựng đề xuất gọi vốn chống lừa đảo

Phân tích chuyên sâu về algo-investor-skills — một bộ kỹ năng Claude Code đưa chiến lược algotrading từ các dữ kiện thô đã đo lường đến một đề xuất gọi vốn đã được kiểm toán, đặt sự trung thực lên hàng đầu. Sáu kỹ năng ghép nối được, một động cơ mô hình tài chính, một gói chứng minh kiểm chứng độc lập, và một cổng kiểm toán nhà đầu tư hoài nghi bắt buộc không bao giờ bịa ra một con số.