21 tháng Tám, 2026 · dữ liệu

Vì sao backtest của bạn tính sai cổ tức

Vì sao backtest của bạn tính sai cổ tức

Backtest cổ phiếu thường xử lý sai cổ tức theo 1 trong 3 cách: coi chuỗi giá đã điều chỉnh như giá có thể khớp lệnh, ghi có tiền mặt sai ngày hoặc bỏ qua hoàn toàn cổ tức. Mỗi cách đều có thể tạo ra biểu đồ trông hợp lý nhưng giá trị tài khoản lại sai.

Điều cần phân biệt là giá giao dịch của cổ phiếu với tiền mặt hoặc số cổ phiếu phát sinh từ một hành động doanh nghiệp. Hãy theo dõi cả hai. Cổ tức làm thay đổi khoản mà cổ đông được nhận; nó không xóa mức giảm giá vào ngày giao dịch không hưởng quyền khỏi dữ liệu thị trường.

Lỗi thứ nhất: giao dịch theo giá đóng cửa đã điều chỉnh như thể đó là giá chào mua bán

Các nhà cung cấp dữ liệu lịch sử thường điều chỉnh giá theo cổ tức để biểu đồ thể hiện tổng lợi nhuận giả định tái đầu tư. Chuỗi giá đó hữu ích cho một số dạng phân tích. Nhưng đó không phải mức giá mà lệnh có thể được khớp.

Hãy xét một cổ phiếu đóng cửa ở mức $100 trước ngày giao dịch không hưởng cổ tức $1 mỗi cổ phiếu. Nếu giá mở cửa ở mức $99 và không có biến động nào khác, biểu đồ giá chưa điều chỉnh cho thấy mức giảm 1%. Chuỗi giá đã điều chỉnh theo cổ tức có thể loại bỏ khoảng gián đoạn này bằng cách quy đổi lại giá trong quá khứ. Backtest dùng chuỗi đã điều chỉnh để tạo tín hiệu và khớp lệnh đã trộn lẫn một quy ước tính lợi nhuận với mức giá có thể giao dịch.

Hậu quả tùy thuộc vào chiến lược. Một ngưỡng dựa trên đỉnh gần đây có thể kích hoạt ở mức giá chưa từng được giao dịch. Lệnh dừng lỗ có thể kích hoạt ở một mức giá đã điều chỉnh. Lợi nhuận tính từ chính chuỗi đã điều chỉnh có thể trông mượt mà, trong khi giá khớp lệnh lại thuộc về một hệ quy chiếu khác.

Trường giáPhù hợp đểGiả định không an toàn
Giá giao dịch hoặc giá chào mua bán thôTạo tín hiệu và mô phỏng khớp lệnh, với thời điểm phù hợpGiá đã bao gồm dòng tiền của cổ đông
Giá đóng cửa đã điều chỉnh theo cổ tứcMột số phép so sánh tổng lợi nhuậnĐây là mức giá có thể khớp lệnh
Các thanh OHLC đã điều chỉnhPhân tích khi đã hiểu rõ phương pháp điều chỉnhCác mức cao thấp trong phiên khớp với giá chào mua bán lịch sử

Lỗi thứ hai: ghi có cổ tức vào ngày giao dịch không hưởng quyền

Ngày giao dịch không hưởng quyền xác định ai được nhận khoản phân phối theo quy định thị trường áp dụng. Tiền thường được thanh toán sau đó, vào ngày thanh toán. Hai ngày này có vai trò khác nhau trong mô phỏng tài khoản.

Giả sử bạn nắm giữ 100 cổ phiếu qua ngày giao dịch không hưởng quyền đối với khoản cổ tức đã công bố là $0.50, được thanh toán sau 2 tuần. Chiến lược có thể ghi nhận khoản phải thu $50 vào ngày giao dịch không hưởng quyền. Nhưng khi đó, tài khoản vẫn chưa có $50 tiền mặt khả dụng. Nếu trình mô phỏng lập tức cộng khoản này vào sức mua, nó có thể cấp vốn cho một giao dịch mà tài khoản thực tế chưa thể thực hiện bằng khoản phân phối đó.

