Bối cảnh và vấn đề nghiên cứu

Thị trường chứng khoán là kênh dẫn vốn quan trọng trong nền kinh tế, ghi nhận sự biến động mạnh mẽ trong những năm gần đây. Giai đoạn dịch bệnh Covid-19 và thời kỳ phục hồi kinh tế chứng kiến số lượng lớn nhà đầu tư cá nhân tham gia giao dịch. Tuy nhiên, phần lớn nhà đầu tư mới thiếu kiến thức chuyên sâu về phân tích kỹ thuật, phân tích cơ bản và quản trị danh mục, dẫn đến việc ra quyết định phụ thuộc vào các luồng thông tin không chính thống và chịu rủi ro thua lỗ cao. Trước sự phát triển của công nghệ thông tin và khoa học dữ liệu, các công cụ phân tích tự động dựa trên học máy trở thành giải pháp hỗ trợ thiết thực cho việc ra quyết định đầu tư.

Mục tiêu nghiên cứu của đồ án được xác định gồm ba nhiệm vụ chính:

  1. Nghiên cứu cơ sở lý thuyết về bài toán dự báo chuỗi thời gian (Time Series Forecasting), mạng nơ-ron nhân tạo (ANN), mạng nơ-ron hồi quy (RNN) và kiến trúc Bộ nhớ dài - ngắn hạn (Long Short-Term Memory - LSTM).
  2. Xây dựng quy trình thu thập, tiền xử lý dữ liệu giá cổ phiếu từ thị trường chứng khoán Việt Nam (sàn VN-Index) và huấn luyện mô hình học sâu LSTM nhằm dự đoán xu hướng giá đóng cửa trong 3 ngày tiếp theo.
  3. Phân tích, thiết kế và phát triển ứng dụng di động hoàn chỉnh trên nền tảng Android, cho phép người dùng tra cứu thông tin doanh nghiệp, xem biểu đồ giá lịch sử và trực quan hóa kết quả dự đoán.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Chuỗi dữ liệu thời gian giá cổ phiếu (giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa, khối lượng giao dịch), cấu trúc mô hình LSTM và quy trình phát triển ứng dụng di động.
  • Phạm vi không gian: Các mã cổ phiếu niêm yết trên sàn giao dịch chứng khoán TP. Hồ Chí Minh (VN-Index) thuộc thị trường chứng khoán Việt Nam (thử nghiệm chi tiết trên các mã: AAS, QBS, AAT, PLC, FPT, DQC, FIT, HAG, DIG).
  • Phạm vi thời gian: Dữ liệu lịch sử giao dịch được thu thập trong khoảng thời gian tối đa 10 năm tính đến thời điểm thực hiện (năm 2024); mô hình tập trung dự đoán mức giá trong ngắn hạn (3 ngày tiếp theo).

Cơ sở lý thuyết và phương pháp

Đồ án dựa trên nền tảng lý thuyết về xử lý dữ liệu chuỗi thời gian tài chính và các mô hình học sâu:

  • Mạng nơ-ron nhân tạo (ANN): Hoạt động dựa trên nguyên lý liên kết nơ-ron sinh học, gồm lớp đầu vào (Input Layer), lớp ẩn (Hidden Layer) và lớp đầu ra (Output Layer). Mô hình sử dụng các hàm kích hoạt phi tuyến (Sigmoid, Tanh) và thuật toán lan truyền ngược (Backpropagation) để tối ưu hóa trọng số.
  • Mạng nơ-ron hồi quy (RNN): Cấu trúc mạng chứa các vòng lặp phản hồi cho phép lưu giữ thông tin tuần tự từ các bước thời gian trước đó qua trạng thái ẩn ($h_t$). Thuật toán huấn luyện lan truyền ngược theo thời gian (Backpropagation Through Time - BPTT) được áp dụng để tính toán gradient.
  • Mạng Bộ nhớ dài - ngắn hạn (LSTM): Đề xuất bởi Hochreiter & Schmidhuber (1997), giải quyết triệt để vấn đề suy giảm hoặc bùng nổ đạo hàm (vanishing/exploding gradient) của RNN thuần túy khi xử lý chuỗi dài. Cấu trúc tế bào LSTM gồm trạng thái tế bào ($C_t$) chạy xuyên suốt và 3 cổng điều khiển:
    • Cổng quên (Forget Gate): Sử dụng hàm sigmoid quyết định lượng thông tin quá khứ cần loại bỏ khỏi trạng thái tế bào.
    • Cổng vào (Input Gate): Kết hợp tầng sigmoid và tầng tanh để chọn lọc và tạo thông tin mới cần ghi vào trạng thái tế bào.
    • Cổng ra (Output Gate): Sử dụng tầng sigmoid kết hợp trạng thái tế bào qua hàm tanh để xác định giá trị đầu ra tại bước thời gian hiện tại.
    • Các biến thể được khảo sát: Peephole connections (Gers & Schmidhuber), mô hình nối cổng loại trừ - đầu vào và Gated Recurrent Unit (GRU).

