1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận lập trình python cho phân tích dữ liệu nghiên cứu và phân tích những dữ liệu chứng khoán của bốn ngân hàng tại việt nam

17 12 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình Python cho phân tích dữ liệu nghiên cứu và phân tích những dữ liệu chứng khoán của bốn ngân hàng tại Việt Nam
Người hướng dẫn Phạm Thanh An
Trường học Trường Đại học Ngân hàng Thành phố Hồ Chí Minh
Chuyên ngành Lập trình Python cho phân tích dữ liệu
Thể loại Tiểu luận
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 17
Dung lượng 1,12 MB

Nội dung

Nghiên cứu và phân tích những dữ liệu chứng khoán của bốn ngân hàng tại Việt Nam bao gồm:Ngân hàng thương mại cổ phần Sài Gòn Thương Tín STB, Ngân hàng Thương mại cổ phần Kỹ Thương Việt

Trang 1

NGÂN HÀNG NHÀ NƯỚC VIỆT NAM TRƯỜNG ĐẠI HỌC NGÂN HÀNG THÀNH PHỐ HỒ CHÍ MINH

ĐỀ TÀI :

Môn Học : Lập trình Python cho phân tích dữ liệu

Lớp : L10 Giáo Viên Phụ Trách : Phạm Thanh An

Trang 3

Mục Lụ

1 Mục tiêu nghiên cứu và nhiệm vụ nghiên cứu 1

1.1 Mục tiêu nghiên cứu: 1

1.2 Nhiệm vụ nghiên cứu 1

2 Đối tượng và phạm vi nghiên cứu 1

2.1 Đối tượng nghiên cứu: 1

2.2 Phạm vi nghiên cứu : 2

3 Mô hình nghiệp vụ bài toán thực tế, miền ứng dụng 2

3.1 Mô hình nghiệp vụ bài toán thực tế 2

4 Quá trình thu thập và làm sạch dữ liệu 2

4.1 Biểu đồ pairlot 5

4.2 Biểu đồ matplotlib 6

4.3 Biểu đồ nhiệt 7

4.4 Biểu đồ nến: 8

5 Cơ sở lý thuyết về Python cho bài toán 11

5.1 Seaborn 11

5.2 Pandas 11

5.3 Numpy 11

5.4 Matplotlib: 12

5.5 Biểu đồ nhiệt 12

5.6 Biểu đồ hình nến 12

6 Kết quả phân tích 12

Tài liệu tham khảo 13

Trang 5

1 Mục tiêu nghiên cứu và nhiệm vụ nghiên cứu

1.1 Mục tiêu nghiên cứu:

a Nghiên cứu và phân tích những dữ liệu chứng khoán của bốn ngân hàng tại Việt Nam bao gồm:

Ngân hàng thương mại cổ phần Sài Gòn Thương Tín (STB), Ngân hàng Thương mại

cổ phần Kỹ Thương Việt Nam (TCB), Ngân hàng Quân đội (MBB) và cuối cùng là Ngân hàng Thương mại Cổ phần Bưu điện Liên Việt (LPB) từ 2022 đến nay

Qua đó nhằm nắm được tình hình sàn chứng khoán từ đầu năm 2020 đến đầu năm 2024

b Nghiên cứu về những tác động làm biến đổi giá cổ phiếu của 4 ngân hàng từ những năm 2023 đến nay

c Nghiên cứu và nâng cao hiệu quả của việc đầu tư vào các sàn giao dịch chứng khoán trong nước

1.2 Nhiệm vụ nghiên cứu

Giải quyết được số liệu của 4 ngân hàng trên để nhằm phân tích

2 Đối tượng và phạm vi nghiên cứu

2.1 Đối tượng nghiên cứu:

Cổ phiếu ngân hàng của những ngân hàng sau: Ngân hàng Quân Đội (MB), Ngân hàng thương mại cổ phần Sài Gòn Thương Tín (STB), Ngân hàng Thương mại cổ phần Kỹ Thương Việt Nam (TCB) và cuối cùng là Ngân hàng Thương mại Cổ phần Bưu điện Liên Việt (LPB) trong thị trường chứng khoán Việt Nam

Ngân hàng thương mại cổ phần Sài Gòn

Thương Tín

STB

Ngân hàng Thương mại cổ phần Kỹ

Thương Việt Nam

TCB

Ngân hàng Thương mại Cổ phần Bưu LPB

Trang 6

điện Liên Việt

2.2 Phạm vi nghiên cứu :

