← Quay lại danh sách bài viết
July 1, 2026
5 phút đọc

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
#algotrading
#backtest
#look-ahead bias
#data leakage
#overfitting
#validation

Bài viết thuộc series "Backtest Không Ảo Tưởng".

📄 Bài viết này đã phát triển thành một bài báo nghiên cứu. Ba rò rỉ look-ahead tinh vi được đưa vào một bài kiểm tra có kiểm soát so với ground truth đã biết (4,000 lịch sử mô phỏng). Đọc bài báo trực tuyến (phiên bản tương tác + PDF) tại lookahead.marketmaker.cc, mã nguồn và dữ liệu tại github.com/suenot/lookahead-inflation.

Vài tuần trước, benchmark tìm kiếm tham số của chúng tôi đã nói dối chúng tôi, và chúng tôi suýt nữa không nhận ra.

Engine trông có vẻ sạch sẽ. Logic đóng nến (closed-bar), một phân chia walk-forward rolling trung thực, một tìm kiếm Sobol/QMC trên không gian tham số, một cửa sổ test được giữ riêng. Tìm kiếm tìm được các cấu hình trông tốt trên in-sample. Vấn đề duy nhất: out-of-sample, gần như mọi thứ đều âm. Chúng tôi cho rằng chiến lược đơn giản là yếu.

Sau đó chúng tôi tìm ra một dòng. Tín hiệu được quyết định tại giá đóng của nến i, nhưng fill lại được ghi nhận trên chính nến i thay vì giá mở của nến tiếp theo. Một lỗi off-by-one trong chỉ số thực thi. Chúng tôi chuyển fill sang open[i+1] — mức giá duy nhất bạn thực sự có thể giao dịch được sau khi thấy giá đóng của nến i — và kết quả out-of-sample đảo dấu. Tìm kiếm Sobol chuyển từ lỗ sang lãi. Không có gì về chiến lược thay đổi cả. Chúng tôi chỉ đơn giản là đã ngừng giao dịch trong quá khứ.

Đó là look-ahead bias, và phần đáng lo ngại là sai lầm nhỏ đến mức nào và hậu quả lớn đến mức nào. Bài viết này là một cuộc tự kiểm toán có kiểm soát: chúng tôi xây dựng một trình mô phỏng nơi ground truth được biết trước theo thiết kế, tiêm từng rò rỉ tinh vi một lần, và đo chính xác mức độ mỗi rò rỉ thổi phồng backtest. Kết luận chính: với hoàn toàn không có lợi thế thực nào, một fill cùng nến tạo ra Sharpe hàng năm +14.8 từ nhiễu thuần túy.

Look-Ahead Bias Thực Sự Là Gì

Ba nơi look-ahead ẩn náu — thực thi, chuẩn hóa và chỉ báo — như các kênh nguy hiểm không đồng đều nuôi vào một quyết định giao dịch

Look-ahead bias là bất kỳ điểm nào trong pipeline của bạn nơi một quyết định hoặc một phép đo sử dụng thông tin mà, trong thời gian thực, sẽ không có sẵn tại thời điểm nó được sử dụng. Các ví dụ trong sách giáo khoa thường thô — sử dụng thu nhập cả năm của một cổ phiếu vào tháng Một, hay một bản báo cáo lại (restatement) chưa được công bố. Những cái đó dễ phát hiện. Những cái sống sót qua code review thì tinh vi hơn, và chúng ẩn náu ở ba nơi:

  1. Thực thi (Execution) — bạn quyết định trên nến i và fill trên chính nến i (hoặc dùng high/low của nến i cho stop trên chính nến đã tạo ra tín hiệu). Bạn giao dịch tại một mức giá tương quan với chính thứ đã kích hoạt bạn.
  2. Chuẩn hóa (Normalization) — bạn z-score, min-max, hoặc scale một feature bằng cách nào đó sử dụng thống kê được tính trên toàn bộ chuỗi, bao gồm cả tương lai. Bộ scaler "biết" tập test.
  3. Chỉ báo / feature — bạn làm mượt hoặc lọc bằng một cửa sổ được căn giữa (centered), hoặc bằng cách nào đó nhìn trộm về phía trước, khiến giá trị tại nến i đã chứa sẵn một phần của nến i+1.

