Giới thiệu dự án
Thị trường chứng khoán Việt Nam (TTCK) đóng vai trò là kênh huy động vốn trung và dài hạn quan trọng bậc nhất cho nền kinh tế quốc dân. Trong bối cảnh quy mô vốn hóa toàn thị trường đạt trên 60% GDP với hơn 7 triệu tài khoản nhà đầu tư cá nhân, chỉ số VN-Index và đặc biệt là rổ chỉ số VN30 (đại diện cho 30 doanh nghiệp có vốn hóa và thanh khoản vượt trội trên sàn HoSE) trở thành hàn thử biểu phản ánh trực tiếp sức khỏe tài chính doanh nghiệp. Tuy nhiên, dữ liệu chuỗi thời gian tài chính có đặc tính phi tuyến, phi dừng (non-stationary), biến động mạnh và chứa hàm lượng nhiễu (noise) cao, khiến các phương pháp phân tích kỹ thuật truyền thống hay mô hình kinh tế lượng cổ điển bộc lộ nhiều sai số.
+-------------------------------------------------------------+
| RỔ CỔ PHIẾU VN30 |
| (21 mã trụ cột: VCB, VIC, VNM, FPT, HPG, GAS, MSN, MWG...) |
+------------------------------+------------------------------+
|
v
+-------------------------------------------------------------+
| TIỀN XỬ LÝ & PHÂN TÍCH ĐA BIẾN |
| (ADF Test, Stationary Transform, MinMax Scaling) |
+------------------------------+------------------------------+
|
+--------------------------+--------------------------+
| |
v v
+-----------------------------------------------+ +-----------------------------------------------+
| DỰ BÁO ĐA BIẾN (MULTIVARIATE) | | DỰ BÁO CHUỖI DÀI (LONG-SEQUENCE) |
| - Mô hình Thống kê / ML: VAR, XGBoost, RF | | - Transformer (Multi-head Self-Attention) |
| - Học sâu Không-Thời gian: LSTNet, MTGNN, | | - Autoformer (Series Decomposition & |
| DSTP-RNN (Dual-Stage Two-Phase) | | Auto-Correlation Mechanism) |
+-----------------------+-----------------------+ +-----------------------+-----------------------+
| |
+--------------------------+------------------------+
|
v
+-------------------------------------------------------------+
| HỆ THỐNG WEB DỰ BÁO TÀI CHÍNH THỰC TẾ |
| (FastAPI Backend, Next.js UI, MongoDB, AWS Deployment) |
+-------------------------------------------------------------+
Vấn đề nghiên cứu và Điểm nghẽn thực tế (Problem Statement & Pain Points)
Phần lớn các nghiên cứu trước đây tại thị trường Việt Nam tiếp cận bài toán dự báo chỉ số chứng khoán theo hướng chuỗi thời gian đơn biến (univariate time series) như ARIMA, GARCH hoặc LSTM đơn thuần. Cách tiếp cận này tồn tại các nhược điểm chí mạng:
- Bỏ qua mối quan hệ tương quan chéo (cross-series interdependencies) và sự lan tỏa thông tin (spillover effects) từ các mã cổ phiếu trụ cột có tỷ trọng vốn hóa chi phối (như VCB, VIC, VNM, FPT, HPG) lên chỉ số VN30-Index.
- Hiện tượng suy giảm độ chính xác nghiêm trọng khi mở rộng phạm vi dự báo sang chuỗi thời gian dài (long-sequence time-series forecasting) do sự tích lũy sai số (error compounding) và hiện tượng biến mất đạo hàm (vanishing gradient) trong kiến trúc tuần tự cổ điển.
Mục tiêu dự án (Project Objectives)
- Xây dựng và chuẩn hóa tập dữ liệu chuỗi thời gian đa biến từ 21 mã cổ phiếu nòng cốt thuộc rổ VN30 trong giai đoạn 2015 – 2022.
- Thiết kế, huấn luyện và đánh giá thực nghiệm các mô hình học máy và học sâu đa biến tiên tiến: Vector Autoregression (VAR), Random Forest, XGBoost, LSTNet, MTGNN (Multivariate Graph Neural Network) và DSTP-RNN (Dual-Stage Two-Phase Attention).
- Ứng dụng các kiến trúc Transformer và Autoformer để giải quyết bài toán dự báo chuỗi thời gian dài ở các bước thời gian (horizon) $H \in {24, 48, 96}$.
- Xây dựng hoàn chỉnh hệ thống ứng dụng web end-to-end có khả năng thu thập dữ liệu tự động, thực thi suy luận mô hình và trực quan hóa biểu đồ kỹ thuật phục vụ hỗ trợ ra quyết định đầu tư.
Phạm vi và Giới hạn (Scope & Limitations)
- Dữ liệu nghiên cứu: Giá đóng cửa điều chỉnh và khối lượng giao dịch của 21 mã cổ phiếu vốn hóa lớn (BID, BVH, CTG, FPT, GAS, HPG, KDH, MBB, MSN, MWG, NVL, PDR, PNJ, REE, SBT, SSI, STB, TCH, VCB, VIC, VNM) và chỉ số VN30-Index từ 2015 đến hết 2022.
- Giới hạn: Nghiên cứu tập trung vào chuỗi dữ liệu định lượng có cấu trúc (OHLCV), chưa tích hợp dữ liệu phi cấu trúc như phân tích tâm lý tin tức (news sentiment analysis) hoặc các chỉ số kinh tế vĩ mô toàn cầu.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Phương pháp |
Ưu điểm cốt lõi |
Nhược điểm chí mạng |
Phạm vi phù hợp |
| ARIMA / SARIMA |
Nền tảng thống kê chặt chẽ, tốc độ tính toán nhanh, dễ diễn giải. |
Chỉ xử lý chuỗi đơn biến tuyến tính; bắt buộc giả định chuỗi dừng nghiêm ngặt. |
Dự báo ngắn hạn chuỗi đơn biến ổn định. |
| GARCH / EGARCH |
Mô hình hóa tốt phương sai thay đổi theo thời gian (volatility clustering). |
Không khai thác được quan hệ phi tuyến phức tạp giữa nhiều tài sản đồng thời. |
Đo lường rủi ro biến động giá. |
| Standard LSTM / GRU |
Nắm bắt phụ thuộc phi tuyến trong dữ liệu tuần tự quá khứ. |
Bỏ qua cấu trúc không gian giữa các biến; tích lũy sai số khi dự báo dài hạn. |
Chuỗi đơn biến hoặc đa biến kích thước nhỏ. |
| Đề xuất: MTGNN & Autoformer |
Tự động học ma trận kề đồ thị không gian, cơ chế tự tương quan tách xu hướng/mùa vụ. |
Đòi hỏi tài nguyên tính toán GPU cao và tinh chỉnh siêu tham số phức tạp. |
Dự báo đa biến phức tạp và chuỗi thời gian dài. |
MA TRẬN YÊU CẦU HỆ THỐNG THEO MoSCoW
+---------------------------------------------------------------------------------------------------------+
| [MUST HAVE] |
| - Pipeline kiểm định tính dừng ADF và lấy sai phân cấp bậc d. |
| - Module suy luận đa biến: VAR, LSTNet, DSTP, MTGNN, Autoformer. |
| - API Endpoint trả về kết quả dự báo 1-step và multi-step (24, 48, 96 intervals). |
+---------------------------------------------------------------------------------------------------------+
| [SHOULD HAVE] |
| - Worker chạy tự động (Cron job) đồng bộ dữ liệu OHLCV hàng ngày lúc 16:00 qua REST API. |
| - Giao diện trực quan hóa tương tác: Biểu đồ nến kỹ thuật (Candlestick) và đường dự báo đa thuật toán. |
+---------------------------------------------------------------------------------------------------------+
| [COULD HAVE] |
| - Cơ chế tùy chọn động các siêu tham số mô hình (Lookback window, Learning rate) trên Web Dashboard. |
| - Tính toán phân tích độ quan trọng của đặc trưng (Feature Importance). |
+---------------------------------------------------------------------------------------------------------+
| [WON'T HAVE] |
| - Khớp lệnh giao dịch tự động trực tiếp qua cổng giao dịch của các công ty chứng khoán (Broker API). |
+---------------------------------------------------------------------------------------------------------+
Thiết kế hệ thống
Kiến trúc hệ thống được xây dựng theo mô hình phân lớp module hóa phân tán (Decoupled Modular Architecture):
+-----------------------------------------------------------------------------------+
| PRESENTATION LAYER (Next.js 13 + TailwindCSS) |
| - Dashboard tổng quan thị trường - Tùy chọn thuật toán & Horizon |
| - Biểu đồ nến tương tác (ApexCharts) - Bảng so sánh sai số thực nghiệm |
+-----------------------------------------+-----------------------------------------+
| RESTful API (JSON)
+-----------------------------------------v-----------------------------------------+
| APPLICATION LAYER (FastAPI - Python 3.9) |
| +------------------------+ +------------------------+ +---------------------+ |
| | Stock Data Controller | | Inference Controller | | Model Evaluator | |
| +------------------------+ +------------------------+ +---------------------+ |
+-----------------------------------------+-----------------------------------------+
|
+---------------------------------+---------------------------------+
| |
+-------v-----------------------------------+ +---------------------------v-------+
| ASYNC WORKER & ML CORE (PyTorch 1.13) | | PERSISTENCE LAYER |
| - Data Ingestion Crawler (apipubaws.vn) | | - MongoDB 6.0 Enterprise |
| - Models: VAR, MTGNN, LSTNet, Autoformer | | + Collection: stock_prices |
| - Crontab Scheduler (Linux Daemon) | | + Collection: forecast_history |
+-------------------------------------------+ +-----------------------------------+
Technology Stack và Phiên bản chi tiết
- Ngôn ngữ cốt lõi: Python
3.9.16, TypeScript 5.0.4, Node.js 18.16.0 LTS.
- Framework Học máy / Học sâu: PyTorch
1.13.1+cu117, PyTorch Geometric 2.3.0, XGBoost 1.7.5, Scikit-learn 1.2.2, Statsmodels 0.14.0.
- Backend & Middleware: FastAPI
0.95.2, Uvicorn 0.22.0, Pydantic 1.10.8, Motor (Async MongoDB Driver) 3.1.2.
- Frontend: Next.js
13.4.4 (App Router), React 18.2.0, ApexCharts 3.40.0, TailwindCSS 3.3.2.
- Cơ sở dữ liệu & Hạ tầng: MongoDB
6.0.5, Docker 23.0.5, AWS EC2 Ubuntu Server 22.04 LTS.
Thiết kế Cơ sở dữ liệu (Database Schema)
Hệ thống sử dụng MongoDB với 2 collection chính được đánh chỉ mục (index) tối ưu theo mã cổ phiếu và thời gian:
// Collection: stock_prices
{
"_id": ObjectId("6489a1f2b4c1a2d3e4f5a6b7"),
"ticker": "VN30",
"date": ISODate("2022-12-30T00:00:00.000Z"),
"open": 1008.25,
"high": 1015.40,
"low": 998.10,
"close": 1005.19,
"volume": 145230000,
"adjusted_close": 1005.19
}
// Collection: forecast_results
{
"_id": ObjectId("6489b2a1b4c1a2d3e4f5a6c8"),
"model_name": "MTGNN",
"target_index": "VN30",
"forecast_date": ISODate("2023-01-03T00:00:00.000Z"),
"horizon_step": 1,
"predicted_value": 1012.45,
"actual_value": 1010.80,
"metrics": {
"rmse": 5.42,
"mae": 3.81,
"mape": 0.38
},
"created_at": ISODate("2023-01-02T16:05:00.000Z")
}
Đặc tả API Endpoints
GET /api/v1/stocks/history?ticker={ticker}&from={date}&to={date}
Response: 200 OK -> Array<{date: string, open: number, high: number, low: number, close: number, volume: number}>
POST /api/v1/forecast/predict
Request Body:
{
"model": "MTGNN",
"lookback_window": 60,
"horizon": 24,
"features": ["BID", "BVH", "CTG", "FPT", "GAS", "HPG", "MSN", "MWG", "VCB", "VIC", "VNM"]
}
Response: 200 OK -> {target: "VN30", predictions: Array<{step: number, date: string, predicted_close: number}>, inference_time_ms: 42.5}
Methodology
Quy trình phát triển được xây dựng dựa trên phương pháp luận chuẩn khoa học dữ liệu kết hợp mô hình linh hoạt Agile Scrum:
- Pha 1 (Data Engineering): Thu thập dữ liệu qua API, xử lý Missing Values bằng kỹ thuật Forward Fill (LOCF), phân rã chuỗi thời gian thành các thành phần: Xu hướng (Trend), Mùa vụ (Seasonality) và Nhiễu (Noise).
- Pha 2 (Stationarity & Lag Identification): Tiến hành kiểm định nghiệm đơn vị Augmented Dickey-Fuller (ADF) trên từng chuỗi dữ liệu. Nếu giá trị $p\text{-value} > 0.05$, thực hiện lấy sai phân cấp 1: $D(Y_t) = Y_t - Y_{t-1}$. Xác định độ trễ tối ưu thông qua tiêu chuẩn thông tin Akaike (AIC) và Bayesian Information Criterion (BIC):
$$\text{AIC} = 2k - 2\ln(\hat{L}), \quad \text{BIC} = k\ln(n) - 2\ln(\hat{L})$$
- Pha 3 (Deep Learning Architecture Modeling): Xây dựng mạng học sâu kết hợp cơ chế chú ý (Attention Mechanism) và tích chập không-thời gian (Spatio-Temporal Convolution).
- Pha 4 (Deployment & QA): Tích hợp Continuous Integration, kiểm thử Unit Test cho toàn bộ pipeline dữ liệu và triển khai Cloud Native trên hạ tầng AWS.
Implementation và kết quả
Development process
Quá trình hiện thực hóa tập trung vào ba kiến trúc học sâu đa biến tiêu biểu:
+---------------------------------------------------------------------------------------------------+
| 1. LSTNet ARCHITECTURE (Tích hợp Convolution + Recurrent Skip + Linear Autoregressive) |
| |
| Input: X in R^{N x T} ---> [Conv2D Kernel (w x N)] ---> Feature Map h_c |
| | |
| +---------------------------------------------------+--------------------+ |
| | | |
| v v |
| [GRU Layer] (Short-term) [Skip-GRU Layer] (Periodic) |
| h_t = GRU(h_c, h_{t-1}) h_t^s = GRU(h_c, h_{t-p}) |
| | | |
| +-----------------------------------+------------------------------------+ |
| | |
| v |
| [Dense Layer] (Nonlinear Output) |
| + |
| [Linear Highway AR] (Scale & Trend Preservation) |
| | |
| v |
| Final Prediction: y_hat = y_{dense} + y_{AR} |
+---------------------------------------------------------------------------------------------------+
1. Mô hình LSTNet (Long- and Short-term Time-series Network)
LSTNet giải quyết vấn đề chu kỳ tuần hoàn dài hạn bằng cách kết hợp lớp tích chập CNN 1D (trích xuất đặc trưng tương quan chéo giữa các biến tại cửa sổ trượt cục bộ) cùng với mạng hồi quy GRU và lớp Recurrent-skip layer. Thay vì truyền trạng thái ẩn tuần tự $h_{t-1}$, Recurrent-skip kết nối trực tiếp với trạng thái ẩn cách đó $p$ chu kỳ ($h_{t-p}$):
$$r_t = \sigma(x_t W_{xr} + h_{t-p} W_{hr} + b_r)$$
$$u_t = \sigma(x_t W_{xu} + h_{t-p} W_{hu} + b_u)$$
$$c_t = \text{ReLU}(x_t W_{xc} + r_t \odot (h_{t-p} W_{hc}) + b_c)$$
$$h_t = (1 - u_t) \odot h_{t-p} + u_t \odot c_t$$
Để loại bỏ hạn chế phi tuyến tính mất tỉ lệ (scale-insensitive) của mạng nơ-ron sâu, mô hình tích hợp thành phần tự hồi quy tuyến tính Autoregressive (AR Highway):
$$\hat{y}{t,i}^{AR} = \sum{k=0}^{q-1} W_{k,i}^{AR} y_{t-1-k,i} + b_i^{AR}$$
2. Mô hình MTGNN (Multivariate Graph Neural Network)
MTGNN không yêu cầu ma trận kề đồ thị cho trước mà tự động học cấu trúc quan hệ liên chuỗi thông qua lớp Graph Learning:
$$A = \text{ReLU}\left(\tanh\left(\alpha (M_1 M_2^T - M_2 M_1^T)\right)\right)$$
Sau đó, áp dụng kỹ thuật Mix-hop Propagation kết hợp với Dilated Inception Convolution để tiếp nhận vùng tiếp nhận thông tin (receptive field) mở rộng theo cấp số nhân mà không làm bùng nổ số lượng tham số.
import torch
import torch.nn as nn
import torch.nn.functional as F
class GraphLearningLayer(nn.Module):
"""
Tự động khởi tạo và học ma trận kề biểu diễn quan hệ đồ thị giữa các mã cổ phiếu
"""
def __init__(self, num_nodes: int, embedding_dim: int, alpha: float = 3.0, top_k: int = 10):
super(GraphLearningLayer, self).__init__()
self.num_nodes = num_nodes
self.alpha = alpha
self.top_k = top_k
self.emb1 = nn.Embedding(num_nodes, embedding_dim)
self.emb2 = nn.Embedding(num_nodes, embedding_dim)
self.lin1 = nn.Linear(embedding_dim, embedding_dim)
self.lin2 = nn.Linear(embedding_dim, embedding_dim)
def forward(self, idx: torch.Tensor) -> torch.Tensor:
# Khởi tạo node vector từ embedding
nodevec1 = torch.tanh(self.alpha * self.lin1(self.emb1(idx)))
nodevec2 = torch.tanh(self.alpha * self.lin2(self.emb2(idx)))
# Ma trận kề bất đối xứng nhằm mô hình hóa quan hệ nhân quả có hướng
adj = F.relu(torch.tanh(self.alpha * (torch.mm(nodevec1, nodevec2.T) - torch.mm(nodevec2, nodevec1.T))))
# Giữ lại top-k láng giềng gần nhất để tạo độ thưa (Sparsity)
mask = torch.zeros_like(adj)
topk_val, topk_idx = torch.topk(adj, self.top_k, dim=-1)
mask.scatter_(-1, topk_idx, 1.0)
adj = adj * mask
return adj
3. Mô hình Autoformer cho Chuỗi thời gian dài
Autoformer thay thế cơ chế Self-Attention truyền thống vốn có độ phức tạp $O(L^2)$ bằng cơ chế Auto-Correlation dựa trên biến đổi Fourier nhanh (Fast Fourier Transform - FFT) có độ phức tạp $O(L \log L)$, đồng thời lồng ghép cấu trúc Series Decomposition Block nhằm tách riêng biệt thành phần xu hướng-mùa vụ sâu trong mỗi lớp nơ-ron.
+------------------------------------------------------------------------------------+
| AUTOFORMER: SERIES DECOMPOSITION & AUTO-CORRELATION BLOCK |
| |
| Input Series X ---> [Moving Average Pool] --------------------> Trend Series X_t |
| | |
| +---> [Subtract: X - X_t] --------------------> Seasonal Series X_s|
| | |
| v |
| Seasonal Component ---> [Auto-Correlation Layer via FFT & IFFT] <----+ |
| (O(L log L) Complexity & Period-based Attention) |
+------------------------------------------------------------------------------------+
Testing và validation
Quá trình thực nghiệm được phân chia nghiêm ngặt: 70% dữ liệu huấn luyện (Training Set), 10% dữ liệu thẩm định (Validation Set), 20% dữ liệu kiểm thử độc lập (Test Set). Các chỉ số đánh giá bao gồm:
- Root Mean Squared Error (RMSE): Đo lường độ lệch bình phương trung bình.
- Mean Absolute Error (MAE): Đo lường sai số tuyệt đối trung bình.
- Mean Absolute Percentage Error (MAPE): Đo lường phần trăm sai số tuyệt đối.
Kết quả đạt được
Kết quả dự báo chuỗi thời gian đa biến (1 bước thời gian tiếp theo - Next-day Forecasting)
| Mô hình thuật toán |
Loại kiến trúc |
RMSE |
MAE |
MAPE (%) |
Thời gian huấn luyện / Epoch |
| ARIMA (Baseline đơn biến) |
Thống kê truyền thống |
18.42 |
14.15 |
1.42% |
< 1s |
| LSTM (Đơn biến) |
Học sâu tuần tự |
15.68 |
11.82 |
1.18% |
3.2s |
| VAR(p) |
Thống kê đa biến |
14.21 |
10.95 |
1.09% |
1.1s |
| Random Forest Regression |
Cây quyết định Ensemble |
13.54 |
10.12 |
1.01% |
8.4s |
| XGBoost Regression |
Gradient Boosting |
12.87 |
9.65 |
0.96% |
4.6s |
| LSTNet |
CNN + Skip-RNN + AR |
10.45 |
7.82 |
0.78% |
12.8s |
| DSTP-RNN |
Dual-Stage Attention |
9.85 |
7.15 |
0.71% |
18.5s |
| MTGNN (Tối ưu nhất) |
Graph Neural Network |
8.62 |
6.24 |
0.62% |
15.2s |
Kết quả thực nghiệm dự báo chuỗi thời gian dài (Multi-step Ahead Forecasting)
SO SÁNH SAI SỐ MAPE (%) TRÊN CÁC HORIZON KHÁC NHAU
2.5% +-------------------------------------------------------------------------+
| |
2.0% + [XGBoost] |
| [XGBoost] 2.05% |
1.5% + [XGBoost] 1.62% |
| [LSTM] 1.24% [LSTM] |
1.0% + [LSTM] 1.08% [LSTM] 1.88% |
| 0.85% 1.45% |
0.5% + [MTGNN] [MTGNN] [Autoformer] [Autoformer] [Autoformer] |
| 0.62% 0.78% 0.81% 0.98% 1.15% |
0.0% +----+----------+-------------+------------+----------+------------+------+
Horizon = 1 Step Horizon = 24 Steps Horizon = 96 Steps
| Mô hình thuật toán |
Horizon 24 (MAPE %) |
Horizon 48 (MAPE %) |
Horizon 96 (MAPE %) |
Inference Latency (ms) |
| XGBoost (Recursive) |
1.24% |
1.62% |
2.05% |
12.5 ms |
| Standard LSTM (Seq2Seq) |
1.08% |
1.45% |
1.88% |
28.4 ms |
| Standard Transformer |
0.95% |
1.28% |
1.54% |
64.2 ms |
| Autoformer (Đề xuất) |
0.81% |
0.98% |
1.15% |
34.8 ms |
Đổi mới và đóng góp
-
Ứng dụng Khai phá Cấu trúc Đồ thị Động Không gian - Thời gian (MTGNN):
Thay vì giả định các cổ phiếu độc lập hoặc áp đặt ma trận tương quan tĩnh, nghiên cứu đã ứng dụng thành công cơ chế Graph Learning tự thích nghi. Mô hình tự động phát hiện các liên kết tiềm ẩn giữa các mã cổ phiếu ngân hàng (VCB, CTG, MBB, STB) và nhóm bất động sản, bán lẻ (VIC, NVL, MWG), giúp giảm 45.0% sai số RMSE so với mô hình LSTM đơn biến và giảm 39.3% RMSE so với mô hình kinh tế lượng VAR.
-
Khắc phục Suy giảm Dự báo Dài hạn với Cơ chế Auto-Correlation (Autoformer):
Chứng minh thực nghiệm tính vượt trội của Autoformer trên thị trường tài chính Việt Nam. Ở phạm vi dự báo dài hạn (96 phiên tiếp theo), Autoformer duy trì sai số MAPE ở mức 1.15%, cải thiện 38.8% độ chính xác so với LSTM Seq2Seq và giảm 45.8% thời gian tính toán so với kiến trúc Standard Transformer nhờ thuật toán FFT $O(L \log L)$.
-
Hiện thực hóa Hệ thống Web Full-Stack Phục vụ Thực tế:
Chuyển giao toàn bộ kết quả nghiên cứu học thuật thành một hệ thống phần mềm hoàn chỉnh chạy trên môi trường Linux Server AWS, trang bị pipeline tự động cập nhật dữ liệu và giao diện phân tích kỹ thuật trực quan cho cộng đồng đầu tư.
Ứng dụng thực tế và triển khai
Kịch bản Ứng dụng Thực tế (Real-world Use Cases)
- Hỗ trợ Ra quyết định Đầu tư Quỹ Tương hỗ & Cá nhân: Cung cấp kênh tham chiếu độc lập định lượng về xu hướng ngắn và trung hạn của chỉ số VN30, hỗ trợ xác định điểm mua/bán tối ưu cho hợp đồng tương lai chỉ số VN30 (VN30F1M).
- Quản trị Danh mục và Cảnh báo Sớm Biến động (Risk Management): Cảnh báo sớm các phiên giảm điểm đột biến dựa trên tín hiệu lan truyền tiêu cực từ các cổ phiếu vốn hóa lớn thông qua ma trận kề của mô hình MTGNN.
QUY TRÌNH DEPLOY HỆ THỐNG TRÊN AWS CLOUD
+---------------------------------------------------------------------------------------------+
| AWS EC2 Linux Ubuntu Server 22.04 LTS (Instance: t3.large / g4dn.xlarge for Inference) |
| |
| +-------------------------------------+ +------------------------------------------+ |
| | Cron Daemon (Schedule: 16:00 Daily) | ---> | Ingestion Script: Crawl Data apipubaws | |
| +-------------------------------------+ +--------------------+---------------------+ |
| | |
| +-----------------------------------------------------------------v---------------------+ |
| | Data Pipeline: Forward Fill Missing -> MinMax Scaler -> Update MongoDB Prices | |
| +-----------------------------------------------------------------+---------------------+ |
| | |
| +-----------------------------------------------------------------v---------------------+ |
| | PyTorch Execution Engine: LSTNet / MTGNN / Autoformer Model Inference | |
| +-----------------------------------------------------------------+---------------------+ |
| | |
| +-----------------------------------------------------------------v---------------------+ |
| | Save Predictions -> forecast_history Collection in MongoDB | |
| +-----------------------------------------------------------------+---------------------+ |
| | |
| +---------------------------------------+ +------------------v---------------------+ |
| | Nginx Reverse Proxy (SSL Certbot) | <--- | FastAPI Server (Port 8000) & Next.js UI| |
| +---------------------------------------+ +----------------------------------------+ |
+---------------------------------------------------------------------------------------------+
Hướng dẫn Cài đặt và Triển khai (Deployment Instructions)
# 1. Clone repository dự án
git clone https://github.com/uit-thesis/vn30-multivariate-forecasting.git
cd vn30-multivariate-forecasting
# 2. Thiết lập môi trường ảo và cài đặt thư viện
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 3. Cấu hình biến môi trường (.env)
cat <<EOF > .env
MONGO_URI=mongodb://localhost:27017/stock_db
DATA_API_URL=https://apipubaws.vn/api/stock
MODEL_CHECKPOINT_DIR=./weights
EOF
# 4. Khởi chạy Backend FastAPI & Frontend Next.js bằng PM2 / Systemd
uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4 &
cd frontend && npm install && npm run build && npm run start -- -p 3000
Hạn chế và hướng phát triển
Hạn chế Kỹ thuật (Technical Limitations)
- Độ trễ dữ liệu ngoại sinh (Market Shock Latency): Chưa tích hợp khả năng phản ứng tức thời với các cú sốc thông tin ngoài dự kiến (như thiên tai, sự kiện địa chính trị, thay đổi đột ngột lãi suất điều hành).
- Ràng buộc phần cứng: Mô hình Autoformer và MTGNN yêu cầu GPU bộ nhớ lớn (VRAM $\ge 8\text{GB}$) khi mở rộng số lượng biến lên toàn bộ hơn 400 mã cổ phiếu niêm yết trên sàn HoSE.
Hướng phát triển Đề xuất (Future Enhancements)
- Tích hợp mô hình ngôn ngữ lớn (LLMs FinBERT / GPT-4) để kết hợp phân tích tâm lý tin tức tài chính theo thời gian thực (Multi-modal Stock Prediction).
- Mở rộng ứng dụng Reinforcement Learning (Deep Q-Learning / PPO) để xây dựng hệ thống tự động giao dịch theo thuật toán (Automated Trading Bot) dựa trên tín hiệu dự báo đầu ra.
Đối tượng hưởng lợi
+----------------------------------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG |
+------------------------------------+---------------------------------------------------------------+
| SINH VIÊN & NGHIÊN CỨU SINH | Nguồn tài liệu tham khảo chuẩn mực về ứng dụng Graph Neural |
| | Network, Transformer trong xử lý chuỗi thời gian tài chính. |
+------------------------------------+---------------------------------------------------------------+
| KỸ SƯ DỮ LIỆU & AI DEVELOPERS | Bộ code chuẩn hóa PyTorch xử lý pipeline đa biến, kiến trúc |
| | Skip-RNN, Spatio-Temporal Graph và Autoformer có thể tái sử |
| | dụng cho nhiều bài toán chuỗi thời gian công nghiệp khác. |
+------------------------------------+---------------------------------------------------------------+
| DOANH NGHIỆP & QUỸ ĐẦU TƯ | Framework dự báo định lượng chính xác cao (MAPE < 0.8%), tiết |
| | kiệm hàng trăm giờ phân tích dữ liệu thủ công mỗi tháng. |
+------------------------------------+---------------------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu phần cứng tối thiểu để triển khai và huấn luyện hệ thống là gì?
- Môi trường huấn luyện (Training): CPU 8 Cores, RAM 16GB, GPU NVIDIA RTX 3060 (hoặc AWS g4dn.xlarge với NVIDIA T4 16GB VRAM) để huấn luyện tối ưu các mô hình MTGNN và Autoformer.
- Môi trường suy luận (Production Inference): CPU 2 Cores, RAM 4GB (AWS t3.medium hoặc t3.large), không bắt buộc GPU do thời gian suy luận cho 1 bước chỉ mất ~35ms trên CPU.
2. Mô hình xử lý như thế nào khi gặp phiên thị trường sập mạnh (Black Swan Event)?
Các mô hình học sâu chuỗi thời gian thuần túy có thể gặp sai số tức thời khi xuất hiện sự kiện thiên nga đen. Tuy nhiên, nhờ thành phần kết hợp Autoregressive Linear Highway trong LSTNet và cơ chế Series Decomposition trong Autoformer, mô hình có khả năng tự động hiệu chỉnh độ lệch tỷ lệ cục bộ nhanh hơn 40% so với LSTM truyền thống ngay sau khi có dữ liệu của 1-2 phiên tiếp theo.
3. Tại sao mô hình MTGNN lại vượt trội hơn các mô hình học máy truyền thống (XGBoost, Random Forest)?
XGBoost và Random Forest coi các đặc trưng đầu vào ở trạng thái tĩnh hoặc làm phẳng (flatten) chiều thời gian, dẫn đến đánh mất cấu trúc động lực học không gian - thời gian. MTGNN sử dụng đồng thời Graph Learning để tìm quan hệ ảnh hưởng liên cổ phiếu và Temporal Inception Convolution để khai thác biến động đa chu kỳ, tạo nên biểu diễn đặc trưng vượt trội.
4. Chi phí vận hành hạ tầng trên Cloud ước tính khoảng bao nhiêu?
Hệ thống được tối ưu hóa tài nguyên hoàn hảo. Chi phí vận hành trên AWS Cloud ước tính:
- 01 Instance AWS EC2
t3.medium (Hosting Web, API & Scheduler): ~$30 USD/tháng.
- 01 Database MongoDB Atlas (M0 Free Tier hoặc M10): ~$0 - $50 USD/tháng.
- Tổng chi phí duy trì hệ sinh thái: dưới $80 USD/tháng.
5. Làm thế nào để tích hợp thêm các mã cổ phiếu mới ngoài danh mục 21 mã ban đầu?
Chỉ cần cập nhật danh sách ticker trong file cấu hình config/tickers.yaml. Pipeline tiền xử lý sẽ tự động kiểm tra tính dừng (ADF test), chuẩn hóa dữ liệu và Graph Learning Layer của MTGNN sẽ tự động mở rộng chiều kích thước ma trận $N \times N$ trong lần fine-tuning tiếp theo mà không cần cấu trúc lại toàn bộ mạng.
Kết luận
Đồ án tốt nghiệp "Xây dựng mô hình dự báo giá chứng khoán Việt Nam bằng phương pháp học sâu cho chuỗi thời gian đa biến" của nhóm sinh viên Nguyễn Thành Nội và Võ Quang Huy (Khoa Hệ thống Thông tin - Trường Đại học Công nghệ Thông tin, ĐHQG-HCM) đã giải quyết trọn vẹn bài toán dự báo chỉ số thị trường chứng khoán VN30. Bằng việc kết hợp sáng tạo các mô hình Spatio-Temporal Graph (MTGNN), Skip-RNN (LSTNet) và cơ chế Auto-Correlation (Autoformer), đề tài đã hạ thấp sai số dự báo xuống mức kỷ lục (MAPE đạt 0.62% cho dự báo ngày tiếp theo và 1.15% cho chuỗi dài 96 bước), vượt trội hoàn toàn so với các phương pháp thống kê và học máy cổ điển.
Hệ thống ứng dụng web triển khai thực tế trên nền tảng AWS khẳng định tính khả thi, giá trị thực tiễn và tiềm năng chuyển giao công nghệ cao trong kỷ nguyên tài chính số (Fintech).