Skip to content
Tất cả hướng dẫn quyền chọn
Phương pháp định lượng và lấy mẫu sự kiện10 phút đọc

Bộ lọc CUSUM dùng để lấy mẫu sự kiện tài chính như thế nào?

Tìm hiểu cách bộ lọc CUSUM chọn thời điểm sự kiện từ log return tích lũy, cùng quy tắc ngưỡng, đặt lại, chuẩn hóa biến động nhân quả và kiểm định.

Trong hướng dẫn nàyBộ lọc CUSUM chọn thời điểm nào?

Tóm tắt ngắn

Bộ lọc CUSUM đối xứng theo dõi các tổng log return dương và âm tích lũy từ mốc 0, thay vì chỉ tìm từng biến động giá lớn. Khi tổng vượt ngưỡng đã chọn, bộ lọc ghi nhận thời điểm sự kiện; nó không dự báo hướng đi tiếp theo và cũng không tự tạo nhãn giao dịch.

Bộ lọc CUSUM chọn thời điểm nào?

Dữ liệu có khoảng thời gian cố định thường có một quan sát mỗi ngày hoặc mỗi giờ. Cách lấy mẫu này có thể tạo nhiều dòng gần như trùng lặp trong giai đoạn yên ắng nhưng lại nén những chuyển động dồn dập vào số dòng ít hơn. Lấy mẫu theo sự kiện chọn thời điểm khi một quy tắc kích hoạt đã xác định xảy ra, nhằm giảm một phần sự lặp lại đó.

CUSUM là bộ kích hoạt tích lũy chuyển động theo hướng. Nhiều lợi suất nhỏ cùng chiều có thể cộng dồn đến ngưỡng; giá dao động quanh ngưỡng không tự động tạo sự kiện mới sau mỗi lần lên xuống. Thời điểm sự kiện là dấu thời gian khi đường đi của lợi suất trước đó vượt qua ngưỡng theo quy tắc đã chọn. Đây không phải dự báo về hướng giá sau thời điểm đó.

Chương 2 của *Advances in Financial Machine Learning* của López de Prado bàn về cấu trúc dữ liệu và cách lấy mẫu tài chính; tài liệu lọc của mlfinpy mô tả cách dùng bộ kích hoạt sự kiện trước bước gán nhãn. Bộ lọc trả lời câu hỏi “nên xem xét những thời điểm nào?”; câu hỏi “kết quả sau những thời điểm đó là gì?” cần một định nghĩa mục tiêu riêng.

Cộng dồn log return theo hai hướng

Khi giá đóng cửa \(P_t\) dương, log return tại thời điểm \(t\) là:

\(r_t = \ln(P_t/P_{t-1})\)

Theo dõi riêng hai tổng độ lệch tích lũy dương và âm:

\(S_t^+ = \max(0, S_{t-1}^+ + r_t)\)

\(S_t^- = \min(0, S_{t-1}^- + r_t)\)

\(S^+\) giữ phần tích lũy theo hướng tăng; \(S^-\) giữ phần theo hướng giảm. Ví dụ với ngưỡng \(h>0\), quy tắc được dùng trong bài này kích hoạt khi \(S_t^+>h\) hoặc \(S_t^-<-h\). Khi kích hoạt hướng tăng, chỉ đặt \(S^+=0\); khi kích hoạt hướng giảm, chỉ đặt \(S^-=0\). Như vậy hai phía được theo dõi riêng mà không âm thầm xóa giá trị của bộ tích lũy phía đối diện.

Tổng tích lũy không chỉ là độ lớn của lợi suất ngay tại thời điểm đó. Một số lợi suất dương nhỏ liên tiếp có thể làm \(S^+\) tăng; các lợi suất âm xen giữa có thể kéo tổng dương xuống và đẩy \(S^-\) xuống. Vì vậy, không nên nhầm sự kiện CUSUM với việc so một mức biến động phần trăm trong ngày với ngưỡng. Đơn vị của ngưỡng phải phù hợp với lợi suất: nếu dùng log return thì (h) cũng ở đơn vị log return.

Theo dõi chuỗi giá đóng cửa giả định

Các mức giá bên dưới chỉ là ví dụ giả định để minh họa quy tắc; chúng không phải dữ liệu thị trường, lệnh hay giao dịch đã khớp. Chọn ngưỡng cố định \(h=0{,}005\), tương đương khoảng 0,5% trên thang log return. Ban đầu \(S^+=S^-=0\).

Giá đóng cửaTổng tích lũy được tínhKết quả
100,00 → 100,20\(S^+ = \ln(100{,}20/100{,}00) \approx 0{,}001998\)Chưa vượt ngưỡng tăng
100,20 → 100,40\(S^+ = \ln(100{,}40/100{,}00) \approx 0{,}003992\)Chưa vượt ngưỡng tăng
100,40 → 100,60\(S^+ = \ln(100{,}60/100{,}00) \approx 0{,}005982\)\(S^+>h\); sự kiện tăng tại giá đóng cửa 100,60, sau đó chỉ đặt \(S^+=0\)
100,60 → 100,40 → 100,20 → 100,00\(S^- = \ln(100{,}00/100{,}60) \approx -0{,}005982\)\(S^-<-h\); sự kiện giảm tại giá đóng cửa 100,00, sau đó chỉ đặt \(S^-=0\)

