Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.09 MB, 24 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
4 Nguyễn Ngọc Gia Nghi K224060802 5 Nguyễn Thanh Thúy Tiên K224060816
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">Đầu tiên, Nhóm chúng em xin gửi lời cảm ơn chân thành đến giảng viên bộ môn -Tiến sĩ Nguyễn Thôn Dã đã dạy dỗ và truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian học tập vừa qua. Tuy thời gian thực hiện đồ án cuối kỳ có hạn, nhưng Thầy đã hướng dẫn, nhận xét và góp ý vơ cùng tận tình. Nhờ có vậy, giúp chúng em làm nền tảng và vận dụng được vào bài cuối kỳ.
Tuy nhiên, do chưa có nhiều kinh nghiệm làm đề tài cũng như hạn chế về kiến thức, báo cáo khơng thể tránh khỏi những thiếu sót. Chúng em rất mong nhận được những ý kiến, góp ý quý giá của Thầy để có thể cải thiện những thiếu sót trong báo cáo này và học hỏi nhiều kinh nghiệm để hoàn thành tốt hơn những bài sắp tới.
Chúng em xin chân thành cảm ơn!
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Nghiên cứu này tập trung vào ứng dụng các mơ hình máy học, bao gồm Linear Regression, KNN, SVM và LSTM để dự đoán giá chứng khoán của Ngân hàng TMCP Ngoại thương Việt Nam (Vietcombank) có ký hiệu là VCB trên thị trường chứng khốn Việt Nam. Dữ liệu sử dụng trong nghiên cứu là thơng tin lịch sử về giá chứng khốn của mã chứng khoán. Các đặc trưng của dữ liệu bao gồm giá mở cửa, giá đóng cửa, khối lượng giao dịch và các chỉ số liên quan khác. Các mơ hình máy học được đào tạo và đánh giá sử dụng dữ liệu này để dự đoán giá chứng khoán. Hiệu suất của từng mơ hình được đánh giá bằng các phương pháp đo đạc như sai số trung bình bình phương, độ chính xác và độ chính xác. Kết quả sẽ cho thấy hiệu suất và khả năng dự đoán của từng mơ hình trong việc dự đốn giá chứng khoán VCB trên thị trường chứng khoán Việt Nam.
<b>1. Introduction </b>
Thị trường chứng khoán Việt Nam là một phần quan trọng của hệ thống tài chính quốc gia, đóng vai trị quyết định trong việc huy động vốn và cung cấp cơ hội đầu tư cho các nhà đầu tư. Việc tra cứu thơng tin về các mã chứng khốn, thơng tin liên quan đến công ty, và so sánh các mã chứng khoán với nhau là những nhu cầu cơ bản của họ. Áp dụng machine learning và deep learning để dự đoán giá chứng khoán là một trong những ứng dụng quan trọng và phức tạp của trí tuệ nhân tạo trong lĩnh vực tài chính. Đến nay, đã có rất nhiều nghiên cứu về đề tài này và đã cho ra nhiều kết quả khá triển vọng trong tương lai.
Gần đây, việc dự đoán thị trường chứng khoán có thể được nâng cao bằng cách sử dụng máy học (Machine Learning). Những kỹ thuật như Máy Vectơ hỗ trợ (Support Vector Machine - SVM), hoặc một số vectơ dựa trên mạng noron kỹ thuật như Mạng nơron nhân tạo (ANN), Mạng nơ ron tái phát (RNN) và mạng nơ ron sâu mạng lưới thần kinh như Bộ nhớ ngắn dài (Long short term memory - LSTM) [ ] [ ] [ ]. Đây là1 2 3 những công cụ tốt có thể giúp xử lý dữ liệu đầu vào và đầu ra của một tập dữ liệu phức tạp. Trong bài báo này, chúng tơi sẽ trình bày về việc sử dụng các kỹ thuật trên để dự đoán giá chứng khoán Việt Nam.
Các phần tiếp theo của bài báo bao gồm: phần 2 trình bày về các nghiên cứu liên quan đến bài toán. Trong phần 3, chúng tơi sẽ trình bày cơ sở lý thuyết. Phần 4 trình bày những kết quả thực nghiệm của mơ hình đề xuất, trong đó có kết hợp so sánh với một số kết quả của mơ hình khác. Cuối cùng, trong phần 5 chúng tôi nêu lên một số kết luận và những định hướng nghiên cứu tiếp theo.
<b>2. Related work</b>
Dự đoán giá chứng khoán là một vấn đề quan trọng trong tài chính, có thể giúp nhà đầu tư đưa ra quyết định đầu tư hiệu quả hơn. Để dự đoán giá trên thị trường chứng khoán, mọi người tìm kiếm những phương pháp và cơng cụ như vậy sẽ làm tăng lợi nhuận của họ, đồng thời giảm thiểu rủi ro [ ]. Dự đốn đóng một vai trò rất quan4 trọng trong hoạt động kinh doanh trên thị trường chứng khốn, một q trình được cho là rất phức tạp và đầy thử thách. Việc sử dụng các phương pháp truyền thống như phân tích cơ bản và kỹ thuật có thể khơng đảm bảo độ tin cậy của dự đoán [ ]. Sự phát5 triển mạnh mẽ của các mơ hình học máy, học sâu như Linear Regression, KNN, SVM, LSTM được ứng dụng vào dự đoán giá cổ phiếu và đã đạt được một số kết quả khả quan, được nêu ra trong các bài viết [ ] [ ] [ ]. Chúng tôi nhận thấy tầm quan trọng6 7 8 của việc so sánh các mơ hình dự đốn khác nhau để tìm ra mơ hình phù hợp nhất cho từng tình huống cụ thể đặc biệt là trong ngắn hạn và dài hạn. Ngồi ra, chúng tơi có ý
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">tưởng để bài nghiên cứu có thể ứng dụng dự đoán cho hầu hết các mã chứng khoán ở Việt Nam, thông qua dữ liệu được lấy trực tiếp nhờ vào thư viện hỗ trợ. Nghiên cứu chúng tôi tập trung vào tìm kiếm giải pháp cho việc dự đốn, hỗ trợ đưa ra quyết định đầu tư ở Việt Nam bên cạnh nghiên cứu về mơ hình, thuật tốn.
<b>3. Methodology </b>
3.1. Model AI 3.1.1 Machine learning
❖ Linear Regression
Linear regression (hồi quy tuyến tính) là một thuật tốn khá phổ biến của Supervised Learning (Học có giám sát) với đầu ra dự đoán liên tục và độ dốc khơng đổi nhằm dự đốn các giá trị trong một phạm vi liên tục. Hồi quy tuyến tính là một phương pháp thống kê để dự đoán giá trị của biến phụ thuộc (Y) dựa trên giá trị của một hoặc nhiều biến độc lập (X) [ ]. 9
Dữ liệu đầu vào trong bài nghiên cứu của chúng tôi là các điểm dữ liệu lấy theo chuỗi 60 ngày liên tiếp và đầu ra là giá của ngày tiếp theo, thực hiện tiếp tục cho đến hết tập dữ liệu đầu vào. Vì vậy mơ hình hồi quy tuyến tính được sử dụng ở đây là hồi quy tuyến tính đa biến. Mơ hình này sử dụng nhiều biến độc lập để dự đoán biến phụ thuộc, và mối quan hệ giữa các biến độc lập và biến phụ thuộc là tuyến tính [10]. Cơng thức hồi quy đa biến:
Model SVM (Support Vector Machine) là một loại thuật toán học máy được hướng dẫn sử dụng cho các bài toán phân loại hoặc hồi quy dữ liệu theo các lớp khác nhau [12].
Cách hoạt động của SVM sẽ có 3 bước. Bước 1 sẽ là tìm một hệ thống tuyến tính (hyperplane) để phân biệt các lớp dữ liệu. Hệ thống tuyến tính là một đường thẳng hoặc một đường cong có thể chia hai lớp dữ liệu thành hai phần riêng biệt. Sau đó là
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">tìm các điểm dữ liệu gần nhất (support vector) với hệ thống tuyến tính. Các điểm này được gọi là vector hỗ trợ, vì chúng ảnh hưởng đến vị trí và hướng của hệ thống tuyến tính. Cuối cùng, tối ưu hóa lề (margin) của hệ thống tuyến tính. Lề là khoảng cách giữa hệ thống tuyến tính và các điểm dữ liệu gần nhất từ mỗi lớp. Mục tiêu của model SVM là tìm ra một lề lớn nhất có thể [13].
Phương trình của siêu phẳng tuyến tính có thể được viết là:
Vectơ W đại diện cho vectơ pháp tuyến của siêu phẳng, tức là hướng vng góc với siêu phẳng. Tham số b trong phương trình biểu thị độ lệch hoặc khoảng cách của siêu phẳng tính từ gốc dọc theo vectơ pháp tuyến w.
Khoảng cách giữa điểm dữ liệu x_i và ranh giới quyết định có thể được tính như sau:
||w|| đại diện cho chuẩn Euclide của vectơ trọng số w. Định mức Euclide của vectơ pháp tuyến W [14].
❖ KNN
K-nearest neighbor ( KNN ) là một trong những thuật tốn học có giám sát đơn giản nhất trong Machine Learning. Ý tưởng của KNN là tìm ra output của dữ liệu dựa trên thơng tin của những dữ liệu training gần nó nhất [15].
Quy trình làm việc của KNN gồm những bước sau. Bước đầu tiên, chúng ta sẽ xác định tham số K bằng cách sử dụng số láng giềng gần nhất. Tiếp theo, chúng ta tính tốn khoảng cách đối tượng cần phân lớp với tất cả các đối tượng trong training data. Sau đó, chúng ta sẽ sắp xếp khoảng cách theo thứ tự tăng dần đồng thời xác định K láng giềng gần nhất với đối tượng cần phân lớp rồi lấy tất cả các lớp của K láng giềng gần nhất. Cuối cùng, dựa vào phần lớn lớp của K ta sẽ xác định được lớp cho đối tượng cần phân lớp.
Thuật toán KNN cho rằng những dữ liệu tương tự nhau sẽ tồn tại gần nhau trong một không gian, từ đó cơng việc của chúng ta là sẽ tìm k điểm gần với dữ liệu cần kiểm tra nhất. Việc tìm khoảng cách giữa 2 điểm cũng có nhiều cơng thức có thể sử dụng, tùy trường hợp mà chúng ta lựa chọn cho phù hợp. Đây là 3 cách cơ bản để tính khoảng cách 2 điểm dữ liệu x, y có k thuộc tính [16]:
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">3.1.2 Deep learning ❖ LSTM
Hochreiter và Schmidhuber đã phát minh ra mạng Long Short-Term Memory (LSTM) vào năm 1997 [ ]. LSTM là một biến thể của mạng thần kinh tái phát hoặc RNN và17 được chứng minh là hoạt động tốt với các mơ hình học tập và ghi nhớ theo thời gian. LSTM được thiết kế để xử lý vấn đề phụ thuộc lâu dài về vấn đề tiêu biến và bùng nổ gradient trong RNN [ ] [ ]. LSTM có bốn thành phần chính bao gồm Cell State18 19 (Ct), Hidden State (Ht), Forget Gate (Ft) và Input Gate (It) và Output Gate (Ot).
<b>Hình 1: Hình xiên của LTSM [ ] </b>20
Như được hiển thị trong <b>Hình 1</b>, đây là phương thức vận hành mơ hình LSTM thơng thường. Các cơng thức như sau [21]:
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Ft, It lần lượt là viết tắt của Forget Gate và Input Gate (cơ chế quên và lưu vào bộ nhớ dài hạn), lúc này máy tiếp tục làm mới kiến thức về cuốn sách trong trí nhớ dài hạn của não (ví dụ: nếu một nhân vật chết, có thể quên một số chi tiết nhất định về nhân vật này). Ot là viết tắt của Output Gate (cơ chế truy xuất từ trí nhớ dài hạn). Thay vì lúc nào cũng sử dụng tồn bộ trí nhớ dài hạn, máy sẽ học những phần nào cần tập trung vào một thời điểm nhất định. Ct là viết tắt của Cell State (trí nhớ dài hạn) dùng để lưu trữ các chi tiết cần thiết để máy hiểu được ngữ cảnh sau này mà không cần lật trang lại (tên, nơi ở, mối quan hệ giữa các nhân vật…). Ht là viết tắt của Hidden State (trí nhớ ngắn hạn) dùng để lưu trữ các chi tiết nhất định cụ thể cho cảnh mà máy đang đọc cho đến khi cảnh này kết thúc và quên nó đi (trời đã sáng, hai nhân vật đã đi dạo…).
Nghiên cứu này chúng tơi đã lựa chọn mơ hình LSTM của RNN để dự đoán giá cổ phiếu. Bộ nhớ ngắn hạn dài (LSTM) là kiến trúc RNN phổ biến, được giới thiệu bởi Sepp Hochreiter và Juergen Schmidhuber [ ]. Mơ hình LSTM có thể giải quyết được22 vấn đề mà mơ hình RNN cơ bản khơng thể dự đốn được trạng thái hiện tại của mơ hình. LSTM có ba “ơ”: cổng vào, cổng ra và cổng qn, giúp nó lọc và dự đốn thơng tin mà mạng nơ-ron yêu cầu [23].
3.2. Description of Data
Bộ dữ liệu này bao gồm thơng tin về giá chứng khốn lịch sử của các mã chứng khoán được lấy từ thư viện vnstock. Dữ liệu được thu thập từ các ngày giao dịch và bao gồm các thông tin quan trọng như giá mở cửa (open), giá cao nhất trong ngày (high), giá thấp nhất trong ngày (low), giá đóng cửa (close) và khối lượng giao dịch (volume). Mỗi mã chứng khốn được đại diện bởi một tập hợp các thơng tin giá trị tương ứng với các chỉ số trên. Giá mở cửa là giá chứng khoán trong ngày giao dịch khi thị trường mở cửa, giá cao nhất là mức giá tối đa mà cổ phiếu đã đạt trong ngày, giá thấp nhất là mức giá tối thiểu mà cổ phiếu đã đạt trong ngày, và giá đóng cửa là giá chứng khốn khi thị trường đóng cửa trong ngày đó. Khối lượng giao dịch chỉ ra tổng số cổ phiếu đã được giao dịch trong ngày.
Để minh họa cho tồn bộ q trình, chúng tơi lựa chọn mã chứng khoán cụ thể là mã chứng khoán của Ngân hàng TMCP Ngoại thương Việt Nam (Vietcombank) có ký hiệu là VCB. Dữ liệu đầu vào được lấy từ ngày 01- 01- 2021 đến 24- 11- 2023.
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>Bảng 1: Mẫu dữ liệu giao dịch từ 04/01/2021-15/01/2021 chưa qua xử lý.</b>
<b>Bảng 2 và 3 : Số liệu thống kê mô tả của tập dữ liệu.</b>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Bộ dữ liệu này gồm 724 hàng (tương ứng với 724 ngày giao dịch) được đánh số từ 0 -723 với 6 cột (time, open, high, low, close, volume). Ngoại trừ cột time có kiểu dữ liệu là Object (cụ thể là datetime) vì là ngày giao dịch thì các cột cịn lại có kiểu dữ liệu là int64 và tất cả các cột đều khơng có giá trị null.
3.3. Process Diagram
Bài viết nhằm mục đích nghiên cứu và đánh giá mức độ hiệu quả của các mô hình AI trong việc ứng dụng tiến hành dự báo giá của các mã chứng khoán được niêm yết ở Việt Nam. Nghiên cứu này đã sử dụng các phương pháp phân tích khác nhau, bao gồm một số kỹ thuật ML truyền thống và kỹ thuật DL với khả năng học các cấu trúc thông tin phức tạp của bộ dữ liệu, đưa ra những dự đoán từ dữ liệu chứng khốn lịch sử. Quy trình tổng hợp của nghiên cứu sẽ được thể hiện ở <b>Hình 2</b> dưới đây:
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b>Hình 2: Quy trình tổng hợp của nghiên cứu</b>
3.3.1 Gathering machine learning data
Dữ liệu lịch sử của mã chứng khốn VCB được lấy về thơng qua thư viện vnstock. Thư viện vnstock cung cấp cho người dùng khả năng truy cập dữ liệu chứng khoán Việt Nam từ các nguồn cấp dữ liệu đáng tin cậy thơng qua các API cơng khai. Dữ liệu này có thể được sử dụng để tạo các đối tượng Pandas DataFrame trong môi trường Python. Dữ liệu lịch sử của mã chứng khốn VCB bao gồm thơng tin về giá mở cửa là giá được xác định tại thời điểm bắt đầu phiên giao dịch (open), giá cao nhất của cổ phiếu trong một ngày giao dịch (high), giá thấp nhất của cổ phiếu trong một ngày giao dịch (low), giá đóng cửa của cổ phiếu, là giá được xác định tại thời điểm kết thúc phiên giao dịch (close), khối lượng giao dịch của cổ phiếu trong ngày giao dịch được tính bằng số lượng cổ phiếu được mua và bán trong ngày (volume). Đặc điểm của bộ
<b>dữ liệu đã được mô tả chi tiết ở phần 3.2.</b>
3.3.2 Data pre-processing
Dữ liệu lịch sử chứng khốn sẽ được bóc tách để chỉ lấy ra thơng số về giá đóng cửa (close) Thông số này được chúng tôi lựa chọn làm dữ liệu đầu vào để tiến hành dự đoán. Bởi vì giá đóng cửa là giá trị cuối cùng của ngày giao dịch, phản ánh tổng hợp tất cả các giao dịch diễn ra trong ngày, giá trị thể hiện xu hướng của thị trường trong ngày. Giá đóng cửa (close) được lựa chọn trong khoảng thời gian tốt nhất là trên hai
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">tháng vì dự đoán sẽ được dựa vào dữ liệu của sáu mươi ngày liên tiếp để dự đoán ra giá trị của ngày tiếp theo.
<b>Hình 3: Minh hoạ dữ liệu đầu vào và đầu ra </b>
Dữ liệu sau đó chuyển từ DataFrame thành mảng numpy để dễ dàng tiến hành chuẩn hóa và phân tách tập dữ liệu huấn luyện và tập dữ liệu kiểm tra. Tập dữ liệu huấn luyện và kiểm tra được phân tách theo tỷ lệ lần lượt là 80% và 20% của bộ dữ liệu ban đầu. Thư viện sklearn được sử dụng để chuẩn hóa dữ liệu trong khoảng [0, 1]. Việc chuẩn hóa dữ liệu này giúp cho mơ hình học máy hoạt động hiệu quả hơn.
3.3.3 Training model 3.3.3.1 Linear Regression
Chúng tôi tiến hành đào tạo và khớp mơ hình hồi quy tuyến tính. Dùng lớp LinearRegression trong thư viện scikit-learn của Python để áp dụng phương pháp bình phương tối thiểu tìm các hệ số tốt nhất cũng như tính tốn giá trị chặn cho mơ hình tuyến tính. Sau đó, tiến hành huấn luyện mơ hình tuyến tính trên tập dữ liệu đào tạo với tập dữ liệu đầu vào là các điểm dữ liệu lấy theo chuỗi 60 ngày liên tiếp và đầu ra là giá của ngày tiếp theo, thực hiện tiếp tục cho đến hết tập dữ liệu đầu vào. Tiếp tục với việc dự đoán đầu ra cho các điểm dữ liệu mới - dữ liệu của tập dữ liệu kiểm tra dựa trên mơ hình tuyến tính đã được huấn luyện. Các dự đốn sau đó được chuyển đổi ngược để có được thang đo gốc của dữ liệu bởi vì ở bước tiền xử lý dữ liệu mục <b>3.3.2</b>, dữ liệu đã được chuyển hoá trong khoảng [0,1].
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b>Hình 4: Giá trị dự đốn giá cổ phiếu của mơ hình Linear Regression </b>
3.3.3.2 Support Vector Machine (SVM)
Sử dụng các hàm cần thiết để tạo và huấn luyện mơ hình SVM. Khởi tạo mơ hình thơng qua khởi tạo đối tượng SVR với tham số kernel='linear'. Tham số này xác định kernel được sử dụng để ánh xạ dữ liệu sang không gian mới. Kernel là một hàm toán học ánh xạ dữ liệu gốc (linearly inseparable) sang một khơng gian có chiều cao hơn (potentially linearly separable). Điều này cho phép SVM phân loại các dữ liệu không thể tách biệt được một cách tuyến tính trong khơng gian ban đầu. Trong trường hợp này, kernel được sử dụng là 'linear', tức là mơ hình SVM sẽ tìm một đường thẳng phân tách các lớp dữ liệu. Huấn luyện mơ hình bằng cách sử dụng dữ liệu huấn luyện, dữ liệu đầu vào được lấy từ tập dữ liệu huấn luyện và đầu ra tương tự như trên mơ hình Linear Regression. Sử dụng mơ hình đã được huấn luyện để dự đoán giá trị cho dữ liệu kiểm tra. Hàm này được xây dựng dựa trên các vectơ hỗ trợ và kernel được sử dụng, cho phép mơ hình dự đốn giá trị cho các điểm dữ liệu mới. Vì dữ liệu đã được chuẩn hóa trước khi huấn luyện mơ hình, cần phải chuyển đổi ngược các dự đốn về thang đo gốc để có được kết quả thực tế <b>Hình 5</b>.
</div>