Phương pháp nghiên cứu thực nghiệm và xây dựng hệ thống:

  • Phương pháp thu thập dữ liệu: Sử dụng kỹ thuật bóc tách dữ liệu web (Web Crawling) thông qua việc gửi HTTP Request lấy mã nguồn HTML từ trang web cophieu68.vn và khai thác thư viện vnstock.
  • Phương pháp tiền xử lý dữ liệu: Lọc bỏ bản ghi rỗng/không hợp lệ, thiết lập chỉ mục dữ liệu theo chuỗi ngày giao dịch, trích xuất 6 trường thông tin cốt lõi (Date, Open, High, Low, Close, Volume) và áp dụng kỹ thuật chuẩn hóa dữ liệu Min-Max Scaling đưa giá trị về đoạn $[0, 1]$.
  • Phương pháp xây dựng mô hình: Thiết lập mô hình hồi quy LSTM đơn biến dựa trên chuỗi 50 ngày giá đóng cửa trước đó để dự đoán giá của ngày tiếp theo. Dữ liệu được phân chia theo tỷ lệ 50% cho tập huấn luyện (Train) và 50% cho tập kiểm thử (Test). Mô hình sử dụng hàm tối ưu Adam và hàm mất mát sai số tuyệt đối trung bình (MAE).
  • Phương pháp đánh giá: Sử dụng các chỉ số thống kê sai số định lượng gồm MSE (Mean Squared Error), RMSE (Root Mean Square Error), MAE (Mean Absolute Error) và MAPE (Mean Absolute Percentage Error).

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo mô hình hai thành phần tách biệt: khối xử lý dữ liệu - học máy nền tảng và khối ứng dụng người dùng cuối trên di động.

Thành phần Công nghệ / Thư viện Chức năng chính
Xử lý dữ liệu & Huấn luyện Python, Vnstock, Keras, TensorFlow, Matplotlib Bóc tách HTML từ cophieu68, chuẩn hóa Min-Max, huấn luyện mạng LSTM (50 bước thời gian), xuất mô hình và lưu dữ liệu JSON
Lưu trữ dữ liệu File JSON (daa_<mã_chứng_khoán>.json) Lưu trữ có cấu trúc thông tin hồ sơ doanh nghiệp và chuỗi lịch sử giá cùng dữ liệu dự đoán
Ứng dụng di động (Client) Kotlin, Android SDK, Android Studio Cung cấp giao diện trực quan hóa dữ liệu biểu đồ, tra cứu mã chứng khoán, xem hồ sơ công ty và xem dự đoán giá
Môi trường thử nghiệm Android Virtual Device (AVD) Giả lập thiết bị di động Pixel 4 để kiểm thử chức năng giao diện và luồng hoạt động

Kiến trúc mô hình LSTM triển khai bao gồm:

  • Lớp đầu vào: Kích thước khối $(50, 1)$, nhận chuỗi giá đóng cửa của 50 phiên giao dịch liên tiếp liền kề.
  • Lớp ẩn 1 & Lớp ẩn 2: Hai tầng LSTM xử lý chuỗi tuần tự, chuyển giao trạng thái ẩn trung gian.
  • Lớp Dropout: Thiết lập tỷ lệ loại bỏ ngẫu nhiên 50% (giữ lại 50% trọng số) nhằm chống hiện tượng quá khớp (overfitting).
  • Lớp kết nối đầy đủ (Dense): Đưa ra 1 giá trị đầu ra tương ứng với giá dự đoán.

Các chức năng của hệ thống được phân rã thành hai phân hệ (module) chính:

  • Module dự đoán giá chứng khoán: Cho phép người dùng tìm kiếm mã cổ phiếu theo ký hiệu sàn VN-Index, hiển thị bảng thông số giao dịch phiên gần nhất, biểu đồ giá lịch sử dạng đường cho phép chạm điểm (interactive touch) xem chi tiết từng ngày và hiển thị đường giá dự đoán trong 3 phiên tới.
  • Module xem thông tin chi tiết ứng dụng: Hiển thị hướng dẫn sử dụng, nguyên tắc hoạt động của thuật toán và thông tin giới thiệu hệ thống.

