R-squared cao có đồng nghĩa mô hình dự báo lợi nhuận tương lai tốt không?
R-squared
Phần 1. R-squared cao chỉ cho biết mô hình giải thích quá khứ tốt đến đâu, không nói trực tiếp về khả năng dự báo tương lai
Sau khi chạy một mô hình hồi quy trong tài chính, một trong những con số dễ được chú ý nhất là R-squared (R²). Nếu R² = 0,80, phản ứng tự nhiên thường là: “mô hình giải thích được 80% biến động, vậy chắc dự báo rất tốt”. Đây là cách hiểu dễ gây nhầm. R² trước hết là một thước đo in-sample goodness of fit: trong chính tập dữ liệu được dùng để ước lượng mô hình, các biến độc lập giải thích được bao nhiêu phần biến thiên của biến phụ thuộc. Nó không tự động cho biết mô hình sẽ dự báo tốt trên dữ liệu ngày mai.

Có thể hình dung một mô hình dự báo return của cổ phiếu theo market return, momentum, valuation và một số biến macro. Nếu R² = 70%, nghĩa là trong mẫu lịch sử đang xét, khoảng 70% variation của return được liên hệ với các biến trong mô hình theo cấu trúc hồi quy đã chọn. Phần còn lại nằm trong residual. Nhưng để dự báo tương lai, mô hình cần một điều kiện khó hơn nhiều: mối quan hệ đã học trong quá khứ phải tiếp tục tồn tại ở dữ liệu chưa từng thấy.
Đây là sự khác biệt giữa explanation và prediction. Một mô hình có thể mô tả lịch sử cực kỳ đẹp nhưng không có nhiều predictive power. Ví dụ lấy giá đóng cửa hôm nay để giải thích giá đóng cửa ngày mai. Do giá cổ phiếu có tính liên tục rất cao về level, hồi quy có thể cho R² gần 1. Nhưng điều đó không có nghĩa mô hình dự báo return ngày mai tốt. Nó chủ yếu phát hiện một điều hiển nhiên: giá hôm nay và giá ngày mai thường gần nhau. Nếu chuyển từ price level sang daily return, predictive R² có thể sụt rất mạnh.
Trong finance, hiện tượng này đặc biệt quan trọng vì return có signal-to-noise ratio rất thấp. Giá chứa nhiều tính dai dẳng, nhưng thay đổi giá ngắn hạn lại chứa lượng noise rất lớn. Một model dự báo return với out-of-sample R² chỉ vài phần trăm đôi khi đã có giá trị kinh tế, trong khi một model có in-sample R² 60–70% cho daily returns lại cần được kiểm tra cực kỳ kỹ vì có khả năng đang có leakage, overfitting hoặc biến giải thích vô tình chứa thông tin tương lai.
Ví dụ, Model A có R² in-sample = 0,75. Model B chỉ có R² = 0,10. Nhìn nhanh, A vượt trội hoàn toàn. Nhưng sau khi đưa sang một giai đoạn chưa được dùng để train, Model A chỉ còn out-of-sample R² = -0,15, trong khi Model B giữ được +0,04. Khi đó Model B mới là model đáng quan tâm hơn. R² âm ngoài mẫu có nghĩa một dự báo đơn giản bằng trung bình lịch sử còn có thể tốt hơn model phức tạp.
Đây là nguyên tắc cần giữ ngay từ đầu:
R² cao cho biết model fit dữ liệu đã thấy tốt. Forecasting yêu cầu model hoạt động tốt trên dữ liệu chưa từng thấy.
Hai việc liên quan với nhau, nhưng hoàn toàn không đồng nghĩa.
Phần 2. Vì sao R-squared rất dễ tăng khi thêm biến, kể cả những biến không tạo ra edge?
R² có một đặc điểm khiến nó đặc biệt nguy hiểm khi xây Quant model: thêm biến vào hồi quy OLS gần như không làm R² giảm. Model có thêm feature sẽ có nhiều khả năng bám sát dữ liệu lịch sử hơn, ngay cả khi feature mới chỉ đang bắt noise.
Giả sử ban đầu xây model:
Return = α + β₁ Momentum + ε
R² đạt 8%. Sau đó thêm RSI, MACD, Stochastic, ATR, volume, P/E, P/B, tỷ giá, dầu, vàng, yield 10 năm và hàng chục biến khác. R² có thể tăng dần lên 15%, 25%, thậm chí cao hơn. Nhưng một phần mức cải thiện đó không nhất thiết đến từ predictive information. Model đơn giản có nhiều degrees of freedom hơn để mô tả những đặc điểm ngẫu nhiên của sample.
Nếu tiếp tục thử hàng trăm feature, lag và transformation rồi giữ lại combination có R² cao nhất, model bắt đầu học những quan hệ tình cờ. Đây chính là overfitting. Chẳng hạn dữ liệu lịch sử vô tình cho thấy “khi ROC20 > 7,3%, DXY giảm hai phiên và volume tăng 18% thì cổ phiếu thường tăng ngày kế tiếp”. Pattern này có thể cực đẹp trên 2018–2025 nhưng hoàn toàn biến mất từ 2026 trở đi bởi không có cơ chế kinh tế ổn định phía sau.
Adjusted R² được tạo ra một phần để hạn chế vấn đề này. Khác với R² thông thường, Adjusted R² có penalty khi thêm biến không cải thiện mô hình đủ nhiều. Nhưng Adjusted R² vẫn là chỉ số in-sample; nó không thay thế validation ngoài mẫu.
Trong Quant, còn một vấn đề khó hơn: look-ahead bias có thể tạo ra R² đẹp một cách giả tạo. Giả sử dùng EPS cả năm để giải thích return từ đầu năm, nhưng tại đầu năm EPS đó chưa được công bố. Hay dùng thành phần VN30 hiện tại để backtest mười năm về trước mà không tái tạo đúng constituents lịch sử. Model sẽ thấy thông tin mà nhà đầu tư lúc đó không thể biết. R² có thể rất cao, nhưng model không thể triển khai ngoài đời.
Một ví dụ khác là sử dụng các technical indicator được tính sai thời điểm. Nếu feature của ngày t vô tình sử dụng giá đóng cửa ngày t, rồi model cũng giả định giao dịch tại chính giá đóng cửa đó, một phần thông tin tương lai đã lọt vào quá trình dự báo. Chỉ một lỗi nhỏ trong timestamp cũng đủ biến một chiến lược bình thường thành model có R² và Sharpe cực đẹp.
Vì vậy, khi thấy R² rất cao trong một model dự báo return, phản ứng hợp lý không phải là lập tức vui mừng mà là kiểm tra:
Feature có thực sự available tại thời điểm dự báo không?
Có dùng future information hay revised data không?
Sample có đủ dài và qua nhiều market regime không?
Model có quá nhiều biến so với số quan sát không?
R² có còn tồn tại trên validation và test set không?
Kết quả có ổn định khi thay đổi nhẹ window hoặc parameter không?
Trong finance, một model quá đẹp đôi khi đáng nghi hơn một model vừa phải nhưng ổn định.
Phần 3. Với Quant, cần nhìn Out-of-sample R², IC, hit rate, Sharpe và stability thay vì ám ảnh R²
Nếu mục tiêu thật sự là dự báo return và xây chiến lược giao dịch, R² chỉ là một phần rất nhỏ của quá trình đánh giá. Một model có R² thấp vẫn có thể tạo ra chiến lược tốt nếu nó liên tục dự báo đúng thứ tự tương đối hoặc hướng của return ở những thời điểm quan trọng.
Giả sử một model dự báo return ngày mai của 100 cổ phiếu. Predicted return rất nhỏ và không khớp chính xác với realized return, nên R² chỉ đạt 2%. Nhưng mỗi ngày model lại khá tốt trong việc xếp các cổ phiếu có dự báo cao nhất lên nhóm đầu và những cổ phiếu yếu nhất xuống nhóm cuối. Nếu portfolio long nhóm top decile và tránh hoặc short nhóm bottom decile tạo spread ổn định, model vẫn có giá trị đầu tư rất lớn.
Đây là lý do Quant thường quan tâm thêm Information Coefficient (IC), tức correlation giữa forecast và realized return. Một model không cần dự báo chính xác “FPT ngày mai tăng 1,37%”. Có thể model chỉ cần dự báo đúng rằng FPT có expected return cao hơn phần lớn cổ phiếu còn lại. Với cross-sectional strategies, ranking nhiều khi quan trọng hơn việc dự báo magnitude chính xác.
Tương tự, một signal có thể có R² rất thấp nhưng vẫn tạo Sharpe tốt nếu edge nhỏ mà ổn định. Ví dụ mỗi giao dịch chỉ có expected edge vài basis points, nhưng được áp dụng trên hàng nghìn observations với diversification tốt. Trong quantitative investing, một signal yếu nhưng lặp lại ổn định có thể giá trị hơn một relationship mạnh nhưng không bền.
Một framework đánh giá model hợp lý hơn có thể nhìn đồng thời các lớp sau. R² và Adjusted R² cho biết fit trong sample. Out-of-sample R² kiểm tra khả năng generalize. IC hoặc Rank IC đánh giá khả năng xếp hạng future returns. Hit rate cho biết tỷ lệ dự báo đúng hướng nhưng phải đặt cạnh payoff ratio. Sharpe đánh giá lợi nhuận sau khi chuẩn hóa theo volatility. Maximum Drawdown cho biết strategy thất bại sâu tới đâu. Turnover và transaction cost xác định edge có còn tồn tại sau chi phí giao dịch hay không. Cuối cùng, stability cần kiểm tra model trên bull market, bear market, sideways market và những giai đoạn volatility khác nhau.
Ví dụ có hai model. Model A có in-sample R² 40%, test R² 1%, Sharpe live simulation 0,5 và kết quả biến động mạnh giữa các năm. Model B có in-sample R² chỉ 7%, test R² 4%, Rank IC khoảng 0,06 khá ổn định và Sharpe sau transaction cost 1,3. Model B mới có cấu trúc đáng để nghiên cứu tiếp mặc dù nhìn bảng regression ban đầu kém ấn tượng hơn rất nhiều.
Ngoài ra cần phân biệt rõ mục đích của mô hình. Trong market model dùng để ước lượng Beta, R² cao có thể rất hữu ích vì nó nói rằng biến động của cổ phiếu được thị trường giải thích khá nhiều. Nhưng nếu mục tiêu là forecast return tương lai để kiếm Alpha, R² cao trong regression lịch sử không trả lời được câu hỏi đó. Cùng một statistic nhưng ý nghĩa phụ thuộc vào mục tiêu.
Ví dụ một ETF mô phỏng VN30 có thể có hồi quy với VN30 cho R² gần 1. Đây là điều tốt nếu muốn kiểm tra tracking quality. Nhưng điều đó không làm ETF trở thành công cụ dự báo VN30 ngày mai. Mô hình chỉ cho thấy hai chuỗi đã di chuyển gần nhau trong quá khứ.
Ngược lại, một strategy market-neutral có thể cố tình có R² rất thấp với VN-Index. Nếu strategy vẫn tạo Alpha ổn định, R² thấp lại là một đặc tính mong muốn vì return không phụ thuộc nhiều vào direction của thị trường.
Do đó, không có một mức R² “tốt” áp dụng cho mọi bài toán. Phải hỏi trước:
Mô hình đang cố giải thích cái gì và được dùng để ra quyết định gì?
Nếu mục tiêu là risk decomposition, R² cao có thể cho thấy factor model giải thích tốt variation của danh mục. Nếu mục tiêu là forecasting, thứ cần ưu tiên là out-of-sample predictive performance và economic value.
Điểm quan trọng nhất có thể tóm lại như sau:
R² cao nói rằng mô hình hiểu khá rõ dữ liệu quá khứ theo cấu trúc đã chọn. Nó không chứng minh mô hình biết tương lai.
Trong Quant, mô hình đáng tin không phải mô hình có con số R² đẹp nhất trên màn hình. Đó là mô hình có edge tồn tại ngoài mẫu, ổn định qua nhiều regime và vẫn còn lợi nhuận sau khi tính toàn bộ chi phí thực tế.