Về không gian: Thị trường chứng khoán Việt Nam, cụ thể là sở giao dịch chứng khoán của bốn ngân hàng: Ngân hàng Quân Đội (MB), Ngân hàng thương mại cổ phần Sài Gòn Thương Tín (STB), Ngân hàng Thương mại cổ phần Kỹ Thương Việt Nam (TCB) và cuối cùng là Ngân hàng Thương mại Cổ phần Bưu điện Liên Việt (LPB) Về thời gian: Tiến hành phân tích cổ phiếu các ngân hàng từ đầu năm 2020 đến đầu năm 2024

3 Mô hình nghiệp vụ bài toán thực tế, miền ứng dụng

3.1 Mô hình nghiệp vụ bài toán thực tế

Dự báo cổ phiếu luôn là bài toán thách thức vì tính không thể đoán trước của nó Giải quyết thị trường hàng ngày là không thể dự báo giá cổ phiếu và giá cổ phiếu là ngẫu nhiên Tuy nhiên bằng các phân tích kỹ thuật cho thấy hầu hết các giá cổ phiếu được phản ánh các dữ liệu trước đó, do đó xu hướng vận động giá là rất quan trọng để dự đoán giá hiệu quả Hơn nữa, các nhóm cổ phiếu và thị trường chứng khoán bị ảnh hưởng bởi một số yếu tố kinh tế như sự kiện chính trị, điều kiện kinh tế chung, chỉ số giá hàng hóa, kỳ vọng của nhà đầu tư, Mô hình nghiệp vụ kinh doanh chứng khoán của các nhà đầu tư, mỗi nhà đầu tư có mục đích đầu tư rất khác nhau, trước hết và quan trọng nhất là tìm kiếm lợi nhuận từ lợi tức kép của chứng khoán Họ có thể nhằm vào mục tiêu tích lũy vốn để tạo ra thu nhập trong tương lai, hoặc đáp ứng các nhu cầu

cá nhân khác… Nhà đầu tư thường có thể trực tiếp hoặc gián tiếp xác định tình hình tài chính thông qua việc thường xuyên xem xét tình hình tài chính của mình, các quan điểm về khả năng chấp nhận rủi ro, các quy chế về thuế và đặc biệt họ phải có những phân tích mang độ chính sách cao về những biến động của thị trường chứng khoán thông qua các phân tích chứng khoán được thể hiện dưới dạng biểu đồ Và mục tiêu cuối cùng của bài toán thực tế khi giao dịch trên sàn chứng khoán chính là tối đa hóa lợi ích cũng như an toàn vốn

Đối với đồ án này nhóm chúng em sẽ phân tích về giá đóng cửa, mở cửa của cổ phiếu của 4 ngân hàng khác nhau với dữ liệu được lấy từ sàn giao dịch chứng khoán Việt Nam vn stock

Trang 7

4 Quá trình thu thập và làm sạch dữ liệu

Trong dự án này, nhóm của chúng tôi đã sử dụng ứng dụng Google Collaboration để viết mã và tạo biểu đồ phân tích chứng khoán

Đầu tiên hãy nhập thư viện để phân tích, như sau:

import datetime

import numpy as np

import pandas as pd

Tiếp theo chúng ta cài đặt thư viện chứng khoán vn vào Colab để lấy dữ liệu chứng khoán theo thời gian thực

!pip install vnstock

import vnstock as vs

