SEPA Masterclass Việt Nam — Phần VI: Công Cụ Và Hệ Thống Hóa
Nhận Diện Mẫu Hình Tự Động — VCP, Cup, Flat Base, Failed Breakout
Chương 24–28 đã trình bày các mẫu hình bằng ngôn ngữ định tính kèm ngưỡng tham khảo. Chương này chuyển hóa các quy tắc đó thành thuật toán có thể lập trình được, dựa trên nguyên tắc chung đã giới thiệu ở Chương 24, Mục 24.20: phân đoạn giá thành các "đợt sóng" (swing) dựa trên đỉnh và đáy cục bộ, sau đó áp dụng các bộ quy tắc kiểm tra trên chuỗi đợt sóng đó.
Thuật toán nền tảng cho toàn bộ hệ thống nhận diện mẫu hình: xác định các đỉnh và đáy cục bộ (local maxima/minima) trên chuỗi giá đã làm mượt nhẹ (để loại bỏ nhiễu nhỏ không có ý nghĩa cấu trúc).
// Logic phân đoạn đợt sóng (minh họa khái niệm, giả mã)
function detectSwings(priceSeries, minSwingPct):
swings = []
for each local peak/trough in priceSeries:
if abs(peak_price - previous_trough_price) / previous_trough_price >= minSwingPct:
swings.append(peak or trough)
return swings
Tham số minSwingPct — ngưỡng biên độ tối thiểu để một điểm được xem là "đợt sóng có ý nghĩa" thay vì nhiễu ngẫu nhiên — cần được chuẩn hóa theo biên độ giá của sàn niêm yết, nhất quán với nguyên tắc đã trình bày ở Chương 24, Mục 24.4.
| Bước | Kiểm tra | Tham chiếu |
|---|---|---|
| 1 | Trích xuất chuỗi đợt sóng giảm (từ đỉnh xuống đáy) liên tiếp sau một đợt tăng giá trước đó | 24.1 |
| 2 | Kiểm tra tính đơn điệu giảm dần của biên độ % giữa các đợt sóng giảm liên tiếp | 24.7 |
| 3 | Kiểm tra khối lượng bình quân của mỗi đợt sóng giảm giảm dần tương ứng | 24.5 |
| 4 | Xác nhận khối lượng khô cạn ở đợt sóng cuối (dưới ngưỡng phần trăm so với trung bình 50 phiên) | 24.6 |
| 5 | Nếu tất cả điều kiện thỏa mãn, gắn cờ điểm pivot = đỉnh của đợt sóng giảm cuối cùng | 24.10 |
Phức tạp hơn VCP vì cần nhận diện hình dạng cong tổng thể. Cách tiếp cận thực hành hai giai đoạn đã đề xuất ở Chương 25, Mục 25.12:
Đơn giản nhất trong ba loại, như đã lưu ý ở Chương 26, Mục 26.14: tính độ lệch chuẩn hoặc biên độ đỉnh-đáy chuẩn hóa của giá đóng cửa trong một cửa sổ thời gian trượt, so sánh với ngưỡng đã chuẩn hóa theo nhóm vốn hóa (Chương 26, Mục 26.7).
// Logic nhận diện Flat Base (giả mã)
function detectFlatBase(priceSeries, windowSize, capGroup):
window = priceSeries.last(windowSize)
range_pct = (max(window) - min(window)) / min(window)
threshold = getThresholdForCapGroup(capGroup) // Chương 26, Mục 26.7
isFlat = range_pct <= threshold and windowSize >= MIN_WEEKS
return isFlat
Dựa trên danh sách dấu hiệu cảnh báo tổng hợp ở Chương 28, Mục 28.7, xây dựng một điểm số rủi ro thất bại tổng hợp (composite failure risk score) thay vì một quy tắc nhị phân đơn giản:
| Đặc trưng đầu vào | Trọng số minh họa |
|---|---|
| Tỷ lệ khối lượng breakout / trung bình 50 phiên | Cao — dưới ngưỡng xác nhận thì tăng điểm rủi ro mạnh |
| Stage của chỉ số thị trường chung tại thời điểm breakout | Cao — Stage 3/4 tăng điểm rủi ro đáng kể |
| Vị trí trong chu kỳ tích lũy-breakout (Cốc Muộn/Late Flat Base) | Trung bình đến cao |
| Sức mạnh tương đối nội ngành | Trung bình |
| Biến động bất thường quanh ATC trên thanh khoản mỏng | Trung bình |
Đây chính là mô hình hồi quy logistic hoặc học máy đã đề xuất ở Chương 28, Mục 28.13 — huấn luyện trên dữ liệu lịch sử các breakout đã biết kết quả để hiệu chỉnh trọng số một cách khách quan thay vì gán thủ công.
Như đã đề xuất ở Chương 33, Mục 33.13, toàn bộ hành trình một chiến dịch tích lũy tổ chức (Giai đoạn 1–5) có thể hình thức hóa thành máy trạng thái hữu hạn, với các quy tắc chuyển đổi dựa trên kết quả của các thuật toán ở Mục 40.2–40.6 kết hợp với dữ liệu khối lượng (Chương 29) và Stage Analysis (Chương 21):
// Sơ đồ chuyển đổi trạng thái (giả mã khái niệm) STATE_1_OPPORTUNITY -> STATE_2_ACCUMULATION [khi có dấu hiệu absorption/dry-up ban đầu] STATE_2_ACCUMULATION -> STATE_3_FIRST_BASE [khi VCP/FlatBase được xác nhận] STATE_3_FIRST_BASE -> STATE_4_CONFIRMED [khi breakout thành công + Trend Template] STATE_4_CONFIRMED -> STATE_5_DISTRIBUTION [khi Cốc Muộn/Late Flat Base + Stage 3 xác nhận]
Đối với nhà phát triển: các thuật toán ở chương này nên được kiểm định (backtest) trên dữ liệu lịch sử trước khi triển khai thời gian thực — Chương 42 sẽ trình bày khung backtest phù hợp, bao gồm cả cách xử lý các ràng buộc đặc thù Việt Nam (biên độ giá, thanh toán T+2,5) đã cảnh báo ở Chương 3, Mục 3.13.