49
Thiết kế giao diện
Ở mục này sẽ trình bày một vài giao diện chức năng chính của hệ thống.
a. Chức năng quản lý bot thu thập dữ liệu
Sau khi Admin đăng nhập ,hệ thống sẽ chuyển đến màn quản lý danh sách
thiết lập báo
Hình 3.36. Thiết kế giao diện danh sách bot
Ở màn hình này sẽ hiển thị danh sách các báo đang được thu thập
Click vào nút “Thêm báo” hệ thống sẽ chuyển đến màn “Cài đặt thiết lập báo”
50
Trên màn hình Danh sác thiết lập báo, click vào biểu tượng setting ở cột Lần chạy tiếp, sẽ hiện lên cửa sổ cấu hình lịch chạy tự động.
Hình 3.38. Thiết kế giao diện cài đặt chạy
b. Theo dõi cổ phiếu
Khi người dùng vào trang chủ hệ thống sẽ hiện thị ra những danh sách tin tức
mới nhất liên quan đến thị trường chứng khoán.
51 Trên thanh nav-bar, click vào menu Watch List, trang web chuyển đến màn danh sách watch list. Người dùng có thể theo dõi các tin tức đã được gán nhãn của các cổ phiếu đang theo dõi.
Người dùng có thể thêm các cổ phiếu mình cần theo dõi vào watch list hiện tại hoặc tạo watch list mới.
52
Khi click vào cột dự đoán, sẽ hiện lên popup dự đoán giá cho 5 ngày tiếp theo:
Hình 3.41. Thiết kế giao diện dự đoán giá cổ phiếu cho 5 ngày tiếp theo
Công nghệvà thư viện sử dụng
3.5.1 Web framework Spring Boot
Spring Boot[7]là một Java framework được phát triển bởi Pivital Team dựa trên Java framework mã nguồn mở để tạo ra các microservice, nhằm mục đích xây dựng các ứng dụng Spring độc lập một cách nhanh chóng và có khả năng thực thi ngay.
Sau khi sử dụng Spring Boot để lậptrình ứng dụng Spring, bạn có thể chạy ngay
ứng dụng của mình mà không cần phải config (cấu hình) quá nhiều. Những đặc điểm nổi bật của Spring boot:
Spring Boot được phát triển tối ưu sao cho việc cấu hình XML trở nên đơn
giản nhất trong Spring.
Spring Boot được phát triển sao cho việc lập trình trở nên nhanh chóng và
dễ dàng.
Gia tăng năng suất trong lập trình.
53
3.5.2 Vuejs
Vue[8] là một progressive framework dùng để xây dựng giao diện người dùng
(UI). Không giống các monolithic framework. Core của Vue chỉ tập trung vào lớp view mà và nó rất dễ để làm quen hay tích hợp với các thư viện hoặc các project có sẵn.Hơn nữa, Vue lại chứa đựng một sức mạnh rất lớn trong việc xây dựng Single-Page
Applications khi được kết hợp với công cụ build và các thư viện/component được xây dựng bởi cộng đồng.
Trước sự tồn tại của hàng loạt các framework, thư viện Javascript vô cùng mạnh
mẽ như React, Angular, VueJS nổi bật và trở thành lựa chọn lý tưởng hàng đầu của
các lâp trình viên khi phát triển ứng dụng bởi những lý do sau.
Hiệu suất vô cùng cao: Là một framework linh động với nhiều tính năng
được kế thừa từ đối thủ và khả năng mở rộng cao, VueJS mang lại hiệu suất vô cùng cao trong các dự án phát triển. Lập trình viên chỉ cần dùng một framework duy nhất để tạo ra các app.
Kho thư viện lớn, hỗ trợ xây dựng giao diện một cách nhanh chóng.
Đơn giản và dễ học: VueJS rất đơn giản, dễ học và dễ áp dụng vào trong
các dự án, tài liệu dễ hiểu.
3.5.3 Redis queue
Redis queue[9]là một dạng nosql key-value được sử dụng phổ biến. Mỗi value có
một key tương ứng. Redis là dạng in-memory database, data được lưu trữ trên ram nên
việc truy xuất rất nhanh. Redis thường xuyên được sử dụng như một bộ nhớ đệm, secondary database, hoặc sử dụng như một queue để chung chuyển data.
3.5.4 Sklearn
Scikit-learn (Sklearn)[10]là thư viện mạnh mẽ nhất dành cho các thuật toán học máy được viết trên ngôn ngữ Python. Thư viện cung cấp một tập các công cụ xử lý các bài toán machine learning và statistical modeling gồm: classification, regression,
clustering, và dimensionality reduction.
Nhóm thuật toán được xây dựng bởi thư viện scikit-learn
Clustering: Nhóm thuật toán Phân cụm dữ liệu không gán nhãn. Ví dụ thuật
54
Cross Validation: Kiểm thử chéo, đánh giá độ hiệu quả của thuật toán học
giám sát sử dụng dữ liệu kiểm thử (validation data) trong quá trình huấn luyện
mô hình.
Datasets: Gồm nhóm các Bộ dữ liệu được tích hợp sẵn trong thư viện. Hầu như các bộ dữ liệu đều đã được chuẩn hóa và mang lại hiêu suất cao trong quá trình huấn luyện như iris, digit, ...
Dimensionality Reduction: Mục đích của thuật toán này là để Giảm sốlượng
thuộc tính quan trọng của dữ liệu bằng các phương pháp như tổng hợp, biểu diễn dữ liệu và lựa chọn đặc trưng. Ví dụ thuật toán PCA (Principal
component analysis).
Ensemble methods: Các Phương pháp tập hợp sử dụng nhiều thuật toán học tập để có được hiệu suất dự đoán tốt hơn so với bất kỳ thuật toán học cấu
thành nào.
Feature extraction: Trích xuất đặc trưng. Mục đích là để định nghĩa các thuộc tình với dữ liệu hình ảnh và dữ liệu ngôn ngữ.
Feature selection: Trích chọn đặc trưng. Lựa chọn các đặc trưng có ý nghĩa trong việc huấn luyện mô hình học giám sát.
Parameter Tuning: Tinh chỉnh tham số. Các thuật toán phục vụ việc lựa chọn tham số phù hợp để tối ưu hóa mô hình.
Manifold Learning: Các thuật toán học tổng hợp và Phân tích dữ liệu đa
chiều phức tạp.
Supervised Models: Học giám sát. Mảng lớn các thuật toán học máy hiện nay.
Ví dụ như linear models, discriminate analysis, naive bayes, lazy methods,
neural networks, support vector machines và decision trees.
3.5.5 Fasttext
FastText[11]là một phương pháp nhúng từ khác là một phần mở rộng của mô hình word2vec được tạo bởi phòng thí nghiệm Nghiên cứu AI (FAIR) của Facebook. Thay vì học trực tiếp vectơ cho các từ, fastText biểu thị mỗi từ dưới dạng n-gam ký tự. Điều này giúp nắm bắt ý nghĩa của các từ ngắn hơn và cho phép nhúng hiểu các hậu tố và
tiền tố. Khi từ đã được biểu diễn bằng ký tự n-gram, một mô hình bỏ qua gram được
55
trên một từ vì không tính đến cấu trúc bên trong của từ. Miễn là các ký tự nằm trong cửa sổ này, thứ tự của n-gram không quan trọng.FastText hoạt động tốt với các từ hiếm. Vì vậy, ngay cả khi một từ không được nhìn thấy trong quá trình đào tạo, nó có thể được chia nhỏ thành n-gram để nhúng.
3.5.6 Deeplearning4j
Deeplearning4j[12]là một trong những thư viện học máy mã nguồn mở mạnh nhất được sử dụng trong java. Nó cung cấp khung tính toán cho các thuật toán phát triển dựa trên học sâu khác nhau. Khung tính toán phân tán của nó thừa hưởng Apache
Hadoop và Spark framework cho các mô hình ML đào tạo. Mô-đun này được phát triển
bằng ngôn ngữ lập trình Java. Nó có khả năng tương thích với bất kỳ ngôn ngữ JVM nào sử dụng Kotlin, Scala,…
56
CHƯƠNG 4. KIỂM THỬ VÀ ĐÁNH GIÁ Chức năng phần mềm
4.1.1 Khối thu thập dữ liệu
a. Dữ liệu tin tức
Hệ thống đã cung cấp bộ thu thậptin tức từ các trang tin tức chứng khoán lớn ở
Việt Nam. Dữ liệu tin tức thu thập hiện tại khoảng 400.000 bài viết đến từ 4 đầu báo lớn ở Việt Nam: tinnhanhchungkhoan.vn, cafef.vn, fireant.vn, vietstock.vn
Hình 4.1. Danh sách thiết lập báo
Độ trễ thu thập từ các báo trong hệ thống được cấu hình mặc định là 15 phút lấy tin tức 1 lần. Admin có thể thiết lập lại cấu hình này từ trang quản lý crawler.
Admin có thể dễ dàng cấu hình tắt bật bộ thu thập cũng như theo dõi trạng thái của bộ thu thập đối với từng trang báo.
b. Dữ liệu chỉ số mã chứng khoán
Hệ thống đã thu thập thông tin lịch sử theo ngày của hơn 1600 mã cổ phiếu đến từ 3 sàn Hose, Upcom và Hnx trong khoảng 10 năm, bắt đầu từ ngày 16/11/2010 đến
30/12/2021. Các thông tin lịch sử của 1 mã cổ phiếu bao gồm: giá đóng cửa, giá mở cửa, ngày, khối lượng, giá cao nhất trong ngày, giá thấp nhất trong ngày và 1 số thông
tin khác.
Dữ liệu thông tin của các mã cổ phiếu được thu thập định kỳ hằng ngày vào lúc
57
4.1.2 Khối ứng dụng hỗ trợnhà đầu tư
Dữ liệu tin tức được tổng hợp và phân loại theo nhóm. Người dùng cũng có thể
tạo các nhóm tin tức cho từng nhóm cổ phiếu riêng để theo dõi. Hình ảnh bên dưới là
tin tức về nhóm cổ phiếu ngành ngân hàng. Rất nhiều tin tích được đưa ra, kỳ vọng một xu thế tăng trong những phiên tới của họ cổ phiếu ngân hàng.
Hình 4.2. Ví dụ tin tức về nhóm cổ phiếu ngành ngân hàng
Người dùng có thể xem thêm dự đoán giá cho cổ phiếu quan tâm. Hình ảnh bên
dưới cho dự đoán giá 3 ngày tiếp theo (T+1, T+2, T+3) của cổ phiếu MBB.
58
Đánh giá môhình học máy
4.2.1 Đánh giá mô hình phân tích sắc thái tin tức
a. Cơ sở lý thuyết
Cách đánh giá mô hình phân tích sắc thái tin tức trong luận văn này thông qua các độ đo Precision, Recall.
Hình 4.4. Phương pháp đánh giá Precision và Recall [13]
Trong đó Precision được định nghĩa là tỉ lệsố điểm Positive mô hình
dự đoán đúng trên tổng số điểm mô hình dự đoán là Positive. Recall được
định nghĩa là tỉ lệsố điểm Positive mô hình dự đoán đúng trên tổng số điểm thật sự là Positive (hay tổng số điểm được gán nhãn là Positive ban đầu).
Precision cao đồng nghĩa với việc độ chính xác của các điểm tìm được là cao. Recall cao đồng nghĩa với việc True Positive Rate cao, tức tỉ lệ bỏ sót các điểm thực sự positive là thấp.
59
b. Kết quả thực nghiệm
Thử nghiệm trên cấu hình fastest đã nêu ở bước cài đặt (mục 3.3.1) với bộ dữ liệu test đã được gán thủ công 3 loại nhãn:
- Tích cực: 80 bài
- Tiêu cực: 80 bài
- Tích cực: 80 bài
Kết quảthu được:
Precision = 0.703125, Recall = 0.703125
4.2.2 Đánh giá mô hình dựđoán giá với LSTM
a. Cơ sở lý thuyết
Để đánh giá mô hình LSTM, trong bài luận văn này tôi xin sử dụng phương
pháp đánh giá MAE (Mean Absolute Error, sai số trung bình tuyệt đối) và phương
pháp tính RMSE(Root Mean Squared Error, sai số bình phương trung bình gốc)
MAEđo lường mức độ trung bình của các lỗi trong một tập hợp các dự đoán,
mà không xem xét hướng của chúng. Đó là trung bình trên mẫu thử nghiệm về sự khác biết tuyệt đối giữa dự đoán và lượng quan sát thực tế, trong đó tất cả các khác biệt với trọng số bằng nhau.
RMSEđánh giá chất lượng của một ước lượng (ví dụ, một hàm toán học lập
bản đồ mẫu dữ liệu của một tham số của dân số từ đó các dữ liệu được lấy mẫu) hoặc một yếu tố dự báo (ví dụ, một bản đồ chức năng có số liệu vào tùy ý để một
mẫu của các giá trị của một sốbiến ngẫu nhiên). Định nghĩa của một RMSE khác
với những gì tương ứng cho dù là một trong những mô tả một ước lượng, hay một yếu tố dự báo.
[14]
60
b. Kết quả thực nghiệm
Dữ liệu thử nghiệm thử nghiệm trong luận văn lấy từ website fireant.vn (web
site tổng hợp thông tin về thị trường chứng khoán Việt Nam). Thử nghiệm dùng
chuỗi 22 ngày liên tiếp (~ 1 tháng) để dự đoán giá đóng cửa của 3 ngày sau.
Bảng bên dưới mô tảgiá trị đầu vào thử nghiệm với model thu được ở bước
cài đặt(mục 3.3.2).
Bảng 4.1. Bảng mô tả giá trị đầu vào thử nghiệm
Stt Công ty Mã thị trường Ngày bắt đầu Ngày kết thúc Dữ liệu đầu vào
1 CTCP Nhựa An Phát Xanh AAA
22/04/2021 31/12/2021 Giá mở cửa Giá đóng cửa Giá cao nhất Giá thấp nhất Khối lượng
2 Ngân hàng TMCP Đầu tư và
Phát triển Việt Nam (BIDV) BID
3 Ngân hàng thương mại cổ phần
Á Châu ACB
Mã AAA: RMSE: 1.45 MAE: 183.77
Hình 4.5. Kết quả dự báo giá cổ phiếu AAA từ ngày 22/04/2021 đến ngày 31/12/2021
61
Mã BID: RMSE: 2.69 MAE: 373,82
Hình 4.6. Kết quả dự báo giá cổ phiếu BID từ ngày 22/04/2021 đến ngày 31/12/2021
Mã ACB: RMSE: 2.32 MAE: 292.93
Hình 4.7. Kết quả dự báo giá cổ phiếu ACB từ ngày 22/04/2021 đến ngày 31/12/2021
Kết quả thu được với độ chính xác chưa cao, nhưng cũng đã phần nào dự đoán được xu hướng đi của các mã cổ phiếu.
62
CHƯƠNG 5. KẾT LUẬN
Luận văn đã trình bày một phương pháp tiếp cận trong đó ứng dụng kỹ thuật học máy vào việc thu thập, phân loại tin tức và đưa ra dự báo chỉ số giá cổ phiếu ápdụng
cho các nhà đầu tư trên thị trường chứng khoán Việt Nam. Trong quá trình thực hiện
luận văn, tôi đã gặp phải nhiều vấn đề trong việc tiếp cận bài toán, nghiên cứu lý thuyết,
các tài liệu liên quan và các mã nguồn mở để tìm ra giải pháp phù hợp. Với sự nỗ lực
của bản thân và sự hướng dẫn tận tình của giảng viên hướng dẫn, tôi đã hoàn thành
được luận văn tốt nghiệp với những kết quả đạt được như sau:
Các kết quả đạt được của luận văn:
Về nghiên cứu:
- Tìm hiểu các kỹ thuật để thu thập dữ liệu từ các website
- Tìm hiểu các bước triển khai để xây dựng mô hình phân loại ngôn ngữ
- Nắm được phương pháp triển khai mạng LSTM để xử lý các chuỗi dữ liệu
Về ứng dụng:
- Trên cơ sở nghiên cứu lý thuyết và quan sát thực tiễn, luận văn đã xây dựng
được công cụ thu thập dữ liệu từ một trang website đơn giản.
- Xây dựng được ứng dụng hỗ trợ theo dõi và phân loại tin tức về chứng khoán
và các chỉ số khác trên thị trường chứng khoán, từ đó giúp nhà đầu tư có thể
nắm bắt tin tức theo từng nhóm tin tức hoặc theo cổ phiếu trong watch list
theo dõi.
- Xây dựng được công cụ dự báo chỉ số giá cổ phiếu trong ngắn hạn, nhằm hỗ
trợ nhà đầu tư trong việc đưa ra quyết định đầu tư và quản lý rủi ro cho danh mục đầu tư.
Những điểm hạn chế:
Do điều kiện về trang thiết bị có hạn, dữ liệu về thị trường thu thập chưa lớn.
Số lượng kết quả về các dự đoán chưa nhiều dẫn đến việc đánh giá độ chính
xác của mô hình dự đoán giá còn hạn chế.
Định hướng phát triển trong tương lai:
Hiện tại giá cổ phiếu được dự báo trong ngắn hạn trên cơ sở các dữ liệu về
khối lượng giao dịch, giá mở cửa, giá đóng cửa, giá cao nhất trong phiên, giá
thấp nhất trong phiên. Trong thời gian tới, cùng với việc tìm hiểu thêm các kỹ thuật thu thập và phân tích dữ liệu cùng với quan sát và đánh giá từ thực tiễn, việc dự báo giá cổ phiếu sẽ được mở rộng và sử dụng nhiều công cụ chỉ
63
báo hơn nhằm tăng tính chính xác cho việc dự báo, giúp nhà đầu tư có công
cụ hiệu quả trong việc đưa ra quyết định đầu tư và giảm thiểu rủi ro.
Tối ưu lại các bước trực quan hóa dữ liệu cho mô hình LSTM để tăng hiệu
quả trong việc dự báo.
Thu thập thêm thông tin bình luận của các nhà đầu tư trên thị trường chứng
khoán từ các kênh khác, từ đó đánh giá và phân tích được tâm lý nhà đầu tư
64
TÀI LIỆUTHAM KHẢO
[1] Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean, Efficient Estimation of Word Representations in Vector Space
[2] Tomas Mikolov, Quoc V, Le, Ilya Sutskever, Exploiting Similarities among Languages for Machine Translation Paper
[3] McCormick, C, (2016, April 19), Word2Vec Tutorial - The Skip-Gram Model,