Trả lời ngắn: Đánh giá kết quả backtest là kiểm tra record nào đủ integrity, đúng rule version và có evidence để diễn giải cùng nhau. Bạn phải khóa cohort, exclusions và giới hạn kết luận trước metric; nếu không, bảng tổng đẹp có thể chỉ phản ánh dữ liệu bị trộn, thiếu hoặc chọn lại sau khi xem kết quả.

Đọc xong, bạn sẽ hiểu:

  • Vì sao evidence phải đi trước metric.
  • Cách lọc 12 records thành comparable cohort 10.
  • Cách viết quyết định READY_WITH_SCOPE mà không gọi VALID là “win”.

Lưu ý giáo dục: Batch, mã record và trạng thái trong bài đều hư cấu. Bài chỉ đánh giá bằng chứng setup-state, không có order, vốn, P&L hoặc lời hứa về hiệu quả tương lai.

1. Đánh giá không bắt đầu từ metric

Một cửa hàng không nên cộng doanh thu từ xấp hóa đơn lẫn phiếu nháp, bản photo trùng và chứng từ sai ngày. Việc đầu tiên là kiểm hóa đơn nào hợp lệ và thuộc cùng kỳ. Chỉ sau đó con số tổng mới có nghĩa.

Backtest cũng vậy. Result evidence là record hỗ trợ được cho một cách diễn giải. Một result không chỉ là con số trên report; nó còn có rule version, source, timestamp, evidence và trạng thái dữ liệu.

Result Evidence Gate là bộ kiểm tra đứng trước metric. Nó trả lời ba câu:

  1. Record có thật sự đầy đủ và nối đúng bằng chứng không?
  2. Những record nào đủ điều kiện để được đọc trong cùng phạm vi?
  3. Bằng chứng hiện có cho phép nói tới đâu?

Câu chắc chắn đúng là: “Comparable cohort của demo có 10 records.” Câu có điều kiện đúng là: “Mười records này có thể chuyển sang bài học metric”, vì chỉ đúng trong scope v1, evidence-complete đã ghi. Nó không có nghĩa mười mẫu là đủ để chứng minh độ bền.

Suy luận sai là: “Có nhiều VALID nên setup có edge.” VALID chỉ là terminal state của rule setup, không phải một trade thắng. Bài này không đổi state thành win/loss và không tính winrate, R:R, expectancy, profit factor hay P&L.

CFA Institute mô tả việc đọc backtest phải đi cùng quy trình, giả định, pitfalls và cách diễn giải; tài liệu cũng lưu ý look-ahead bias, survivorship bias và structural breaks. CFA Institute — Backtesting & Simulation

Claim boundary là giới hạn mạnh nhất mà evidence cho phép phát biểu. Gate tốt không cố làm kết luận nghe mạnh; nó làm scope trở nên rõ.

2. Five-lens Result Evidence Gate

Hình 1 — Records chỉ đi tới interpretation sau khi qua integrity, coverage, cohort, slice và claim boundary.

Lens 1 — Integrity

Kiểm tra ID trùng, child mồ côi, field bắt buộc trống, schema, snapshot và rule version. Duplicate, orphan hoặc blank required trả STOP_INTEGRITY; thiếu provenance trả STOP_PROVENANCE.

Lens 2 — Coverage

Đếm expected và observed. Có 12 candidate mà chỉ còn 10 rows thì không được gọi là “10 mẫu sạch” trước khi giải thích hai mẫu mất ở đâu. Unavailable vẫn là một record quan trọng về quá trình.

Lens 3 — Comparable cohort

Cohort là nhóm record được đánh giá trong cùng scope. Eligibility là rule xác định record được include hay exclude. Demo yêu cầu setup version v1 và evidence complete.

Exclusion registry là danh sách ID bị loại cùng lý do đã khóa. Record excluded vẫn ở ledger; nó không biến mất khỏi lịch sử.

Lens 4 — Slice

Slice là nhóm con định trước theo thời gian hoặc bối cảnh, ví dụ nửa đầu và nửa sau. Slice giúp phát hiện tổng chung đang che khác biệt. Nó chỉ mô tả; nhóm quá nhỏ không được nâng thành bằng chứng robustness.

Lens 5 — Claim boundary

Viết một câu được phép nói và một câu bị cấm. Gate có ba outcome:

  • STOP: integrity hoặc provenance chưa đạt.
  • REPAIR: scope/evidence cần sửa hoặc khóa lại.
  • READY_WITH_SCOPE: đủ để phân tích tiếp trong phạm vi đã ghi.

Reconciliation là phép kiểm tổng ở mọi tầng phải khớp. Nếu 10 comparable records nhưng state totals cộng thành 9, trả RECONCILIATION_FAIL.

3. Demo BT-EVAL-M15-v1: từ 12 xuống 10

Batch có expected/observed 12/12, IDs E01–E12, target protocol INV-DEMO-M15-v1.

