Moving Average hoạt động như bộ lọc xu hướng chứ không phải công cụ dự đoán ra sao
Moving Average
Phần 1. Bối cảnh, khái niệm và cơ chế
Moving average làm mượt giá để giảm nhiễu và tạo ước lượng trend trễ; nó không biết giá tương lai mà chỉ đánh đổi độ mượt với độ trễ. Với moving averages, điều nên làm rõ ngay từ đầu là công cụ đang mô tả hành vi nào của thị trường và horizon nào đủ dài để tín hiệu có cơ hội phát huy. Một nhận định kỹ thuật chỉ trở nên hữu ích khi có thể viết thành điều kiện quan sát trước thời điểm giao dịch, thay vì giải thích ngược sau khi giá đã chạy.

Cơ chế vận hành có thể tóm lại như sau: Cửa sổ dài giảm whipsaw nhưng phản ứng chậm; cửa sổ ngắn phản ứng nhanh nhưng nhạy noise. Crossover là cách so sánh hai mức làm mượt. SMA_N = tổng N giá/N; WMA và EMA thay đổi trọng số của quan sát gần hơn. Khi chuyển sang định lượng, nên cố định cách nhận diện swing, cửa sổ, ngưỡng xác nhận và quy tắc xử lý dữ liệu trước khi xem kết quả. Chỉ cần đổi một trong các lựa chọn này sau khi nhìn chart, mức độ tự do của nhà nghiên cứu tăng mạnh và nguy cơ data snooping cũng tăng theo.
Close hoặc typical price phải được chọn nhất quán; corporate action cần điều chỉnh. Ngoài giá điều chỉnh, nên lưu cả raw price, corporate actions, volume, trading halt và trạng thái niêm yết. Khi cần nghiên cứu intraday, session boundary, auction và timezone phải được chuẩn hóa; nếu không, một “gap” hoặc breakout có thể chỉ là lỗi dựng bar. Một nhà phân tích có kỷ luật không hỏi “mẫu hình có đúng không” theo nghĩa tuyệt đối, mà hỏi xác suất, payoff và điều kiện vô hiệu của mẫu hình thay đổi ra sao giữa các trạng thái thị trường.
Một cách đọc hữu ích đối với moving averages là tách “mô tả” khỏi “dự báo”. Công cụ kỹ thuật trước hết mô tả trạng thái của giá, volume, breadth hoặc volatility; từ trạng thái đó mới hình thành giả thuyết về phân phối lợi nhuận tiếp theo. Hai bước này không nên nhập làm một. Chẳng hạn, một breakout có thể xác nhận rằng cung ở vùng giá cũ đã được hấp thụ, nhưng xác suất continuation vẫn phụ thuộc vào volatility, breadth, thanh khoản và mức extension trước tín hiệu. Khi backtest, nên đo conditional forward return sau trạng thái thay vì mặc định mọi tín hiệu đều là lệnh mua bán giống nhau. Cách làm này giúp giữ phần trực quan của CMT nhưng đặt nó vào ngôn ngữ xác suất và kiểm chứng.
moving averages cũng nên được đặt cạnh những công cụ đo một chiều khác của thị trường. Trend indicator trả lời hướng; oscillator mô tả vị trí hoặc momentum; breadth cho biết mức độ tham gia; volume/order flow cho biết cường độ giao dịch; volatility cho biết độ lớn biến động. Khi hai công cụ cùng dựa trên giá quá khứ, việc chúng “xác nhận” nhau chưa chắc tạo thông tin mới. Một cách kiểm tra thực dụng là đo correlation giữa signal, incremental IC hoặc incremental P&L khi thêm từng lớp. Nếu lớp mới chỉ làm tín hiệu đẹp mắt nhưng không cải thiện out-of-sample result hoặc risk profile, nên bỏ.
MA200 ngày phổ biến vì truyền thống, nhưng một hệ thống không nên kết luận 200 là tối ưu nếu 180-220 cho kết quả tương tự và logic mới là điều quan trọng. Từ ví dụ này, điều nên rút ra không phải một mức giá cố định mà là cách chuyển quan sát thành điều kiện có thể bác bỏ. Một ví dụ tốt cho moving averages phải cho thấy cả trường hợp đúng và trường hợp gần giống nhưng thất bại. Khi ghi rõ timestamp, điều kiện vào, điều kiện vô hiệu và payoff sau chi phí, người đọc có thể kiểm tra logic thay vì chỉ bị thuyết phục bởi chart đẹp.
Phần 2. Phương pháp, dữ liệu và cách triển khai
Chọn horizon từ holding period và signal decay, so sánh nhiều cửa sổ lân cận, dùng MA như regime filter trước khi thêm indicator khác. Khi đưa moving averages vào chiến lược, nên tách bốn lớp: setup, trigger, filter và position management. Setup mô tả bối cảnh; trigger xác định thời điểm hành động; filter loại điều kiện kém chất lượng; position management quyết định size và exit. Cấu trúc này giúp biết lớp nào thực sự tạo giá trị. Nếu thêm filter làm win rate tăng nhưng turnover/capacity xấu đi, P&L sau phí có thể giảm. Báo cáo nên thể hiện contribution từng lớp thay vì chỉ so phiên bản cuối với “không làm gì”.
Trước khi backtest moving averages, nên viết một “signal specification” ngắn: universe, timeframe, dữ liệu điều chỉnh, công thức/định nghĩa, thời điểm tín hiệu được biết, entry, exit, stop, sizing và chi phí. Sau đó mới tạo code. Với pattern trực quan, nên cố gắng chuyển thành biến liên tục trước khi ép thành 0/1; ví dụ đo độ sâu retracement, độ dốc trend, volume percentile hoặc khoảng cách tới vùng breakout. Biến liên tục giúp nhìn monotonicity và tránh việc một threshold tùy ý quyết định toàn bộ kết luận. Nếu sau đó cần rule giao dịch, threshold có thể được chọn từ vùng ổn định thay vì điểm tối ưu duy nhất.
Với moving averages, tham số nên được xem như cách biểu diễn horizon chứ không phải con số thiêng. Thay vì chỉ thử 14, 20 hay 50 phiên rồi chọn điểm có Sharpe cao nhất, nên kiểm tra một vùng lân cận và chuẩn hóa cửa sổ theo volatility hoặc trading activity khi phù hợp. Nếu signal đảo từ tốt sang xấu chỉ vì dịch một vài phiên, khả năng cao rule đang bám noise. Tốt hơn là tìm monotonic relationship hoặc plateau nơi nhiều cấu hình gần nhau cho cùng kết luận; sau đó chọn cấu hình đơn giản, dễ giải thích và ít turnover hơn.
Một lớp phân tích sâu hơn cho moving averages là xây ma trận conditional return thay vì chỉ một đường equity. Có thể chia tín hiệu theo xu hướng lớn, volatility percentile, breadth/liquidity và độ mạnh của chính signal; sau đó đo forward return ở nhiều horizon, hit rate, payoff ratio và tail. Nếu hiệu quả tăng dần khi signal mạnh hơn và giữ cùng dấu ở nhiều bucket, cơ chế đáng tin hơn một cutoff đơn lẻ. Ngược lại, nếu toàn bộ P&L đến từ một bucket hiếm hoặc một vài outlier, cần giảm confidence. Với indicator liên tục, kiểm monotonicity thường cho nhiều thông tin hơn việc tối ưu ngưỡng mua/bán. Đây cũng là cách nhìn xem công cụ bổ sung thông tin hay chỉ tái diễn market regime đã biết.
Baseline cho moving averages nên đủ khó để đánh bại. Với signal trend, có thể so với moving-average đơn giản hoặc buy-and-hold cùng risk; với reversal, so với unconditional forward return và một z-score cơ bản. Kết quả cần risk-match trước khi so Sharpe hoặc drawdown. Nếu chiến lược phức tạp hơn chỉ thắng nhờ dùng leverage cao hơn hoặc giữ market beta khác, phần “alpha kỹ thuật” đã bị đánh giá quá mức. Một baseline tốt thường tiết kiệm nhiều tháng tối ưu không cần thiết.
Dashboard tối thiểu nên có Whipsaw, average lag, turnover, drawdown và stability theo window. Dashboard của moving averages nên cho thấy cả level và stability: rolling metric, dispersion, worst decile, turnover/cost và số quan sát. Một average đẹp với sample co lại hoặc tail xấu hơn không phải cải thiện thật. Tách metric theo regime và liquidity giúp biết performance đến từ đâu. Trong thực tế, cùng một hình thái giá có thể mang ý nghĩa khác nhau nếu thanh khoản, volatility và vị trí trong xu hướng khác nhau. Vì thế bối cảnh phải được xem là một biến của mô hình, không phải phần chú thích đặt sau biểu đồ.
Hãy stress moving averages bằng cost cao hơn, tín hiệu chậm hơn, sample khác và cách định nghĩa khác nhưng hợp lý. Nếu edge chỉ tồn tại ở một lát hẹp, confidence phải giảm. Nếu nhiều cấu hình lân cận cùng cho direction và payoff tương tự, đó là bằng chứng tốt hơn best backtest. Một nhà phân tích có kỷ luật không hỏi “mẫu hình có đúng không” theo nghĩa tuyệt đối, mà hỏi xác suất, payoff và điều kiện vô hiệu của mẫu hình thay đổi ra sao giữa các trạng thái thị trường.
Sau khi live, moving averages nên được theo dõi bằng signal count, hit rate theo horizon, average payoff, turnover, slippage và conditional performance theo regime. Quan trọng là đo cả “coverage”: nếu signal ngày càng hiếm vì universe thay đổi, Sharpe có thể giữ nhưng capacity giảm. Nên lưu chart hoặc state snapshot tại decision time để review không bị hindsight. Khi decay xuất hiện, trước tiên kiểm data và implementation, sau đó mới kết luận thị trường đã thay đổi.
Một cách thử moving averages ở quy mô nhỏ là chọn universe có thanh khoản rõ, tính signal sau khi phiên đóng và chỉ cho phép giao dịch ở phiên kế tiếp để tránh look-ahead. Giới hạn trọng số mỗi mã, đặt turnover cap và ghi lại trạng thái signal tại thời điểm quyết định. Sau vài chục đến vài trăm tín hiệu, phân nhóm kết quả theo trend/sideway, volatility và liquidity. Cách thử này không nhằm tối đa hóa lợi nhuận ngay, mà để biết công cụ thực sự tạo thông tin ở đâu và phần nào của P&L đến từ market beta hoặc timing may mắn.
Ứng dụng moving averages nên bắt đầu từ câu hỏi “nó thay đổi quyết định nào?”. Nếu chỉ làm người phân tích tự tin hơn nhưng không thay forecast, size, stop hay hedge, công cụ chưa có vai trò vận hành rõ. Khi vai trò được xác định, việc đánh giá hiệu quả cũng trở nên cụ thể hơn. Trong thực tế, cùng một hình thái giá có thể mang ý nghĩa khác nhau nếu thanh khoản, volatility và vị trí trong xu hướng khác nhau. Vì thế bối cảnh phải được xem là một biến của mô hình, không phải phần chú thích đặt sau biểu đồ.
Phần 3. Rủi ro, kiểm soát và cách áp dụng
Tối ưu N trên cùng sample tạo tham số giả chính xác; cross liên tục trong sideways gây cost lớn. Ba lỗi thường gặp với moving averages là định nghĩa mơ hồ, chọn ví dụ sau sự kiện và dùng nhiều xác nhận có cùng nguồn dữ liệu. Lỗi đầu làm hai người “cùng chiến lược” nhưng backtest khác nhau; lỗi thứ hai tạo hindsight; lỗi thứ ba tạo cảm giác chắc chắn giả. Cách kiểm soát là viết rule đủ chi tiết để người khác tái tạo, dùng full universe thay vì vài chart minh họa và đo incremental information của từng filter. Nếu rule cần quá nhiều ngoại lệ bằng lời, đó là dấu hiệu nên giảm độ phức tạp.
Ưu tiên vùng tham số bền và dùng volatility/risk control để xử lý whipsaw thay vì săn một moving average hoàn hảo. Một rule ứng dụng moving averages nên trả lời bốn câu hỏi trước lệnh: trạng thái nào đủ điều kiện, điều gì kích hoạt, khi nào thesis bị vô hiệu và size bao nhiêu khi sai. Việc đặt invalidation trước giúp phân biệt “tín hiệu chưa đúng” với “thesis đã sai”. Nếu market đi ngược nhưng chưa chạm invalidation, không nên tự động nới stop chỉ vì muốn giữ vị thế. Ngược lại, khi state thay đổi, việc cố chờ giá về vốn là anchoring chứ không còn là technical analysis.
Không nên dùng moving averages như lý do duy nhất để giao dịch khi dữ liệu quá mỏng, spread lớn, corporate action chưa xử lý hoặc thị trường đang ở trạng thái mà tín hiệu chưa từng được kiểm định. Cũng không nên “ép” tín hiệu vào mọi tài sản. Một pattern có thể hợp với liquid index nhưng không có ý nghĩa ở mã ít giao dịch. Việc chỉ định universe và liquidity floor là một phần của strategy definition, không phải bước lọc sau cùng.
Governance của moving averages bắt đầu từ việc biết ai chịu trách nhiệm và phiên bản nào đang chạy. Tài liệu nên giữ data lineage, assumptions, limits, monitoring và điều kiện rollback. Khi model đổi, performance cũ-mới chỉ so được nếu version được khóa. Review kỹ thuật và review kinh tế nên tách riêng để tránh sửa code cho một vấn đề thực chất là regime/edge. Technical Analysis hữu ích nhất khi biến một quan sát trực quan thành rule có timestamp, horizon và điều kiện thoát rõ. Khi không thể viết rule, rất khó phân biệt insight với hindsight.
Một checklist vận hành cho moving averages nên đi từ input tới action: kiểm dữ liệu, kiểm signal parity, kiểm exposure, kiểm cost, kiểm limit và kiểm log. Nếu một bước fail, hệ thống cần nêu rõ có tiếp tục với size nhỏ hơn, chuyển fallback hay dừng. Việc định sẵn nhánh xử lý giúp tránh quyết định cảm tính khi thị trường biến động mạnh. Điểm quan trọng là một tín hiệu kỹ thuật chỉ có giá trị khi người đọc biết nó đang mô tả xu hướng, động lượng, biến động, dòng tiền hay tâm lý; trộn các vai trò này vào một con số duy nhất thường làm mất khả năng giải thích.
Chu kỳ review của moving averages không nên chỉ dựa vào P&L tháng. Nên xem signal frequency, payoff distribution, regime mix và cost theo rolling window; đồng thời lấy ngẫu nhiên một số decision snapshot để kiểm rule có được thực thi đúng không. Nếu tín hiệu giảm chất lượng, tách ba khả năng: market state đổi, implementation lệch hoặc definition đã mất ý nghĩa. Chỉ sau bước phân rã này mới quyết định retune, giảm size hay retire tín hiệu.
Trong một quy trình đầu tư hoàn chỉnh, moving averages nên đứng ở đúng vị trí của nó. Nếu đây là công cụ trend, nó có thể định hướng bias và trailing exit; nếu là oscillator, nó phù hợp hơn với timing hoặc state; nếu là breadth/sentiment, nó có thể đóng vai trò filter hoặc risk overlay. Việc xác định vai trò trước giúp tránh cộng nhiều indicator chỉ vì chúng cùng cho tín hiệu mua. Cách thực dụng là đo phần đóng góp tăng thêm của moving averages vào forecast, drawdown, turnover hoặc timing; nếu không có incremental value, nên đơn giản hóa hệ thống.
Tóm lại, moving averages có giá trị khi được dùng như một ngôn ngữ mô tả trạng thái thị trường rồi chuyển thành rule xác suất, không phải lời tiên tri. Một quy trình tốt đi từ định nghĩa → dữ liệu đúng thời điểm → baseline → signal test → portfolio rule → cost → forward monitoring. Nếu bỏ một mắt xích, chart đẹp rất dễ lấn át bằng chứng. Khi giữ đủ các lớp này, CMT và quant không đối lập nhau: CMT cung cấp giả thuyết về hành vi giá, còn quant buộc giả thuyết phải chịu kiểm định.
