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

đồ án môn học phân tích dữ liệu cổ phiếu bằng python

26 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
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

Nội dung

Trang 1

Nguyễn Van Thi - 050609211357 Thới Đỗ Ngọc Trâm - 050609212279

Tran Thi Yén Thanh - 050609211307

Trang 2

LOH 1G GAUL eee eeeeceeeseeeeseesecsesecsesucseesescneencaeeneeseaeenecucsesucsesaeceseeaeensaesaeenceceessessesesseeateceateneensaneaees

1 Muc ti6U MQhi6n CH ooo

2 DOi tog NQHISN COU oo eee cee cceecececesesceseeveveevecscessecusevavsevavsusesassssevevsevavsueetasessevarsevavnereases

ky (0/819) 101 .a1 - ÔỎÔỎ B CHƯƠNG 2: MÔ TẢ MÔ HÌNH TRỰC QUAN HOÁ DỮ LIỆU . -7-252-55+2-c-e 1

1.1 PANGAS 1.1.1 Dir in iydddiddidftfdddtẩ^ẢẢ 1

1.1.3 Đọc file csv vào dataframe

1.1.4 Thao tác cấu trúc dữ liệu cơ bản

2.1.2 Lưu dữ liệu từ 5 ngân hàng TCB, ACB, VCB, CTG, MBB 6

2.1.3 Tính ti suất lợi nhuận

Trang 3

2.2.1 PAirPlOte oo — A1ẢAẢ1 10 V22) -)y|v)1)(s0( 0v 5): ⁄EE:ii dd 10

Lê Thị Mai Thảo

Thu thập dữ liệu từ các ngân hang Viết báo cáo, tổng hợp work Kết quả thực hiện Làm PowerPoint

Nguyễn Văn Thi

o_ Thu thập dữ liệu từ các ngân hàng Kết quả thực hiện

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

Cơ sở lý thuyết về python cho dé an Clean data

Kết luận

Trang 4

đữ liệu, máy học, trí tuệ nhân tạo,

Đây là một trong những công cụ phô biến và hiệu quả nhất cho việc phân tích cô phiếu dữ liệu Có nhiều thư viện và công cụ hỗ trợ trong Python đề xử lý cô phiếu đữ liệu, bao gồm các thư viện Pandas,

NumPy, Matplotlib, Seaborn, Scikit-learn

Mớót số ứng dựng của Python trong cổ phiếu phân tích dữ liệu

Thu thập dữ liệu: Sử dụng để trích xuất dữ liệu tr các trang web cô phiếu hoặc từ các nguồn dữ liệu

khác, và lưu trữ nó trong các cơ sở đữ liệu nhu MySQL, SQLite hoac MongoDB

Xử lý và phân tích dữ liệu: Sử dụng để xử lý và phân tích dữ liệu, từ việc thực hiện các tính toán đơn

giản đề tính toán giá trị trung bình động cho đến việc phát tín hiệu giao dịch có sẵn can be used to đưa ra các quyết định đầu tư

Đồ họa dữ liệu: Cung cấp các công cụ đồ họa mạnh mẽ có thê được sử dụng dé hiên thị cô phiếu dữ

liệu dưới dạng biểu đồ, bản đồ nhiệt

Máy học và trí tuệ nhân tạo: Python cung cấp cho các thư viện và công cụ để xây dựng mô hình máy học và trí tuệ nhân tạo để phân tích dữ liệu cô phiếu, giúp đưa ra dự đoán và quyết định đầu tư thông

minh

Thông qua đồ án này nhóm chúng em sẽ phân tích, tìm hiểu mối tương quan giữa các cô phiếu để

đưa người đọc thay được tâm qua trọng và lợi Ích của “Phân tích dữ liệu cé phiéu bang Python” Python

hiện đang được sử dụng rộng rãi trong phân tích dữ liệu cô phiếu và là một lựa chọn tốt cho bát kỷ ai

của Ngôn ngữ lập trình Python, nhóm chúng em đã dựa trên cơ sở lí thuyết đó áp dụng thực hiện đồ án:

“Phân tích đữ liệu cô phiếu trực quan hóa dữ liệu cổ phiếu bằng Python” Với mục đích sẽ giúp chúng ta sé tim hiểu được mối tương quan giữa các cô phiếu Qua đồ án sẽ giúp các bạn có thêm kiến thức về cô

phiếu cũng như có nên đưa ra quyết định đâu tư hay không đề tránh giảm rủi ro Và đó là mục tiêu mà

nhóm em muốn hướng tới.

Trang 5

A CHƯƠNG I: GIỚI THIỆU DE TÀI 1 - Mục tiêu nghiên cứu

Vì số liệu của các ngân hàng cô phiếu nhiều, rộng, chi nhìn qua các con số như vậy khiến các nhà đầu tư chí thấy được sự biến động nhất thời thậm chí còn cảm thấy rối cho các nhà đầu tư mới Dùng trực quan hoá dữ liệu giúp nhà dau tư thay rõ được thông tin biến động chuyên sâu và hồ trợ trong việc ra quyết định Từ đó trực quan hóa dữ liệu các cô phiều ngân hàng có thê giúp các nhà dau tu va nha quản lý tài sản hiểu rõ hơn về biến động của các cỗ phiếu ngân hàng, đồng thời đưa ra những phân tích và quyết định đâu tư chính xác hơn Cụ thể, trực quan hóa dữ liệu có thê giúp:

Xem tông quan về khối lượng, giá cả, biến động của các cô phiếu cùng lúc >>Giúp nhà đầu tư và nhà quản lý tài sản quản lý các cô phiếu một cách dễ dàng hơn

Theo dõi sự biến động của các chỉ số tài chính ngân hàng và so sánh chúng với thị trường chung >>Giúp nhà đầu tư và nhà quản lý tài sản đánh giá hiệu suất của các ngân hàng so với thị trường

Phát hiện xu hướng mới và nhìn thấy các cơ hội đầu tư mới Việc trực quan hóa dữ liệu giúp xác

định các mô hình và xu hướng trong các số liệu tài chính

>>Giúp nhà dau tu và nhà quan ly tai san tìm kiếm những cơ hội đầu tư mới

Tăng cường tinh minh bach trong quá trình đầu tư và giảm rủi ro trong việc đưa ra quyết định đầu tư Tóm lại, trực quan hóa dữ liệu có thê giúp nhà đầu tư và nhà quản lý tài sản hiểu rõ hơn về biến động của các cô phiếu ngân hàng và đưa ra những phân tích và quyết định đầu tư chính xác hơn

2 _ Đối tượng nghiên cứu

Đối tượng bao gồm các ngân hàng Ngân hàng TMCP Á Châu (ACB), Ngân hàng TMCP Kỹ thương

Việt Nam (TCB), Ngân hàng TMCP Ngoại thương Việt Nam (VCB), Ngân hàng TMCP Công Thương

Việt Nam (CTG), Ngân hàng TMCP Quân đội (MBB)

Pandas (viét tat Panel Data) 1a thư viện mã nguồn mở phục vụ cho việc phân tích và xử lý dữ liệu

trong Python, được phát triển bởi MeKinney năm 2008 Thư viện này được thiết kế đê làm việc dễ dàng

và trực quan với dữ liệu có cầu trúc (dạng bảng, đa chiéu, ) và dữ liệu chuỗi thời gian.

Trang 6

1.1.2 Cai dat va import a) Cài đặt Có 2 cách:

Sử dụng pip: Ipip install pandas Sử dụng conda: ! conda install pandas b) Import

import pandas as pd import matplotlib.pyplot as plt import random

1.1.3 Doc file csv vao dataframe

Sử dụng hàm read_cvs va được tra vé 1 dataframe Mac dinh, ham này sẽ phân biệt các trường của file cvs theo dấu phây cách đọc hết sức đơn giản như sau:

df = pd.read_ csv(/content/gdrive/MyDrive/bric.csv',index_ col=0)

country population area capital BR Brazil 299 8515767 Brasilia

SA South Africa 55 1221037 Pretoria

Tuy nhiên, bạn cũng sẽ phải lưu ý một vài tham số của hàm read_evs như: encoding: chi định encoding của file đọc vào Mặc định là utf-8

sep: thay đôi dấu ngăn cách giữa các cột Mặc định là dấu phây (°,°)

header: chi định file đọc vào có header(tiêu đề của các cột) hay không Mặc định là infer

index_col: chỉ định chí số cột nào là cột chỉ só(só thứ tự) Mặc định là None

nrows: chỉ định số bản ghi sẽ đọc vào Mặc định là None — đọc toàn bộ

a) Series

Series([data, index, dtype, name, copy, ])

Là mảng một chiêu giống như mảng Numpy, hay như một cột của một bảng, nhưng nó bao gồm thêm một bảng đánh label Series có thê được khởi tạo thông qua NumPy, kiéu Dict hoặc các dữ liệu vô hướng bình thường Series có nhiều thuộc tính như index, array, values, dfype, v.v.

Trang 7

Vi du:

import pandas as pd s = pd.Series((0,1,2,3])

print(s)

Output:00112233

b) DataFrame

DataFrame((data, index, columns, dtype, copy])

Dataframe la cau tric dir ligu gan nhãn hai chiêu với các cột và hàng như bảng tinh (spreadsheet)

