You are on page 1of 6

Bài toán dự đoán giá cổ phiếu

1. Giới thiệu bài toán


Phân tích thị trường chứng khoán có thể chia làm 2 loại chính: phân tích cơ bản
(Fundamental Analysis) và phân tích kĩ thuật (Technical Analysis):
 Fundamental Analysis gồm những phân tích về thông tin như báo cáo tài chính, tình
hình kinh doanh hiện tại hay lợi nhuận tương lai của công ty.
 Technical Analysis bao gồm những phân tích về các số liệu thống kê và các biểu đồ
(về tình hình tài chính, lợi nhuận, …)
Báo cáo sẽ tập trung và phần Technical Analysis, cụ thể là xây dựng một mô hình dự
đoán giá cổ phiếu trong tương lai dựa vào số liệu từ quá khứ.
Phát biểu bài toán: Cho một tập dữ liệu (gọi là Training set) bao gồm các giá trị về giá
một cổ phiếu trong quá khứ. Sử dụng tập dữ liệu này xây dựng một mô hình dự đoán giá
cổ phiếu đó trong tương lai .
Yêu cầu tối thiểu hóa bình phương sai số dự đoán trên tập Training set.

2. Mô hình hóa bài toán


Các kí hiệu:
 T là tập dữ liệu (Training set)
 Đặt M =|T | là số lượng dữ liệu có trong T
 x i là một mẫu dữ liệu thuộc T , có dạng là vector n chiều. Trong đó n thể hiện sô
ngày ngày liên tiếp được lấy làm đầu vào cho mô hình, i thể hiện ngày thứ i tính
từ ngày đầu dữ liệu được lấy.
x i=( x i 1 , x i 2 , … , x ¿ )T , trong đó x ij thể hiện giá trị cổ phiếu ngày thứ j−n−1 tính từ
ngày đầu của chuỗi vector
Ví dụ: Ngày bắt đầu lấy dữ liệu là 01-01-2021, i=3 và n=30 , thì x i thể hiện giá trị
đầu vào để dự đoán cho ngày 03-01-2021; x i 1 thể hiện giá trị cổ phiếu ngày 04-12-
2020, … , x ¿ thể hiện giá trị cổ phiếu đó vào ngày 02-01-2021.
 f ( x i ) =w 0+ w1 x i 1 +…+ wn x¿ là giá trị dự đoán của mô hình giá cổ phiếu ngày thứ i
 y i thể hiện giá trị thật của cổ phiếu ngày thứ i, ta gọi y i là nhãn ứng với mẫu dữ
liệu x i
T
Ta sẽ quy về bài toán quy hoạch tuyến tính tìm vector w=( w0 , w1 , w2 , … , wn )
Hàm mục tiêu (residual sum of squares):
M M
2 2
min RSS ( w , T )=∑ ( y i −f ( x i ) ) =∑ ( y i−w 0−w1 x i 1−…−w n x ¿ )
i=1 i=1

v.đ.k w ∈ Rn+1

3. Hướng giải
M
2
Ta cần tìm w∗¿ argmin ∑ ( y i−w0−w1 xi 1−…−wn x ¿ )
i=1

Đặt A là ma trận kích thước M x ( n+1 ) là ma trận “mở rộng” của tất cả các mẫu dữ liệu
trong T , mỗi hàng Ai thể hiện một mẫu dữ liệu “mở rộng”:
Ai = ( 1 , x i 1 , x i 2 , … , x ¿ )
T
Đặt y=( y 1 , y 2 ,… , y M ) thể hiện tất cả các nhãn trong tập dữ liệu .
Khi đó có thể viết lại :
M
2
RSS ( w , T )=∑ ( y i −f ( x i ) )
i=1

2
¿ ( y− Aw )

∂ ( RSS ( w , T ) )
Xét =0
∂w

→ 2 AT ( y−Aw )=0

→ A T Aw= AT y

→ w¿ =w=( A ¿¿ T A)−1 A T y ¿