Cả ba đều là các dạng của thứ mà tài liệu machine learning gọi là leakage (rò rỉ dữ liệu): sự nhiễm bẩn của việc huấn luyện/đánh giá bằng thông tin từ tương lai của mục tiêu (Kaufman et al., 2012; Kapoor & Narayanan, 2023). Trong tài chính, tài liệu kinh điển là cuốn Advances in Financial Machine Learning (2018) của López de Prado — purged cross-validation, embargoing, những nguy hiểm của việc backtesting. Kỷ luật point-in-time có nguồn gốc ít nhất từ Fama & French (1992), những người cố ý trễ dữ liệu kế toán sáu tháng để biến số được biết trước lợi nhuận mà nó giải thích.

Câu hỏi mà bài viết này trả lời mang tính định lượng: không phải "leakage có xấu không" (ai cũng đồng ý) mà là "bao nhiêu điểm Sharpe mỗi dạng rò rỉ mang lại cho bạn, và cái nào nguy hiểm?" Không có con số, bạn không thể lý luận về nó. Bạn không thể biết liệu một sự thổi phồng +0.3 là nhiễu hay một sự thổi phồng +14 là bằng chứng rành rành.

Một Trình Mô Phỏng Với Ground Truth Đã Biết

Một thị trường tổng hợp có kiểm soát với một núm vặn lợi thế đã biết: một thế giới null không có lợi thế thực bên cạnh một thế giới có lợi thế nơi equity thực sự tăng

Để đo sự thổi phồng, bạn cần biết sự thật. Dữ liệu thực không bao giờ nói cho bạn biết sự thật — nó chỉ cho bạn một lần hiện thực hóa (realization) và không có oracle nào cả. Vì vậy chúng tôi xây dựng một thị trường tổng hợp nơi chính chúng tôi đặt ra lợi thế.

Quá trình sinh dữ liệu (data-generating process) mang tính nhân quả nghiêm ngặt (causal) và không bùng nổ (non-explosive):

gt=ϕgt1+1ϕ2  ut,utN(0,1)g_t = \phi\, g_{t-1} + \sqrt{1-\phi^2}\; u_t, \qquad u_t \sim \mathcal{N}(0,1)

rt=agt1+σεt,εtN(0,1)r_t = a\, g_{t-1} + \sigma\, \varepsilon_t, \qquad \varepsilon_t \sim \mathcal{N}(0,1)

Ở đây gtg_t là một độ trôi (drift) tiềm ẩn dai dẳng ngoại sinh (một AR(1) với ϕ=0.95\phi = 0.95), và lợi nhuận của nến rtr_t có một độ trôi nhỏ agt1a\,g_{t-1}đã được biết trước một nến. Vì gg không phụ thuộc vào lợi nhuận quá khứ, không có phản hồi ngược (feedback) và không có gì bùng nổ. Tham số aa là núm vặn cho việc có bao nhiêu lợi thế thực tồn tại:

  • a=0a = 0null: hoàn toàn không có lợi thế. Bất kỳ Sharpe backtest dương nào cũng là hiện vật (artifact) 100%.
  • a>0a > 0 — một lợi thế thực, có thể giao dịch được: một quy tắc momentum trung thực thực sự kiếm được tiền.

Chiến lược cố ý được giữ đơn giản — một quy tắc dấu momentum. Feature là tổng lợi nhuận trailing-LL (L=24L = 24 nến), và vị thế là dấu của nó:

csum = np.concatenate(([0.0], np.cumsum(r)))      # csum[k] = sum r[0..k-1]
mom = np.full(n, np.nan)
tt = np.arange(L - 1, n)
mom[tt] = csum[tt + 1] - csum[tt - L + 1]

signal = np.sign(mom)                              # position for the next bar

Feature momentum này là phương tiện hoàn hảo để nghiên cứu rò rỉ cùng nến, bởi vì nó có một thuộc tính mà các chỉ báo thực đều chia sẻ: nó về mặt cơ học chứa nến hiện tại. mom[t] bao gồm cả r[t]. Vì vậy nếu bạn ghi nhận r[t] như giao dịch của mình, bạn đang phần nào đặt cược vào một đại lượng đã nằm sẵn trong chính tín hiệu của bạn. Đó là rò rỉ, được cụ thể hóa.

Thiết lập: σ=0.01\sigma = 0.01 (biến động 1% mỗi nến), phí một chiều 0.00045 (round-trip 0.09%, khớp với engine của chúng tôi), Sharpe được hàng năm hóa bằng 8760\sqrt{8760} (nến giờ), 4,000 lịch sử độc lập với 4,000 nến mỗi lịch sử. Mọi thứ đều được seed và tất định (deterministic).

Pipeline Trung Thực (Cái Duy Nhất Có Thể Giao Dịch)