Với phép tính lợi nhuận mua và nắm giữ chỉ theo chiều mua, ghi nhận quyền nhận cổ tức vào ngày giao dịch không hưởng quyền có thể là đủ. Với chiến lược tái đầu tư khoản phân phối, theo dõi sức mua hoặc giao dịch quanh thời điểm thanh toán, hãy tách riêng khoản phải thu và khoản thanh toán. Dùng lịch thanh toán như thông tin đã có tại thời điểm đó; một chỉnh sửa dữ liệu về sau không nên viết lại những gì hệ thống có thể dự đoán.

Với một vị thế mua cơ bản, giá giảm gần bằng mức cổ tức vào ngày giao dịch không hưởng quyền không đồng nghĩa với việc giao dịch bị lỗ. Tài khoản có ít giá trị cổ phiếu hơn và một khoản cổ tức phải thu. Hai giá trị này có bù trừ chính xác cho nhau hay không còn tùy thuộc vào biến động thị trường, thuế, khoản khấu lưu và quy ước của mô phỏng.

Lỗi thứ ba: bỏ qua cổ tức vì giá đã giảm

Giữ nguyên giá chưa điều chỉnh nhưng bỏ qua dòng tiền sẽ gây ra sai lệch theo chiều ngược lại. Trong ví dụ giá giảm từ $100 xuống $99, người nắm giữ 100 cổ phiếu giờ có số cổ phiếu trị giá $9,900 thay vì $10,000, đồng thời có quyền nhận $100 cổ tức. Chỉ tính phần cổ phiếu sẽ báo lỗ $100, trong khi tổng giá trị đơn giản hóa không đổi.

Sai số này có thể đặc biệt lớn trong một mẫu dữ liệu dài hoặc danh mục gồm các cổ phiếu có mức phân phối cao. Nó cũng có thể ảnh hưởng đến tín hiệu: chiến lược coi mọi khoảng trống giá vào ngày giao dịch không hưởng quyền là đà giảm thông thường có thể bán đúng vào thời điểm bất lợi nhất. Cổ tức có thể giải thích khoảng trống giá, nhưng không quyết định biến động tiếp theo của thị trường.

Nên mô hình hóa cổ tức trong backtest cổ phiếu như thế nào?

Hãy bắt đầu với giá thô tại đúng thời điểm để ra quyết định và mô phỏng khớp lệnh, sau đó thể hiện hành động doanh nghiệp dưới dạng các sự kiện riêng trong tài khoản. Mức độ chi tiết cần thiết tùy thuộc vào câu hỏi mà backtest cần trả lời.

  1. Để đo lường tổng lợi nhuận: tính các khoản phân phối được hưởng vào giá trị danh mục, kèm theo giả định tái đầu tư được ghi rõ.
  2. Để mô phỏng chiến lược: tách biệt số cổ phiếu, khoản phải thu, khoản thanh toán bằng tiền mặt và sức mua khi thời điểm có ý nghĩa.
  3. Để tạo tín hiệu và mô phỏng khớp lệnh: dùng các trường giá phản ánh mức giá thị trường lịch sử thực tế cùng thời điểm dữ liệu đó khả dụng.

Ngoài ra, hãy kiểm tra riêng việc chia tách cổ phiếu, cổ tức đặc biệt và khoản khấu lưu. Cổ tức thường kỳ $1 và khoản phân phối đặc biệt $10 có thể dẫn đến các mức điều chỉnh giá khác nhau và khiến chiến lược phản ứng rất khác nhau. Một cờ “đã điều chỉnh” duy nhất từ nhà cung cấp hiếm khi cho bạn đủ thông tin.

Khi backtest đi qua ngày giao dịch không hưởng quyền, hãy hỏi tài khoản sở hữu gì trước ngày đó, được quyền nhận khoản nào, tiền về khi nào và chuỗi giá nào đã chi phối quyết định. Nếu tất cả những điều đó đều được ngầm định trong một cột giá đóng cửa đã điều chỉnh, đường vốn chủ sở hữu đang chứa những giả định mà bạn không thể nhìn thấy.

cổ tứccổ phiếuhành động doanh nghiệpbacktest
← Tất cả bài viết