hoac bang (table) Giống như Series, DataFrame có thê chứa bắt kỳ loại dữ liệu nào Một điều quan trọng cần làm nỗi bật là tất cả các cột trong khung dữ liệu là series Pandas Vì vậy, một DataFrame là sự kết hợp của nhiều Series đóng vai trò như các cột! DataFrame được sử dụng rộng rãi và là một trong những

câu trúc dữ liệu quan trọng nhất

Ví dụ:

import pandas as pd

"one": pd.Series({1,23,45], index = [1,2,3)), 1 1.6 1996 "two": pd.Series((1000,2400,1132,3434], index = [1,2,3,4]} 2 23.0 2409 df = pd.DataF rame(data) 3 45.0 1132

c) Các thao tác chọn, thêm, xóa cột import pandas as pd

s = {'mot': pd.Series((1., 2., 3., 5.], index=['a’, 'b’, 'c’, ‘e']),

‘hai': pd.Series([1., 2., 3., 4.], index=[a', b', 'c, 'd]), : ‘ba’: pd.Series([9., -1.3, 3.5, 41.1], index=['a’, 'b', 'c’, ‘d'])} c 39

print(df_ hai) 1.2 Numpy

Numpy (Numerical Python) là một thư viện Python mã nguồn mở được sử dụng trong hâu hết các

Trang 8

1.2.3 Khởi tạo mảng

a) Khởi tạo mảng 1 chiều

#kKhởi tạo máng một chiều với kiểu dữ liệu các phân tử là Integer

arr = np.array([1,3,4,5,6], dtype = int)

#Khởi tạo máng một chiều với kiểu dữ liệu mặc định

arr = np.array([1,3,4,5,6]) print(arr)

Output: [1 3 4 5 6]

b) Khéi tao mang 2 chiéu

arr1 = np.array([(4,5,6), (1,2,3)], dtype = int) Output: [[4 5 6]

c) Khởi tạo mảng 3 chiều

arr2 = np.array(([(2,4,0,6), (4,7,5,6)], [(0,3,2,1), (9,4,5,6)], [(5,8,6,4), (1,4,6,8)]), dtype = int) print(arr2)

d) Khởi tao với các hàm có san

* np.arange(1,7,2): Tạo máng với các phân tử từ 1 - 6 với bước nhảy là 2

e np.eye(4, dtype=int): Tao ma tran don vi véi kich thudc la 4x4

° np.random.random((2,3)): Tạo ma trận các phân tử ngẫu nhiên với kích thước 2x3.

Trang 9

1.2.3.1 Các thao tac có trong mảng

» _dfype: Kiêu dữ liệu của phân tử trong mảng

¢ shape: Kich thước của mang

* size: Sé phan ti trong mang * ndim: Sé chiéu cia mang Ví dụ:

print("Kiêu dữ liệu của phân tử trong máng:", arr2.dtype)

print("Kich thước của màng:”, arr2.shape)

print("Số phân tử trong mảng:", arr2.size) print("Số chiều của mang:", arr2.ndim)

1.2.3.2.Truy cập phần tứ có trong mang

Các phân tử trong mang được đánh số từ 0 trở đi arr[i]: Truy cập tới phân tử thứ ¡ của mảng 1 chiêu arr1[i,j]: Truy cập tới phân tử hàng ¡, cột j của máng 2 chiều arr2[n,i,j]' Truy cập tới phân tử chiêu n, hàng ¡, cột j của máng 3 chiêu arr[a:b]: Truy cập tới các phân tử từ a đến b-1 trong máng 1 chiều

arr1[:,:i Truy cập tới phân tử từ cột 0 đến cột i-1, của tất cả các hàng trong mảng 2 chiêu

print('arr[2]E”, arr[2]) print(“arr1[1:2]=", arr1[1,2]) print(“arr2[1,2,3]=", arr2[1,1,3]) print('arr[0:3]E”, arr[0:3]) print('arr1[:,:1]E”, arr1[:,:2])

1.2.3.3 Doc mang tir file.txt

nén minh dé kiéu int cho dé nhin, cac phan ti phan tach nhau boi dau "," print("File dữ liệu điểm lớp 2A:\n", diem_2a)

Trang 10

1.2.3.4 Các hàm thống kê

» _ arr.max() hoặc np.max(arr): Lấy giá trị lớn nhất của mảng arr * arr.min() hoặc np.min(arr): Lấy giá trị nhỏ nhất của mang arr

* arr.sum() hoac np.sum(arr): Tổng tắt cá các phân tử trong mảng arr

* arr.mean() hoac np.mean(arr): Trung bình cộng của tất cá các phân tử trong mảng arr * np.median(arr): Trả về giá trị trung vị của mảng arr

1.3 Seaborn

Seaborn là thư viện mở rộng được viết trên nên Matphotlib, từ đó kế thừa các chức năng biểu diễn

dữ liệu từ Matplotlib Vì vậy, những gì Seaborn làm được thì Matplotlib cũng làm được tuy nhiên không có chiêu ngược lại (Seaborn hiệu đơn giản là I đứa cón được Mafplotlib tạo ra)

1.3.1 Cài đặt

a) Cài đặt khi tạo môi trường ảo:

conda create -n hanh python = 3.7 matplotlib seaborn b) Cài đặt sau khi tạo xong môi trường ao: conda install matplotlib hoặc pip install matplotlib conda install seaborn hoac pip install seaborn

1.3.2 Import import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns

1.3.3 Cac kiéu trực quan hóa dữ liệu cơ bản a) Đồ thị đường

