- Model được áp dụng đơn giản, chưa Tuning Parameter cũng như khung thời gian train là rất ngắn. Do đó những Model trong bài viết mang tính chất giới thiệu là chính, còn hiệu quả về mặt đầu tư thì cần phải có thời gian đánh giá lại. Việc chỉ dùng giá mở cửa, cao nhất, thấp nhất, khối lượng để dự báo giá đóng cửa mang rất nhiều rủi ro
- Model thiết lập đơn giản đến mức bạn có thể clone một bản trên colab, và chỉ thay đổi dữ liệu đầu vào theo đúng cấu trúc là được.
- Thư viện KATS cũng có hỗ trợ cả việc điều chỉnh tham số (Tuning Parameter) của các Model, cũng như Back Testing error như MAE, MSE, RMSE, MAPE,... Tuy nhiên, mình sẽ viết về phần này trong một bài viết khác!
- Dữ liệu bên dưới là dữ liệu của Chứng Khoán Bản Việt (HoSE:VCI), mình trích xuất từ V-Pro của Chứng Khoán Bản Việt (HoSE:VCI). Bên dưới cũng có hướng dẫn cách export nhanh cho ai muốn vọc thử liền. (ai muốn dùng thử VPro thì mở tk ở đây)
- Mình cũng có viết những bài viết khác về áp dụng AI trong đầu tư như: Algo Trading trong phân tích tâm lí thị trường (Sentiment), Áp dụng Machine Learning trong dự báo lợi nhuận đầu tư,... Tham khảo thêm
----------------------------------------------------------------
pip install kats
Mình nhập data mẫu từ V-Pro VCSC lên Github để call cho dễ, hướng dẫn như hình bên dưới. Nếu bạn nào có biết nơi để call dữ liệu realtime (và free để ai cũng dùng dc :D ) thì comment support mình nhé.
Ở đây mình chỉ giới thiệu thư viện & các thuật toán, nên mình chỉ filter ra 200 phiên gần nhất để chạy các Model mẫu. (đỡ phải chờ lâu :))
Bạn có thể dùng nhiều dữ liệu train hơn nếu muốn.
Bảng dữ liệu mẫu sẽ như thế này:
Set up 2 tệp dữ liệu đào tạo và kiểm tra
Chắc hẳn mọi người sẽ hỏi vì sao không random như các bài toán ML khác? thì mình xin trả lời ngắn gọn là do tính chất của bài toán dự báo, dữ liệu cơ sở là dùng giá lịch sử để dự báo là giá của ngày hôm sau. (trong bài là giá đóng cửa)
Và còn một điều cần phải thống nhất nữa, mình setup train 170 phiên & giữ lại test 30 phiên. Trên phần vẽ biểu đồ, mình compair phần model tính toán với phần data real để tiện so sánh độ hiệu quả.
Chạy các Model Machine Learning
Model SARIMA
- Biểu đồ đầu tiên là so sánh giá (Close) giữa thực tế và model dự báo.
- Biểu đồ thứ 2 là giá lịch sử (170 phiên) & giá dự báo (30 phiên tiếp theo)
Model Facebook Prophet
from kats.models.prophet import ProphetModel, ProphetParamsparams = ProphetParams(seasonality_mode="additive")m = ProphetModel(ts,params)m.fit()fcst = m.predict(steps=30, freq="D")fcst['Close'] = test['Close']import seaborn as snsplt.figure(figsize = (11,5))plt.xticks(rotation=20)plt.title('So sánh giá dự báo & giá thực tế')sns.lineplot(x=fcst['time'], y=fcst['fcst'], label="Giá dự báo", color="b")sns.lineplot(x=fcst['time'], y=fcst['Close'], label ="Giá thực tế", color = 'red')m.plot()
Model HoltWinters
Model Vector autoregression (VAR)
Vector autoregression (VAR) là một thuật toán dự báo đa biến, cũng được hỗ trợ sẵn trong Kats. Bây giờ chúng ta sẽ áp dụng VAR để dự báo xu hướng giá mở cửa & đóng cửa nhé.
Phần plot của Kats.VARModel hơi chuối, nhìn tạm nhé mn.
Lời cuối:
Bài viết này chia sẻ đến cộng đồng đầu tư những bước đi đến với ứng dụng Machine Learning trong dự báo giá cổ phiếu. Có thể nó sẽ góp phần tối ưu hóa quá trình đầu tư của bạn, cũng như cải thiện kỹ năng viết bài của mình :))
Nếu thích bạn có thể kết nối bạn bè, hoặc đọc thêm các bài viết khác của mình trên https://www.cafechungkhoan.com
Link code của bài viết: https://github.com/cafechungkhoan/deeplearning-predict-stock