Quyết định tại giá đóng của nến t, nhận lợi nhuận của nến tiếp theo, trả phí khi thay đổi vị thế:

def sharpe(sig, ret_booked):
    dpos = np.abs(np.diff(np.concatenate(([0.0], sig))))
    pnl  = sig * ret_booked - FEE_ONEWAY * dpos
    return pnl.mean() / pnl.std() * np.sqrt(8760)

honest = sharpe(signal[idx], r[idx + 1])           # earn r[t+1]: tradable

Ba Rò Rỉ, Mỗi Cái Là Một Thay Đổi Phẫu Thuật Đơn Lẻ

same_bar  = sharpe(signal[idx], r[idx])

z_full    = (mom - mom[valid].mean()) / mom[valid].std()
norm_full = sharpe(np.sign(z_full[idx]), r[idx + 1])

z_sm      = (mom[:-2] + mom[1:-1] + mom[2:]) / 3.0   # uses t-1, t, t+1
indicator = sharpe(np.sign(z_sm[idx]), r[idx + 1])

Mỗi rò rỉ chỉ cách pipeline trung thực đúng một dòng. Đó chính là vấn đề: đây không phải là những sai lầm kỳ lạ, mà là kiểu sai lầm vượt qua được review.

Kết Quả: Mức Độ Của Mỗi Rò Rỉ

Nhiễu thị trường thuần túy được dẫn qua một rò rỉ cùng nến thành một đường equity giả tăng vọt và một đồng hồ đo hiệu suất kẹt gần mức tối đa

Chạy trên 4,000 seed, đây là Sharpe hàng năm mà mỗi pipeline báo cáo, dưới null (không có lợi thế) và dưới một lợi thế thực (a=0.0011a = 0.0011, được tinh chỉnh sao cho Sharpe trung thực là một con số +1.57 đáng tin):

Pipeline Null (không có lợi thế) Lợi thế thực
Trung thực (sự thật) −0.74 +1.57
Fill cùng nến +14.79 +15.85
Nhìn trộm chỉ báo (1 nến) +4.76 +6.62
Chuẩn hóa toàn chuỗi −0.84 +1.46

Khoảng tin cậy 95% qua các seed là ±0.05 hoặc chặt hơn ở mọi ô; các kiểm định t bắt cặp (paired t-test) trên mức thổi phồng có ý nghĩa thống kê cực lớn ở nơi hiệu ứng là thực (t > 400, p ≈ 0).

Hãy đọc cột null trước, vì đây là thí nghiệm sạch nhất có thể: không có lợi thế nào, vì vậy pipeline trung thực đúng đắn mất tiền (−0.74, lực cản của việc trả phí để giao dịch nhiễu). Bây giờ hãy xem các rò rỉ làm gì với cùng một sự "không có gì" đó:

  • Fill cùng nến: −0.74 → +14.79. Một chiến lược với sức mạnh dự đoán bằng không, giao dịch nhiễu ngẫu nhiên, báo cáo một Sharpe hàng năm gần 15. Đây không phải là một sự thiên lệch tinh vi; đó là một sự bịa đặt. Cơ chế chính xác là cái chúng ta đã xây dựng vào: feature momentum chứa r[t], vì vậy ghi nhận r[t] là đặt cược vào chính tín hiệu của bạn.
  • Nhìn trộm chỉ báo: −0.74 → +4.76. Để bộ làm mượt nhìn thấy một nến vào tương lai tạo ra một Sharpe gần 5 từ nhiễu, bởi vì giá trị đã làm mượt tại t giờ đây tương quan với r[t+1] mà bạn sắp nhận được.
  • Chuẩn hóa toàn chuỗi: −0.74 → −0.84. Về cơ bản không có sự thổi phồng nào. Đây là phát hiện trung thực, không hiển nhiên (sẽ nói thêm bên dưới).

Cột lợi thế mang lại một thông điệp âm hiểm hơn. Khi một lợi thế thực thực sự tồn tại (trung thực +1.57), các rò rỉ không chỉ cộng thêm một hằng số — chúng đẩy Sharpe đo được lên +15.85 và +6.62, cao hơn nhiều so với +1.57 mà bạn thực sự có thể giao dịch. Vì vậy con số đo được không thể phân biệt được kỹ năng với rò rỉ. Một +6 bị rò rỉ và một +6 trung thực trông giống hệt nhau trên báo cáo. Bạn chỉ phát hiện ra cái nào là cái bạn có sau khi đã triển khai vốn.

