Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Tạo dự đoán giá cổ phiếu bằng mô hình RNN
Hướng Dẫn Đồ ÁnLập Trình AI

Tạo dự đoán giá cổ phiếu bằng mô hình RNN

Chia sẻ
Chia sẻ

Dự đoán giá cổ phiếu là một trong những ứng dụng phổ biến nhất của học sâu trong lĩnh vực tài chính. Các chuỗi giá cổ phiếu theo thời gian là dữ liệu tuần tự (sequential data), điều này đòi hỏi các mô hình có khả năng xử lý thông tin phụ thuộc theo thời gian. Mạng nơ-ron hồi tiếp (Recurrent Neural Network – RNN) và các biến thể của nó như LSTM (Long Short-Term Memory) đã được chứng minh là hiệu quả trong việc phân tích chuỗi thời gian và dự đoán xu hướng giá.

Trong bài viết này, chúng ta sẽ xây dựng một mô hình RNN đơn giản để dự đoán giá đóng cửa của cổ phiếu Apple (AAPL). Bài viết này dành cho người mới bắt đầu với Deep Learning, giải thích từng bước rõ ràng từ tải dữ liệu, xử lý chuỗi thời gian, xây dựng mô hình, huấn luyện đến dự đoán.

Tải và khám phá dữ liệu giá cổ phiếu

Dữ liệu giá cổ phiếu thường được lấy từ các nguồn tài chính như Yahoo Finance, nơi cung cấp các chỉ số quan trọng như giá mở cửa, giá đóng cửa, khối lượng giao dịch. Để thực hiện dự đoán giá cổ phiếu bằng RNN, chúng ta sẽ tập trung vào cột giá đóng cửa (Close), vì đây là chỉ số được các nhà đầu tư quan tâm nhất.

Sử dụng thư viện yfinance để tải dữ liệu cổ phiếu AAPL trong 5 năm gần nhất. Dữ liệu sẽ được nạp vào Pandas DataFrame để tiện xử lý.

import yfinance as yf
import pandas as pd

# Tải dữ liệu AAPL 5 năm gần nhất
data = yf.download('AAPL', start='2018-01-01', end='2023-01-01')
data = data[['Close']]  # Lấy cột giá đóng cửa
print(data.head())

Trực quan hóa chuỗi thời gian giá cổ phiếu

Phân tích trực quan là bước quan trọng để hiểu xu hướng và biến động giá cổ phiếu theo thời gian. Việc quan sát giúp nhận định xem dữ liệu có xu hướng (trend), mùa vụ (seasonality) hay biến động đột ngột (volatility).

Sử dụng Matplotlib để vẽ đồ thị giá đóng cửa:

import matplotlib.pyplot as plt

plt.figure(figsize=(10,6))
plt.plot(data['Close'], label='Giá đóng cửa')
plt.title('Giá đóng cửa cổ phiếu Apple (AAPL)')
plt.xlabel('Ngày')
plt.ylabel('Giá (USD)')
plt.legend()
plt.show()

Chuẩn bị dữ liệu cho mô hình RNN

Để huấn luyện mô hình RNN dự đoán giá cổ phiếu, dữ liệu cần được chuẩn hóa và chuyển thành chuỗi các bước thời gian (time steps). Mô hình sẽ học cách dự đoán giá tại thời điểm t+1 dựa trên một khoảng thời gian trước đó (window size).

Chuẩn hóa dữ liệu về khoảng [0,1] và tạo các chuỗi đầu vào cùng nhãn đầu ra:

from sklearn.preprocessing import MinMaxScaler
import numpy as np

# Chuẩn hóa
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)

# Tạo dataset với window size = 60
window_size = 60
X, y = [], []

for i in range(window_size, len(scaled_data)):
    X.append(scaled_data[i-window_size:i, 0])
    y.append(scaled_data[i, 0])

X, y = np.array(X), np.array(y)

# Định hình lại dữ liệu cho RNN [samples, time steps, features]
X = np.reshape(X, (X.shape[0], X.shape[1], 1))

Xây dựng mô hình RNN dự đoán giá cổ phiếu

Mô hình RNN được sử dụng để học sự phụ thuộc giữa các giá trị trong chuỗi thời gian. Biến thể LSTM giúp giải quyết vấn đề vanishing gradient và giữ thông tin lâu hơn, rất phù hợp cho dữ liệu tài chính.

Tạo kiến trúc RNN đơn giản với một lớp LSTM và một lớp Dense để dự đoán:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(X.shape[1], 1)))
model.add(LSTM(units=50))
model.add(Dense(1))

model.compile(optimizer='adam', loss='mean_squared_error')

Huấn luyện mô hình RNN

Huấn luyện là quá trình mô hình điều chỉnh trọng số để giảm sai số dự đoán. Với dữ liệu giá cổ phiếu, việc huấn luyện cẩn thận giúp mô hình học được xu hướng mà không overfit vào biến động ngẫu nhiên.

Huấn luyện mô hình trong 50 epochs với batch size 32:

history = model.fit(X, y, epochs=50, batch_size=32)

Đánh giá mô hình và dự đoán giá cổ phiếu

Đánh giá mô hình trên tập dữ liệu test giúp kiểm tra khả năng dự đoán của mô hình trên dữ liệu chưa từng thấy. Việc trực quan hóa kết quả dự đoán và so sánh với giá thực tế cũng quan trọng để nhận định chất lượng mô hình.

Dự đoán giá và vẽ đồ thị so sánh:

predicted_price = model.predict(X)
predicted_price = scaler.inverse_transform(predicted_price)

actual_price = scaler.inverse_transform(y.reshape(-1,1))

plt.figure(figsize=(10,6))
plt.plot(actual_price, color='blue', label='Giá thực tế')
plt.plot(predicted_price, color='red', label='Giá dự đoán')
plt.title('Dự đoán giá cổ phiếu AAPL bằng RNN')
plt.xlabel('Ngày')
plt.ylabel('Giá (USD)')
plt.legend()
plt.show()

Dự đoán giá cổ phiếu cho ngày tiếp theo

Mô hình sau khi huấn luyện có thể được sử dụng để dự đoán giá cổ phiếu cho ngày tiếp theo dựa trên dữ liệu 60 ngày gần nhất.

last_60_days = scaled_data[-60:]
last_60_days = np.reshape(last_60_days, (1, last_60_days.shape[0], 1))

predicted_next_day = model.predict(last_60_days)
predicted_next_day = scaler.inverse_transform(predicted_next_day)
print("Giá cổ phiếu dự đoán ngày tiếp theo:", predicted_next_day[0][0])

Kết luận

Mô hình RNN đơn giản đã giúp chúng ta dự đoán xu hướng giá cổ phiếu dựa trên dữ liệu lịch sử. Dù vậy, thị trường tài chính chịu ảnh hưởng của nhiều yếu tố ngoài dữ liệu giá, nên các mô hình phức tạp hơn (như LSTM nhiều tầng, GRU, Transformer) hoặc kết hợp dữ liệu vĩ mô sẽ mang lại kết quả tốt hơn.

Bạn có thể triển khai mô hình này thành API (Chuyển mô hình học máy sang ứng dụng thực tế bằng FastAPI) để phục vụ các ứng dụng tài chính hoặc kết hợp với dashboard để trực quan hóa dự đoán.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!