TRƯỜNG ĐẠI HỌC KINH TẾ - LUẬTKHOA 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 Analysis4
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 Shap38
Trang 4A.Data Description; Processing & Exploration DataAnalysis
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ân tí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ển hì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ại sau đó.
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ệnh summary để 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úng lại về kiểu "date".
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ừ
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ện nhữ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ưới bê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ần tă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 Quantmod3.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ãng thờ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ậtSMA
Đường Simple Moving Average (SMA): là đường trung bình động đơn giản được tính bằ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ân tích kỹ thuật Chỉ báo Momentum đo lường tốc độ thay đổi của giá chứng khoán trong mộ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ính dừ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ối quanh 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ận rằ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 ra là: 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ừngbằ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ỗi dừ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ình ARIMA để 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 định chú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ợp nà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ợp nà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 1 Data Description
Bộ dữ liệu được lấy tự bộ dữ liệu tài chính FinanceAdvanced.csv (2017 -2021)
Data này đã được thu thập từ nhiều công ty khác nhau và sẽ được phân tích để khám phá các xu hướng và mô hình trong thị trường chứng khoán Tập dữ liệu bao gồm thông tin về giá cổ phiếu, khối lượng giao dịch và các chỉ số tài chính khác trong một khoảng thời gian nhất định Dữ liệu này sẽ giúp chúng ta hiểu rõ hơn về biến động giá cả, tình hình giao dịch và sự biến đổi của thị trường.
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 xu hướ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 Volume
Biểu đồ Trade Volume 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.Có thể do tình hình kinh 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ăng vọ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ác nhấ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 0 nà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ưới bê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ần tă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ửa trừ đ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ợp nà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 0 nà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 định dạ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ột phiên Nhưng vì đây là dữ liệu chứng khoán được ghi nhận theo ngày, do đó việc xuất hiệ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ông cầ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ệu thà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ính dừ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 ra là: 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ợp nà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ợp nà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 thu thậ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ớiShap
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ữa cá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ên cứ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ương phá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ững chắc (Lundberg và Lee (2017)) Kernel SHAP là một xấp xỉ tính toán hiệu quả về mặt tính toán cho giá trị Shapley trong không gian đa chiều, nhưng nó giả định các đặc trư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 được thông qua sự hợp tác Giá trị Shapley (Shapley (1953)) là một cách để phân phối tổng lợ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 i nhậ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ứa ngườ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) đặt tê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