Rò Rỉ Là Một Gradient, Không Phải Một Công Tắc

Rò rỉ cùng nến như một đáp ứng liều mượt mà: nắm bắt một phần lớn hơn của nến tín hiệu nâng đường equity một cách đơn điệu qua ngưỡng có thể triển khai

Một phản đối tự nhiên: "ghi nhận toàn bộ nến tín hiệu là một sai lầm cực đoan, phi thực tế." Vì vậy chúng tôi đã quét qua liều lượng — phân số ff của nến tín hiệu bị rò rỉ nắm bắt, từ 0 (trung thực) đến 1 (rò rỉ cùng nến đầy đủ):

Phân số nắm bắt ff Sharpe null Sharpe lợi thế
0.00 (trung thực) −0.74 +1.57
0.25 +3.90 +6.41
0.50 +9.86 +12.20
1.00 (rò rỉ đầy đủ) +14.79 +15.85

Chỉ nắm bắt một phần tư của nến tín hiệu đã đưa một chiến lược không có lợi thế từ −0.74 lên +3.90. Bạn không cần lỗi off-by-one đầy đủ để bị đánh lừa; một fill hơi thuận lợi quá mức — một chút slippage lạc quan trên nến tín hiệu, một stop trong nến (intrabar) được kiểm tra dựa trên chính nến đã kích hoạt nó — là đủ để vượt qua hầu hết các ngưỡng "có thể triển khai". Sự thổi phồng mượt mà và đơn điệu theo mức độ bạn cho phép mình giao dịch vào hiện tại.

Tần Suất Điều Này Đưa Một Chiến Lược Thua Lỗ Vào Sản Xuất?

Con số nên khiến người thực hành lo lắng là tỷ lệ triển khai sai (false-deployment rate): rò rỉ khiến một cấu hình thực sự thua lỗ vượt qua ngưỡng mà bạn dùng để bật đèn xanh cho nó thường xuyên như thế nào. Sử dụng "Sharpe hàng năm ≥ 1.0" làm tiêu chí triển khai, dưới null:

  • Fill cùng nến: 68% các chiến lược không lợi thế trông có vẻ có thể triển khai thực sự đang thua lỗ. Hai trong ba cấu hình nhiễu thuần túy sẽ vượt qua cổng Sharpe-≥-1 và mất tiền khi giao dịch thực. (Tỷ lệ này được định nghĩa rõ ràng ở đây vì rò rỉ hoàn toàn nằm ở thực thi — đối chứng trung thực là cùng một tín hiệu với một fill trung thực.)
  • Nhìn trộm chỉ báo: nó đẩy về cơ bản mọi cấu hình không lợi thế qua ngưỡng triển khai luôn (99.9% vượt qua Sharpe ≥ 1) — nó sẽ vẫy tay đưa nhiễu thẳng vào sản xuất.
  • Chuẩn hóa toàn chuỗi: 12% vượt qua ngưỡng — về cơ bản là tỷ lệ nền của nhiễu, không có phần thưởng rò rỉ nào.

Phân Loại, Và Cách Phát Hiện Từng Loại

Ba rò rỉ không nguy hiểm như nhau, và những khác biệt này rất đáng để học hỏi.

1. Rò Rỉ Thực Thi (Loại Đắt Giá Nhất)

Lỗi off-by-one của fill cùng nến: một mũi tên thực thi cong ngược vào nến đã tạo ra tín hiệu, so với fill trung thực tại giá mở của nến tiếp theo

Triệu chứng: giá fill tương quan với tín hiệu vì cả hai đến từ cùng một nến. Mức độ: khổng lồ (+15 từ nhiễu ở liều đầy đủ, +3.9 ở liều một phần tư). Tại sao nó tệ nhất: tín hiệu của bạn, gần như theo định nghĩa, được xây dựng từ hành động giá gần đây, vì vậy lợi nhuận của nến tín hiệu chính xác là thứ mà feature của bạn tương quan mạnh nhất. Ghi nhận nó gần giống như xem trước đáp án.

Phát hiện — bài kiểm tra dịch một nến (one-bar shift test). Đây là chẩn đoán giá trị nhất trong bài viết này. Lấy backtest của bạn và dịch mọi fill muộn hơn một nến (quyết định tại i, fill tại open[i+1]). Nếu kết quả gần như không đổi, thực thi của bạn là trung thực. Nếu kết quả sụp đổ hoặc đảo dấu, bạn đã giao dịch trong quá khứ. Đây chính xác là điều đã xảy ra với tìm kiếm Sobol của chúng tôi: dịch các fill, và một OOS "có lãi" hóa ra là một khoản lỗ — hay đúng hơn, mối quan hệ thực đã lộ ra một khi rò rỉ được loại bỏ.

