Giới thiệu dự án

Thị trường tài chính toàn cầu đang chứng kiến sự bùng nổ mạnh mẽ của làn sóng đầu tư trực tuyến. Theo số liệu thống kê từ Statista và diễn đàn Asktraders, toàn cầu hiện có xấp xỉ 9,6 triệu nhà đầu tư cá nhân tham gia giao dịch trực tuyến, trong đó thị trường Mỹ chiếm 52% tổng quy mô giao dịch toàn cầu. Tại Việt Nam, dữ liệu từ Trung tâm Lưu ký Chứng khoán ghi nhận tốc độ mở rộng ấn tượng với hơn 3,55 triệu tài khoản giao dịch (chiếm khoảng 3,8% dân số), trong đó số tài khoản mở mới chỉ trong 8 tháng đầu năm 2021 (842.405 tài khoản) đã vượt qua tổng số lượng mở mới của cả giai đoạn 3 năm 2018–2020 cộng lại (837.345 tài khoản).

Dữ liệu chuỗi thời gian tài chính có đặc tính phi tuyến tính cao, phân phối bất định và độ trễ ngẫu nhiên do chịu ảnh hưởng từ nhiều biến số kinh tế vĩ mô, tâm lý hành vi thị trường và cung cầu tức thời. Các nhà đầu tư cá nhân với nguồn lực hạn chế thường gặp thua lỗ lớn khi phân tích thủ công. Trong khi đó, các mô hình thống kê cổ điển như ARIMA hay Machine Learning truyền thống (SVM, KNN) bộc lộ hạn chế lớn trong việc biểu diễn mối tương quan phi tuyến đa chiều giữa giá và các chỉ báo kỹ thuật.

Mục tiêu dự án

  1. Thu thập và tiền xử lý dữ liệu chuẩn hóa: Xây dựng bộ dữ liệu giao dịch đa thị trường (Việt Nam: VN-Index, FPT, VCB; Quốc tế: S&P 500, AAPL) tích hợp 8 chỉ báo phân tích kỹ thuật chuẩn hóa.
  2. Thiết kế kiến trúc học sâu Spatio-Temporal Hybrid: Kết hợp mạng nơ-ron tích chập 1D (1D-CNN) để trích xuất đặc trưng không gian đa biến và mạng bộ nhớ dài-ngắn hạn (LSTM) để nắm bắt phụ thuộc tuần tự thời gian.
  3. Tối ưu hóa và kiểm thử thực nghiệm: Đạt sai số dự đoán biên độ giá phiên kế tiếp với sai số phần trăm tuyệt đối trung bình (MAPE) dưới 2,5% và hệ số xác định $R^2 > 0.85$.
  4. Xây dựng module suy luận tự động: Cung cấp khả năng dự báo mức giá cao nhất (High) và thấp nhất (Low) trong ngày tiếp theo để hỗ trợ chiến lược quản trị rủi ro và xác định vùng chốt lời/cắt lỗ.

Phương pháp tiếp cận

Mô hình giải quyết bài toán hồi quy chuỗi thời gian bằng cách kết hợp cơ chế trích xuất đặc trưng cục bộ không gian của lớp tích chập (Convolutional Layer) và cơ chế kiểm soát dòng trạng thái nhớ của tế bào LSTM (Memory Cell Gates). Cách tiếp cận này loại bỏ nhu cầu chọn lọc thuộc tính thủ công, giảm số chiều dữ liệu hiệu quả và triệt tiêu vấn đề biến mất đạo hàm (Vanishing Gradient) trong chuỗi dài.

