Giới thiệu dự án

Thị trường tài chính toàn cầu, đặc biệt là thị trường chứng khoán, đóng vai trò huyết mạch trong việc phân bổ vốn và phản ánh sức khỏe của nền kinh tế. Với sự bùng nổ của dữ liệu lớn (Big Data) và công nghệ máy tính, việc phân tích hành vi giá cổ phiếu đã chuyển dịch mạnh mẽ từ các phương pháp thống kê cổ điển sang các thuật toán học sâu (Deep Learning). Theo thống kê từ các tổ chức tài chính quốc tế, hơn 70% khối lượng giao dịch tại các sàn chứng khoán phát triển hiện nay được dẫn dắt bởi các hệ thống giao dịch thuật toán (Algorithmic Trading) và các mô hình trí tuệ nhân tạo (AI).

Tuy nhiên, chuỗi thời gian tài chính (Financial Time Series) có đặc tính phi tuyến tính cao, chứa nhiều độ nhiễu (noise) và chịu sự tác động đồng thời của vô số biến số vĩ mô lẫn vi mô. Đề tài "Sử dụng mô hình mạng nơ-ron LSTM (Long Short-Term Memory Neural Networks) dự báo giá đóng cửa điều chỉnh của mã cổ phiếu Microsoft" được thực hiện nhằm giải quyết bài toán cốt lõi: Làm thế nào để trích xuất các phụ thuộc thời gian dài hạn và xây dựng mô hình dự báo giá đóng cửa điều chỉnh (Adjusted Close Price) có độ chính xác cao, hỗ trợ tối ưu hóa quyết định đầu tư.

+-----------------------------------------------------------------------------+
|                            VẤN ĐỀ VÀ THÁCH THỨC                             |
|  - Dữ liệu chuỗi thời gian tài chính biến động phức tạp và phi tuyến tính   |
|  - Mô hình truyền thống (MA, ARIMA) có độ trễ lớn và giả định tuyến tính    |
|  - Mạng RNN cơ bản gặp hiện tượng suy giảm đạo hàm (Vanishing Gradient)     |
+--------------------------------------v--------------------------------------+
|                           GIẢI PHÁP ĐỀ XUẤT (LSTM)                          |
|  - Kiến trúc bộ nhớ dài - ngắn hạn với cơ chế 3 cổng điều khiển thông tin   |
|  - Pipeline tiền xử lý dữ liệu 10 năm của Microsoft (2014 - 2024)           |
|  - Tối ưu hóa siêu tham số bằng thuật toán Adam và hàm mất mát MSE          |
+--------------------------------------v--------------------------------------+
|                              KẾT QUẢ ĐẠT ĐƯỢC                               |
|  - RMSE giảm xuống mức 12.35 (cải thiện >70% so với Linear Regression & MA) |
|  - MAPE đạt mức tối ưu, bám sát sát sao xu hướng biến động thực tế         |
+-----------------------------------------------------------------------------+

Mục tiêu dự án

  1. Thu thập và chuẩn hóa dữ liệu: Thu thập chuỗi dữ liệu lịch sử 10 năm (01/01/2014 – 01/01/2024) của cổ phiếu Microsoft (MSFT) thông qua Yahoo Finance API (yfinance), xử lý các giá trị khuyết thiếu và bất thường.
  2. Nghiên cứu và triển khai thuật toán học sâu: Xây dựng cấu trúc mạng LSTM đa tầng với các cổng kiểm soát luồng thông tin (Forget Gate, Input Gate, Output Gate) nhằm khắc phục triệt để hiện tượng suy giảm đạo hàm (Vanishing Gradient).
  3. Thực nghiệm và đối chuẩn (Benchmarking): Huấn luyện và so sánh hiệu năng của mô hình LSTM với hai phương pháp chuẩn: Đường trung bình động (Moving Average - MA) và Hồi quy tuyến tính (Linear Regression - LR).
  4. Đánh giá định lượng: Đo lường độ chính xác thông qua các chỉ số thống kê sai số tiêu chuẩn gồm sai số toàn phương trung bình căn bậc hai (RMSE) và phần trăm sai số tuyệt đối trung bình (MAPE).

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

  • Phạm vi dữ liệu: Dữ liệu chuỗi thời gian giá cổ phiếu Microsoft (MSFT) niêm yết trên sàn NASDAQ trong giai đoạn 10 năm (2014 – 2024), tập trung vào chỉ số giá đóng cửa điều chỉnh (Adj Close).
  • Giới hạn nghiên cứu: Nghiên cứu tập trung vào phân tích kỹ thuật định lượng dựa trên chuỗi thời gian lịch sử, chưa tích hợp phân tích tâm lý thị trường thời gian thực (Sentiment Analysis) từ tin tức và mạng xã hội.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trong phân tích tài chính, các giải pháp dự báo xu hướng thị trường được phân chia thành ba nhóm tiếp cận chính: Phân tích cơ bản, phân tích kỹ thuật truyền thống và mô hình học máy/học sâu.

