Processing & Exploration Data Analysis Cùng nhìn 5 dòng đầu tiên để có cái nhìn khái quát về tập dữ liệu của chúng ta: Bộ dữ liệu của chúng ta hiện khá sạch.. Dự báo ngoái tập dữ liệu 10
Trang 1TRƯỜNG ĐẠI HỌC KINH TẾ - LUẬT
KHOA HỆ THỐNG THÔNG TIN
Giảng viên: Lê Hoành Sử
Hồ Chí Minh, ngày 27 tháng 5 năm 2023
Trang 2MỤC LỤC
A Data Description; Processing & Exploration Data Analysis 4
2 Processing & Exploration Data Analysis 5
3 Technical analysis with Quantmod 9
4 Forecast with one basic technique (ARIMA) 12
2 Processing & Exploration Data Analysis 16
2 Processing & Exploration Data Analysis 23
3 Technical analysis with Quantmod 29
4 Forecast with one basic technique (ARIMA) 30
2 Processing & Exploration Data Analysis 32
C Đánh giá mức độ ảnh hưởng các biến phụ thuộc với Shap 38
Trang 4A Data Description; Processing & Exploration Data Analysis
A1 Nguyễn Phúc Thịnh
1 Data Description
Bộ dữ liệu gốc
Phía trên là 10 dòng đầu tiên của bộ dữ liệu Finance Advance
Bộ dữ liệu gồm 14 cột với 930 bản ghi Trong đó bao gồm dữ liệu của nhiều mãchứng khoán khác nhau Trong bài viết này, ta chỉ chọn ra 1 mã đại diện để phântích
Mã may mắn được chọn ở đây sẽ là “TPB”!
Bộ dữ liệu của mã TPB
6 Dòng đầu tiên cảu bộ dữ liệu đã được chọn ra
Nhưng bộ dữ liệu hiện có quá nhiều cột Ta vẫn sẽ chỉ chọn ra những cột điểnhình góp phần quan trọng vào việc phân tích Những cột đó là "date", "time",
"open", "high", "low", "close" và "nmVolume"
Nhưng trước khi chọn, ta cần kiểm tra việc trùng lặp giá trị trong cột "date" VìGiá trị trong cột high/low mang ý nghĩa là giá cao nhất và thấp nhất trong ngày
Do đó nếu có xảy ra việc trùng lặp, ta cần thực hiện việc so sánh và chọn lựa lạisau đó
Trang 5Sau khi kiểm tra, ta thấy không có bất cứ ngày nào xuất hiện quá 1 lần trên cột.
Cột "time" sẽ không cần thiết phải lấy ra vì biến has_duplicates = 0
Cột "date" sẽ được sắp xếp lại theo thứ tự xa dần
Cùng xem trước 5 dòng đầu tiên sau khi chọn lựa ra các cột cần thiết
Bộ dữ liệu của mã TPB sau khi lọc ra
2 Processing & Exploration Data Analysis
Cùng nhìn 5 dòng đầu tiên để có cái nhìn khái quát về tập dữ liệu của chúng ta:
Bộ dữ liệu của chúng ta hiện khá sạch Nhưng để chắc chắn hơn, ta sẽ dùng lệnhsummary để nhìn lại một lần nữa
Trang 6Trước mắt ta thấy bộ dữ liệu bao gồm 6 biến với 930 bản ghi.
Các biến open, high, low, close, nmVolume lần lượt là giá mở cửa, giá trần, giá sàn,giá đóng cửa, khối lượng giao dịch trong ngày của mã TPB
Biến date hiện đang gặp một lỗi nhỏ về định dạng kiểu dữ liệu Ta cần format chúnglại về kiểu "date"
```{r}
tpb$date <- as.Date(tpb$date)
```
Kiểm tra lại:
Hiện tại kiểu dữ liệu đã được định dạng lại theo đúng với từng thuộc tính
Trang 7Dựa vào những giá trị tại cột date, ta có thể biết rằng bộ dữ liệu được thu thập từ19/4/2018 đến 31/12/2021.
Bên cạnh đó, bộ dữ liệu của chúng ta cũng khá sạch khi không có bất kì giá trị NAsnào
Tiếp theo, ta sẽ trực quan bộ dữ liệu qua biểu đồ box-plot để xem xét các giá trị ngoạilai
Biểu đồ trên cho thấy các giá trị ngoại lai xuất hiện khá nhiều, ta có thể hiểu rằng sẽ
có người giao dịch với lượng lớn cổ phiếu trong một phiên Nhưng vì đây là dữ liệu
Trang 8chứng khoán và được ghi nhận liên tục theo từng ngày, do đó chúng có xuất hiệnnhững giá trị ngoại lai (outliers) thì đó là điều đương nhiên Chúng ta sẽ không xóa bỏchúng để việc phân tích về sau được chính xác nhất.
Đánh giá sự tương quan giữa biến “nmVolume” và “close”
Trên đây là biểu đồ phân phối khối lượng giao dịch dựa trên giá đóng cửa của chúng
Nhìn sơ lược ta có thể thấy, điểm tập trung nhiều nhất nằm tại góc phần tư phía dướibên trái của phân phối Và những giá trị Volume lớn bất thường khi giá trị Close dầntăng lên và ngược lại Đây có vẻ là một quy luật tự nhiên khi giao dịch chứng khoán:
"Mua tại đầu gối và bán ra tại cổ!"
Ta cùng kiểm chứng bằng hệ số tương quan spearman
Trang 90.7237 là một con số khiến chúng ta vội kết luận rằng giữa biến Volume và Close có
sự tương quan tăng
3 Technical analysis with Quantmod
3.1 Charting
Biểu đồ trên thể hiện giá đóng cửa và khối lượng giao dịch tương ứng trong quãngthời gian từ ngày 19/4/2018 đến ngày 21/12/2022
Trang 103.2 Thêm các chỉ số kỹ thuật
SMA
Đường Simple Moving Average (SMA): là đường trung bình động đơn giản được tínhbằng trung bình cộng các mức giá đóng cửa trong một khoảng thời gian giao dịch nhấtđịnh
Ta đã tính được chỉ số SMA mỗi 20 ngày và xuất ra 5 giá trị cuối cùng của chúng
Vẽ thêm đường SMA vào đồ thị:
Trang 11Momentum indicator (MOM) là chỉ báo động lượng thường được dùng trong phântích kỹ thuật Chỉ báo Momentum đo lường tốc độ thay đổi của giá chứng khoán trongmột khoảng thời gian nhất định
Ta sẽ tính toán động lượng 2 ngày dựa trên giá đóng cửa của TPB
Trực quan chỉ số MOM lên biểu đồ
Trang 124 Forecast with one basic technique (ARIMA)
4.1 Kiểm tra tính dừng
Ở phần này, ta sẽ chọn biến "close" để thực hiện dự báo với mô hình ARIMA
Trước khi triển khai mô hình ARIMA, ta cần kiểm tra dữ liệu chuỗi thời gian có tínhdừng hay không
Đầu tiên, ta sẽ quan sát qua đồ thị phân phối giá đóng cửa theo dòng thời gian sau:
Nhìn vào đồ thị ta thấy, với cột y là những giá trị của biến close được phân phối tươngứng với cột x là chuỗi thời gian Dễ dàng nhìn thấy rằng chúng không phân phốiquanh một giá trị nhất định mà chúng biến đổi thất thường Do đó ta chưa thể kết luậnrằng dữ liệu của chúng ta có tính dừng
Ta sẽ kiểm định tính dừng bằng phương pháp ADF test:
Trang 13Kết quả kiểm định cho ra giá trị p-value = 0.622 (>0.05) Do đó, kết luận được đưa ralà: Dữ liệu hiện không có tính dừng.
Chuyển đổi dữ liệu chuỗi thời gian gốc về dữ liệu chuỗi thời gian có tính dừng bằng phương pháp sai phân:
Hiện tại, dữ liệu mới được lưu dưới tên bến differenced_series
Sau khi chuyển đổi và thực hiện kiểm định tính dừng bằng kiểm định ADF, giá trịkiểm định p-value cho ra là 0.01 (<0.05) Do đó có thể nói dữ liệu của ta là một chuỗidừng
4.2 Lưạ chọn tham số ARIMA (p,d,q)
Để đơn giản hóa, ta sẽ chọn hàm auto.arima() trong R thuộc gói forecast được sử dụng
để tự động chọn mô hình ARIMA tốt nhất cho dữ liệu
chuỗi thời gian
Sau khi chạy xong hàm auto.arima, mô hình tốt nhất được đề xuất với bộ số (p,d,q) là(0,0,0)
Trang 144.3 Prediction
4.3.1 Dự báo ngoái tập dữ liệu
10 giá trị tương lai đã được dự đoán với độ chính xác 80% và 95% nhưng chúng đang
ở dạng sai phân
Hiện tác giá vẫn chưa tìm ra cách chuyển đổi về dạng ban đầu :((
4.3.2 Dự đoán trong tập dữ liệu
Trước khi tiến hành dự báo, ta sẽ chia tập dữ liệu thành train và test với tỉ lệ 80/20
Sau khi chia bộ dữ liều thành 2 tập train và test, ta sẽ tiến hành thiết lập mô hìnhARIMA để chuẩn bị cho việc dự báo
Tiến hành dự báo:
Trang 15Phía trên là kết quả dự báo.
Để xem xét những kết quả trên được dự báo chính xác hay không, ta cần kiểm địnhchúng qua những chỉ số như RMSE, MAE, MAPE
Chỉ số RMSE là độ lệch chuẩn của các phần dư (sai số dự đoán) Trong trường hợpnày, giá trị RMSE là 0.02133782
Chỉ số MAE (Mean Absolute Error) là trung bình giá trị tuyệt đối của sai số giữa giátrị thực tế và giá trị dự báo Trong trường hợp này, giá trị MAE là 0.01387308
Chỉ số MAPE (Mean Absolute Percentage Error) là trung bình giá trị tuyệt đối của tỷ
lệ phần trăm sai số giữa giá trị thực tế và giá trị dự báo Trong trường hợp này, giá trịMAPE là 28.50554%
Trang 16Những giá trị càng nhỏ thì mô hình dự báo càng chính xác Vì vậy, trong trường hợpnày, giá trị RMSE, MAE và MAPE đều khá thấp, cho thấy mô hình có khả năng dựbáo tốt trên tập kiểm tra.
A2 Nguyễn Thành Luân
Bằng cách áp dụng các phương pháp phân tích thống kê và mô hình hóa dữliệu, chúng ta sẽ tìm hiểu về các yếu tố ảnh hưởng đến giá cổ phiếu và dự đoán xuhướng tương lai Mô hình hóa dữ liệu chứng khoán sẽ cung cấp thông tin quan trọng
để đưa ra quyết định đầu tư thông minh và hiệu quả
Và cụ thể ở đây là mã cố phiếu LPB
2 Processing & Exploration Data Analysis
+ Read data
Bộ dữ liệu Finance-Advanced
Trang 17+ Process thành Table
- Trên là bảng dữ liệu gốc bao gồm rất nhiều mã chứng khoán khác nhau Ta sẽtiến hành chọn ra 1 mã đại diện để phân tích Cụ thể ở đây là LPB
Mã cổ phiếu LPB
- Lấy ra các features cần thiết cho việc phân tích
- Datatype của dữ liệu:
- Định dạng lại dữ liệu cho các features trên
Trang 18+ EDA
- Statistics:
- Outlier:
Boxplot of Open/Close
Trang 19Boxplot of VolumeBiểu đồ Trade Volume cho thấy các giá trị ngoại lai xuất hiện khá nhiều, ta có thể hiểurằng sẽ có người giao dịch với lượng lớn cổ phiếu trong một phiên.Có thể do tình hìnhkinh tế lúc đó đang diễn biến mạnh mẽ dẫn đến sức mua và bán cổ phiếu lúc đó tăngvọt VÌ vậy, chúng ta sẽ không xóa bỏ chúng để việc phân tích về sau được chính xácnhất.
- Kiểm tra và loại bỏ giá trị NA
Sau khi kiểm tra, ta có thể thấy dữ liệu không mang bất kì giá trị Na hay giá trị bằng 0nào, điều này rất tốt để khi dùng để phân tích
- Visualization
Trang 20Nhìn sơ lược ta có thể thấy, điểm tập trung nhiều nhất nằm tại góc phần tư phía dướibên trái của phân phối Và những giá trị Volume lớn bất thường khi giá trị Close dầntăng lên và ngược lại
Biểu đồ giá chứng khoán LPB từ năm 2018 đến cuối năm 2021
Biểu đồ số lượng giao dịch chứng khoán LPB từ năm 2018 đến cuối năm 2021
Trang 21Phân tích thay đổi giá hàng ngày của cổ phiếu LPB
Để tính số tiền bạn lãi hoặc lỗ mỗi ngày đối với một cổ phiếu, hãy lấy giá đóng cửatrừ đi giá mở cửa Sau đó, nhân kết quả với số cổ phần bạn sở hữu trong công ty
Percentage return
Trang 22Giá cổ phiếu trung bình mỗi tháng
+Technical analysis with Quantmod
Giá cổ phiếu LPB từ 2017 đến 2021
Trang 23Sau khi đã thêm các chỉ số kỹ thuật
Trang 24Biểu đồ nến LPB
+ Arima Model
- Ở phần này, ta sẽ chọn biến "close" để thực hiện dự báo với mô hình ARIMA
- Chọn chỉ số p d c phù hợp :
Trang 25- Prediction
+ Dự báo ngoái tập dữ liệu
10 giá trị tương lai đã được dự đoán với độ chính xác 80% và 95% nhưng chúng đang
ở dạng sai phân
+ Dự đoán trong tập dữ liệu
Trước khi tiến hành dự báo, ta sẽ chia tập dữ liệu thành train và test với tỉ lệ80/20
Trang 26- Sau khi chia bộ dữ liều thành 2 tập train và test, ta sẽ tiến hành thiết lập
mô hình ARIMA để chuẩn bị cho việc dự báo
- Tiến hành dự báo:
- Kiểm định chúng qua những chỉ số như RMSE, MAE, MAPE
Những giá trị càng nhỏ thì mô hình dự báo càng chính xác Vì vậy, trong trường hợpnày, giá trị RMSE, MAE và MAPE đều khá thấp, cho thấy mô hình có khả năng dựbáo tốt trên tập kiểm tra
Trang 27A3 Phạm Công Nguyễn Khôi
1 Data Description
Tổng quan bộ dữ liệu gốc
Đây là tổng quan về 10 dòng đầu của bộ dữ liệu Finance Advance
Đây là bộ dữ liệu về tài chính, cụ thể là về giá cổ phiếu Trong bài này, tôi chọn một
mã cổ phiếu và ở đây tôi chọn mã “AGR” để có thể tiến hành dự báo và phân tích
Để có thể tiện cho việc xử lý và phân, tôi chỉ ra những cột dữ liệu cần thiết, đó lànhững cột: "date", "time", "open", "high", "low", "close" và "nmVolume"
Tổng quan bộ dữ liệu cần để phân tích
2 Processing & Exploration Data Analysis
Cùng nhìn lại bộ dữ liệu bằng hàm “summary” để có thể kiểm tra lại đặc tính của tập
dữ liệu
Đầu tiên chúng ta sẽ kiểm tra các giá trị bằng Na hoặc bằng 0 trong bộ dữ liệu
Trang 28Sau khi kiểm tra, ta có thể thấy dữ liệu không mang bất kì giá trị Na hay giá trị bằng 0nào, điều này rất tốt để khi dùng để phân tích.
Từ việc kiểm tra bằng hàm “summary” trước đó ta có thể thấy cột “date” mang địnhdạng “character” chúng ta cần chuyển về định dạng “date”
Sau đó chúng ta cần sắp xếp lại thứ tự trong cột “date”
Và đây là bộ dữ liệu sau khi tiến hành sắp xếp và làm sạch
Tiếp theo chúng ta sẽ trực quan bộ dữ liệu qua biểu đồ box-plot để xem xét các giá trịcủa tập dữ liệu
Trang 31nhiều, ta có thể nhận định rằng sẽ có những người thực hiện giao dịch lớn trong mộtphiên Nhưng vì đây là dữ liệu chứng khoán được ghi nhận theo ngày, do đó việc xuấthiện những giá trị ngoại lai là điều dễ hiểu Nên việc loại bỏ các giá trị này là khôngcần thiết và nên được giữ lại để thuận tiện và tăng tính chính xác cho việc phân tích.
Để có cái nhìn tổng quan về từng biến trong tập dữ liệu, ta sẽ trực quan hóa dữ liệuthành biểu đồ để dễ dàng cho việc nhận định hơn
Trang 343.1 Charting
Trang 354 Forecast with one basic technique (ARIMA)
Ở phần này, ta sẽ chọn biến "close" để thực hiện dự báo với mô hình ARIMA
Trước khi triển khai mô hình ARIMA, ta cần kiểm tra dữ liệu chuỗi thời gian có tínhdừng hay không
Kết quả kiểm định cho ra giá trị p-value = 0.99 (>0.05) Do đó, kết luận được đưa ralà: Dữ liệu hiện không có tính dừng
Tiếp theo chúng ta chia tập dữ liệu thành 2 phần thành tập train và test với tỉ lệ 80/20.Sau đó chúng ta tiến hành chạy mô hình dự báo bằng ARIMA
Trang 36Sau đó kiểm tra đánh giá lại mô hình.
Chỉ số RMSE là độ lệch chuẩn của các phần dư (sai số dự đoán) Trong trường hợpnày, giá trị RMSE là 7.788744 %
Chỉ số MAE (Mean Absolute Error) là trung bình giá trị tuyệt đối của sai số giữa giátrị thực tế và giá trị dự báo Trong trường hợp này, giá trị MAE là 6.330752 %
Chỉ số MAPE (Mean Absolute Percentage Error) là trung bình giá trị tuyệt đối của tỷ
lệ phần trăm sai số giữa giá trị thực tế và giá trị dự báo Trong trường hợp này, giá trịMAPE là 0.7081347 %
Những giá trị càng nhỏ thì mô hình dự báo càng chính xác Vì vậy, trong trường hợpnày, giá trị RMSE, MAE và MAPE đều khá thấp, cho thấy mô hình có khả năng dựbáo tốt trên tập kiểm tra
A4 Lê Thành Tuân
1 Data Description
Bộ dữ liệu gốc
Trang 37Phía trên là một phần trong bộ dữ liệu Finance Advance, một tập dữ liệu được thuthập từ nhiều công ty khác nhau liên quan đến thị trường chính khoán Tệp dữ liệu này
sẽ giúp ta quan sát và tìm hiểu rõ hơn những yếu tố liên quan đến cổ phiếu như biếnđộng, số lượng giao dịch,
Và tôi chọn sẽ là "SHB" để phân tích và để thuận lợi cho quá trình phân tích và xử lý,tôi sẽ tách ra những cột dữ liệu cần thiết, đó là: "date", "time", "open", "high", "low",
"close" và "nmVolume"
Những cột dữ liệu quan trọng mà tôi đã lọc ra
2 Processing & Exploration Data Analysis
+ Đọc dữ liệu
+ Chuẩn bị dữ liệu
Trang 38+ Lọc các cột dữ liệu
+ Định dạng lại dữ liệu của các cột
Trang 39+ Sau đó ta được tệp dữ liệu:
+ Kiểm tra và loại bỏ giá trị NA:
Trang 40+ Vẽ scatter plot thể hiện sự tương quan giữa 2 biến
+ sau đó sẽ xuất hiện biểu đồ giá
Trang 42Sau khi thực hiện đánh giá mô hình qua các chỉ số, ta thu được kết quả sau:
Mô hình 1 (Nguyễn Phúc Thịnh):
RMSE: 0.02133782
MAE: 0.01387308
MAPE: 28.50554 %
Mô hình 2 (Nguyễn Thành Luân):
Mô hình 3 (Phạm Công Nguyễn Khôi):
Trang 43C Đánh giá mức độ ảnh hưởng các biến phụ thuộc với Shap
Shap là một gói thực hiện một phiên bản mở rộng của phương pháp Kernel SHAP đểxấp xỉ giá trị Shapley (Lundberg và Lee (2017)), trong đó xem xét sự phụ thuộc giữacác đặc trưng (Aas, Jullum và Løland (2019)) Ước lượng giá trị Shapley là một vấn
đề quan trọng khi cố gắng giải thích các mô hình học máy phức tạp Trong các nghiêncứu hiện có về việc giải thích các dự đoán cá nhân, giá trị Shapley được coi là phươngpháp giải thích không phụ thuộc vào mô hình duy nhất với nền tảng lý thuyết vữngchắc (Lundberg và Lee (2017)) Kernel SHAP là một xấp xỉ tính toán hiệu quả về mặttính toán cho giá trị Shapley trong không gian đa chiều, nhưng nó giả định các đặctrưng độc lập Aas, Jullum và Løland (2019) mở rộng phương pháp Kernel SHAP để
xử lý các đặc trưng phụ thuộc, từ đó đưa ra xấp xỉ chính xác hơn đối với giá trịShapley thực sự Xem bài báo (Aas, Jullum và Løland (2019)) để biết thêm chi tiết
Phương thức Kernel SHAP
Giả sử có một mô hình dự đoán f(x) cho giá trị đáp ứng y với các đặc trưng x ∈ RM,được huấn luyện trên một tập dữ liệu huấn luyện, và chúng ta muốn giải thích các dựđoán cho các tập dữ liệu mới Điều này có thể được thực hiện bằng cách sử dụng các ýtưởng từ lý thuyết trò chơi hợp tác, cho phép một dự đoán duy nhất đóng vai trò là tròchơi đang diễn ra và các đặc trưng đóng vai trò là người chơi Đặt N là tập hợp tất cả
M người chơi và S ⊆ N là một tập con gồm |S| người chơi, hàm "đóng góp" v(S) mô
tả tổng kỳ vọng của tổng số thanh toán mà các thành viên trong S có thể đạt đượcthông qua sự hợp tác Giá trị Shapley (Shapley (1953)) là một cách để phân phối tổnglợi ích cho các người chơi, giả sử rằng tất cả họ đều hợp tác Số tiền mà người chơi inhận được là
Đó là trung bình có trọng số trên tất cả các tập con S của người chơi mà không chứangười chơi i Lundberg và Lee (2017) xác định hàm đóng góp cho một tập con S cụthể của các đặc trưng này xS là v(S) = E[f(x) | xS], kỳ vọng đầu ra của mô hình dựđoán có điều kiện trên giá trị đặc trưng của tập con đó Lundberg và Lee (2017) đặttên cho loại giá trị Shapley này là giá trị SHAP (SHapley Additive exPlanation) Vìcác kỳ vọng có điều kiện có thể được viết dưới dạng