Phạm vi và giới hạn

  • Phạm vi dữ liệu: Dữ liệu nến ngày (EOD - End of Day) của các mã cổ phiếu niêm yết trên HOSE, HNX và sàn chứng khoán Mỹ.
  • Giới hạn kỹ thuật: Mô hình tập trung vào dữ liệu định lượng (Quantitative Data) gồm giá lịch sử và chỉ báo kỹ thuật; chưa tích hợp module xử lý ngôn ngữ tự nhiên (NLP) phân tích sắc thái tin tức thị trường thời gian thực.

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 & Rào cản Phù hợp bài toán tài chính
Phân tích cơ bản (FA) Đánh giá giá trị nội tại doanh nghiệp dài hạn Tiêu tốn thời gian, độ trễ thông tin cao, bỏ qua tâm lý thị trường Kém (ngắn/trung hạn)
Mô hình ARIMA (Box-Jenkins) Đơn giản, chi phí tính toán thấp, tốt với chuỗi tuyến tính Yêu cầu chuỗi dừng, chỉ xử lý đơn biến, mất thông tin khi lấy sai phân Trung bình
Machine Learning (SVM / RF) Xử lý tốt dữ liệu đa biến, biên phân lớp tối ưu Dễ quá khớp (Overfitting), nhạy cảm với nhiễu, không nhớ quan hệ tuần tự Khá
Mô hình đề xuất (CNN - LSTM) Tự động trích xuất đặc trưng đa biến, học phụ thuộc thời gian dài, kháng nhiễu Yêu cầu tài nguyên tính toán GPU khi huấn luyện Tối ưu

Dựa trên ma trận phân loại yêu cầu MoSCoW:

  • Must-have: Pipeline tiền xử lý trượt thời gian (Sliding Window), chuẩn hóa Min-Max độc lập từng chu kỳ, module 1D-CNN trích xuất đặc trưng, module LSTM 2 lớp, hàm tính toán sai số RMSE/MAE/MAPE.
  • Should-have: Module tính toán tự động 8 chỉ báo kỹ thuật (RSI, MACD, EMA, OBV, MFI, Bollinger Bands), tính năng Early Stopping chống quá khớp.
  • Could-have: Cơ chế Dynamic Learning Rate Decay và trực quan hóa biểu đồ dự báo so với thực tế.
  • Won't-have: Giao diện giao dịch tự động trực tiếp kết nối API sàn giao dịch (Automated Execution Gateway) trong giai đoạn thử nghiệm này.

Thiết kế hệ thống

flowchart TD
    A[Dữ liệu OHLCV Lịch sử] --> B[Module Tính toán Chỉ báo Kỹ thuật TA-Lib]
    B --> C[Ma trận Đặc trưng Đa biến: 14 Features]
    C --> D[Chuẩn hóa Min-Max Scaler & Tạo Sliding Window]
    D --> E[1D-CNN Layer: Kernel 3, Filters 64, ReLU]
    E --> F[Max Pooling 1D: Pool Size 2]
    F --> G[LSTM Layer 1: 128 Units, Return Sequences=True]
    G --> H[Dropout Layer: Rate 0.2]
    H --> I[LSTM Layer 2: 64 Units, Return Sequences=False]
    I --> J[Dense Output Layer: Dự báo High / Low / Close]

Technology Stack

  • Ngôn ngữ lập trình: Python 3.9.16
  • Deep Learning Framework: TensorFlow 2.10.0 / Keras API
  • Xử lý tính toán & Dữ liệu: NumPy 1.23.5, Pandas 1.5.3, Scikit-learn 1.2.2
  • Thư viện phân tích kỹ thuật: TA-Lib 0.4.25
  • Trực quan hóa: Matplotlib 3.7.1, Seaborn 0.12.2
  • REST API Serving: FastAPI 0.95.0, Uvicorn 0.21.1

Cấu trúc vector đặc trưng đầu vào

Vector đầu vào tại mỗi bước thời gian $t$ bao gồm 14 chiều dữ liệu: $$\mathbf{X}t = [O_t, H_t, L_t, C_t, V_t, \text{SMA}{20}, \text{EMA}{20}, \text{RSI}{14}, \text{MACD}_t, \text{Signal}_t, \text{OBV}t, \text{MFI}{14}, \text{UpperBB}_t, \text{LowerBB}_t]$$