Nội dung chính theo từng chương

Chương 1. Tìm hiểu về bài toán dự đoán giá chứng khoán Việt Nam

Chương 1 hệ thống hóa bối cảnh thị trường chứng khoán Việt Nam và phân loại bài toán dự báo theo dạng chuỗi thời gian. Tác giả phân tích ưu - nhược điểm của các giải pháp hiện hành:

  • Phân tích kỹ thuật (Technical Analysis): Sử dụng các chỉ báo như Chỉ số sức mạnh tương đối (RSI), Phân kỳ hội tụ trung bình động (MACD). Hạn chế là chỉ phản ánh biến động giá quá khứ, khó thích ứng với các biến động kinh tế bất ngờ.
  • Phân tích cơ bản (Fundamental Analysis): Đánh giá sức khỏe tài chính thông qua doanh thu, lợi nhuận, cơ cấu vốn, nhưng có độ trễ thông tin cao.
  • Phân tích tin tức qua Xử lý ngôn ngữ tự nhiên (NLP): Giúp trích xuất thông tin bài báo nhưng gặp khó khăn trước các tin đồn thất thiệt hoặc dữ liệu nhiễu.

Chương này đi sâu vào cơ sở toán học của mạng nơ-ron nhân tạo (ANN), mạng nơ-ron hồi quy (RNN), cơ chế lan truyền ngược theo thời gian (BPTT), đồng thời lý giải nguyên nhân kiến trúc LSTM ra đời nhằm khắc phục hiện tượng mất mát đạo hàm. Cấu trúc cổng quên, cổng vào, cổng ra của LSTM cùng các biến thể (Peephole, GRU) và tổng quan về hai ngôn ngữ lập trình Python, Kotlin được trình bày đầy đủ.

Chương 2. Lấy dữ liệu và xây dựng mô hình

Chương 2 mô tả chi tiết quy trình xây dựng mô hình dự đoán từ bước thu thập dữ liệu đến đánh giá thực nghiệm:

  • Quy trình thu thập: Thu thập danh sách mã chứng khoán từ đường dẫn sàn VN-Index trên cophieu68.vn, bóc tách thông tin hồ sơ doanh nghiệp trong các thẻ <h2> (Lịch sử, Lĩnh vực kinh doanh) và trích xuất dữ liệu giá lịch sử trong các thẻ <table> phân trang.
  • Tiền xử lý và lưu trữ: Lọc dữ liệu rỗng, chuyển đổi trường ngày thành chỉ mục thời gian, chuẩn hóa kiểu số thực/số nguyên, áp dụng Min-Max Scaling đưa dữ liệu về khoảng $[0, 1]$. Dữ liệu từng mã được tổ chức thành các tệp JSON với tiền tố định danh daa_<mã>.json.
  • Huấn luyện mô hình: Khởi tạo mạng LSTM với kích thước đầu vào $(50, 1)$, 2 lớp ẩn, lớp Dropout 50%, lớp Dense 1 nút ra, tối ưu hóa bằng thuật toán Adam với hàm mất mát MAE.
  • Đánh giá thực nghiệm: Thực hiện đánh giá trên 9 mã cổ phiếu đại diện. Kết quả so sánh sai số và biểu đồ xu hướng cho thấy mô hình phản ánh sát chuyển động giá thực tế.

Chương 3. Phân tích thiết kế và triển khai hệ thống

Chương 3 trình bày việc mô hình hóa hệ thống và triển khai phần mềm:

  • Phân tích yêu cầu: Xác định tác nhân duy nhất là Người dùng; hệ thống cần đáp ứng yêu cầu tra cứu thời gian thực, tương tác biểu đồ và cập nhật dữ liệu tự động.
  • Thiết kế hệ thống: Xây dựng biểu đồ Use Case tổng quan, biểu đồ lớp thực thể, Use Case chi tiết và kịch bản hoạt động cho module dự đoán giá và module xem thông tin ứng dụng.
  • Cài đặt và thử nghiệm: Triển khai mã nguồn ứng dụng bằng ngôn ngữ Kotlin trên Android Studio, thiết lập máy ảo Pixel 4 (hệ điều hành Android), tích hợp các tệp dữ liệu JSON và kiểm thử các màn hình giao diện: màn hình chính, màn hình biểu đồ tương tác, màn hình chi tiết mã và màn hình thông tin app.

