Module 6 - Tuần 4: FPT Forecasting Challenge
Dự báo giá cổ phiếu FPT 100 ngày bằng mô hình Hybrid Linear + ML + Regime-aware Pricing
- 6 min read

🚀 Trải nghiệm ứng dụng ngay hôm nay
- Dùng thử ngay - Bảng Chuyên nghiệp: StreamlitCode
- Dùng thử ngay - Bảng Beta: Streamlit
- Video demo - Bảng Chuyên nghiệp: Video
- Video demo - Bảng Beta: Video
Ứng dụng Streamlit này cho phép bạn:
- 🔮 Dự báo giá FPT 100 ngày tiếp theo
- 📊 Theo dõi đồ thị xu hướng, đường trung vị, biên độ bất định (uncertainty)
- 🧠 Hiểu cách mô hình học và phản ứng với từng giai đoạn thị trường
- ⚙️ Tùy chỉnh Pricing Layer theo các trạng thái Bull / Bear / Sideways
Được thiết kế đặc biệt cho thị trường chứng khoán Việt Nam, nơi biến động ngắn hạn mạnh nhưng xu hướng dài hạn của FPT luôn bền vữn
🚀 Slide giới AI chuyên gia tài chính
- Slide: Canvas
🚀 LTSF-Linear — FPT Forecasting Challenge
Hybrid Trend + XGBoost Residual + Regime-aware Pricing
🎯 Mục tiêu dự án
Xây dựng mô hình dự báo giá đóng cửa FPT 100 ngày tương lai (T+100)
chỉ từ một file duy nhất: FPT_train.csv.
Điểm đặc biệt của thử thách này:
- Horizon dài (100 ngày liên tục)
- Dữ liệu ít (4.5 năm)
- Biến động regime mạnh của thị trường Việt Nam
- Baseline Linear gần như mất toàn bộ phương sai khi forecast nhiều bước
Dự án này đề xuất một pipeline 3 lớp để giải quyết vấn đề theo cách ổn định, có thể giải thích và bền vững theo thị trường:
- Math Backbone – mô hình hóa động học giá dài hạn bằng xu hướng log-price
- XGBoost Residual – “bắt” phần cấu trúc phi tuyến còn lại mà Linear không thể học
- Pricing Layer (Regime-aware) – điều tiết dự báo theo Bull/Bear/Sideways + mean reversion
Toàn bộ thiết kế hướng đến mục tiêu:
Không cố tiên tri giá từng ngày, mà dựng nên một trajectory hợp lý, có vật lý, có kinh tế và có ràng buộc.
🧪 Source Code
🔗 Google Colab Notebook https://colab.research.google.com/drive/1SCAKPHi5GxYdHv0GPo3vjsu2G8_gLuSm?usp=sharing
🚀 Problem Overview — Tại sao baseline Linear thất bại?
Hầu hết mô hình LTSF (Linear / NLinear / DLinear) khi dự báo cuốn-chiếu 100 bước đều tạo ra:
👉 Một đường thẳng hoàn hảo 👉 Dao động gần như bằng 0 👉 Không phản ánh biến động thực tế của thị trường
Hiện tượng này trong time series gọi là:
“Death of Variance” — Cái chết của phương sai
Nguyên nhân:
- Log-price vốn đã mượt → thêm Linear → càng mượt
- NLinear chuẩn hóa theo giá cuối → xoá luôn nhiễu
- Recursive forecasting → nhiễu nhỏ bị triệt tiêu sau mỗi bước
- Horizon dài → sự bất định hội tụ về đúng một slope
Điều này khiến mô hình không còn tính thị trường, không có bull/bear, không có shock, không có volatility.
🚀 Đặc trưng của cổ phiếu FPT:
- Là bluechip đầu ngành công nghệ
- Xu hướng tăng trưởng dài hạn (strong secular uptrend)
- Rất nhạy theo từng regime thị trường:
- 2020–2021: Bull mạnh
- Cuối 2022: Điều chỉnh sâu
- 2023–2024: Sideways rộng + hồi phục
- Volume có tính chu kỳ theo quý và theo sóng ngành IT
🔎 Hạn chế của dataset:
- Chỉ có OHLCV hằng ngày (không có macro, news sentiment, ETF flow…)
- Chỉ ~1150 mẫu, nhưng yêu cầu dự báo tới 100 ngày
- Biến động thị trường Việt Nam đôi lúc phi tuyến mạnh (gap, trần/sàn)
Chính vì vậy mô hình cần:
- ✔ Khả năng mô hình hóa trend
- ✔ Khả năng nắm bắt residual phi tuyến
- ✔ Cơ chế “vật lý” để giữ cho đường dự báo hợp lý
🔎 Pipeline giải pháp: Hybrid 3 lớp
Dưới đây là cấu trúc của pipeline dự báo: (1) Math Backbone (Trend) –> (2) XGBoost Residual Model –> (3) Regime-aware Pricing Layer –> (4) Forecast Path (Base → Central → Uncertainty)
3.1 Math Backbone — Chuyên gia Trend
Backbone đơn giản nhưng cực kỳ quan trọng:
- Fit Linear Regression vào log-price
- Dự báo quỹ đạo dài hạn
- Loại bỏ nhiễu ngắn hạn
- Tạo một baseline mà ML có thể học residual
Backbone được tách thành một Expert độc lập trong Ensemble để:
- Neo dự báo tránh đi quá xa khỏi xu hướng vĩ mô
- Giảm variance khi ML lỡ “quá sáng tạo”
- Tạo Fail-safe khi dữ liệu out-of-sample
3.2 XGBoost Residual — Bắt nhiễu phi tuyến
Thay vì dự báo giá trực tiếp, XGB học: residual = future_return – math_return
Ưu điểm:
- Học tốt tương tác phi tuyến (OHLCV, volume patterns…)
- Không bị drift dài hạn vì backbone đã lo phần slope
- Giữ được volatility thực tế của thị trường
Kết quả cross-validation nhiều cutoff (2021–2024) cho thấy:
- Train MAE ~ 0.003–0.005
- Test MAE ~ 0.008–0.02
- Residual std ~ 0.007–0.013
- Tức nhiễu thị trường FPT thường nằm trong 0.7%–1.3% log-return
Residual std này được chuyển cho Monte Carlo để tạo uncertainty band.
3.3 Pricing Layer — Regime-aware + Mean Reversion
Đây là trái tim của pipeline, giúp dự báo:
- Không bay quá cao khi bull
- Không lao quá mạnh khi bear
- Giữ sự hợp lý theo vật lý thị trường Việt Nam
Các thành phần chính:
1️⃣ Clipping: Giới hạn biên độ return mỗi ngày để tránh dự báo “điên rồ”
2️⃣ Damping: Biến động càng xa hiện tại → càng giảm (nhiễu không lan vô hạn)
3️⃣ Mean Reversion: Giá luôn có điểm cân bằng (fair level) mà nó dao động quanh
4️⃣ Regime-aware: Tham số thay đổi theo 3 chế độ:
- Bull: cho phép upside lớn hơn
- Bear: tăng lực hồi khi rơi sâu
- Sideways: ổn định, ít điều chỉnh
Pricing layer được tối ưu bằng Random Search + Time-based Cross-validation trên nhiều cutoff thực tế.
🔎 Final Result — FPT 100-day Forecast
Dự báo cuối cùng được xây dựng từ 3 đường:
- BASE: Hybrid + Pricing
- TREND: Tuyến tính dài hạn
- CENTRAL_DET: 0.7 * BASE + 0.25 * TREND + 0.05 * Risk_center
Và dải bất định Monte Carlo:
- Uncertainty upper/lower band thể hiện rủi ro thị trường
- Bề rộng band phản ánh độ bất ổn tăng dần theo thời gian
Điểm nổi bật:
- ✔ Forecast không phẳng như Linear
- ✔ Có volatility hợp lý
- ✔ Không overshoot không cần thiết
- ✔ Phản ánh đúng trạng thái thị trường hiện tại (SIDEWAYS)
Reliability — Độ tin cậy của mô hình
Dự án cung cấp nhiều lớp bảo vệ rủi ro:
- ✔ Backbone neo quỹ đạo dài hạn
- ✔ XGBoost Residual duy trì nhiễu có cấu trúc
- ✔ Regime-aware Pricing kiểm soát overshoot
- ✔ Monte Carlo mô phỏng sự bất định
Sự kết hợp này tạo thành một mô hình:
Ổn định – Có thể giải thích – Bền vững theo nhiều pha thị trường
Band bất định rộng dần theo horizon, cho thấy:
- Thị trường càng xa hiện tại càng khó dự đoán
- Nhưng mô hình vẫn giữ một mean trajectory rất logic
- Không bị lệch trend như đa số mô hình thuần ML
📚 Tài liệu đính kèm
M6W4D1+6_Project_Module
- Tags:
- Feature