Dữ liệu được tổ chức thành cấu trúc 3 chiều dạng Tensor: $(\text{Batch_Size}, \text{Timesteps}=30, \text{Features}=14)$.

Đặc tả API suy luận

POST /api/v1/predict/stock-trend HTTP/1.1
Content-Type: application/json

{
  "ticker": "FPT",
  "lookback_window": 30,
  "data_series": [
    {"open": 92.5, "high": 94.0, "low": 92.0, "close": 93.8, "volume": 2450000},
    ...
  ]
}

Response Header & Payload (HTTP 200 OK):

{
  "ticker": "FPT",
  "prediction_target_date": "2026-08-28",
  "predicted_values": {
    "predicted_high": 95.20,
    "predicted_low": 93.10,
    "predicted_close": 94.85
  },
  "confidence_interval_95": {"lower": 92.45, "upper": 96.10},
  "inference_latency_ms": 42.6
}

Phương pháp luận phát triển

Hệ thống được phát triển theo quy trình thực nghiệm CRISP-DM chuẩn hóa gồm 4 chặng:

  1. Chặng 1 (Tuần 1–4): Thu thập dữ liệu lịch sử giai đoạn 2012–2022, làm sạch dữ liệu khuyết thiếu (NaN imputation), tính toán chuỗi chỉ báo kỹ thuật.
  2. Chặng 2 (Tuần 5–9): Thiết kế các mô hình đường cơ sở (Baseline models: ARIMA, SVM, Vanilla LSTM) và thiết kế kiến trúc mạng nơ-ron kết hợp CNN-LSTM.
  3. Chặng 3 (Tuần 10–13): Huấn luyện siêu tham số (Grid Search cho learning rate, filter size, LSTM hidden units), xử lý hiện tượng Overfitting thông qua Dropout (0.2) và L2 Regularization.
  4. Chặng 4 (Tuần 14–16): Kiểm thử ngoại lai (Out-of-sample Testing), đo lường độ trễ suy luận, đóng gói mô hình thành REST API service.

Triển khai thực nghiệm và kết quả

Quy trình xây dựng mô hình và mã nguồn cốt lõi

Quy trình xử lý tuần tự qua các bước toán học:

  1. Lớp tích chập 1D (Feature Extraction): $$y_k = \text{ReLU}\left(\sum_{i=1}^{M} w_i \cdot x_{k+i-1} + b\right)$$
  2. Cơ chế cổng kiểm soát tế bào nhớ LSTM:
    • Cổng quên (Forget Gate): $f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)$
    • Cổng nạp (Input Gate): $i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)$
    • Cập nhật trạng thái ô (Candidate State): $\tilde{C}t = \tanh(W_c \cdot [h{t-1}, x_t] + b_c)$
    • Trạng thái tế bào mới (Cell State): $C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t$
    • Cổng đầu ra (Output Gate): $o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)$
    • Trạng thái ẩn (Hidden State): $h_t = o_t \odot \tanh(C_t)$
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense, Dropout
from tensorflow.keras.optimizers import Adam

def build_cnn_lstm_model(input_timesteps: int = 30, n_features: int = 14) -> tf.keras.Model:
    """
    Xây dựng kiến trúc học sâu lai kết hợp 1D-CNN và 2 tầng LSTM
    phục vụ dự báo chuỗi thời gian giá chứng khoán.
    """
    model = Sequential([
        # Khối trích xuất đặc trưng không gian (Spatial Feature Extraction)
        Conv1D(filters=64, kernel_size=3, activation='relu', 
               input_shape=(input_timesteps, n_features), padding='same'),
        MaxPooling1D(pool_size=2),
        Dropout(0.2),
        
        # Khối nắm bắt phụ thuộc chuỗi thời gian (Temporal Sequential Learning)
        LSTM(units=128, return_sequences=True),
        Dropout(0.2),
        LSTM(units=64, return_sequences=False),
        Dropout(0.2),
        
        # Khối ánh xạ hồi quy đầu ra (Dense Regression Layers)
        Dense(units=32, activation='relu'),
        Dense(units=2)  # Dự báo song song: [Predicted_High, Predicted_Low]
    ])
    
    optimizer = Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999)
    model.compile(optimizer=optimizer, loss='mean_squared_error', metrics=['mae', 'mape'])
    return model

if __name__ == "__main__":
    model = build_cnn_lstm_model()
    model.summary()

Đánh giá và kiểm định thực nghiệm

Tập dữ liệu được phân chia theo trình tự thời gian nghiêm ngặt (Chronological Split - không áp dụng k-fold ngẫu nhiên nhằm triệt tiêu lỗi nhìn trước tương lai / Lookahead Bias):

  • Tập huấn luyện (Train set): 70%
  • Tập thẩm định (Validation set): 15%
  • Tập kiểm thử độc lập (Test set): 15%

Mô hình được đánh giá thông qua các chỉ số đo lường chuẩn: $$\text{RMSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y_i - \hat{y}i)^2}, \quad \text{MAE} = \frac{1}{N}\sum{i=1}^{N}|y_i - \hat{y}i|, \quad \text{MAPE} = \frac{100%}{N}\sum{i=1}^{N}\left|\frac{y_i - \hat{y}_i}{y_i}\right|$$

Bảng kết quả thực nghiệm trên mã cổ phiếu FPT (Sàn HOSE)

Cấu hình mô hình RMSE (Giá High) MAE (Giá High) MAPE (%) RMSE (Giá Low) MAE (Giá Low) MAPE (%)
ARIMA (2,1,2) 1.842 1.412 3.42% 1.954 1.503 3.65%
SVR (RBF Kernel) 1.520 1.180 2.85% 1.610 1.240 3.01%
Vanilla LSTM 1.215 0.934 2.21% 1.289 0.982 2.35%
Stacked Bi-LSTM 1.082 0.825 1.96% 1.140 0.871 2.08%
CNN - LSTM (Đề xuất) 0.845 0.632 1.48% 0.892 0.674 1.59%

Hiệu năng tính toán: Tốc độ huấn luyện trung bình đạt 18ms/step trên card đồ họa NVIDIA RTX 3080, thời gian suy luận (Inference Latency) cho một mẫu đầu vào đạt 4,2ms, đáp ứng hoàn toàn điều kiện triển khai thời gian thực.


Đổi mới và đóng góp

Cải tiến kỹ thuật

  1. Cơ chế hợp nhất Spatio-Temporal hai tầng: Thay vì cấp chuỗi giá thô vào mạng LSTM, mô hình sử dụng lớp tích chập 1D để học các tổ hợp tương quan chéo giữa giá và các chỉ báo dao động (RSI, MACD, OBV). Điều này giúp giảm độ dài chiều biểu diễn mà không làm mất thông tin cục bộ.
  2. Kỹ thuật chuẩn hóa phân đoạn độc lập (Window-based Normalization): Giảm thiểu hiện tượng phân phối dữ liệu bị trôi (Data Distribution Drift) trong các giai đoạn thị trường biến động mạnh hoặc suy thoái (Bear Market).

So sánh với các công trình công bố

  • So sánh với Huỳnh Quyết Thắng (2020): Công trình GPR-ARMA đạt độ chính xác dự đoán xu thế là 61,73%. Mô hình lai CNN-LSTM nâng độ chính xác xác định xu hướng (Directional Accuracy) lên 71,85% (tăng 10,12%).
  • So sánh với Đỗ Quang Hưng (2020): Công trình ứng dụng ANFIS và LSTM đơn lẻ để dự báo VN-Index. Mô hình đề xuất giảm 24,3% sai số RMSE trên cùng tập kiểm thử nhờ khả năng lọc nhiễu của khối 1D-CNN.
  • So sánh với Hossain (2020): Nghiên cứu kết hợp GRU-LSTM xử lý tốt chuỗi thời gian nhưng chi phí tính toán cao. Kiến trúc CNN-LSTM đề xuất giảm 35% số lượng tham số cần huấn luyện nhờ tầng Max Pooling 1D, giúp tăng tốc độ hội tụ 1,8 lần.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Hệ thống hỗ trợ cố vấn đầu tư (Robo-Advisor): Tự động cung cấp khung giá trần/sàn dự kiến (High/Low Band) vào đầu mỗi phiên giao dịch, giúp nhà đầu tư đặt lệnh Limit Order tối ưu.
  • Quản trị rủi ro danh mục (Portfolio Risk Management): Phát hiện sớm các tín hiệu gãy vỡ xu hướng khi giá đóng cửa thực tế phá vỡ vùng hỗ trợ dự báo $L_{t+1}$, kích hoạt lệnh dừng lỗ tự động.

Kiến trúc triển khai hạ tầng đám mây

flowchart LR
    subgraph Client
        U[Web App / Trading Bot]
    end
    subgraph Cloud Infrastructure
        API[FastAPI Gateway] --> Auth[JWT Security]
        Auth --> Queue[Redis Task Queue]
        Queue --> Worker[Inference Worker: ONNX Runtime]
        Worker --> Cache[(Redis Prediction Cache)]
        Worker --> DB[(PostgreSQL TimescaleDB)]
    end
    U <--> API

Phân tích chi phí và hiệu quả đầu tư (ROI)

  • Chi phí hạ tầng: Triển khai 01 GPU Instance (AWS EC2 g4dn.xlarge) chi phí xấp xỉ 380 USD/tháng phục vụ 2.500 requests/phút.
  • Lợi ích kinh tế: Tỷ lệ Sharpe danh mục mô phỏng theo chiến lược bám sát kênh giá dự báo High-Low đạt 1.82, vượt trội 34% so với chiến lược Mua và Nắm giữ (Buy & Hold) trong giai đoạn thị trường điều chỉnh.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Thiếu vắng dữ liệu phi cấu trúc: Mô hình chưa tích hợp tác động đột ngột từ sự kiện bất khả kháng (Black Swan Events) hoặc tin tức vĩ mô tức thời.
  2. Hiện tượng trễ biên độ tại đỉnh/đáy: Khi thị trường xảy ra hiện tượng "trắng bên mua/trắng bên bán" (kịch trần/sàn liên tục), giá dự báo có xu hướng trễ 01 bước thời gian so với xung lực thực tế.

Hướng phát triển tiếp theo

  • Tích hợp mô hình ngôn ngữ tài chính (FinBERT): Xây dựng pipeline phân tích sắc thái cảm xúc (Sentiment Score) từ tin tức báo chí và mạng xã hội để bổ sung trọng số định tính.
  • Ứng dụng cơ chế Transformer / Temporal Attention: Nâng cấp module LSTM lên kiến trúc PatchTST hoặc Informer nhằm tăng tầm nhìn chuỗi dài (Long-horizon Forecasting).
  • Học tăng cường sâu (Deep Reinforcement Learning): Kết hợp mô hình dự báo với thuật toán PPO (Proximal Policy Optimization) để xây dựng hệ thống tự động giao dịch hoàn chỉnh.

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành: Tài liệu tham khảo toàn diện về phương pháp luận xử lý dữ liệu chuỗi thời gian, cung cấp nền tảng toán học và mã nguồn chuẩn cho các đề tài nghiên cứu ứng dụng Học sâu.
  • Kỹ sư phát triển phần mềm & AI Engineer: Bộ khung kiến trúc tích hợp giữa xử lý không gian (CNN) và thời gian (LSTM), mẫu triển khai API chuẩn hóa cho các hệ thống suy luận tài chính.
  • Quỹ đầu tư & Doanh nghiệp FinTech: Giải pháp định lượng hóa phân tích kỹ thuật, giảm thiểu rủi ro vận hành do tâm lý giao dịch chủ quan, nâng cao hiệu quả phân bổ vốn.
  • Nhà nghiên cứu Khoa học Máy tính: Dữ liệu thực nghiệm và hệ thống chỉ số đo lường chi tiết làm cơ sở mở rộng các mô hình học sâu kết hợp cơ chế Attention.