Biêu đồ đường được sử dụng để theo dõi những thay đôi trong khoảng thời gian ngắn và dài.

Trang 11

Bins duoc tinh bang cach lay max va min rồi của dữ liệu rồi chia đều thành số bins mình muốn Số

bins càng lớn, chia khoảng càng nhỏ thì chính xác Ví dụ:

sns.histplot(iris, x = 'petal_ length', bins = 10)

petal length

c) Biểu đồ par plot char

các chiêu dữ liệu theo từng cặp với nhau

sns.pairplot(iris, hue='species', height=1.5)

Trang 12

1 import pandas as pd 2 import numpy as np 3 import datetime as dt

Tiép theo, đề load dữ liệu cổ phiếug trực tuyến, ta sử dụng thư viện vnstock, thư viện này ta phai cai đặt vào Colab:

1 !pip install vnstock 2 from vnstock import

Các thư viện khác khi nào sử dung chung ta sé import thém 2.1.1 Load dit liéu tir VNStock

Liệt kê danh sách các mã cô phiếu trên thị trường:

1 listing_companies()

ticker company_name company_short_name

1 XDC Upcomlndex Công ty TNHH MTV Xây dựng Công trình Tân Cảng Xây dựng Công trình Tân Cảng 2 HSV Upcomindex Công ty Cổ phản Tập doan HSV Vigt Nam Gang Thép Hà Nội 3 CST Upcomindex Công ty Cổ phần Than Cao Sơn - TKV Than Cao Sơn - TKV 4 BVL Upcomlndex Công ty Cổ phần BV Land BV Land 1620 XMP Upeomlndex Công ty Gỗ phản Thủy điện Xuân Minh Thủy điện Xuân Minh 1621 YBC Upcomlndex Công ty Cổ phần Xi măng vả Khoảng sản Yên Bá

1622 YBM VNINDEX Công ty Cổ

Truy cứu đữ liệu lịch sử giá của một mã cô phiếu bát ki:

Trang 13

| 1 df_teb.tail() #l4y thông tin 5 dòng cuối của TCB

Open High Low Close Volume TradingDate

798 20900 0 0

797 208000 274000 268000 2/2000 2362248 2023-03-15 0 269500 263500 207500 2663133 2023-03-16 0

799 26800 271000 266000 286500 1200567 2023-03-17 > Kết quả trả về cho ta là 1 Data Frame

Trong đó ý nghĩa các cột: ñ_ Open: là giá mở cửa

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

ñ_ Low: giá thấp nhất trong phiên

O Close: giá đóng cửa (hay giá kết phiên)

ñ_ Volume: khối lượng giao dịch (tông số cô phiếu giao dịch trong phiên)

¡ TradingDate: ngày giao dịch

2.1.2 Lưu dữ liệu từ 5 ngân hàng TCB, ACB, VCB, CTG, MBB

Thực hiện load dữ liệu cổ phiếu từ 5 ngân hàng, thời gian lấy dữ liệu từ 01/01/2020 đến ngày

19/03/2023 Ta thực hiện như sau:

1 #Chọn thời gian lấy đữ liệu

2 start_date_selected="2020-01-01" 3 end_date_selected='2023-03-19'

4 #Lây dữ liệu từ 5 ngân hàng và lưu vào dataframe

5 TCB = stock_historical_data(symbol='TCB', start_date=start_date_selected, end_date=e nd_date_selected)

6 ACB = stock_historical_data(symbol='ACB’, start_date=start_date_selected, end_date=e nd_date_selected)

7 VCB = stock_historical_data(symbol='VCB', start_date=start_date_selected, end_date=e nd_date_selected)

8 CTG= stock_historical_data(symbol='CTG’, start_date=start_date_selected, end_date=e nd_date_selected)

9 MBB = stock_historical_data(symbol='MBB’, start_date=start_date_selected, end_date= end_date_selected)

Ngày đăng: 16/08/2024, 17:34

w