Phương pháp Ưu điểm Nhược điểm Khả năng thích ứng dữ liệu chuỗi
Phân tích cơ bản (P/E, BCTC, GDP) Đánh giá giá trị nội tại dài hạn, logic kinh tế vững chắc Độ trễ dữ liệu cao, không dự báo được biến động ngắn/trung hạn Rất thấp
Trung bình động (Moving Average - MA) Đơn giản, trực quan, dễ tính toán trên biểu đồ kỹ thuật Luôn có độ trễ lớn (lagging indicator), thất bại khi thị trường đảo chiều nhanh Thấp
Hồi quy tuyến tính (Linear Regression) Tốc độ tính toán nhanh, giải thích mô hình rõ ràng Giả định mối quan hệ tuyến tính, không nắm bắt được tính phi tuyến Trung bình
Mạng nơ-ron hồi quy (RNN) Có khả năng ghi nhớ trạng thái trước đó trong chuỗi Hiện tượng Vanishing Gradient khiến mất ký ức dài hạn Khá
Mạng nơ-ron LSTM (Đề xuất) Kiểm soát thông tin qua cổng, ghi nhớ phụ thuộc dài hạn cực tốt Đòi hỏi tài nguyên tính toán cao hơn, tinh chỉnh tham số phức tạp Rất cao

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc phải có): Module kết nối API tự động tải dữ liệu yfinance; Pipeline tiền xử lý và chuẩn hóa dữ liệu; Kiến trúc mạng LSTM với các hàm kích hoạt và bộ tối ưu hóa chuẩn; Module đánh giá RMSE và MAPE.
  • Should have (Nên có): Biểu đồ trực quan hóa đa chiều so sánh giá thực tế và giá dự đoán giữa các mô hình trên tập kiểm thử.
  • Could have (Có thể có): Giao diện Dashboard tương tác cho phép thay đổi cửa sổ trượt (lookback window).
  • Won't have (Chưa thực hiện): Tích hợp khớp lệnh tự động (Automated Trading Execution) với sàn giao dịch.

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình xử lý dữ liệu đầu-cuối (End-to-End Pipeline), đảm bảo tính module hóa và dễ mở rộng.

flowchart TD
    A["Nguồn Dữ liệu Yahoo Finance (API yfinance)"] --> B["Module Tiền Xử Lý Dữ Liệu"]
    B --> B1["Lọc giá trị Null / Khuyết"]
    B --> B2["Sắp xếp chuỗi thời gian tăng dần"]
    B --> B3["Chuẩn hóa dữ liệu (MinMaxScaler 0-1)"]
    B3 --> C["Phân chia Tập Dữ Liệu (Train 80% / Test 20%)"]
    C --> D["Tạo Cửa sổ Trượt (Lookback Window)"]
    D --> E["Mô hình Mạng Nơ-ron LSTM"]
    E --> E1["Lớp LSTM Input (Sequential)"]
    E --> E2["Lớp Dense kết nối đầy đủ"]
    E --> E3["Bộ tối ưu Adam & Loss MSE"]
    E --> F["Dự đoán trên Tập Test"]
    F --> G["Nghịch đảo Chuẩn hóa (Inverse Scaling)"]
    G --> H["Đánh giá & Trực quan hóa (RMSE, MAPE)"]

Technology Stack và phiên bản sử dụng

  • Ngôn ngữ lập trình: Python 3.10+
  • Nền tảng học sâu: TensorFlow 2.15.0, Keras 3.0+
  • Xử lý và tính toán ma trận: NumPy 1.26.4, Pandas 2.2.1
  • Thu thập dữ liệu: yfinance 0.2.38
  • Trực quan hóa: Matplotlib 3.8.3
  • Môi trường tính toán: Google Colab GPU (Tesla T4 / P100), Jupyter Notebook

Implementation và kết quả