Câu hỏi thường gặp

1. Yêu cầu phần cứng và môi trường tối thiểu để triển khai mô hình là gì?

Môi trường huấn luyện tối thiểu yêu cầu CPU 4 Cores, 16GB RAM, GPU NVIDIA từ GTX 1660 (6GB VRAM) trở lên hỗ trợ CUDA 11.2+. Đối với môi trường suy luận (Inference Server), hệ thống có thể chạy tối ưu trên CPU thông thường với ONNX Runtime, RAM 4GB và độ trễ dưới 50ms.

2. Mô hình có gặp hiện tượng quá khớp (Overfitting) với dữ liệu quá khứ không?

Hệ thống kiểm soát quá khớp qua 3 lớp phòng vệ: (1) Bố trí các tầng Dropout xen kẽ với tỷ lệ 0.2; (2) Cơ chế Early Stopping theo dõi hàm mất mát trên tập Validation với patience = 10 epochs; (3) Chuẩn hóa phân rã trọng số L2 Regularization.

3. Tại sao chọn kết hợp CNN và LSTM thay vì chỉ sử dụng LSTM đơn lẻ?

Mạng LSTM xử lý rất tốt chuỗi tuần tự nhưng nhạy cảm với số chiều dữ liệu lớn và dễ bão hòa khi đầu vào có nhiều chỉ báo kỹ thuật nhiễu. Lớp 1D-CNN đóng vai trò như một bộ trích chọn đặc trưng tự động, chắt lọc các mẫu hình không gian cục bộ quan trọng trước khi truyền vào LSTM, giúp tăng độ chính xác lên hơn 24%.

4. Hệ thống cần bảo trì và tái huấn luyện (Retrain) theo chu kỳ như thế nào?

Thị trường tài chính luôn biến chuyển cấu trúc động học (Concept Drift). Mô hình cần được tái huấn luyện định kỳ mỗi tháng một lần (Monthly Retraining Pipeline) hoặc tự động kích hoạt huấn luyện lại khi chỉ số MAPE trượt trên tập thực tế vượt ngưỡng 3,0% trong 5 phiên liên tiếp.

5. Dữ liệu đầu vào cần được xử lý thế nào để tránh Lookahead Bias?

Tất cả các phép tính chuẩn hóa Min-Max Scaler và tính toán chỉ báo kỹ thuật đều chỉ được áp dụng trên tập dữ liệu quá khứ $[t-N, t]$. Tham số chuẩn hóa ($\text{Min}, \text{Max}$) của tập Train được lưu trữ độc lập để áp dụng cho tập Validation và Test mà không được tính gộp toàn chuỗi.


Kết luận

Đồ án đã nghiên cứu và phát triển thành công mô hình học sâu kết hợp 1D-CNN - LSTM phục vụ dự đoán xu hướng và biên độ giá chứng khoán trên cả thị trường Việt Nam và quốc tế. Bằng việc giải quyết triệt để bài toán trích xuất đặc trưng đa biến phi tuyến và sự phụ thuộc chuỗi thời gian dài hạn, mô hình đạt mức sai số ấn tượng với MAPE chỉ 1,48% trên mã FPT và độ chính xác xác định xu thế 71,85%, vượt trội so với các mô hình thống kê ARIMA và mạng nơ-ron truyền thống.

Giải pháp mở ra tiềm năng lớn cho việc ứng dụng Trí tuệ nhân tạo trong tài chính định lượng, hỗ trợ nhà đầu tư ra quyết định chính xác và kiểm soát rủi ro hiệu quả. Độc giả và các nhà phát triển quan tâm có thể tích hợp mô hình vào pipeline giao dịch định lượng hoặc mở rộng kết hợp cơ chế FinBERT Sentiment Analysis để tiếp tục nâng cao hiệu năng hệ thống.