entry_price = open_[i + 1]      # NOT close[i], NOT open[i]

2. Rò Rỉ Chỉ Báo / Feature (Loại Âm Thầm)

Triệu chứng: một chỉ báo tại nến i phụ thuộc vào dữ liệu từ i+1 trở về sau — một moving average được căn giữa, một bộ lọc không có độ trễ nhân quả, một nhãn đỉnh/đáy cần các nến tương lai để xác nhận, một phép biến đổi kiểu Heikin-Ashi được cho ăn các nến tương lai. Mức độ: lớn (+4.8 từ nhiễu). Tại sao nó ẩn náu: rò rỉ bị chôn vùi bên trong một lời gọi thư viện. scipy.signal.filtfilt là zero-phase — và zero-phase nghĩa là phi nhân quả. Một feature "nến này là một cực đại cục bộ" là không thể biết được cho đến khi nến tiếp theo được in ra.

Phát hiện: với mỗi chỉ báo, hãy hỏi chỉ số cao nhất mà nó đọc là gì? Nếu việc tính giá trị tại t có chạm vào t+1, nó là phi nhân quả. Tính các chỉ báo trên một cửa sổ nhân quả mở rộng/trượt và xác minh rằng giá trị tại nến t giống hệt nhau bất kể các nến sau t có tồn tại trong mảng hay không. (Các triển khai HMA/ADX của chúng tôi vượt qua bài kiểm tra này: mọi đầu ra tại t chỉ đọc các đầu vào tại ≤ t.)

3. Rò Rỉ Chuẩn Hóa (Loại Đặc Thù Theo Kênh)

Triệu chứng: một scaler (StandardScaler, min-max, một z-score toàn cục) được fit trên toàn bộ dataset, bao gồm cả tập test. Các cảnh báo ML kinh điển đã nói rõ điều này — mục §7.10.2 ("cách sai và cách đúng để làm cross-validation") trong Elements of Statistical Learning của Hastie, Tibshirani & Friedman, và hướng dẫn common-pitfalls của chính scikit-learn: "giá trị trung bình nên là trung bình của tập con train, không phải trung bình của toàn bộ dữ liệu."

Mức độ trong bài kiểm tra của chúng tôi:bằng không (−0.74 → −0.84). Đây là kết quả bất ngờ, trung thực, và đáng để hiểu hơn là ghi nhớ.

Tại sao nó không thổi phồng? Bởi vì chiến lược của chúng tôi chỉ sử dụng feature thông qua dấu của nó (một ngưỡng bằng không). Việc scale theo độ lệch chuẩn không bao giờ thay đổi dấu, và việc căn giữa theo trung bình toàn cục chỉ đẩy điểm cắt không (zero crossing) đi một chút. Vì vậy việc chuẩn hóa toàn chuỗi của một quy tắc dấu thuần túy gần như vô hại.

Đừng khái quát hóa quá mức điều này. Rò rỉ chuẩn hóa là đặc thù theo kênh (channel-specific). Ngay khi chiến lược của bạn sử dụng độ lớn của feature — kích thước vị thế tỷ lệ với một z-score, một ngưỡng vào lệnh khác không được chọn bằng cách nhìn vào phân phối đã scale, một mạng nơ-ron tiêu thụ đầu vào đã chuẩn hóa — bộ scaler biết trước tương lai bắt đầu quan trọng, và nó quan trọng hơn khi thống kê toàn cục càng khác biệt so với thống kê nhân quả. Kết quả của chúng tôi không phải là "rò rỉ chuẩn hóa là an toàn." Mà là "mức độ rò rỉ phụ thuộc vào kênh mà đại lượng bị rò rỉ đi vào quyết định, và bạn nên đo nó thay vì giả định." Một quy tắc dấu là trường hợp duy nhất mà rò rỉ cụ thể này rẻ.

Mối Liên Hệ