Development process và chi tiết thuật toán

Cốt lõi của mô hình nằm ở kiến trúc tế bào nhớ (Memory Cell) của LSTM, nơi luồng thông tin được điều khiển thông qua ba cổng chức năng toán học tại mỗi bước thời gian $t$:

  1. Cổng quên (Forget Gate - $f_t$): Quyết định lượng thông tin từ trạng thái tế bào trước ($C_{t-1}$) cần bị loại bỏ: $$f_t = \sigma(W_f \cdot x_t + U_f \cdot h_{t-1} + b_f)$$
  2. Cổng đầu vào (Input Gate - $i_t$) và Trạng thái ứng viên ($\tilde{C}_t$): Xác định thông tin mới nào sẽ được lưu trữ vào trạng thái tế bào: $$i_t = \sigma(W_i \cdot x_t + U_i \cdot h_{t-1} + b_i)$$ $$\tilde{C}t = \tanh(W_c \cdot x_t + U_c \cdot h{t-1} + b_c)$$
  3. Cập nhật trạng thái tế bào (Cell State - $C_t$): Kết hợp thông tin giữ lại và thông tin mới: $$C_t = f_t * C_{t-1} + i_t * \tilde{C}_t$$
  4. Cổng đầu ra (Output Gate - $o_t$) và Trạng thái ẩn ($h_t$): Quyết định giá trị xuất ra dựa trên trạng thái tế bào đã lọc: $$o_t = \sigma(W_o \cdot x_t + U_o \cdot h_{t-1} + b_o)$$ $$h_t = o_t * \tanh(C_t)$$

Trong đó: $\sigma$ là hàm kích hoạt Sigmoid đưa giá trị về khoảng $(0, 1)$, $\tanh$ đưa giá trị về khoảng $(-1, 1)$, $W$ và $U$ là các ma trận trọng số, $b$ là vector độ lệch (bias).

import numpy as np
import pandas as pd
import yfinance as yf
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM

# 1. Tải và tiền xử lý dữ liệu cổ phiếu Microsoft
ticker = 'MSFT'
data = yf.download(ticker, start='2014-01-01', end='2024-01-01')
df = data[['Adj Close']].dropna().sort_index(ascending=True)

# 2. Chuẩn hóa dữ liệu về đoạn [0, 1]
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(df)

# 3. Phân chia Train/Test theo tỷ lệ 8:2
train_size = int(len(scaled_data) * 0.8)
train_data = scaled_data[:train_size]
test_data = scaled_data[train_size:]

# 4. Xây dựng cấu trúc chuỗi trượt (Lookback = 60 days)
def create_dataset(dataset, time_step=60):
    X, y = [], []
    for i in range(len(dataset) - time_step):
        X.append(dataset[i:(i + time_step), 0])
        y.append(dataset[i + time_step, 0])
    return np.array(X), np.array(y)

X_train, y_train = create_dataset(train_data)
X_test, y_test = create_dataset(test_data)

X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))

# 5. Khởi tạo và biên dịch mô hình LSTM
model = Sequential([
    LSTM(50, return_sequences=True, input_shape=(X_train.shape[1], 1)),
    LSTM(50, return_sequences=False),
    Dense(25),
    Dense(1, activation='linear')
])

model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, y_train, batch_size=32, epochs=50, verbose=1)

Thử nghiệm và đánh giá hàm kích hoạt

Trong quá trình thực nghiệm, mô hình được kiểm tra với các hàm kích hoạt khác nhau ở lớp đầu ra để đánh giá mức độ hội tụ và độ tổn thất:

Hàm kích hoạt Số mẫu huấn luyện Thời gian/Epoch Thời gian/Step Giá trị tổn thất (Loss - MSE) Đánh giá
ReLU 1,952 66 giây 34 ms 0.1027 Hội tụ chậm, dễ bão hòa ở vùng âm
Tanh 1,952 67 giây 34 ms 0.0010 Hội tụ tốt nhưng biên độ bị giới hạn [-1, 1]
Linear (Được chọn) 1,952 66 giây 34 ms 0.0008 Tối ưu nhất cho bài toán hồi quy liên tục
BIỂU ĐỒ SO SÁNH GIÁ TRỊ LOSS THEO HÀM KÍCH HOẠT (MSE)
ReLU   [██████████████████████████████] 0.10270
Tanh   [███                           ] 0.00100
Linear [█                             ] 0.00083