Kết quả và đóng góp

Kết quả thực nghiệm mô hình

Mô hình LSTM được huấn luyện riêng biệt cho từng mã cổ phiếu trên tập dữ liệu chuỗi thời gian chia đôi (50% Train, 50% Test). Kết quả đánh giá độ chính xác qua các chỉ số sai số định lượng được tổng hợp như sau:

Mã chứng khoán RMSE MAE MAPE (%) Đánh giá xu hướng trên biểu đồ
AAS 792.1 — — Giá dự đoán bám sát giá thực tế, phản ánh sớm nhịp tăng giảm
QBS — — — Khớp biên độ dao động, tín hiệu đảo chiều tương đối chuẩn xác
AAT — — — Đường dự đoán và thực tế có độ tương đồng cao
PLC — — — Khớp sát xu hướng biến động ngắn hạn
FPT — — — Đúng xu hướng tăng giảm, có khoảng cách chênh lệch biên độ ở giai đoạn sau
DQC — — — Bám sát nhịp biến động giá đóng cửa
FIT — — — Đường dự đoán đi trước và khớp với biến động thực tế
HAG — — — Phản ánh chính xác các chu kỳ điều chỉnh giá
DIG — — — Mức độ khớp cao giữa giá dự báo và giá đóng cửa thị trường

Ghi chú số liệu tổng quát từ văn bản: Tỷ lệ sai số phần trăm tuyệt đối trung bình (MAPE) trên các mã thực nghiệm đạt mức cao nhất là 7.04% và thấp nhất xấp xỉ 2%, phần lớn tập trung trong ngưỡng từ 2% đến 5%. Toàn bộ mô hình thử nghiệm đều duy trì mức xác suất sai số dưới 10%.

Giải pháp và đóng góp của đề tài

  1. Khảo sát hệ thống hóa: Tổng hợp toàn diện thực trạng thị trường chứng khoán Việt Nam và các công nghệ học máy ứng dụng trong dự báo chuỗi thời gian tài chính.
  2. Quy trình xử lý dữ liệu hoàn chỉnh: Xây dựng công cụ bóc tách tự động dữ liệu giá lịch sử và thông tin doanh nghiệp niêm yết từ web, chuẩn hóa Min-Max Scaling và tổ chức lưu trữ JSON phục vụ nạp dữ liệu nhanh cho thiết bị di động.
  3. Mô hình dự báo chuyên biệt: Áp dụng thành công mạng LSTM đa lớp với cửa sổ trượt 50 ngày, huấn luyện mô hình riêng cho từng mã cổ phiếu nhằm nắm bắt đặc thù biến động riêng biệt của từng doanh nghiệp.
  4. Sản phẩm ứng dụng thực tế: Phát triển thành công ứng dụng di động Android bằng Kotlin, cung cấp giao diện trực quan hỗ trợ nhà đầu tư theo dõi biến động giá và tham khảo xu hướng dự báo 3 ngày phục vụ việc ra quyết định ngắn hạn.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế

  • Mô hình chỉ sử dụng chuỗi thời gian đơn biến dựa trên giá đóng cửa lịch sử của 50 phiên trước đó, chưa kết hợp các yếu tố ngoại sinh tác động đột ngột đến giá như: báo cáo tài chính định kỳ, thay đổi cơ cấu cổ đông, thông tin chia cổ tức, sự kiện kinh tế vĩ mô và tin tức truyền thông.
  • Việc phân chia tập dữ liệu theo tỷ lệ cố định 50% Train - 50% Test là cách tiếp cận cơ bản, chưa áp dụng cơ chế kiểm định chéo chuỗi thời gian (Time Series Cross-Validation) hoặc cửa sổ trượt tịnh tiến.
  • Biên độ dự đoán giá ở một số mã cổ phiếu có vốn hóa lớn và biên độ tăng trưởng mạnh (như mã FPT ở giai đoạn sau) vẫn còn khoảng cách chênh lệch nhất định so với giá thực tế, dù xu hướng tăng giảm vẫn trùng khớp.