ID terminal_state setup_version evidence evaluation
E01 VALID v1 COMPLETE INCLUDE
E02 INVALID v1 COMPLETE INCLUDE
E03 EXPIRED v1 COMPLETE INCLUDE
E04 VALID v1 COMPLETE INCLUDE
E05 INVALID v1 COMPLETE INCLUDE
E06 VALID v1 COMPLETE INCLUDE
E07 VALID v2 COMPLETE EXCLUDE_RULE_VERSION
E08 EXPIRED v1 COMPLETE INCLUDE
E09 INVALID v1 MISSING EXCLUDE_EVIDENCE_MISSING
E10 UNAVAILABLE v1 COMPLETE INCLUDE
E11 UNAVAILABLE v1 COMPLETE INCLUDE
E12 EXPIRED v1 COMPLETE INCLUDE

Cohort funnel

Hình 2 — Twelve observed records còn 11 target-v1 rồi 10 evidence-complete; exclusions không bị xóa.

  • 12 observed records.
  • 11 target-v1 records; E07 dùng v2 nên bị loại với RULE_VERSION_MISMATCH.
  • 10 evidence-complete v1 records; E09 thiếu evidence nên bị loại với EVIDENCE_MISSING.
  • Comparable cohort: E01–E06, E08, E10–E12.

E07 “đầy đủ” vẫn không comparable vì nó dùng cân khác: rule v2. E09 có state nhưng thiếu bằng chứng, nên không được tự suy ra evidence rồi include. Duplicate 0, orphan 0, blank required 0.

State counts trong cohort:

  • VALID 3: E01, E04, E06;
  • INVALID 2: E02, E05;
  • EXPIRED 3: E03, E08, E12;
  • UNAVAILABLE 2: E10, E11.

Reconciliation: 10 = 3 + 2 + 3 + 2.

Early và late slices

Early E01–E05 có 2/2/1/0. Late E06, E08, E10, E11, E12 có 1/0/2/2, theo thứ tự valid/invalid/expired/unavailable.

Hai mix khác nhau, nhưng mỗi slice chỉ có năm records. Nhãn đúng là DESCRIPTIVE_ONLY: ta ghi nhận khác biệt, chưa gọi nó là regime effect hay robustness failure.

Hình 3 — Decision ghi rõ scope được phép đọc, exclusions còn nhìn thấy và giới hạn của slice nhỏ.

Decision là READY_WITH_SCOPE. Câu được phép: “Có 10 records v1, evidence-complete để chuyển sang học metric; hai exclusions nằm ngoài cohort.” Câu bị cấm: “Setup đã tốt, có edge hoặc sẽ hiệu quả.”

4. Sai lầm, giới hạn và rủi ro

Gọi VALID là “win”

Setup được xác nhận chưa đồng nghĩa một order giả định sẽ thắng. Hai khái niệm dùng rule và dữ liệu khác nhau.

Xóa unavailable

E10/E11 cho biết process không tạo được observation khả dụng. Xóa chúng làm coverage trông tốt hơn và tạo một dạng survivorship bias: chỉ giữ những record còn tiện để đọc.

Chọn exclusion sau khi xem kết quả

Nếu người làm chỉ loại những record “xấu”, đó là POST_HOC_EXCLUSION. Eligibility và lý do phải khóa trước phép tổng hợp, hoặc batch phải dừng để review.

Trộn version

E07 dùng v2 không phải record lỗi; nó chỉ không thuộc cohort v1. Xóa E07 làm mất lịch sử, include nó làm sai comparison.

Chỉ nhìn tổng

Tổng 10 che việc unavailable tập trung ở late slice. Slice là tín hiệu cần hỏi tiếp, không phải câu trả lời tự động.

Thổi phồng slice nhỏ

Năm records mỗi nửa chỉ đủ minh họa procedure. Không có cơ sở để nói một market regime đã được đại diện đầy đủ.

Dùng thông tin tương lai

Look-ahead bias là dùng dữ liệu chưa thể biết tại thời điểm quyết định lịch sử. TradingView cảnh báo cơ chế này có thể làm backtest trông tốt phi thực tế. TradingView — Strategy produces unrealistically good results by peeking into the future

Bỏ qua khác biệt nguồn

TradingView lưu ý historical data có thể đổi theo vendor/reload và intrabar assumptions có thể khác realtime. Khác dữ liệu có thể dẫn tới khác output. TradingView — I believe that the strategy is giving the wrong results

Một batch lịch sử không chứa mọi tương lai. Structural break, selection bias, manual error và missing evidence vẫn tồn tại. CFTC cũng cảnh báo không nên dựa vào hypothetical/simulated results như chỉ báo cho actual performance. CFTC Letter No. 01-60