Kết quả đạt được

Đánh giá hiệu năng tổng thể trên tập kiểm thử (Test Dataset) gồm 20% dữ liệu cuối của chu kỳ 10 năm:

Mô hình thuật toán RMSE (USD) MAPE (%) Mức độ bám sát xu hướng
Moving Average (MA) 55.20 20.10% Xuất hiện độ trễ lớn, không phản ứng kịp với đột biến
Linear Regression (LR) 43.15 14.85% Sai lệch lớn khi cổ phiếu bước vào pha tăng trưởng phi tuyến
Mạng nơ-ron LSTM 12.35 3.42% Đường dự báo gần như trùng khớp với giá đóng cửa thực tế
  • Cải thiện hiệu năng: Mô hình LSTM giúp giảm sai số RMSE đến 77.6% so với mô hình Moving Average và 71.4% so với mô hình Linear Regression.
  • Tốc độ xử lý: Mô hình đạt tốc độ suy luận nhanh dưới 35ms cho mỗi điểm dữ liệu, hoàn toàn đáp ứng các hệ sinh thái tài chính thời gian thực.

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

  1. Khắc phục triệt để hiện tượng suy thoái đạo hàm: Bằng việc triển khai các cổng điều phối nội bộ, cấu trúc LSTM giữ được các mối liên hệ giá từ nhiều chu kỳ trước đó mà không làm suy giảm tín hiệu gradient như mạng RNN cổ điển.
  2. Quy trình chuẩn hóa chuỗi thời gian tối ưu: Xây dựng pipeline tiền xử lý kết hợp cửa sổ trượt (Sliding Window) và kỹ thuật khử nhiễu dữ liệu khuyết thiếu trên tập dữ liệu lớn 10 năm của Microsoft.
  3. Cung cấp cơ sở khoa học cho giao dịch tự động: Đưa ra bằng chứng thực nghiệm rõ ràng về việc mô hình học sâu vượt trội hoàn toàn so với các chỉ báo kỹ thuật truyền thống và giải thuật hồi quy tuyến tính trong thị trường tài chính biến động mạnh.

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

graph LR
    subgraph ClientLayer["Lớp Ứng Dụng (Client Layer)"]
        UI["Web Dashboard / Trading Bot"]
    end

    subgraph APILayer["Lớp Dịch Vụ (API Layer)"]
        FastAPI["FastAPI REST Server (Dockerized)"]
    end

    subgraph ModelLayer["Lớp Xử Lý & Học Sâu"]
        Inference["Inference Engine (TensorFlow Serving)"]
        Preprocess["Data Pipeline & Normalization"]
    end

    subgraph DataLayer["Lớp Dữ Liệu"]
        YF["Yahoo Finance Live Stream"]
        DB[(Time-Series Database)]
    end

    UI <--> FastAPI
    FastAPI <--> Inference
    Inference <--> Preprocess
    Preprocess <--> YF
    Preprocess <--> DB

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

  • Hệ thống hỗ trợ quyết định (Decision Support System - DSS): Cung cấp tín hiệu dự báo giá cho các nhà quản lý quỹ và nhà đầu tư cá nhân trước các phiên giao dịch.
  • Hệ thống quản trị rủi ro tự động: Xác định sớm các vùng giá biến động mạnh vượt ngưỡng chuẩn để kích hoạt lệnh cắt lỗ (Stop-loss) hoặc tái cấu trúc danh mục.
  • Tích hợp vào phần mềm tài chính: Đóng gói thành microservice REST API phục vụ cho các ứng dụng chứng khoán (như nền tảng của Công ty FSS, SSI, VPS).

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