Dù mức tăng giá đơn giản của nhịp đầu là 0,6%, quy tắc kích hoạt ở đây tính bằng log return. Nhịp thứ hai đi cùng khoảng cách giá theo hướng giảm; log return của nó cũng xấp xỉ −0,5982%. Việc kiểm tra các giá đóng cửa trung gian cho thấy rõ thời điểm sự kiện được ghi nhận ở lần vượt ngưỡng đầu tiên hay ở một dòng muộn hơn. Các số đã làm tròn chỉ để trình bày; khi triển khai hãy so sánh giá trị chưa làm tròn.

Xác định rõ phép so sánh ngưỡng và quy tắc đặt lại

Cách xử lý trường hợp đúng bằng ngưỡng là một quy ước triển khai. Phần giải thích trên trang lọc của mlfinpy nói rằng lấy mẫu khi \(S_t\geq\text{threshold}\); ghi chú tham số trên cùng trang mô tả biến động “lớn hơn” ngưỡng. Trong khi đó, mã triển khai kiểm tra phía giảm bằng S^- < -threshold, phía tăng bằng S^+ > threshold, rồi đặt lại phía vừa kích hoạt. Do đó, một phiên bản kích hoạt khi bằng ngưỡng và một phiên bản chỉ kích hoạt khi vượt hẳn có thể tạo ra dấu thời gian khác nhau.

Bài này chỉ kích hoạt khi vượt nghiêm ngặt: \(>\) và \(<\). Nếu dùng thư viện hoặc mã riêng với điều kiện biên khác, hãy ghi rõ điều đó; đồng thời lưu toán tử so sánh, định nghĩa log return, cách căn chỉnh chuỗi ngưỡng và bộ tích lũy nào được đặt lại. Thay đổi ngưỡng hoặc quy tắc bằng sau khi xem tín hiệu cũng làm thay đổi định nghĩa mẫu.

Xây dựng ngưỡng động từ dữ liệu quá khứ đã biết

Ngưỡng cố định (h) yêu cầu cùng một lượng log return tích lũy để tạo sự kiện ở mọi giai đoạn. Khi biến động thay đổi rõ rệt theo thời gian, một chuỗi ngưỡng có thể dùng giá trị thấp hơn lúc yên ắng và cao hơn khi biến động mạnh. Ví dụ \(h_t=k\hat\sigma_{t-1}\), trong đó \(\hat\sigma_{t-1}\) là ước lượng biến động chỉ dựa trên lợi suất đã biết trước thời điểm \(t\). (k) là hệ số tỷ lệ; không có một giá trị đúng tự động cho mọi thị trường.

Khi đưa chuỗi ngưỡng vào phép tính sự kiện, hãy căn chỉnh dấu thời gian cẩn thận. Nếu chỉ biết giá đóng cửa sau khi phiên kết thúc, việc cập nhật ngược ước lượng ngưỡng bằng lợi suất đóng cửa đó rồi coi nó đã có sẵn cùng lúc có thể mô tả sai thời điểm ra quyết định trực tiếp. Thước đo biến động quá khứ có độ trễ là điểm khởi đầu nhân quả; tuy vậy, cần ghi lại độ dài cửa sổ, cách ước lượng, cách xử lý quan sát thiếu và lịch giao dịch.

Ngưỡng thấp có thể tạo nhiều sự kiện thường xuyên và nhiễu hơn, đồng thời làm tăng tầm quan trọng của phí, chênh lệch mua-bán, funding hoặc trượt giá. Ngưỡng cao tạo ít sự kiện hơn nhưng có thể bỏ qua những chuyển động nhỏ hoặc ngắn. Đừng chọn chỉ vì biểu đồ trông mượt hơn; hãy đánh giá bằng tiêu chí đã xác định trong giai đoạn huấn luyện và các giai đoạn kiểm định theo thời gian được giữ riêng.

Không nhầm thời gian sự kiện với nến thời gian cố định

Nến thời gian cố định lấy mẫu theo các khoảng đồng hồ đều nhau; sự kiện CUSUM xảy ra cách quãng không đều vì phụ thuộc điều kiện kích hoạt. Giữa hai dòng dữ liệu theo sự kiện có thể chỉ một phút hoặc vài giờ. Cách này có thể tập trung quan sát quanh một số chuyển động, nhưng không tạo ra một quá trình có khoảng thời gian kinh tế bằng nhau và cũng không làm các quan sát trở nên độc lập.

Khi chuyển dấu thời gian sự kiện sang bước tạo đặc trưng hoặc nhãn, hãy nêu rõ giá hay nến nào được chọn. Giữa hai lần kích hoạt có thể có khoảng thời gian bị bỏ qua, khoảng trống qua đêm, giờ không giao dịch hoặc bản ghi lặp. Nếu phát hiện sự kiện ở giá đóng cửa, giả định khớp lệnh hoàn hảo ngay tại mức đóng cửa đó có thể dẫn tới nhìn trước: tín hiệu chỉ được biết khi giá đóng cửa đã xác định, còn thời gian và giá khớp khả thi phụ thuộc vào tần suất dữ liệu đã chọn.