5. Checklist đưa ra decision

  1. Khóa snapshot, schema, batch ID và target rule version.
  2. Đếm expected/observed; giải thích mọi chênh lệch.
  3. Kiểm duplicate, orphan và blank required.
  4. Xác nhận evidence ref của từng sample.
  5. Viết eligibility trước khi xem tổng.
  6. Lọc target version, nhưng giữ excluded rows.
  7. Lọc evidence-complete, ghi ID và reason vào registry.
  8. Đóng comparable cohort bằng danh sách ID.
  9. Reconcile cohort count với state totals.
  10. Chọn slices đã định trước; ghi sample count từng slice.
  11. Viết allowed claim và forbidden claim.
  12. Gán STOP, REPAIR hoặc READY_WITH_SCOPE.

Dừng ngay với STOP_INTEGRITY, STOP_PROVENANCE, POST_HOC_EXCLUSION hoặc RECONCILIATION_FAIL. Nếu slice nhỏ, không cần vứt batch; gắn DESCRIPTIVE_ONLY.

Decision Card của demo:

Lens Result
Integrity PASS
Coverage 12/12 observed
Comparable 10/12
Exclusions E07 / E09
Slice status DESCRIPTIVE_ONLY
Decision READY_WITH_SCOPE

6. Bài tập 15 phút

Dùng Google Sheets hoặc LibreOffice Calc. Không cần chart, broker, order hay tiền.

  1. Tạo tab evaluation và dán 12 rows.
  2. Lọc setup_version = v1; phải còn 11.
  3. Lọc tiếp evidence = COMPLETE; phải còn 10.
  4. Copy E07/E09 sang vùng exclusion registry, không xóa rows gốc.
  5. Đếm state trong comparable cohort.
  6. Tạo early/late slice đúng IDs.
  7. Điền Decision Card.

Mẫu đối chiếu đã điền

Check Expected
observed / expected 12 / 12
target v1 11
comparable cohort 10
excluded IDs E07 / E09
comparable states 3 / 2 / 3 / 2
slice status DESCRIPTIVE_ONLY
decision READY_WITH_SCOPE

Thử đổi E07 sang INCLUDE. Reconciliation vẫn có thể cộng được 11, nhưng cohort sai rule version. Bài tập đạt khi bạn phát hiện lỗi scope, đưa E07 về exclusion và giữ allowed claim đúng một câu.

7. Tổng kết: evidence quyết định điều được phép nói

Năm ý chính

  • Đánh giá backtest bắt đầu bằng evidence gate, không bắt đầu bằng metric.
  • Cohort chỉ gồm records cùng eligibility và scope.
  • Exclusions phải có ID/reason và luôn còn nhìn thấy.
  • Slice nhỏ chỉ được mô tả, không chứng minh robustness.
  • READY_WITH_SCOPE cho phép phân tích tiếp, không xác nhận edge.

Câu hỏi tự kiểm tra

  • Vì sao E07 bị loại dù evidence complete?
  • Vì sao E10/E11 không được xóa?
  • Cohort 10 reconcile như thế nào?
  • Decision READY_WITH_SCOPE cho phép nói gì?

Gợi ý đáp án

Xem gợi ý câu 1

E07 dùng rule v2, không comparable với target cohort v1. → Xem mục 3.

Xem gợi ý câu 2

Unavailable là evidence về coverage/process; xóa chúng tạo selection hoặc survivorship bias. → Xem mục 4.

Xem gợi ý câu 3

VALID 3 + INVALID 2 + EXPIRED 3 + UNAVAILABLE 2 = 10. → Xem mục 3.

Xem gợi ý câu 4

Có 10 records v1, evidence-complete để học metric; không được tuyên bố setup có edge. → Xem mục 3 và 5.

Thuật ngữ cần nhớ

Thuật ngữ Giải thích ngắn
Result evidence Record hỗ trợ được cho một cách diễn giải.
Evaluation gate Kiểm tra evidence trước metric.
Cohort Nhóm record được đọc trong cùng scope.
Eligibility Rule quyết định include hoặc exclude.
Exclusion registry Danh sách excluded IDs và lý do.
Reconciliation Phép kiểm các tổng phải khớp.
Slice Nhóm con định trước để xem khác biệt.
Look-ahead bias Dùng thông tin tương lai trong quyết định lịch sử.
Survivorship bias Chỉ giữ record còn tồn tại hoặc tiện quan sát.
Claim boundary Giới hạn mạnh nhất evidence cho phép nói.

Nguồn tham khảo

Bài trước và bài tiếp theo

Quay lại Trading Journal cho Setup #14 để chuẩn hóa record và correction trail. Tiếp tục với Winrate trong Trading #16 để học metric đầu tiên trên một cohort đã khóa.

Nhắc lại: Bài chỉ phục vụ giáo dục. Historical/hypothetical evidence không bảo đảm actual hoặc future performance; mọi kết luận phải giữ đúng scope và giới hạn rủi ro.