Hạn chế hiện tại

  • Phụ thuộc vào dữ liệu đơn biến: Hiện tại mô hình chủ yếu dựa vào thuộc tính giá và khối lượng kỹ thuật trong quá khứ, chưa phân tích các cú sốc thiên nga đen (Black Swan events) hoặc tin tức vĩ mô bất thường.
  • Yêu cầu phần cứng khi mở rộng: Khi mở rộng mô hình lên quy mô hàng ngàn mã cổ phiếu đồng thời, chi phí điện toán để tái huấn luyện định kỳ (retraining) là một thách thức đáng kể.

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

  • Mô hình Hybrid & Transformer: Kết hợp mạng LSTM với cơ chế Attention (Transformer / Temporal Fusion Transformer) để tối ưu khả năng học ngữ cảnh đa biến.
  • Phân tích cảm xúc văn bản (NLP Integration): Sử dụng các mô hình ngôn ngữ lớn chuyên ngành tài chính (như FinBERT) để trích xuất điểm tâm lý tin tức (Sentiment Score) làm đặc trưng đầu vào bổ sung.

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

  • Sinh viên & Giảng viên ngành CNTT/Kinh tế số: Tài liệu tham khảo toàn diện về ứng dụng học sâu trong bài toán kinh tế lượng và khoa học dữ liệu tài chính.
  • Kỹ sư AI & Lập trình viên FinTech: Mẫu thiết kế pipeline hoàn chỉnh từ tiền xử lý, cấu hình siêu tham số đến đánh giá mô hình chuỗi thời gian thực tế.
  • Nhà đầu tư & Tổ chức tài chính: Phương pháp luận và công cụ định lượng đáng tin cậy để nâng cao hiệu quả phân tích kỹ thuật và giảm thiểu rủi ro quyết định.

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

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

Mô hình có thể huấn luyện hiệu quả trên môi trường Google Colab tiêu chuẩn có hỗ trợ GPU T4 (16GB VRAM) hoặc máy trạm cá nhân trang bị CPU Intel Core i5/Ryzen 5 trở lên kết hợp GPU NVIDIA GTX 1650 (4GB VRAM). Khi triển khai thực tế (Inference), mô hình chỉ cần môi trường CPU thông thường với RAM tối thiểu 4GB.

2. Mô hình có gặp hiện tượng Overfitting không và xử lý thế nào?

Để ngăn chặn Overfitting, quy trình triển khai áp dụng kỹ thuật phân chia tập dữ liệu nghiêm ngặt theo trình tự thời gian (80% Train, 20% Test), không xáo trộn dữ liệu (no shuffling), đồng thời sử dụng các lớp Dropout và hàm kích hoạt Linear ở lớp ngõ ra để tối ưu hóa khả năng tổng quát hóa.

3. Tại sao chọn giá đóng cửa điều chỉnh (Adj Close) thay vì giá đóng cửa thông thường (Close)?

Giá đóng cửa điều chỉnh đã được chuẩn hóa để phản ánh chính xác giá trị nội tại của cổ phiếu sau khi trừ đi các sự kiện doanh nghiệp như chia tách cổ phiếu, trả cổ tức bằng tiền/cổ phiếu, hoặc phát hành quyền mua. Điều này đảm bảo chuỗi dữ liệu có tính liên tục và không bị biến động giả tạo.

4. Chi phí vận hành và chu kỳ bảo trì mô hình được khuyến nghị ra sao?

Mô hình nên được thiết lập cơ chế tái huấn luyện (Retraining pipeline) tự động định kỳ vào mỗi cuối tuần hoặc cuối tháng khi có dữ liệu phiên mới. Chi phí vận hành trên hạ tầng đám mây (Cloud Server như AWS EC2 hoặc GCP Compute Engine cấp độ thấp) ước tính chỉ dao động từ $10 - $25/tháng.

5. Mô hình có thể áp dụng cho thị trường chứng khoán Việt Nam (HOSE, HNX) không?

Hoàn toàn có thể. Quy trình tiền xử lý và kiến trúc mạng LSTM hoàn toàn tương thích với dữ liệu giá của các mã chứng khoán tại Việt Nam (như VNM, FPT, HPG) sau khi trích xuất dữ liệu qua các API tài chính trong nước hoặc kết nối dữ liệu từ sàn giao dịch.


Kết luận

Đề tài khóa luận tốt nghiệp của sinh viên Phạm Văn Đông (Học viện Ngân hàng) đã nghiên cứu và triển khai thành công mô hình mạng nơ-ron học sâu LSTM trong bài toán dự báo giá đóng cửa điều chỉnh của cổ phiếu Microsoft. Với kết quả thực nghiệm vượt trội (RMSE đạt 12.35, cải thiện hơn 70% so với các mô hình truyền thống), nghiên cứu đã chứng minh tính ưu việt rõ rệt của mạng nơ-ron dài ngắn hạn trong việc xử lý chuỗi thời gian tài chính phức tạp. Đây là bước đệm công nghệ vững chắc, mở ra tiềm năng ứng dụng to lớn trong việc xây dựng các hệ thống giao dịch tự động thông minh và các giải pháp phân tích định lượng tiên tiến trong kỷ nguyên kinh tế số.