Xuất phát từ những vấn đề nêu trên, nhóm em đã tìm hiểu, nghiên cứu xây dựng hệ thống “Phân tích đữ liệu chứng khoán của các ngân hàng nhà nước Việt Nam từ năm 01/01/2021 đến 10/03/2023,
Trang 1NGAN HÀNG NHÀ NUOC VIETNAM BỘ GIÁO DỤC VÀ ĐÀO TAO TRƯỜNG ĐẠI HỌC NGÂN HÀNG THÀNH PHỎ HÒ CHÍ MINH
MÔN HỌC: LẬP TRÌNH PYTHON
Đề tai:
Phân tích dữ liệu chứng khoán của 5 ngân hàng nhà nước Việt Nam
bằng trực quan hóa dữ liệu và phân tích dữ liệu
GVHD: ThS Pham Thanh An
Lép hoc phan: DAT708_ 222 9 L14
Hoc ky 2 nam hoc 2022-2023
TPHCM - Tháng 4 năm 2023
Trang 2BANG PHAN CONG CONG VIEC
2 Nguyễn Thị Uyên | 050609212098 Nội dung + Tiểu 100%
3 Hoàng Thị Hương | 050609210693 Ndi dung + Tiéu 100%
4 Nguyễn Như Hiền | 050609210403 Viết code + Áp 100%
dung hoc may
để dự đoán giá đóng cửa
5 Neguyén Ngoc Minh | 050609211147) Thu thap dit liéu 100%
Trang 3
009059 255111 ae 3
0982.000 ễ Ắ 4
1 Mục tiêu nghiên cứu của đồ án 5S S222 212119151 2515121211815 2111111 y6 5
2 Phạm vi tìm hiểu của đồ án c2 2E.” 2H21 5
3 Mô hình nghiệp vụ bài toán thực tế, miền Ứng dỤng ‹‹‹‹‹ -ccccss: 5
4 _ Quá trình thu thập và làm sạch dữ liệu -cSSSS Ssssssssrrrrrrrske 6
5 Cơ sở lý thuyết về Python cho bài fOáh - +22 S2 S2E2E2E2EEE2E2EErrxree 6
6 Kết quả thực hiỆn: nnn cc S1 SSS S11 S1 HH TT TT nh TT kg 8 6.1 Thu thập và làm sạch dữ liệu: cc c2 nnnnn Hee 8 6.2 Phân tích dữ liệu: . c1 SH SH ng ng kg 9
6.3 Xây dựng mô hình dự đoán giá cô phiẾu: 2 2+2 se sezecsxsessei 9
6.4 Kết qua thre HIG: 011 - aa 10
7 Kết luận: chì LH HH HH2 re 23
Trang 4sự chỉ dẫn tận tình của thầy củng với sự tìm hiểu nhiệt tình, năng nô và làm việc ăn ý của nhóm thì chúng em đã làm một đô án đề hoàn thành môn học
Thông qua đỗ án này, nhóm em xin trình bày về những kiến thức và kỹ năng
mà nhóm em đã thu hoạch được trong suốt quá trình học tập Lần đầu tiếp cận nghiên cứu đề tài nên trong quá trình thực hiện đồ án sẽ có những thiếu sót Vì vậy, chúng em rất mong nhận được những lời nhận xét từ thầy đề góp phần hoàn thiện đồ án kết thúc
môn học tốt nhất
Trang 5NOI DUNG
1 Muc tiêu nghiên cứu của đồ án
Sự phát triển mạnh mẽ của thị trường chứng khoán trên thế giới cũng như ở nước
ta như hiện nay thì vấn đề ứng dụng công nghệ Internet vào các hoạt động chứng khoán
là rất quan trọng Việc xây dựng một hệ thống phân tích các dữ liệu đầu tư chứng khoán qua mạng Internet sẽ giúp các nhà đầu tư đưa ra những quyết định nhanh chóng và sáng
suốt
Xuất phát từ những vấn đề nêu trên, nhóm em đã tìm hiểu, nghiên cứu xây dựng
hệ thống “Phân tích đữ liệu chứng khoán của các ngân hàng nhà nước Việt Nam từ năm
01/01/2021 đến 10/03/2023, đánh giá sự biến động và xu hướng của giá cô phiếu trong
thời gian này” để xây dựng mô hình dự đoán giá cô phiếu của các ngân hàng nhà nước Việt Nam trong tương lai
Đưa ra những kết luận và gợi ý cho nhà đầu tư về cách thức quản lý và đầu tư vào cô phiêu của các ngân hàng nhà nước Việt Nam, giúp các ngân hàng ra quyết định đầu tư trong thị trường chứng khoán một cách hiệu quả nhất
e Tập trung vào các đữ liệu về thời gian, số lượng, giá mở và đóng (ATO và ATC) cua các ngân hàng nêu trên
3 Mô hình nghiệp vụ bài toán thực tế, miền ứng dụng
Trang 6Mô hình nghiệp vụ của đồ án là phân tích và dự đoán giá cỗ phiêu của các ngân hàng nhà nước Việt Nam dựa trên dữ liệu lịch sử và các yếu tố kinh tế, chính trị Ngoài
ra còn có các yếu tô đữ liệu về thời gian, số lượng, giá mở và đóng (ATO và ATC) của
các ngân hàng nêu trên
Đồ án có thể áp dụng trong lĩnh vực đầu tư chứng khoán có thể dự báo được giai đoạn đỉnh và đáy của thị trường bằng hệ thống phân tích đữ liệu giao dịch trong phiên
từ đó có thê đánh giá các hoạt động liên quan đến quản lý tài chính như hiệu quả hoạt động đầu tư chứng khoán của các ngân hàng nhà nước
4 Quá trình thu thập và làm sạch dữ liệu
Dữ liệu chứng khoán của các ngân hàng nhà nước Việt Nam sẽ được thu thập tử các trang web tai chinh nhu Tradingview, Investing, Vnstock , Vietstockfinance, Cafef, Dstock
Dữ liệu sẽ được làm sạch bằng các phương pháp tiền xử lý dữ liệu như loại bỏ giá trị thiếu, loại bỏ các giá trị trùng lặp hoặc không liên quan, sửa lỗi cau trúc, kiểm tra và
xử lý ngoại lệ, chuyền đổi định dạng dữ liệu Việc kiêm tra dữ liệu sạch sẽ và chất lượng cuối cùng chắc chắn sẽ tăng năng suất tông thê và cho phép thông tin chất lượng cao để
ra quyết định nhanh chóng và đúng
Sau đó, các chỉ số kỹ thuật như giá đóng cửa, giá mở cửa, khối lượng giao dịch, giá trung bình của các ngân hàng, tỷ lệ thay đối giá của các ngân hàng sẽ được tính toán
và thêm vào
5 Cơ sở lý thuyết về Python cho bài toán
Python là một trong những ngôn ngữ lập trình phô biến nhất hiện nay, có thé được coi là ngôn ngữ lập trình đễ sử dụng và dễ tiếp cận trong thời đại 4.0 này Nó được sử dụng trong nhiều lĩnh vực khác nhau như khoa học dữ liệu, trí tuệ nhân tạo, web development, đặc biệt là trong lĩnh vực phân tích tài chính và đầu tư chứng khoán Với sự phát triển của các thư viện và công cụ hỗ trợ phân tích dữ liệu như NumPy, Pandas, Matplotlib,Seaborn Python trở thành một công cụ đắc lực cho các nhà phân tích tài chính và nhà đầu tư, từ đó giúp cho họ có cái nhìn tổng quát hơn Ngoài ra Python cho tài chính có thể giúp họ đưa ra quyết định ước tính và có rủi ro thấp hơn khi đầu tư vào thị trường chứng khoán
Trang 7Trong đồ án này, Ngôn ngữ lập trình Python sẽ được sử dụng đề phân tích dữ liệu chứng khoán của các ngân hàng Việt Nam và xây dựng mô hình dự đoán giá cô phiếu của các ngân hàng này Các thư viện được sử dụng bao gồm:
“+ Pandas: Thu vién Pandas duoc str dung để đọc, xử lý, phân tích và thao tác với dữ liệu Thông thường Pandas cung cấp 2 cấu trúc đữ liệu chính để thao tác với dữ liệu là: Series và DataFrame Tuy nhiên trong đồ án này Pandas
sử dụng đdataframe để cung cấp nhiều tính năng hỗ trợ cho việc phân tích đữ liệu như tạo, sửa đôi, thêm và xóa các hàng và cột, tính toán các chỉ số thông
kê, đọc và ghi các file dữ liệu
+ Matplotlib: Là một thư viện rất hữu ích của Python nhằm cung cấp các công
cụ vẽ đồ thị cho việc trực quan hóa dữ liệu Đây là một thư viện dé họa 2D va 3D tuyệt vời để tạo ra các số liệu khoa học Nó cung cấp các hàm đề vẽ đồ thi, biểu đồ và biểu đỗ tương tác Công việc trực tiếp hóa thông tin qua các thi dé, biểu đỗ giúp chúng ta hiểu được các mối quan hệ trong đữ liệu đễ dàng hơn rất nhiều
+ Seaborn: Là một thư viện trực quan hóa dữ liệu thông trị, là một lý do khác
để các lập trình viên hoàn thành các dự án một cách hiệu quả Thư viện Python Seaborn được sử dụng để giảm bớt nhiệm vụ trực quan hóa dữ liệu day thach thức và nó dựa trên Matplotlib Seaborn cho phép tạo đồ họa thống kê thông qua các chức năng sau:
e® Một API dựa trên tập đữ liệu cho phép so sánh giữa nhiều biến e©_ Hỗ trợ lưới nhiều ô để đễ dàng xây dựng các hình ảnh trực quan phức tạp e®_ Hình ảnh hóa đơn biến và lưỡng biến có sẵn để so sánh giữa các tập hợp con dữ liệu
® Có sẵn các bảng màu khác nhau dé hién thị các loại mẫu khác nhau
®_ Dự toán và âm mưu tuyến tính hồi quy tự động s* Vnstock: là gói thư viện Python cho phép tải dữ liệu chứng khoán với cú pháp đơn giản sử dụng đữ liệu đáng tin cậy được cung cấp bởi public api tir Techcombank Security (TCBS) va SSI
Trang 8“+ Numpy: la mét thu vién 16i phuc vu cho khoa hoc may tinh cua Python, hé tro cho việc tính toán các mảng nhiều chiều, có kích thước lớn với các hàm đã được tôi ưu áp dụng lên các mảng nhiêu chiêu đó
+ Json: JSON (JavaScript Object Notation): La mét dinh dang dit liéu rat phô biến, được dùng để lưu trữ và thể hiện các dữ liệu có cấu trúc JSON là định dạng dữ liệu phô biến được sử dụng để truyền và nhận dữ liệu giữa ứng dụng
web và web server Python cho phép thao tác với JSON dưới dạng chuỗi hoặc
lưu đối tượng JSON vào trong file Đề có thê làm việc với JSON, ta cần import module json Ta cần import module trước khi gọi các hàm để thao tác với json
Đề có thể parse một JSON string, ta gọi method json.loads() Phương thức này
sẽ trả về một đối tượng dictionary chứa dữ liệu được chứa trong JSON string Các tính năng của Python như tính năng đa nền tảng, cú pháp đơn giản, hỗ trợ đầy
đủ cho các thư viện phân tích dữ liệu và học máy, cộng đồng lập trình viên phát triển sôi động
Sau khi thu thập dữ liệu, cần làm sạch và chuẩn hóa dữ liệu trước khi sử dụng Các bước làm sạch và chuân hóa dữ liệu bao gồm:
® Xóa các dòng dữ liệu trồng hoặc thiểu thông tin
® Xử lý các giá trị bị trùng lặp hoặc sai lệch
® Kiểm tra và xử lý các giá trị ngoại lai (outliers)
@ Chuẩn hóa các giá trị đầu vào để đảm bảo tính nhất quán và hiệu quả cho việc phân tích đữ liệu
Trang 96.2 Phân tích dữ liệu:
Sau khi đã làm sạch và chuẩn hóa dữ liệu, tiếp theo là phân tích dữ liệu để hiểu rõ hơn về các thông tin về giá cô phiếu và các chỉ số tài chính của các ngân hàng Một
số kỹ thuật phân tích đữ liệu được sử dụng bao gồm:
® Biểu đồ giá: Biểu đồ giá được sử dụng để trực quan hóa giá cô phiếu của các ngân hàng trong thời ø1an
® Tống hợp khối lượng giao dịch: Tổng hợp khối lượng giao dịch dé hiểu rõ hơn
về sự lưu thông của cô phiếu
® Phân tích tỷ lệ lãi suất: Tỷ lệ lãi suất được sử dụng để đánh giá tác động của chính sách tiền tệ lên giá cô phiếu
® Phân tích các chỉ số tài chính: Phân tích các chỉ số tài chính của các ngân hàng
đề hiểu rõ hơn về sức khỏe tài chính của các ngân hàng
6.3 Xây dựng mô hình dự đoán giá cỗ phiếu:
Sau khi đã phân tích dữ liệu tiếp theo là xây đựng mô hình dự đoán giá cô phiếu
Mô hình được xây dựng dựa trên các thuật toán hoc may nhu Linear Regression, Random Forest va Gradient Boosting
Đề xây dựng mô hình, dữ liệu được chia thành hai phần: tập huấn luyện và tập kiểm tra Tập huấn luyện được sử dụng để huấn luyện mô hình va tap kiểm tra được sử dụng để đánh giá hiệu quả của mô hình Sau đó, mô hình được sử dụng để dự đoán giá
cô phiếu trong tương lai và tính toán các thông số tài chính
Trang 10~ Áp dụng hoc máy để dự đoán giá đóng CTS, VCB, BSI, AGR, TCB
, 3 1mport thư viện học máy
ry sklearn.model selection train test split #thưa
sklearn.preprocessing StandardScaler # thu vie
# Chọn giá đóng cửa của tiếp theo lam biến đầu ra
= df CIS[ ]- shift(-1).values[ : -1 ].reshape(-1,1) liệu thành tập huấn luyện và tập kiểm tra train, X test, y train, y test = train test split(X, y, test_size=0.2, random state=9)
# Chuan hoa dif liéu
scaler = Standardscaler()
x_train = scaler fit_transform(xX_train)
X test = scaler.transform(X test)
# Xây dựng mô hình Linea gressior
model = LinearRegression()
# Hudn luyén m6 hinh trén tap t
mode] fit(x_train, y_train)
y_pred = model.predict(x_test)
nh toan MSE va ca : ` APE, AE
mse = mean_squared _error(y_test, y_pred)
mae = mean absolute error(y_test,y pred)
mape = np.mean(np.abs((y_test - y_pred) / y_test)) * 100 print( » mse)
Trang 11e Hiéuré hon vé cac thong tin vé gid cé phiéu va cae chỉ số tài chính của các
ngan hang
® Xây dựng mô hình dự đoán giá cỗ phiếu với độ chính xác đạt trên 90%
Đầu tiên nhóm em dùng doan code “!pip install vnstock” dé cai dat thư viện vnstock
pip install vnstock
Tiếp theo import cac thư viện mà chúng em sử dụng như là: vn stock; numpy;
pandas; matplotlib.puplot; seaborn; warnings; json
đồ án như là vẽ biểu đồ và hiền thị
Vé “Function Hién thị” gồm có các đoạn code chính như:
show infor ticke
df_infor =
i range(len(tickers)):
df_infor = pd.concat([df_infor,ticker_overview(tickers[i])],ignore_index= Ohm kee
Trang 12dòng code name = ',' join(tickers) cé chức năng sẽ đưa về nam có giá trị là name = VVS, XDC, HSV, CST
pe(len(tickers)):
f_infor = pd.concat([df_infor, financial_ratio(symbol = tickers[
df_infor
Dùng để xem tỷ số tài chính của một mã chứng khoán nào đó Trong đó
len(tickers) là độ dài của mảng = 4, pd.concat là kết nói giữ 2 bảng dữ liệu thành 1 bang
Trong đó dataFrame là tham số truyền vào chính là bảng dữ liệu mã chứng khoán
và plt.subplot(2,3,i+1) là để hiền thị đồ thị con (subplot) trên 2 dòng, mỗi dòng hiển thị
3 đồ thị
Biểu đồ boxplot:
Trang 13for attribute attributes:
data.append(dataFrame[ attr1bute ] sum() )
palette color = sb.color_palette( ‘bright’ )
plt.title('Trading Data {} to {}'.format("2021-01-01", ‘2022-03-10')) plt.pie(data, labels=attributes, colors=palette color, autopct='%.0f%%')) plt.show()
Va line graph cho yéu cau 4:
draw line graph vi(dat >
attributes = ['Open', 'High', ‘Low’, ‘Close’, 'Volume" ]
Trang 14Yéu cau 1: Hien thi dir ligu va xuat ra ket qua ra file
e Dé hién thị thông tin co bản của các mã cô phiêu đã chọn chúng em sử dụng đoạn code như sau:
tickers = [ F F > >
df_infor = show_infor_ticker(tickers)
df_infor
® Sau đó, lưu thông tin thành file csv:
save_ file( ,df_infor)
Yéu cau 2: Truy van lịch sử giá chứng khoán và xuât kết qua ra file
Truy vẫn lịch sử giá mã chứng khoan “CTS”
e Đầu tiên, tra cứu lịch sử giá của các mã “CTS” chứng khoán tính từ ngày 01/01/2021 đến ngày 10/03/2023:
df_CTS = stock historical data(symbol= ; start date= „ end date=
Truy vẫn lịch sử giá mã chứng khoán “VCB°
e Đầu tiên, tra cứu lịch sử giá của các mã “VCB” chứng khoán tính từ ngày