Look-ahead bias là mắt xích đầu tiên trong một chuỗi mà series này đã và đang ghi lại:

  • Nó làm hỏng đầu vào của validation. Một backtest bị rò rỉ sẽ vượt qua trơn tru một phân chia walk-forward và trông giống như một plateau rộng thay vì một đỉnh overfit — rò rỉ nhất quán qua các fold, vì vậy cross-validation không thể bắt được nó. Leakage là chế độ thất bại ở thượng nguồn (upstream) của overfitting, và không có lượng validation trung thực nào ở hạ nguồn có thể cứu bạn.
  • Nó tương tác với tìm kiếm tham số: một tìm kiếm qua hàng nghìn trial trên dữ liệu bị rò rỉ sẽ tìm ra cấu hình khai thác rò rỉ mạnh mẽ nhất. "Người chiến thắng" chính là kẻ vi phạm tồi tệ nhất.
  • Đó là lý do tại sao backtest-live parity phân kỳ. Một rò rỉ là lời giải thích sạch sẽ nhất cho một khoảng cách 30–50% giữa backtest và bot, bởi vì giao dịch thực (live trading), về mặt cơ học, là nơi duy nhất bạn không thể nhìn trộm.

Kỷ luật bắt được tất cả điều này chính là kỷ luật mà tài liệu học thuật đã thúc giục trong nhiều năm: coi một backtest như một thí nghiệm thống kê với một ranh giới thông tin nghiêm ngặt. Bailey, Borwein, López de Prado & Zhu đã chỉ ra overfitting dễ dàng tạo ra hiệu suất giả như thế nào (2014); giao thức backtesting của Arnott, Harvey & Markowitz (2019) hệ thống hóa việc vệ sinh (hygiene) này. Look-ahead bias là ranh giới cơ bản nhất trong tất cả — ranh giới trong thời gian — và rẻ nhất để vi phạm một cách vô tình.

Điểm Chính

Chẩn đoán dịch một nến: đẩy mọi fill muộn hơn một nến sẽ làm xẹp một đường cong tăng vọt giả xuống lại sự thật trung thực

  1. Look-ahead bias về mặt định lượng là khổng lồ và về mặt định tính là vô hình. Một lỗi thực thi lệch một nến duy nhất đã biến một Sharpe −0.74 (nhiễu thuần túy, thua lỗ đúng đắn) thành +14.79. Sai lầm chỉ là một dòng; hậu quả là một track record bịa đặt.
  2. Đó là một gradient. Chỉ nắm bắt 25% của nến tín hiệu cũng mang lại +3.90 từ hư không. Bạn không cần một lỗi trắng trợn — một chút quá lạc quan trong các fill của bạn là đủ.
  3. Con số đo được không thể phân biệt kỹ năng với rò rỉ. Khi một lợi thế thực tồn tại, các rò rỉ thổi phồng báo cáo vượt xa sự thật có thể giao dịch. Sự phòng thủ duy nhất là quy trình, không phải chỉ số.
  4. Bài kiểm tra dịch một nến là chẩn đoán nhanh nhất của bạn. Dịch mọi fill muộn hơn một nến. Nếu hiệu suất sụp đổ, bạn đã giao dịch trong quá khứ.
  5. Mức độ leakage là đặc thù theo kênh. Nhìn trộm thực thi và chỉ báo là tàn khốc; chuẩn hóa toàn chuỗi của một quy tắc dấu gần như miễn phí. Hãy đo rò rỉ qua kênh mà nó thực sự đi vào — đừng giả định.

Nghiên cứu có kiểm soát đầy đủ — cả ba rò rỉ, việc quét liều lượng, phân tích triển khai sai, các phương pháp chính thức, và mọi con số có thể tái tạo từ một script tất định duy nhất — nằm trong bài báo đồng hành tại lookahead.marketmaker.cc, với mã nguồn và dữ liệu tại github.com/suenot/lookahead-inflation.

Chiến lược trong thí nghiệm null của chúng tôi hoàn toàn không có lợi thế nào. Nó vẫn cho thấy một Sharpe là 15. Nếu backtest của bạn trông quá tốt, điều đầu tiên nên nghi ngờ không phải là thiên tài của bạn — mà là chiếc đồng hồ của bạn.

Tuyên bố miễn trừ trách nhiệm: Thông tin được cung cấp trong bài viết này chỉ nhằm mục đích giáo dục và thông tin, không cấu thành lời khuyên về tài chính, đầu tư hoặc giao dịch. Giao dịch tiền mã hóa tiềm ẩn rủi ro thua lỗ đáng kể.

Tác Giả

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.

Newsletter

Đi Trước Thị Trường

Đăng ký nhận bản tin của chúng tôi để có những thông tin chuyên sâu độc quyền về AI trading, phân tích thị trường và các cập nhật nền tảng.

Chúng tôi tôn trọng quyền riêng tư của bạn. Hủy đăng ký bất kỳ lúc nào.