Hướng nghiên cứu tiếp

  • Tích hợp thêm các thuật toán Xử lý ngôn ngữ tự nhiên (NLP) để phân tích sắc thái tin tức báo chí, diễn đàn tài chính theo thời gian thực nhằm bổ sung trọng số định tính cho mô hình.
  • Xây dựng thêm phân hệ quản trị rủi ro trên ứng dụng di động: tính toán tỷ suất sinh lời kỳ vọng, mức độ rủi ro danh mục và theo dõi quản lý lãi/lỗ của nhà đầu tư.
  • Mở rộng nguồn dữ liệu đa biến (kết hợp khối lượng giao dịch, chỉ số ngành, chỉ số VN-Index, giá mở cửa/cao nhất/thấp nhất) vào mạng nơ-ron để tăng độ chính xác dự báo biên độ giá.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho các nhóm đối tượng:

  • Sinh viên ngành Công nghệ thông tin, Hệ thống thông tin, Khoa học dữ liệu: Tham khảo cấu trúc triển khai bài toán chuỗi thời gian (Time Series Forecasting), kỹ thuật xây dựng và huấn luyện mô hình LSTM bằng Keras/TensorFlow và cách liên kết mô hình học máy với ứng dụng di động.
  • Lập trình viên ứng dụng di động (Android Developer): Tham khảo kiến trúc thiết kế giao diện hiển thị biểu đồ tương tác, cấu trúc dữ liệu JSON và quy trình phát triển ứng dụng bằng ngôn ngữ Kotlin trên Android Studio.
  • Nhà nghiên cứu và nhà đầu tư cá nhân: Tham khảo quy trình thu thập dữ liệu chứng khoán tự động tại Việt Nam và phương pháp đánh giá sai số định lượng (RMSE, MAE, MAPE) khi dự báo giá cổ phiếu.

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

1. Mô hình LSTM trong đồ án sử dụng dữ liệu đầu vào có kích thước như thế nào để dự đoán giá?
Mô hình sử dụng dữ liệu giá đóng cửa của 50 ngày giao dịch liên tiếp liền trước làm đầu vào (kích thước khối đầu vào là $(50, 1)$) để dự đoán giá đóng cửa cho ngày tiếp theo và ngoại suy cho 3 ngày tới.

2. Dữ liệu chứng khoán được thu thập từ nguồn nào và lưu trữ dưới định dạng gì?
Dữ liệu được bóc tách (crawl) từ trang web cophieu68.vn (thuộc sàn VN-Index với độ dài lịch sử tối đa 10 năm) kết hợp thư viện vnstock. Dữ liệu sau tiền xử lý được lưu trữ thành các tệp tin JSON với định dạng đặt tên daa_<mã_chứng_khoán>.json.

3. Kết quả sai số MAPE của mô hình dự đoán trên các mã cổ phiếu đạt bao nhiêu?
Chỉ số MAPE (Mean Absolute Percentage Error) trên các mã thực nghiệm đạt mức cao nhất là 7.04% và thấp nhất là khoảng 2%, phần lớn kết quả sai số dao động trong khoảng từ 2% đến 5% (tất cả đều dưới ngưỡng sai số 10%).

4. Ứng dụng di động được xây dựng bằng công nghệ gì và chạy trên nền tảng nào?
Ứng dụng được lập trình bằng ngôn ngữ Kotlin trên công cụ Android Studio, hoạt động trên hệ điều hành Android và được kiểm thử thực tế trên máy ảo giả lập thiết bị Pixel 4.

5. Cấu trúc các tầng của mô hình LSTM trong đồ án được thiết lập ra sao?
Mô hình gồm 1 lớp đầu vào kích thước $(50, 1)$, 2 lớp ẩn LSTM kết nối tuần tự, 1 lớp Dropout loại bỏ ngẫu nhiên 50% nơ-ron để tránh hiện tượng học tủ (overfitting) và 1 lớp Dense đầu ra kết nối đầy đủ để trả về 1 giá trị giá dự đoán; mô hình dùng bộ tối ưu Adam và hàm mất mát MAE.


Kết luận

Đồ án tốt nghiệp của sinh viên Nguyễn Văn Nghĩa đã giải quyết hoàn chỉnh bài toán ứng dụng học máy vào dự báo chuỗi thời gian giá cổ phiếu tại thị trường chứng khoán Việt Nam. Bằng việc xây dựng kiến trúc mạng LSTM với cửa sổ 50 ngày và tiền xử lý dữ liệu chuẩn hóa, mô hình đạt độ chính xác khả quan với sai số MAPE chủ yếu trong khoảng 2% đến 5% trên các mã thử nghiệm. Đồ án không dừng lại ở mức độ nghiên cứu lý thuyết mà đã đóng gói và triển khai thành công ứng dụng di động trực quan trên hệ điều hành Android bằng ngôn ngữ Kotlin, mang lại giá trị tham khảo thực tiễn cho các nhà đầu tư cá nhân trong việc theo dõi biến động thị trường.