Tiếp theo, chúng tôi tải dữ liệu chứng khoán từ 3 ngân hàng: Ngân hàng Quân đội (MB), Ngân hàng TMCP Công nghệ Việt Nam (TCB Ngân hàng thương mại cổ phần Sài Gòn Thương Tín (STB) và Ngân hàng Thương mại Cổ phần Bưu điện Liên Việt (TCB) Thời gian giao dịch cổ phiếu và thu thập dữ liệu là từ ngày 1 tháng 1 năm

2020 đến ngày 31 tháng 1 năm 2024 Chúng tôi thực hiện như sau:

Tải data STB

STB = vs.stock_historical_data(symbol='STB', start_date="2020-01-01",

end_date='2024-01-31')

STB.head()

Kết quả trả về cho chúng ta là 1 Data Frame, bắt đầu từ ngày 02/01/2020, trong đó ngày 1, 5, 6, 7 là ngày lễ, thứ 7 và chủ nhật nên không có dữ liệu để hiển thị Nhìn vào bảng ta thấy các cột có ý nghĩa như sau:

 Open là giá mở cửa

 High là giá cao nhất trong phiên giao dịch

 Low là giá thấp nhất trong phiên

 Close là giá đóng cửa (hay giá kết phiên)

 Volume là khối lượng giao dịch (tổng số phiếu giao dịch trong phiên)

Trang 8

Tiếp tục làm tương tự với 3 ngân hàng còn lại: LPB, TCB và MB Bây giờ chúng ta sẽ thêm 4 khung dữ liệu trên vào bảng dữ liệu mới để dễ phân tích hơn Ta đặt tên là bank_stocks

#Gom thành 1 list theo hàng ngang

list_banks = ['STB','MBB','LPB','TCB']

# Tham số axis = 1 là nối theo cột

bank_stocks = pd.concat([STB,MBB,LPB,TCB],axis=1, keys = list_banks)

bank_stocks

Sử dụng phương thức xs() trong Pandas để lập chỉ mục nhiều cấp nhằm tìm ra giá đóng cửa cao nhất và thấp nhất của mỗi cổ phiếu so với cổ phiếu trước đó

bank_stocks.xs(key='close',axis=1,level=1).max()

STB 35850.0

MBB 24310.0

LPB 18460.0

TCB 58000.0

dtype: float64

bank_stocks.xs(key='close',axis=1,level=1).min()

STB 7300.0

MBB 6180.0

LPB 2770.0

TCB 14900.0

dtype: float64

Tạo 1 DataFrame trống mới được gọi là value_banks Data frame này sẽ chứa tỷ suất

lợi nhuận cho từng cổ phiếu của ngân hàng trên

value_banks = pd.DataFrame()

Tạo một vòng lặp for để lặp qua với mỗi mã cổ phiếu ngân hàng Tiếp theo, ta tạo một

cột tên là “mã cổ phiếu + value_bank” = giá trị tỷ suất lợi nhuận.

Để tính tỷ suất lợi nhuận, ta dùng hàm pct_change trong pandas và áp dụng cho giá đóng cửa cửa từng mã cổ phiếu theo code bên dưới Phương thức pct_change() để

Trang 9

tính toán thay đổi % theo thời gian Sự thay đổi này được tính (giá trị row hiện tại – giá trị row trước đó)/ (giá trị row trước đó) dòng đầu tiên không có dữ liệu để tính

nên trả về giá trị NaN, ta có thể xóa luôn dòng này với hàm dropna

for name in list_banks:

value_banks[name+' value_bank'] = bank_stocks[name]['close'].pct_change() value_banks.dropna(inplace= True)

value_banks.head()

4.1 Biểu đồ pairlot

Dùng Seaborn sử dụng biểu đồ pairplot để tìm cổ phiếu nổi bật dựa trên giá trị lợi nhuận bên trên

import seaborn as sns

sns.pairplot(value_banks)

Trang 10

Nhận xét:

Từ biểu đồ trên ta thấy được:

 Tỷ suất giữa Ngân hàng LPB với TCB

 Tỷ suất giữa Ngân hàng STB với MBB

 Tỷ suất giữa Ngân hàng STB với TCB

 Tỷ suất giữa Ngân hàng LPB với MBB

4.2 Biểu đồ matplotlib

Lấy giá đóng cửa các cổ phiếu trên bằng biểu đồ matplotlib ta dùng vòng for để lặp qua Data frame các cổ phiếu trên

Trang 11

import matplotlib.pyplot as plt

for tick in list_banks:

bank_stocks[tick]['close'].plot(figsize=(12,4),label=tick)

plt.legend()

Nhận xét:

Nhìn vào biểu đồ matplotlib trên, chúng ta thấy giá cổ phiếu đứng đầu là TCB, tiếp theo là MBB, LPB, TCB Nói chung, khi giá cổ phiếu của một ngân hàng tăng thì giá

cổ phiếu của các ngân hàng còn lại cũng tăng theo và ngược lại

4.3 Biểu đồ nhiệt

Sử dụng bản đồ nhiệt để xem mối tương quan giữa giá đóng cửa của các cổ phiếu trên plt.figure(figsize=(12,5))

sns.heatmap(bank_stocks.xs(key='close',axis=1,level=1).corr(),annot=True)

Sử dụng Seaborn Clustermap để nhóm các cổ phiếu có tương quan với nhau

sns.clustermap(bank_stocks.xs(key='close',axis=1,level=1).corr(),annot=True)

Trang 12

Nhận xét:

Giá trị cổ phiếu của Ngân hàng MB và TCB có sự tương quan với nhau Giá trị cổ phiếu của Ngân hàng TCB và LPB có sự tương quan với nhau Giá trị cổ phiếu của Ngân hàng STB và TCB có sự tương quan với nhau

4.4 Biểu đồ nến:

Cổ phiếu STB

import plotly

import plotly.graph_objects as go

candlestick = go.Candlestick(

x=STB.index,

open=STB['open'],

high=STB['high'],

low=STB['low'],

close=STB['close']

)

Trang 13

fig = go.Figure(data=[candlestick]) fig.show()

Nhận xét:

Cổ phiếu LPB:

candlestick = go.Candlestick(

x=LPB.index,

open=LPB['open'],

high=LPB['high'],

low=LPB['low'],

close=LPB['close']

)

fig3 = go.Figure(data=[candlestick]) fig3.show()

Nhận xét:

Cổ phiếu MBB:

candlestick = go.Candlestick(

x=MBB.index,

open=MBB['open'],

high=MBB['high'],

low=MBB['low'],

close=MBB['close']

Trang 14

fig1 = go.Figure(data=[candlestick]) fig1.show()

Nhận xét:

Cổ phiếu TCB:

candlestick = go.Candlestick(

x=TCB.index,

open=TCB['open'],

high=TCB['high'],

low=TCB['low'],

close=TCB['close']

)

fig2 = go.Figure(data=[candlestick]) fig2.show()

Trang 15

5 Cơ sở lý thuyết về Python cho bài toán.

5.1 Seaborn

Seaborn là một công cụ có thể được sử dụng để tạo các biểu diễn trực quan về dữ liệu phân loại, chẳng hạn như phân loại giới tính, phân loại ngày và phân loại sản phẩm

Nó đặc biệt hữu ích để trực quan hóa các tập dữ liệu thuộc các danh mục này Trong kịch bản cụ thể được đề cập, chúng tôi sử dụng biểu đồ Seaborn để kiểm tra sự thay đổi tỷ giá hối đoái của bốn ngân hàng: STB, TCB, MBBank

5.2 Pandas

Pandas có khả năng thực hiện các nhiệm vụ mà các thư viện này không thể thực hiện được Trọng tâm chính của nó là quản lý cấu trúc dữ liệu, cụ thể là DataFrames và Series Với Pandas, bạn có khả năng xử lý các bảng dữ liệu và chuỗi thời gian phức tạp một cách dễ dàng Bạn có thể dễ dàng nhập dữ liệu từ nhiều nguồn khác nhau, thao tác dữ liệu theo nhiều cách khác nhau như lọc, chuyển đổi, xử lý các giá trị bị thiếu, thêm hoặc đổi tên cột, tổng hợp dữ liệu, định hình lại và cuối cùng là trực quan hóa dữ liệu theo cách phù hợp với sở thích của bạn

5.3 Numpy

NumPy, còn được gọi là Numeric Python, là một thư viện toán học cực kỳ phổ biến và mạnh mẽ trong ngôn ngữ lập trình Python Thư viện này được trang bị các chức năng được tối ưu hóa cao, cho phép thao tác hiệu quả với ma trận và mảng, đặc biệt là những chức năng liên quan đến lượng dữ liệu lớn Bằng cách sử dụng NumPy, người ta có thể đạt được tốc độ xử lý nhanh hơn đáng kể so với sử dụng

Trang 16

Python thuần túy Với NumPy, nhiều thao tác khác nhau có thể được thực hiện, bao gồm nhưng không giới hạn ở:

 Các phép toán toán học và logic trên mảng

 Các quy trình xử lý hình dạng và biến đổi Fourier luôn song hành với nhau

 NumPy cung cấp một loạt các phép toán liên quan đến đại số tuyến tính, bao gồm các hàm dựng sẵn để tạo số ngẫu nhiên

Nhiều cá nhân sử dụng NumPy kết hợp với các gói phần mềm khác như SciPy và Matplotlib Sự kết hợp mạnh mẽ này đóng vai trò là giải pháp thay thế khả thi cho MATLAB, một nền tảng được sử dụng rộng rãi cho tính toán kỹ thuật Tuy nhiên, Python hiện đã nổi lên như một ngôn ngữ lập trình hiện đại và toàn diện hơn, thay thế MATLAB một cách hiệu quả Ưu điểm đáng kể nhất là NumPy là thư viện nguồn mở,

có sẵn miễn phí, trong khi MATLAB yêu cầu thanh toán và phí để truy cập vào mã nguồn của nó

5.4 Matplotlib:

Đối với những người dùng Python yêu cầu suy luận thống kê, trực quan hóa dữ liệu là một bước quan trọng và Matplotlib cung cấp giải pháp cho mục đích này Thư viện đồ thị này có sức mạnh to lớn và đặc biệt có giá trị đối với những cá nhân làm việc với Python và NumPy Trong số các mô-đun khác nhau trong Matplotlib, Pyplot nổi bật là mô-đun được sử dụng rộng rãi nhất Nó cung cấp giao diện thân thiện với người dùng gợi nhớ đến MATLAB, nhưng có thêm lợi thế là sử dụng Python Hơn nữa, điều quan trọng cần lưu ý là Matplotlib là một công cụ nguồn mở

5.5 Biểu đồ nhiệt

Heatmap là biểu đồ sử dụng cường độ màu để thể hiện độ lớn của các giá trị Các giá trị lớn hơn khi đó sẽ được làm nổi bật bằng các vùng màu có cường độ ánh sáng mạnh hơn và các giá trị nhỏ hơn sẽ được thể hiện bằng các mảng màu nhạt hơn Các tình huống phổ biến khi sử dụng heatmap:

 Đồ thị hệ số tương quan

 Sơ đồ địa lý cảnh báo thiên tai

 Bản đồ mật độ dân số

 Crazy Egg Chart, dùng để đo lường các thành phần được sử dụng thường xuyên trong một trang web hoặc ứng dụng …

5.6 Biểu đồ hình nến

Biểu đồ nến, còn được gọi là biểu đồ nến Nhật Bản hoặc mô hình nến, là biểu đồ tài chính được sử dụng để mô tả biến động giá của chứng khoán dựa trên các mô hình giá trong quá khứ Biểu đồ nến hiển thị giá mở cửa, giá cao nhất, giá thấp nhất và giá đóng cửa Giá của chứng khoán trong một khoảng thời gian nhất định (thường là một ngày)

Trang 17

Biểu đồ sẽ bao gồm hàng ngàn ngọn nến khác nhau Mỗi cây nến đều có hai phần: thân nến và bóng:

 Thân nến là phần lớn nhất được tô màu cho biết mức giá đóng cửa và giá mở cửa

 Bóng nến là 2 que nhỏ nằm ở trên và dưới thân nến, cho biết mức giá cao nhất

và giá thấp nhất trong một khoảng thời gian nhất định

6 Kết quả phân tích

Chúng ta đã phân tích dữ liệu chứng khoán của 4 ngân hàng tại Việt Nam nói trên, đồng thời phân tích những tác động làm biến đổi giá cổ phiếu của 4 ngân hàng từ năm

2020 đến 2023 Qua phân tích, ta thấy được rằng giá cổ phiếu bị tác động bởi nhiều yếu tố như là Thị trường và tình hình kinh tế, hiệu suất tài chính,… Quan trọng nhất là hiệu suất tài chính của công ty Khi một công ty đạt được kết quả tài chính tích cực như tăng trưởng doanh số bán hàng, lợi nhuận tăng, hoặc tỷ suất lợi nhuận cao, giá cổ phiếu thường có xu hướng tăng Tuy nhiên, nếu có các thông tin tiêu cực như lợi nhuận giảm hoặc dự báo kém hơn dự kiến, giá cổ phiếu có thể giảm

7 Kết luận

Sau một thời gian tham vấn, nghiên cứu Việc thực hiện dự án mất một khoảng thời gian nhất định nên một số vấn đề chưa được hoàn thành chính xác Dự án đã đạt được một số kết quả: Tìm hiểu về ngôn ngữ Python, quá trình thu thập và làm sạch dữ liệu, được thực hiện bằng ứng dụng cộng tác của Google Colaboratory và cung cấp biểu đồ phân tích chứng khoán, sử dụng Seaborn để tìm những cổ phiếu tốt dựa trên giá trị trả

về bằng cách sử dụng các ô ghép nối, để có được giá đóng cửa của cổ phiếu trên bằng biểu đồ matplotlib, chúng tôi lặp lại bằng vòng lặp for khung dữ liệu chứng khoán, sử dụng bản đồ nhiệt để xem mối tương quan giữa giá đóng cửa của cổ phiếu, hiểu vấn

đề dự báo, viết chương trình kiểm tra bài toán giá cổ phiếu

Tài liệu tham khảo

Ngày đăng: 24/04/2024, 20:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w