(Ở đây ta giả sử ma trận AT A khả nghịch. Trong trường hợp không khả nghịch có thể
dùng Giả nghịch đảo Moore–Penrose)
4. Thực nghiệm
4.1. Dữ liệu
Training set T được thu thập từ bộ dữ liệu của VNdirect (https://www.vndirect.com.vn/)
từ ngày 01-01-2021 đến ngày 30-06-2021, với mã cổ phiếu là SD9
Định dạng dữ liệu như bảng dưới:
Attrib adj clo change_ av volume_ value_m volume_rec value_rec op hi lo volu
utes ust se perc g match atch oncile oncile en gh w me
date
2021- 8.0 8.0 1.2658 7.9 53300.0 4.217100 0.0 0.0 7.9 8.0 7. 53300
06-18 12 e+08 8 .0
2021- 8.4 8.4 5.0000 8.3 528163.0 4.416244 0.0 0.0 7.8 8.7 7. 52816
06-21 62 e+09 8 3.0
2021- 8.3 8.3 -1.1905 8.2 25713.0 2.123474 0.0 0.0 8.4 8.5 8. 25713
06-22 58 e+08 2 .0
2021- 8.2 8.2 -1.2048 8.1 29701.0 2.418582 0.0 0.0 8.3 8.3 8. 29701
06-23 43 e+08 0 .0
2021- 8.1 8.1 -1.2195 8.0 48930.0 3.946714 0.0 0.0 8.1 8.2 8. 48930
06-24 66 e+08 0 .0
2021- 8.1 8.1 0.0000 8.0 65100.0 5.209100 0.0 0.0 8.0 8.1 7. 65100
06-25 02 e+08 9 .0
2021- 8.1 8.1 0.0000 8.0 141980.0 1.138232 0.0 0.0 8.1 8.2 7. 14198
06-28 17 e+09 9 0.0
2021- 7.9 7.9 -2.4691 7.8 85500.0 6.688500 0.0 0.0 7.9 8.0 7. 85500
06-29 23 e+08 8 .0
2021- 7.9 7.9 0.0000 7.8 42409.0 3.309196 0.0 0.0 7.9 7.9 7. 42409
06-30 03 e+08 8 .0

Biến thiên giá đóng cửa trong Training set T:


Bài toán đặt ra là xây dựng dự đoán giá đóng cửa (close) của cổ phiếu SD9 trong
ngày thứ i chỉ dựa vào dữ liệu giá đóng cửa của n=30 ngày trước đó.
4.2. Cài đặt
Báo cáo mô hình hóa bài toán như đề xuất, cài đặt với ngôn ngữ python, sử dụng các thư
viện numpy, sklearn, pandas và vnquant
4.3. Kết quả
Độ đo RMSE (root-mean-square error) được tính bởi:
M
1 1 2
RMSE ( w , T )= . RSS ( w ,T )= . ∑ ( y i−f ( xi ) )
M M i=1

Với mô hình và dữ liệu như trên, ta giải ra được:


w = [ 0.03668161, -0.09942046, 0.04893054, -0.01058779, 0.08589323, -0.06658706,
-0.01647202, -0.04250931, 0.17914306, -0.01701021, -0.05542697, -0.08904149,
-0.02667802, 0.1178474 , -0.09869822, -0.01348891, -0.0048274 , -0.04342828,
0.06789532, 0.0125151 , 0.01075444, -0.14933335, 0.1999542 , -0.07159451,
0.07181462, 0.09227022, -0.27840648, 0.2091114 , -0.12253 , 0.96517586]

Với giá trị hàm mục tiêu RSS ( w , T )=4.747652760284482


So sánh dự đoán của mô hình trên Training set T và giá trị thật trên T (dự đoán là đường
màu cam, giá trị thật là đường màu xanh dương)
Để khách quan, báo cáo có sử dụng thêm dữ liệu Test set T’ được thu thập từ bộ dữ liệu
của VNdirect (https://www.vndirect.com.vn/) từ ngày 01-07-2021 đến ngày 30-07-2021,
với mã cổ phiếu là SD9.
So sánh dự đoán của mô hình trên Test set T’ và giá trị thật trên T’ (dự đoán là đường
màu cam, giá trị thật là đường màu xanh lục)

4. Kết luận
 Đề xuất mô hình dự đoán giá cổ phiếu dựa vào các giá trị quá khứ và như phương
pháp giải
 Cài đặt kiểm tra tính hiệu quả của phương pháp giải trên dữ liệu thực tế.

You might also like