Nếu muốn gán nhãn kết quả giá sau thời điểm bắt đầu được CUSUM chọn, hãy định nghĩa riêng quy tắc mục tiêu. Hướng dẫn phương pháp ba hàng rào giải thích cách hàng rào mục tiêu, dừng lỗ và thời hạn tối đa sau sự kiện tạo nhãn theo thứ tự chạm đầu tiên. CUSUM có thể chọn thời điểm bắt đầu; ba hàng rào xác định mục tiêu sau thời điểm đó. Bản thân bộ lọc không gán nhãn (y).

Phân biệt ba cách dùng CUSUM và kiểm định kết quả

CUSUM để lấy mẫu sự kiện tài chính dùng sự tích lũy có hướng của log return giá làm bộ kích hoạt. CUSUM kiểm định độ ổn định hồi quy trong kinh tế lượng theo dõi đường đi của phần dư hồi quy đệ quy theo thời gian. Đây không phải cùng thao tác với việc biến giá thô thành thời điểm sự kiện. Bài “Continuous Inspection Schemes” năm 1954 của E. S. Page bàn về giám sát liên tục và sơ đồ tổng tích lũy trong kiểm soát chất lượng; cùng tên gọi không có nghĩa thống kê kiểm định hay ranh giới quyết định đều giống nhau. Xem hướng dẫn kiểm định CUSUM cho độ ổn định hồi quy để hiểu phép kiểm định thứ hai.

Bộ lọc sự kiện không phải dự báo hướng giá, kiểm định ổn định cấu trúc, kiểm định tính dừng hay thước đo thanh khoản. Huấn luyện mô hình trên các sự kiện đã chọn sau này không làm bộ lọc sinh lợi. Các sự kiện có thể tập trung thành cụm hoặc khoảng nhãn có thể chồng lấn; khi chia dữ liệu huấn luyện và kiểm định, hãy xét thời lượng nhãn thực tế và dùng purging hay embargo nếu thiết kế yêu cầu. Đánh giá trên các giai đoạn ngoài mẫu có giữ thứ tự thời gian, với giả định thực tế về phí giao dịch, chênh lệch mua-bán, tác động thị trường, funding, vòng quay và khả năng khớp lệnh.

Phép biến đổi log yêu cầu mọi \(P_t>0\). Với chuỗi có giá bằng hoặc thấp hơn 0, \(\ln(P_t/P_{t-1})\) không xác định; hãy chọn phép biến đổi khác và định nghĩa lại thang đo. Giá đóng cửa điều chỉnh, chuyển tháng hợp đồng tương lai, quy đổi tiền tệ và điều chỉnh dữ liệu cũng có thể làm thay đổi lịch sử giá. Để tái lập kết quả, hãy lưu chuỗi giá, thời điểm quan sát, nguồn ngưỡng, toán tử so sánh, quy tắc đặt lại, múi giờ và liệu từng sự kiện có thể được biết tại thời điểm ra quyết định hay không.

Câu hỏi thường gặp

Q1Tôi có thể giả định đã giao dịch tại giá đóng cửa khi CUSUM phát hiện sự kiện không?

Sự kiện dựa trên giá đóng cửa chỉ được biết sau khi giá đóng cửa xác định. Trong nhiều cấu trúc dữ liệu, giả định khớp lệnh chính xác tại cùng mức giá đó có thể không khả thi; hãy mô hình hóa rõ thời điểm quyết định, thời điểm khớp, giá kế tiếp có thể giao dịch và chi phí.

Q2Ngưỡng thấp hơn có luôn tạo ra cách lấy mẫu sự kiện tốt hơn không?

Không. Ngưỡng thấp có thể tạo sự kiện thường xuyên và nhiễu hơn, đồng thời làm tăng chi phí giao dịch và nhãn chồng lấn. Hãy xem xét ngưỡng theo quy tắc đã định trước và trong các giai đoạn ngoài mẫu theo thứ tự thời gian.

Q3Chọn thời điểm sự kiện có chứng minh thị trường dừng hay có thanh khoản không?

Không. Bộ lọc chỉ phát hiện một chuyển động tích lũy nhất định trong chuỗi giá đã chọn. Nó không bảo đảm tính dừng, thanh khoản, hướng giá tương lai hay lợi nhuận.

Nguồn và tài liệu đọc thêm

Báo lỗi

Chúng tôi sẽ soạn email kèm liên kết bài viết này. Mark chỉ nhận được báo cáo sau khi bạn gửi email

Kiểm tra nhanh

Đọc xong hướng dẫn? Hãy kiểm tra với 3 câu hỏi

Câu hỏi 1 / 3

Câu hỏi 01

Theo quy tắc trong hướng dẫn này, bộ lọc CUSUM tạo sự kiện tăng khi nào?

Chọn một đáp án để xem giải thích

Bảng thuật ngữ quyền chọn