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:

