
Dự báo giá chứng khoán bằng Python
Thông tin tài liệu
Tác giả | Lê Gia Tiến |
instructor | Ths. Nguyễn Thị Xuân Hương |
Trường học | Trường Đại học Quản lý và Công nghệ Hải Phòng |
Chuyên ngành | Công nghệ thông tin |
Loại tài liệu | Đồ án tốt nghiệp |
Địa điểm | Hải Phòng |
Ngôn ngữ | Vietnamese |
Định dạng | |
Dung lượng | 2.97 MB |
Tóm tắt
I.Bài toán dự báo giá cổ phiếu bằng Python
Đồ án tốt nghiệp này tập trung vào việc xây dựng mô hình dự báo giá cổ phiếu trên thị trường chứng khoán Việt Nam bằng ngôn ngữ lập trình Python. Nghiên cứu ứng dụng các kỹ thuật phân tích chuỗi thời gian và học máy, bao gồm các mô hình dự báo như trung bình động (Moving Average), làm mịn hàm mũ (Exponential Smoothing) và làm mịn hàm mũ kép (Double Exponential Smoothing). Dữ liệu sử dụng là dữ liệu lịch sử giá cổ phiếu từ các nguồn như cafef.vn, cophieu68.vn, investing.com và tradingview.com. Mục tiêu là đánh giá hiệu quả của các mô hình này trong việc dự đoán biến động giá, sử dụng các thư viện Pandas, NumPy, SciPy, và Matplotlib để xử lý và trực quan hóa dữ liệu. Sinh viên Lê Gia Tiến là tác giả của đồ án, được hướng dẫn bởi Thạc sĩ Nguyễn Thị Xuân Hương tại trường Đại học Quản lý và Công nghệ Hải Phòng (trước đây là Đại học Dân lập Hải Phòng).
1. Tổng quan về bài toán dự báo giá cổ phiếu
Phần này giới thiệu tổng quan về bài toán dự báo giá cổ phiếu, một vấn đề phức tạp và đầy thách thức do tính chất biến động khó lường của thị trường chứng khoán. Đồ án thừa nhận tính chất ngẫu nhiên của giá cổ phiếu theo giả thuyết thị trường hiệu quả, nhưng đồng thời cũng nhấn mạnh tầm quan trọng của việc phân tích kỹ thuật và các yếu tố kinh tế vĩ mô (sự kiện chính trị, điều kiện kinh tế chung, chỉ số giá hàng hóa, tâm lý nhà đầu tư...) để tìm kiếm các xu hướng và dự báo giá cổ phiếu một cách hiệu quả hơn. Sự phát triển của công nghệ thông tin và việc dễ dàng tiếp cận dữ liệu lịch sử giá cổ phiếu từ nhiều nguồn như cafef.vn, cophieu68.vn, investing.com, và tradingview.com đã tạo điều kiện thuận lợi cho việc nghiên cứu này. Đồ án tập trung vào việc ứng dụng các phương pháp thống kê và học máy để cải thiện độ chính xác của dự báo, nhận thức được rủi ro cao trong đầu tư tài chính do tính chất mơ hồ và phi tuyến tính của biến động giá chứng khoán.
2. Phương pháp luận và mô hình dự báo
Đồ án sử dụng ngôn ngữ lập trình Python kết hợp với các thư viện mạnh mẽ như Pandas, NumPy, SciPy và Matplotlib để xây dựng và đánh giá các mô hình dự báo. Pandas được dùng để xử lý dữ liệu, NumPy cho phép tính toán ma trận, SciPy cung cấp các thuật toán số, và Matplotlib hỗ trợ trực quan hóa kết quả. Ba mô hình dự báo chính được nghiên cứu bao gồm: Mô hình trung bình động (Moving Average - MA), mô hình làm mịn hàm mũ (Exponential Smoothing), và mô hình làm mịn hàm mũ kép (Double Exponential Smoothing). Mỗi mô hình được mô tả chi tiết, phân tích ưu điểm, nhược điểm và phạm vi áp dụng. Mô hình MA được đánh giá là phù hợp với dữ liệu có số lượng quan sát ít và tính ổn định cao, trong khi mô hình làm mịn hàm mũ kép được cho là hiệu quả hơn với dữ liệu lớn và có xu hướng rõ ràng. Đồ án cũng đề cập đến việc ứng dụng học máy, cụ thể là các mô hình RNN và LSTM, như một hướng phát triển trong tương lai nhằm nâng cao khả năng dự báo.
3. Thực nghiệm và kết quả
Phần thực nghiệm tập trung vào việc xây dựng chương trình Python để thử nghiệm các mô hình dự báo đã chọn. Sinh viên đã sử dụng dữ liệu lịch sử giá cổ phiếu từ các nguồn đã nêu ở trên. Kết quả thực nghiệm được thể hiện qua các biểu đồ do Matplotlib tạo ra, cho phép trực quan so sánh hiệu quả của từng mô hình. Tuy nhiên, đồ án thừa nhận một số hạn chế, bao gồm việc chưa hiểu sâu về bài toán dự báo và chưa tối ưu hóa giao diện chương trình. Các kết quả cho thấy sự khác biệt về hiệu quả giữa các mô hình, dựa trên các chỉ số thống kê như sai số trung bình. Dữ liệu cụ thể về kết quả dự báo của từng mô hình không được trình bày đầy đủ trong phần tóm tắt này, mà sẽ được phân tích chi tiết hơn trong các phần tiếp theo của đồ án.
4. Kết luận và đề xuất
Đồ án đã đạt được một số kết quả nhất định trong việc ứng dụng Python và các thư viện liên quan để xây dựng các mô hình dự báo giá cổ phiếu. Tuy nhiên, vẫn còn những hạn chế cần khắc phục, chủ yếu tập trung vào việc nâng cao hiểu biết lý thuyết về bài toán dự báo và cải thiện giao diện người dùng của chương trình. Đề xuất cho các nghiên cứu tương lai bao gồm việc nghiên cứu sâu hơn về các phương pháp học máy tiên tiến như mạng nơ-ron và học sâu (deep learning) – cụ thể là RNN và LSTM – để cải thiện độ chính xác của dự báo. Việc tối ưu hóa mô hình và thuật toán cũng là một hướng phát triển quan trọng để tăng hiệu quả dự báo giá cổ phiếu.
II.Ứng dụng Python và các thư viện hỗ trợ
Đồ án tận dụng sức mạnh của ngôn ngữ lập trình Python, nổi bật với tính dễ sử dụng và khả năng tích hợp với các thư viện khoa học dữ liệu. NumPy được sử dụng để xử lý mảng đa chiều, SciPy bổ sung các thuật toán toán học nâng cao, Pandas cung cấp công cụ mạnh mẽ cho việc thao tác DataFrame (kết cấu dữ liệu bảng) từ dữ liệu CSV, và Matplotlib giúp trực quan hóa kết quả. Việc sử dụng các thư viện này cho phép thực hiện phân tích thống kê và xây dựng các mô hình dự báo một cách hiệu quả.
1. Lựa chọn ngôn ngữ lập trình Python
Đồ án này lựa chọn Python làm ngôn ngữ lập trình chính. Python được đánh giá cao bởi tính dễ đọc, cấu trúc rõ ràng, và sự hỗ trợ mạnh mẽ từ cộng đồng. Điều này đặc biệt thuận lợi cho sinh viên mới bắt đầu làm quen với lập trình. Việc lựa chọn Python cũng dựa trên sự phổ biến rộng rãi của nó trong lĩnh vực khoa học dữ liệu và khả năng tích hợp với nhiều thư viện mạnh mẽ hỗ trợ xử lý dữ liệu và tính toán khoa học. Tài liệu về Python phong phú, giúp sinh viên dễ dàng tìm kiếm thông tin và giải quyết vấn đề trong quá trình thực hiện đồ án. Ngoài ra, khả năng mở rộng và khả năng tích hợp với các công cụ khác của Python cũng là những yếu tố quan trọng trong quyết định này. Mặc dù có thể sử dụng các trình soạn thảo đơn giản như Notepad, nhưng để tối ưu hóa quá trình phát triển, sử dụng một IDE (Integrated Development Environment) là lựa chọn tốt hơn.
2. Ứng dụng các thư viện NumPy SciPy và Matplotlib
Để xử lý hiệu quả dữ liệu và xây dựng mô hình, đồ án đã tận dụng sức mạnh của các thư viện Python chuyên dụng. NumPy, được biết đến như một “ngựa kéo” trong phân tích dữ liệu, cung cấp khả năng làm việc với các mảng đa chiều và thực hiện các phép toán toán học trên đó. Điều này đặc biệt hữu ích cho việc xử lý dữ liệu số liệu lớn trong dự báo giá cổ phiếu. SciPy, xây dựng trên nền tảng của NumPy, cung cấp thêm nhiều thuật toán toán học nâng cao cho đại số tuyến tính, xử lý tín hiệu, xử lý ảnh và tối ưu hóa, giúp mở rộng khả năng phân tích và mô hình hóa. Matplotlib, một thư viện trực quan hóa dữ liệu mạnh mẽ, cho phép tạo ra các biểu đồ, giúp sinh viên trực quan hóa dữ liệu và trình bày kết quả một cách hiệu quả. Việc kết hợp ba thư viện này đã tạo ra một môi trường lập trình hiệu quả cho việc xây dựng và phân tích các mô hình dự báo trong đồ án.
3. Sử dụng thư viện Pandas để xử lý dữ liệu CSV
Dữ liệu được sử dụng trong đồ án này chủ yếu ở định dạng CSV (Comma Separated Values). Pandas, một thư viện mã nguồn mở, đóng vai trò quan trọng trong việc xử lý và thao tác dữ liệu từ các file CSV. Pandas cung cấp một cấu trúc dữ liệu DataFrame hiệu quả, cho phép truy cập và chỉnh sửa dữ liệu một cách linh hoạt. Thư viện này được đánh giá cao bởi tính linh hoạt và hiệu quả, cho phép xử lý nhanh chóng các tập dữ liệu lớn. Khả năng đọc và ghi dữ liệu từ file CSV của Pandas giúp quá trình tiền xử lý dữ liệu trở nên dễ dàng và thuận tiện. Pandas cũng cung cấp nhiều hàm hữu ích để thao tác trên DataFrame, như lọc dữ liệu, tính toán thống kê, và biến đổi dữ liệu. Sự lựa chọn Pandas là một yếu tố quan trọng góp phần vào sự thành công của việc phân tích dữ liệu trong đồ án.
III.Các phương pháp dự báo được áp dụng
Nghiên cứu so sánh hiệu quả của ba phương pháp dự báo chính: Moving Average (MA), Exponential Smoothing, và Double Exponential Smoothing. Mỗi phương pháp có ưu điểm và nhược điểm riêng, phù hợp với các loại dữ liệu và đặc điểm khác nhau của chuỗi thời gian. Kết quả được thể hiện qua các biểu đồ do Matplotlib tạo ra, giúp đánh giá hiệu quả dự báo của từng mô hình. Việc áp dụng học máy (đặc biệt là các mô hình RNN và LSTM) được đề cập như một hướng phát triển trong tương lai để nâng cao độ chính xác.
1. Phương pháp Trung bình động Moving Average MA
Mô hình trung bình động (MA) là một phương pháp dự báo đơn giản, tính toán trung bình của một số giá trị quan sát gần nhất để dự đoán giá trị tương lai. Ưu điểm của phương pháp này là dễ hiểu và dễ thực hiện. Tuy nhiên, nhược điểm chính là MA phụ thuộc rất nhiều vào dữ liệu đầu vào trước đó, và chỉ nên áp dụng khi số giá trị quan sát được ít và tập dữ liệu có tính ổn định cao theo thời gian. Hệ số làm mịn trong MA ảnh hưởng đến độ mượt của chuỗi thời gian dự báo. Khi hệ số làm mịn tiến tới 0, mô hình sẽ tiệm cận mô hình trung bình động. Trong đồ án, MA được sử dụng để so sánh với các phương pháp phức tạp hơn và đánh giá hiệu quả trên dữ liệu giá cổ phiếu. Kết quả cho thấy MA có thể phù hợp với những trường hợp dữ liệu hạn chế và biến động không mạnh.
2. Phương pháp Làm mịn hàm mũ Exponential Smoothing
Phương pháp làm mịn hàm mũ (Exponential Smoothing) là một kỹ thuật dự báo cho phép phản ánh trọng số khác nhau cho các giá trị quan sát trong quá khứ, với trọng số giảm dần theo thời gian. Tham số alpha (∝) điều chỉnh mức độ ảnh hưởng của các quan sát gần đây. Alpha càng lớn, mô hình càng chú trọng đến các quan sát gần nhất, ngược lại, alpha nhỏ thì lịch sử sẽ được tính đến nhiều hơn. Kết quả của mô hình này cho thấy giá trị alpha càng lớn thì độ sai lệch càng ít, giá trị dự báo càng gần với giá trị thực tế. Phương pháp này được đánh giá là hiệu quả hơn MA trong việc xử lý dữ liệu có xu hướng, tuy nhiên vẫn chưa hoàn toàn tối ưu trong trường hợp dữ liệu có biến động mạnh hoặc phức tạp.
3. Phương pháp Làm mịn hàm mũ kép Double Exponential Smoothing
Làm mịn hàm mũ kép (Double Exponential Smoothing) là một cải tiến của phương pháp làm mịn hàm mũ, bổ sung khả năng xử lý xu hướng trong dữ liệu. Phương pháp này sử dụng đệ quy làm mịn hai lần, giúp phản ánh tốt hơn sự thay đổi xu hướng theo thời gian. Tham số beta (β) trong mô hình này được dùng để điều chỉnh mức độ ảnh hưởng của xu hướng. Double Exponential Smoothing thể hiện ưu thế hơn so với MA đối với các tập dữ liệu lớn có xu hướng rõ ràng, vì tham số beta có thể làm giảm ảnh hưởng của xu hướng theo thời gian. Trong đồ án, phương pháp này được so sánh với MA và Exponential Smoothing để đánh giá hiệu quả trên dữ liệu thực tế, cho thấy sự phù hợp với dữ liệu có xu hướng rõ rệt, đặc biệt là khi kích thước dữ liệu lớn.
4. Học máy Machine Learning Hướng phát triển tương lai
Mặc dù đồ án tập trung vào các phương pháp thống kê truyền thống, nhưng cũng đề cập đến tiềm năng của học máy (Machine Learning) trong việc dự báo giá cổ phiếu. Học máy, với các thuật toán như RNN và LSTM, có khả năng xử lý dữ liệu chuỗi thời gian phức tạp và phát hiện các mẫu ẩn sâu trong dữ liệu. RNN, đặc biệt là LSTM (Long Short-Term Memory), có khả năng lưu giữ thông tin từ quá khứ và áp dụng cho dự báo. Các phương pháp này được đề xuất như một hướng phát triển trong tương lai để nâng cao độ chính xác của dự báo, khắc phục hạn chế của các phương pháp thống kê truyền thống trong việc xử lý dữ liệu biến động không tuyến tính và không tham số của thị trường chứng khoán.
IV.Kết luận và Hướng phát triển
Đồ án đã đạt được những kết quả nhất định trong việc xây dựng và đánh giá các mô hình dự báo giá cổ phiếu bằng Python. Tuy nhiên, còn một số hạn chế như chưa hiểu sâu về bài toán dự báo và chưa tối ưu hóa giao diện chương trình. Hướng phát triển trong tương lai sẽ tập trung vào việc nghiên cứu sâu hơn về học máy, đặc biệt là các mô hình mạng nơ-ron và học sâu (deep learning), để cải thiện độ chính xác của dự báo.
1. Tổng kết kết quả nghiên cứu
Đồ án đã thành công trong việc áp dụng Python và các thư viện hỗ trợ (Pandas, NumPy, SciPy, Matplotlib) để xây dựng và đánh giá ba mô hình dự báo giá cổ phiếu: Moving Average (MA), Exponential Smoothing, và Double Exponential Smoothing. Mỗi mô hình được phân tích ưu, nhược điểm và hiệu quả trên dữ liệu thực tế. Kết quả cho thấy sự khác biệt về độ chính xác giữa các mô hình, phụ thuộc vào đặc tính của dữ liệu (kích thước, tính ổn định, xu hướng). Tuy nhiên, đồ án cũng thừa nhận một số hạn chế, bao gồm việc chưa hiểu sâu về lý thuyết dự báo và giao diện chương trình chưa được tối ưu. Việc sử dụng dữ liệu lịch sử giá cổ phiếu từ các nguồn trực tuyến (cafef.vn, cophieu68.vn, investing.com, tradingview.com) đã cung cấp cơ sở dữ liệu cần thiết cho nghiên cứu. Các kết quả thu được đóng góp vào việc hiểu rõ hơn về hiệu quả của từng mô hình dự báo trong ngữ cảnh cụ thể của thị trường chứng khoán Việt Nam.
2. Hướng phát triển trong tương lai
Để hoàn thiện hơn nữa nghiên cứu, tác giả đề xuất một số hướng phát triển trong tương lai. Thứ nhất, cần nghiên cứu sâu hơn về lý thuyết dự báo giá cổ phiếu, đặc biệt là các khía cạnh liên quan đến tính chất phi tuyến tính và không tham số của thị trường. Thứ hai, cần cải thiện giao diện người dùng của chương trình để tăng tính thân thiện và dễ sử dụng. Thứ ba, và quan trọng nhất, cần ứng dụng các phương pháp học máy tiên tiến hơn, chẳng hạn như mạng nơ-ron (RNN, LSTM) và học sâu (Deep Learning). Những phương pháp này có tiềm năng cải thiện đáng kể độ chính xác của dự báo so với các mô hình thống kê truyền thống đã được sử dụng trong đồ án. Việc tích hợp học máy sẽ giúp mô hình dự báo có khả năng học hỏi từ dữ liệu phức tạp hơn và thích ứng tốt hơn với sự biến động của thị trường.
Tài liệu tham khảo
- cafef.vn
- cophieu68.vn
- investing.com
- tradingview.com