













































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
ĐỒ ÁN CUỐI KHÓA ĐỀ TÀI: XÂY DỰNG CHIẾN THUẬT GIAO DỊCH DỰA TRÊN ĐƯỜNG SMA CHO DỮ LIỆU CỔ PHIẾU NHTM CỔ PHẦN CÔNG THƯƠNG VIỆT NAM (CTG) Hệ: Chất lượng cao Tên học phần: Trí tuệ nhân tạo trong giao dịch định lượng Chuyên ngành: Công nghệ tài chính
Typology: Exams
1 / 53
This page cannot be seen from the preview
Don't miss anything!
Thành phố Hồ Chí Minh, tháng 7 năm 2024 NGÂN HÀNG NHÀ NƯỚC VIỆT NAM BỘ GIÁO DỤC VÀ ĐÀO TẠO
ii TÓM TẮT Ngân hàng Thương mại Cổ phần Công Thương Việt Nam (VietinBank, mã chứng khoán: CTG) là một trong những ngân hàng lớn nhất Việt Nam. Được thành lập vào năm 1988, VietinBank cung cấp các dịch vụ tài chính và ngân hàng đa dạng bao gồm ngân hàng bán lẻ, ngân hàng doanh nghiệp, và dịch vụ ngân hàng đầu tư. Ngân hàng có trụ sở chính tại Hà Nội và sở hữu mạng lưới chi nhánh rộng khắp cả nước cùng với sự hiện diện tại một số quốc gia khác. VietinBank niêm yết cổ phiếu trên Sở Giao dịch Chứng khoán TP. Hồ Chí Minh (HOSE) với mã chứng khoán CTG. Đây là một trong những cổ phiếu có giá trị vốn hóa lớn và thanh khoản cao trên thị trường chứng khoán Việt Nam. Đồ án xây dựng chiến lược mua/bán cổ phiếu dựa trên các chỉ báo trung bình động đơn giản (SMA). Mục tiêu của bạn là xác định các tín hiệu mua và bán dựa trên sự giao cắt giữa hai đường SMA (ngắn hạn và dài hạn) và vẽ biểu đồ thể hiện giá cổ phiếu cùng với các tín hiệu mua/bán.
iii DANH MỤC TỪ VIẾT TẮT STT Tên viết tắt Tên đầy đủ Giải thích 1 NHTM Ngân hàng Thương mại 2 CTG Công Thương Group 3 HOSE Ho Chi Minh Stock Exchange 4 HNX Hanoi Stock Exchange 5 SMA Simple Moving Average – đường trung bình động giản đơn 6 VNSTOCK Gói thư viện Python cho phép tải dữ liệu chứng khoán 7 MACD Moving Average Convergence Divergence
1.1 Bối cảnh 1.1.1 Giới thiệu về cổ phiếu NHTM cổ phần Công Thương Việt Nam Ngân hàng Thương mại Cổ phần Công Thương Việt Nam (VietinBank) là một trong những ngân hàng lớn nhất và có ảnh hưởng nhất trong hệ thống ngân hàng Việt Nam. Được thành lập vào năm 1988, VietinBank đã phát triển mạnh mẽ với mạng lưới chi nhánh rộng khắp cả nước và một danh mục dịch vụ tài chính đa dạng. Cổ phiếu của VietinBank, với mã giao dịch là CTG, là một trong những cổ phiếu được giao dịch nhiều nhất trên sàn giao dịch chứng khoán Thành phố Hồ Chí Minh (HOSE). Sự ổn định và tiềm năng phát triển của VietinBank khiến cổ phiếu CTG trở thành lựa chọn hấp dẫn cho các nhà đầu tư trong và ngoài nước. 1.1.2 Thị trường chứng khoán Việt Nam và vị trí của CTG Thị trường chứng khoán Việt Nam đã trải qua nhiều giai đoạn phát triển kể từ khi thành lập vào năm 2000. Với sự ra đời của Sở Giao dịch Chứng khoán TP.HCM (HOSE) và Sở Giao dịch Chứng khoán Hà Nội (HNX), thị trường chứng khoán Việt Nam đã từng bước khẳng định vai trò quan trọng trong nền kinh tế quốc dân, cung cấp nguồn vốn dài hạn cho các doanh nghiệp và tạo ra kênh đầu tư hiệu quả cho các nhà đầu tư. Trong bối cảnh đó, cổ phiếu CTG của VietinBank giữ một vị trí quan trọng trên thị trường chứng khoán Việt Nam. Với vai trò là một trong những ngân hàng hàng đầu, VietinBank không chỉ đóng góp đáng kể vào sự phát triển của hệ thống ngân hàng mà còn tạo ra ảnh hưởng tích cực đến sự phát triển của thị trường chứng khoán. Cổ phiếu CTG thường xuyên nằm trong nhóm các cổ phiếu blue-chip, thu hút sự quan tâm đặc biệt từ các nhà đầu tư lớn và nhỏ. Sự ổn định về tài chính và hiệu quả hoạt động của VietinBank giúp cổ phiếu CTG duy trì được sức hấp dẫn và là một trong những lựa chọn đầu tư hàng đầu trên thị trường chứng khoán Việt Nam.
1.2 Mục tiêu nghiên cứu 1.2.1 Xây dựng và kiểm tra chiến lược giao dịch dựa trên SMA Trong nghiên cứu này, tập trung vào xây dựng và đánh giá hiệu quả của chiến lược giao dịch sử dụng Đường Trung bình Đơn giản (SMA). Chiến lược này dựa trên các tín hiệu mua và bán được phát sinh khi đường SMA ngắn hạn cắt lên hoặc xuống đường SMA dài hạn trên chuỗi dữ liệu giao dịch của cổ phiếu CTG từ ngày 01/01/ đến ngày 01/01/2024. Bằng cách này, xây dựng các quy tắc giao dịch và đánh giá hiệu quả của chiến lược dựa trên kết quả giao dịch thực tế.
2.1 Dữ liệu Trước khi vô phần nội dung chính của đồ án Import các thư viện cần thiết. Đầu tiên, tôi sử dụng các thư viện như pandas, numpy để xử lý dữ liệu; datetime để làm việc với ngày tháng; vnstock3 để tải dữ liệu chứng khoán từ VNSTOCK; hyperopt để tối ưu hóa các chiến lược giao dịch; matplotlib và seaborn để vẽ đồ thị và trực quan hóa dữ liệu. Thiết lập cảnh báo: Tất cả các cảnh báo đều bị tắt để đảm bảo rằng quá trình chạy code không bị gián đoạn bởi các thông báo không cần thiết. import warnings warnings.filterwarnings('ignore') warnings.simplefilter ('ignore') import pandas as pd import numpy as np import time import json import traceback from vnstock3 import Vnstock from datetime import datetime, timedelta !pip install - q vnstock import os from hyperopt import hp, tpe, fmin, pyll, Trials, STATUS_OK from hyperopt.fmin import generate_trials_to_calculate from functools import partial import matplotlib.pyplot as plt import matplotlib.dates as md
%matplotlib inline import seaborn as sns sns.set() #CÀI ĐẶT THƯ VIỆN CẦN THIẾT !pip install backtesting ta import backtesting as bt from backtesting import Strategy, Backtest from backtesting.lib import crossover !pip install ta import ta from backtesting import Strategy, Backtest 2.1.1 Nguồn dữ liệu Dữ liệu giao dịch của cổ phiếu NHTM cổ phần Công Thương Việt Nam (CTG) được lấy từ VNSTOCK, một trong những nguồn dữ liệu chứng khoán phổ biến tại Việt Nam.
os.makedirs('./data', exist_ok=True)
ticker = 'CTG'
stock = Vnstock().stock(symbol=ticker, source='VCI')
df_temp = stock.quote.history(start='2018- 01 - 01', end='2024- 01 - 01')
các giá trị NaN, chuyển đổi định dạng thời gian và đổi tên các cột để phù hợp với yêu cầu phân tích.
3.1 Chiến lược SMA 3.1.1 Xây dựng chiến thuật giao dịch Chiến thuật giao dịch được xây dựng dựa trên việc sử dụng hai đường trung bình động đơn giản (SMA) với các khoảng thời gian khác nhau để tạo tín hiệu mua và bán. Cụ thể:
def calculate_sma(data, window): sma = data.rolling(window=window).mean() return sma
data = pd.DataFrame(ctg_data)
data['date'] = pd.to_datetime(data['date'], format='%m-%d- %Y') # Adjusted format to '%m-%d-%Y'
data.set_index('date', inplace=True)
data['SMA_short'] = calculate_sma(data['Close'], window= 50 ) data['SMA_long'] = calculate_sma(data['Close'], window= 200 )
data['Decision'] = np.where(data['SMA_short'] > data['SMA_long'], 'Mua', 'Bán')
plt.figure(figsize=( 18 , 10 )) plt.plot(data.index, data['Close'], label='Giá đóng cửa', color='grey') plt.plot(data.index, data['SMA_short'], label='SMA 50', linestyle='-', color='blue') plt.plot(data.index, data['SMA_long'], label='SMA 200', linestyle='-', color='orange')
SMA previous_decision = None for index, row in data.iterrows(): if previous_decision is not None and row['Decision'] != previous_decision: if row['Decision'] == 'Mua': plt.scatter(index, row['Close'], color='green',marker='^', s= 100 , label='Mua' if 'Mua' not in plt.gca().get_legend_handles_labels()[ 1 ] else '') elif row['Decision'] == 'Bán': plt.scatter(index, row['Close'], color='red',marker='v', s= 100 , label='Bán' if 'Bán' not in plt.gca().get_legend_handles_labels()[ 1 ] else '') previous_decision = row['Decision'] plt.title('Biểu đồ giá đóng cửa và tín hiệu giao dịch dựa trên SMA') plt.gca().xaxis.set_major_formatter(md.DateFormatter('%d- %m-%y')) plt.xlabel('Ngày') plt.ylabel('Giá')
3.1.1.3 Khi đường SMA(ngắn hạn) cắt từ trên xuống SMA(dài hạn) là tín hiệu "Bán" Tín hiệu "Bán" xảy ra khi đường SMA(ngắn hạn) cắt từ trên xuống đường SMA(dài hạn). Điều này thường được coi là một tín hiệu báo hiệu về sự suy giảm trong xu hướng giá, cho thấy một sự chuyển đổi từ xu hướng tăng sang xu hướng giảm. Khi đường SMA ngắn hạn (SMA 50) cắt từ trên xuống đường SMA dài hạn (SMA 200), đây là tín hiệu cho thấy xu hướng giá đang có xu hướng giảm. Do đó, đây là thời điểm thích hợp để bán ra cổ phiếu.
Hình 1 : Biểu đồ giá đóng cửa và tín hiệu giao dịch dựa trên SMA Đường SMA 50 và SMA 200: Đường SMA 50 (ngắn hạn) phản ánh xu hướng giá trung hạn trong khi đường SMA 200 (dài hạn) phản ánh xu hướng giá dài hạn. Khi đường SMA 50 cắt lên trên đường SMA 200, đó là tín hiệu mua (biểu diễn bằng mũi tên màu xanh). Khi đường SMA 50 cắt xuống dưới đường SMA 200, đó là tín hiệu bán (biểu diễn bằng mũi tên màu đỏ). Các tín hiệu giao dịch: Có nhiều điểm giao nhau giữa SMA 50 và SMA 200 trong giai đoạn từ 01/01/ đến 01/01/2024. Các điểm giao nhau này thường là tín hiệu quan trọng cho các quyết định mua và bán. Tín hiệu mua (mũi tên xanh): Xuất hiện khi SMA 50 cắt từ dưới lên trên SMA 200. Điều này cho thấy xu hướng tăng giá có thể xảy ra. Tín hiệu bán (mũi tên đỏ): Xuất hiện khi SMA 50 cắt từ trên xuống dưới SMA 200. Điều này cho thấy xu hướng giảm giá có thể xảy ra. Xu hướng giá: