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

Báo cáo tiểu luận môn nền kinh tế chia sẻ và ứng dụng trong lĩnh vực x

35 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

Thông tin cơ bản

Tiêu đề Báo Cáo Tiểu Luận Môn Nền Kinh Tế Chia Sẻ Và Ứng Dụng Trong Lĩnh Vực X
Tác giả Nguyễn Thị Bích Ly, Thiếu Mai Ly, Phạm Thị Yến Nhi, Trịnh Phương Thảo, Nguyễn Kim Mỹ, Phạm Thị Ngọc Ánh, Nguyễn Trọng Tắn, Nguyễn Bảo Khuyên, Phạm Công Lực
Người hướng dẫn ThS. Trần Kim Long
Trường học Trường Đại Học Ngân Hàng TP.HCM
Chuyên ngành Trí Tuệ Nhân Tạo Trong Giao Dịch Định Lượng
Thể loại tiểu luận
Năm xuất bản 2021
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 35
Dung lượng 6,03 MB

Nội dung

Chiến thuật giao dịch này sẽ sử dụng các thuật toán học máy đề phân tích dữ liệu lịch sử g14 cô phiếu VCB và dự đoán xu hướng giá trong tương lai.. Chiến thuật giao dịch này có thể dự đo

Trang 1

TRUONG DAI HOC NGAN HANG TP.HCM

KHOA NGAN HANG

BAO CAO TIEU LUAN MON

NEN KINH TE CHIA SE VA UNG DUNG

TRONG LINH VUC X

NGƯỜI HƯỚNG DẪN: ThS TRAN KIM LONG NGƯỜI THỰC HIỆN :

MSSV

Thành Phố Hồ Chí Minh, ngày tháng năm 2021

Trang 2

NGAN HANG NHA NUGC VIET NAM BO GIAO DUC VA DAO TAO

TRUONG DAI HOC NGAN HANG TP HO CHi MINH

NHOM 7

TIEU LUAN CUOI KY

Môn học: Trí tuệ nhân tạo trong giao dịch định lượng

Thiéu Mai Ly - 030137210280 Phạm Thị Yến Nhi - 030137210371

Trang 3

MUC LUC

LOI MO DAU Looe ceccccecesscsssesssessseesecseessresresererssessesssetaetiesssetiietietsressiesansasesseerasesetsen 3

DE BAI TIEU LUAN Looe cecccccscccsscsseesessseseesecsecssesseessesseseesssesiesesseesssessiseesesenseeseseetesees 4 NỘI DUNG 2 22122122212 1112212112111211221212222221212222121 21tr errog 5 Câu Ì: 2222 212221211211221121121112112122221 2112121121212 6 Câu 2L - 212212212121 1121101112212211112122111211121221212122 1221121 rre 10 Câu 3: - 212212212221 1121101112212 222111 rree 16

Xây dựng chiến lược SMA 5c n n1 110 1212121111115 1115151018112 1 1n se 16

Với số tiền đầu tư là 100,000,000 VNĐ, phí giao dịch là 0% sec: 19

So sánh SMA (20,50) và SMA ((11,37) 5s 222 2122212212212 eeee 20

Xây dựng chiến lược EMA 5 2n 1211111135111 1512151 1111512121551 ece 21

Với số tiền đầu tư là 100,000,000 VND, phi giao dich là 0.3% se 25

So sánh ưu nhược điểm của SMA và EMA - Sa 2n 2211111111151 12155 115121 ng 26

Câu 4 - 2122122212211 1122112112112 1e 27 Với số tiền đầu tư là 100,000,000 VNĐ, phí giao dịch là 0% sec: 27 Với số tiền đầu tư là 100,000,000 VND, phi giao dich là 0.2% - se 32 LỜI KẾT, 52 S2 122112711 21121112111 1112112211212 21 re 34

Trang 4

LOI MO DAU

Thị trường chứng khoán ngày càng trở nên phức tạp và biến động, đặt ra

những thách thức lớn cho nhà đầu tư Đề thành công trên thị trường chứng khoán,

nhà đầu tư cần có khả năng dự đoán chính xác xu hướng giá và tận dụng các cơ hội đầu tư Tuy nhiên, việc dự đoán xu hướng giá là một nhiệm vụ khó khăn, đòi hỏi nhà đầu tư phải có kiến thức, kinh nghiệm và kỹ năng phân tích thị trường Trí tuệ nhân tạo (AI) có thể là một giải pháp giúp nhà đầu tư nâng cao khả năng dự đoán và tận dụng cơ hội trong giao dịch chứng khoán AT là một lĩnh vực

nghiên cứu khoa học máy tính liên quan đến việc phát triển các hệ thống máy tính

có thể tự động thực hiện các nhiệm vụ mà trước đây chỉ có thể được thực hiện bởi con người AI đã có những tiến bộ đáng kinh ngạc trong những năm gan day, va no đang được sử dụng trong nhiều lĩnh vực khác nhau, bao gồm cả giao dịch chứng

khoán

Trong bài tiểu luận này, nhóm chúng em sẽ tập trung vào cô phiếu VCB - một trong những ngân hàng hàng đầu Việt Nam Sử dụng AI để xây dựng và kiểm thử một chiến thuật giao dịch có cơ sở khoa học, chủ động và linh hoạt Chiến thuật giao dịch này sẽ sử dụng các thuật toán học máy đề phân tích dữ liệu lịch sử g14 cô phiếu VCB và dự đoán xu hướng giá trong tương lai

Kết quả nghiên cứu cho thấy chiến thuật giao dịch AI có thé giúp nhà đầu tư cải thiện khả năng sinh lời trong môi trường thị trường chứng khoán đây thách thức Chiến thuật giao dịch này có thể dự đoán chính xác xu hướng giá với độ chính xác cao, p1úp nhà đâu tư năm bắt được các cơ hội đâu tư tiêm năng

Trang 5

Dữ liệu giao dịch cỗ phiếu VCB: Link tệp dữ liệu VCB

Link Google Colab: [NHÓM 7_D01] BÀI CUÓI KỲ

ĐÈ BÀI TIỂU LUẬN

Sử dụng đữ liệu giao dịch của các cổ phiếu VCB trong giai đoạn từ ngày

03/01/2016 đến ngày 03/01/2023 tải từ VNSTOCK Dữ liệu bao gồm các biến:

"TradingDate": ngày giao dịch, "Open": giá mở cửa, "Hiph": giá cao nhất, "Low": giá thấp nhất, "Close" gia dong ctra, "Volume": khối lượng giao dịch

Yéu cau:

1 Vẽ đồ thị biểu diễn giá đóng cửa của cổ phiếu VCB, đường SMA(20) và

đường SMA(50) trong giai doan trén

2 Xây dựng chiến thuật giao dịch dựa trên đường SMA(ngắn hạn) và đường

SMA(dài hạn) Cụ thê, khi đường SMA(ngắn hạn) cắt từ dưới lên đường SMA(dài hạn) là tín hiệu "Mua" Trong khi, đường SMA(ngắn hạn) cắt từ trên xuống đường SMA(dài hạn) là tín hiệu "Bán"

3 Với số tiền đầu tư là 100.000.000 đồng, mỗi lần thực hiện giao dịch sẽ mua

100 cô phiếu/giao dịch Giả sử phí giao dịch là 0%, xác định đường

SMA(ngan han) va đường SMA(dài hạn) để nhà đầu tư có thê kiếm được số

tiền nhiều nhất sau khi thực hiện chiến thuật s1ao dịch dựa trên đường SMA Lưu ý, ngắn hạn chỉ được xác định từ 10 đến 20 ngày, dài hạn chỉ được xác

định từ 30 đến 50 ngày

4 Sử dụng chiến thuật giao dịch theo các đường SMA đã xác định ở câu 3 dé lựa chọn cô phiếu có tý suất sinh loi cao nhat trong ré cac c6 phiéu nganh ngan hang sau ['CTG', 'STB', 'HDB', 'EJB', 'BID', 'VPB', 'ACB', 'TCB',

'MBB', 'VIB', 'SHB', 'VCB’, 'LPB', 'TPB'] giai doan tir ngay 03/01/2016 dén

ngay 03/01/2023 Biét sé tién đầu tư là 100.000.000 đồng, phí giao dịch là

0% và lượng cô phiếu trong mỗi giao dịch là 100 cô phiếu/giao dịch

Trang 6

NOI DUNG

s% Cài đặt các thư viện cần thiết:

1 lpip install vnstock backtesting ta

3 import matplotlib.pyplot as plt

4 import pandas as pd

5 from vnstock import *

6 from backtesting import Backtest, Strategy

7 from ta.trend import sma_indicator

!pip install vnstock: tai 961 thu vién Python cho phép tai dit ligu 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 từ Techcombank Security (TCBS) va SSI

import matplotlib.pyplot as plt: module cua matplotlib, ding dé vé d6 thi và trực quan hóa dữ liệu

import pandas as pd: cung cấp các cấu trúc đữ liệu và các công cụ phân tích đữ liệu hiệu suất cao

from vnstock import *: Nhập tất cả các chức năng từ thư viện vnstock Thư viện này chủ yêu được sử dụng đề lấy đữ liệu chứng khoán từ sản giao dịch Việt Nam from backtesting import Backtest, Strategy: Nhap cac lop Backtest và Strategy

từ thư viện backtesting Thu vién nay hỗ trợ thực hiện các quá trinh backtestine cho chiến lược giao dich

from ta.trend import sma_indicator: Nhap chirc nang sma_ indicator tr thu vién

tatrend Đây là một hảm giúp tính toán chỉ số đơn giản của đường trung bình

(Simple Moving Average - SMA)

Requirement already satisfied: vnstock in /usr/local/lib/python3.10/dist-packages (0.2.8.6)

Requirement already satisfied: backtesting in /usr/local/1lib/python3.10/dist-packages (0.3.3)

Requirement already satisfied: ta in fusr/local/lib/python3.10/dist-packages (8.11.0)

Requirement already satisfied: numpy>=1.17.0 in /usr/local/1ib/python3.16/dist-packages (from backtesting) (1.23.5)

Requirement already satisfied: pandas!=0.25.0,>=0.25.0 in /usr/local/lib/python3.10/dist-packages (from backtesting) (1.5.3)

Requirement already satisfied: bokeh>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from backtesting) (3.3.0)

Requirement already satisfied: Jinja2>=2.9 in /usr/local/lib/python3.16/dist-packages (from bokeh>=1.4.@->backtesting) (3.1.2)

Requirement already satisfied: contourpy>=1 in /usr/local/1ib/python3.10/dist-packages (from bokeh>=1.4.0->backtesting) (1.2.0)

Requirement already satisfied: packaging>=16.8 in /usr/local/lib/python3.10/dist-packages (from bokeh>=1.4.0->backtesting) (23.2)

Requirement already satisfied: pillow>=7.1.0 in /usr/local/lib/python3.10/dist-packages (from bokeh>=1.4.0->backtesting) (9.4.0)

Requirement already satisfied: PyYAML>=3.10 in /usr/local/lib/python3.10/dist-packages (from bokeh>=1.4.0->backtesting) (6.0.1)

Requirement already satisfied: tornado>=5.1 in /usr/local/lib/python3.10/dist-packages (from bokeh>=1.4.0->backtesting) (6.3.2)

Requirement already satisfied: xyzservices>=2021.09.1 in /usr/local/lib/python3.1@/dist-packages (from bokeh>=1.4.0->backtesting) (2623.10.1) Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.16/dist-packages (from pandas!=0.25.0,>=0.25.0->backtesting) (2.8.2) Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas!=0.25.0,>=0.25.0->backtesting) (2023.3.post1) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from Jinja2>=2.9->bokeh>=1.4.0->backtesting) (2.1.3) Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas!=0.25.6,>=@.25.@->backtesting) (1.16.@)

Trang 7

Lấy thông tin của mã cỗ phiếu VCB từ ngày 03/01/2013 đến 03/01/2023:

1 # Lãy dữ liệu lịch sử giao dịch của VCB từ ngày 03/01/2013 đến ngày 03/01/2023

2 df = stock historical_data(symbol='VCB', start_date="2013-01-03', end_date='2023-01-03')

4

5 # Chuyển cột TradingDate sang kiểu datetime

7

8 # Sử dụng cột TradingDate làm khóa chính

10 df

Trang 8

Open High Low Close Volume Ticker

03',end_date='2023-01-03') : là một lệnh để gán biến df bằng kết quả của hàm

stock historical data voi cdc tham sé ‘VCB’, ‘2013-01-03’ va ‘2023-01-03’ Ham stock historical data la mét ham dé lay dữ liệu lịch sử của cỗ phiếu từ một nguồn

nảo đó Tham số “VCB' là mã cô phiêu của Ngân hàng TMCP Ngoại thương Việt Nam Tham s6 ‘2013-01-03’ va ‘2023-01-03’ là khoảng thời gian muốn lấy dữ liệu,

từ ngày 03 tháng 01 năm 2013 đến ngày 03 tháng 01 năm 2023 Kết quả trả về của

hàm stock_historical_ data là một DataFrame của thư viện Pandas, chứa các cột như ngày, giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa và khối lượng giao dich

của cỗ phiếu “VCB' trong khoảng thời gian đã cho

dƒ=dƒ set index('TradingDafe): là một lệnh dé gan biến df bằng kết quả của

phương thức set index của DataFrame voi tham s6 ‘TradingDate’ Phương thức

set Index của DataFrame là một phương thức để đặt một cột hoặc nhiều cột làm chỉ

số (index) của DataFrame Chỉ số là một nhãn duy nhất để xác định mỗi hàng của DataFrame Bạn có thể sử dụng chỉ số để truy cập, lọc hoặc sắp xếp dữ liệu theo hàng Tham số “Trading Date’ la tén cua cét muốn đặt làm chỉ số Lệnh nảy sẽ trả về một DataFrame mới với cột “ TradineDate” làm chỉ số và gan lai cho bién df

Trang 9

Tạo 2 chỉ báo trung bình động đơn giản (SMA) cho khung dữ liệu về giá cổ

phiếu:

1 # Vẽ đồ thị giá đóng cửa của VCB từ ngày 03/01/2013 đến ngày 03/01/2923

2 df['SMA 20"] = sma_indicator(close=df[ 'Close'], window=20) #Đường SMA (20) df['SMA 59'] = sma_indicator(close=df[ 'Close'], window=59) #Đường SMA (59)

df[‘SMA 20’] = sma_indicator(close=df[‘Close’], window=20): tạo ra cột SMA 20 với bước là 20 điêm trung bình kết quả liên tục

df[ ‘SMA 50’] = sma_indicator(close=df[‘Close’], window=50): tao ra ct SMA 50 với bước là 50 điểm trung bình kết quả liên tục

# Vẽ đồ thị biểu diễn giá đóng cửa của cổ phiếu VCB cùng với SMA 2Ø và SMA 59

pitplot(df]'Close'J, label='Close'): Đây là lệnh đề vẽ đồ thị đữ liệu giá đóng cửa

của cô phiếu VCB Cột 'Close' trong DataFrame 'df chứa thông tin về giá đóng cửa của cô phiếu Đề thị này được đánh dấu nhãn là 'Close'

pitplot(df]°SMA 20'], label='SMA 20'): Day la lénh dé vé dé thị đữ liệu của đường

trung bình đơn giản (Simple Moving Average - SMA) với cửa số 20 Cột 'SMA 20' trong DataFrame 'df chứa thông tin về giá trung bình đơn giản SMA(20) Đồ thị này được đánh dấu nhãn là 'SMA 20'

pltplot(dff'SMA 50'], label='SMA 50'): tương tự như trên nhưng vẽ đồ thị biểu diễn chỉ báo SMA 50

plttitle('Dé thi biểu diễn giá đóng của cỗ phiếu VCB'): Lệnh này đặt tiêu đề cho

đồ thị, là "Đồ thị biểu diễn giá đóng của cô phiếu VCB"

pltxlabel('Thoi gian'): Lénh nay đặt nhãn cho trục x của đồ thị, là "Thời gian”

Trang 10

pltylabel('Gid(VND)'): Lénh nay dat nhan cho trục y của đồ thị, là "Giá(VND)" pửừ.legend(): Lệnh này hiển thị chú thích trên đồ thị, hiển thị các nhãn của các dòng

dữ liệu tương ứng với các đường vẽ trên đồ thị

Từ đó, ra được kết quả như sau:

Đồ thị biểu diễn giá đóng của cổ phiếu VCB cùng với SMA 20 và SMA 50

và trung hạn của một tài sản

Trong khi đó, SMA giá đóng cửa chỉ đơn giản là giá trung bình của tài sản

trong một khoảng thời gian nhất định, không quan tâm đến số lượng phiên hay giá

mở và giá cao nhất thấp nhất

Do đó, các SMA này có biên độ p1ao động khác nhau SMA 50 sẽ có biên độ

giao động nhỏ hơn so với SMA 20 và SMA giá đóng của

Các biên độ giao động này thế hiện mức độ dao động giá của tài sản trong một khoảng thời gian nhất định Khi biên độ giao động nhỏ, có thé cho thay xu hướng của tài san dang 6n dinh hon, giúp người đầu tư đánh giá được mức độ rủi ro khi đầu tư vào tài sản đó Ngược lại, khi biên độ p1ao động lớn, có thé cho thay sự biến động của tài sản đang tăng cao, làm tăng mức độ rủi ro và khó khăn trong việc đánh p1á xu hướng của tải sản

Trang 11

Ngoài ra, sự khác nhau giữa các biên độ giao động còn cho thấy mức độ độc lập của SMA đó với sự biến động ngắn hạn của tài sản SMA 50 có xu hướng chậm hơn trong việc đáp ứng với sự biến động ngắn hạn, trong khi SMA 20 và SMA giá đóng cửa có xu hướng nhanh hơn Điều này cho phép người đầu tư chọn phù hợp với nhu cầu đầu tư của mình và sử dụng các SMA khác nhau đề đánh giá xu hướng cua tai san theo thoi gian va muc đích đâu tư khác nhau

Mua: SMA (20) > SMA (50) và SMA (20) lúc trước <= SMA (50) lúc trước

Bán: SMA (20) < SMA (59) và SMA (20) lúc trước >= SMA (50) lúc trước

- _ Bước l; Tạo cột position của DataFrame `df để lưu kết quả quyết định mua bán của chiến lược giao dịch chiến thuật giao dịch dựa trên đường

SMA(ngan han) va đường SMA(dài hạn)

[9] # Tạo cột position để lưu kết quả quyết định mua bán của chiến lược giao dịch chiến thuật giao dịch dựa trên :

đf.1loc[(đf['SMA 20] › df['SMA 58']) & (df['SMA 28'].shift(1) <= df['SMA 58'].shift(1)), 'position'] = 1

df.loc[(df['SMA 20'] ‹ df['SMA 59°]) & (df['SMA 20'].shift(1) >= df['SMA 5@'].shift(1)), 'position'] = -1

© d£loc|(df[SMA 201] > df['SMA 501) & (df['SMA 201].shift() <=

df['SMA 50'].shift(1)), 'position’] = 1 : gán giá trị 1 vảo cột 'position' nếu 'SMA 20' lớn hơn 'SŠMA 50' và 'SMA 20' của hàng trước đó nhỏ hơn hoặc

bằng 'SMA 50' của hàng trước đó

© d£loc|(df[SMA 20'] < df['SMA 501) & (df['SMA 201].shift(l) >=

df['SMA 50'].shift(1)), 'position'] =-1 : gan giá trị -1 vào cột 'position' nếu 'SMA 20' nhỏ hơn 'SMA 50' va 'SMA 20' cua hàng trước đó lớn hơn hoặc

bằng 'SMA 50' của hàng trước đó.

Trang 12

© df]df]'position’|.notnullQ]: loc ra các hàng trong DataFrame ‘df chi lay

những hàng mà cột 'position' không null, nghĩa là chỉ lấy các hàng mả đã

duoc gan 914 tri 1 hoặc -1 trong hai dòng lệnh trước

Kết quả cuôi cùng của các câu lệnh này là việc gan 914 tri 1 cho cột 'posttion' khi có tín hiệu “Mua” và gán giá trị -1 khi có tín hiệu “Bán” dựa trên sự cắt của hai đường SMA Điều nay co thé được sử dụng đề xác định các thời điểm mua và bán trong chiến thuật giao dich dywa trén SMA

© Bang dit ligu hién thi c6t “position” cé gid tri la 1 và -1

Trang 13

+ Nếu self.data.position có giá trị là 1, điều này cho biết chiến lược quyết định mua Trong trường hợp này, nó sẽ mua 100 cô phiếu VCB (sử dụng lệnh self.buy(size=100)

+ Nếu `selfdata.position` có giá trị là -1, điều này cho biết chiến lược quyết định bán Trong trường hợp này, nó sẽ đóng tất cả vị trí giao dịch đang

mở (sử dụng lệnh self.posifion.elose(), tức là bán tất cả cổ phiếu VCB đã mua trước đó

—> Tóm lại, GeneralStrategy là một lớp con của Stratesy được sử dụng để xác định cách chiên lược quyết định mua và bán cô phiêu dựa trên giá trị của biên self.data.position Néu ‘position’ bang 1, thi nd mua co phiéu, va néu ‘position’ băng -1, thi nó bán cô phiều

Bước 3: Chạy backtest với chiến lược giao dịch đã định nghĩa ở trên và với

số tiền ban đầu là 100.000.000 VND (100 triệu VND) và không tính phí giao

dich (commission = 0) va giao dich theo 914 dong cua (trade_on_close = True) va khéng cho phép giao dich cung luc (exclusive_orders = True)

Trang 14

2 # và không tinh phi giao dich (commission = 9) và giao dich theo giá đóng cửa (trade_on close = True)

3# ka khong cho phép giao dịch cũng lúc (exclusive orders = True)

Avg Drawdown [%]

Max Drawdown Duration

Avg Drawdown Duration

@ Trades Win Rate [%]

Best Trade [%]

Worst Trade [%]

Avg Trade [%]

Max Trade Duration

Avg Trade Duration

Profit Factor

Expectancy [%]

SQN _Strategy _equity_curve _trades

2013-01-04 00:00:00 2023-01-03 00:00:00

3651 days 00:00:00

58 398794

103887900 0 105281900.0 3.6879 573.795761 0.367576 0.936517 0.392493 0.573125 0.177764 -2.067782 0.286215

856 days 00:00:00

80 days 00:00:00

48 148148

61.72208 -13.728814 4.326711

213 days 00:00:00

78 days 00:00:00 2.872482 5.365584 1.394747 GeneralStrategy

Equity Drawdown ct Drawdown

Size EntryBar ExwBar ErtryPrice Exit

bt = Backtest( ): Tạo một đối tượng backtest (`b£`) bằng cách cung cấp dữ liệu giao dịch (đf`), lớp chiến lược giao địch (GeneralStrategy), số tiền ban đầu ( cash=100000000' - 100 triệu VND), phí giao dịch (commission=0 -

dịch theo gia (trade_on_close=True - giao dịch sẽ xảy ra vào cuối ngày), và không cho

phép giao dịch cùng lúc (exelusive_orders=True - không thực hiện các giao

dịch cùng lúc)

Trang 15

o tats = bt.run(): Chay backtest bang cach goi phwong thire `run()` trên đối tuong backtest ( bt’) Kết quả của cuộc thử nghiệm được lưu vào biến stats

o stats.to_frame(): In ra két qua cua cuộc thử nghiệm giao dịch, biêu diễn dưới dạng DataFrame, để có cái nhìn tông quan về hiệu suất của chiến lược giao dich da duoc thử nghiệm

Trong khoảng thời gian từ ngày 03/01/2013 đến ngày 03/01/2023, tổng cộng

27 giao dịch đã được thực hién Ti 1é giao dich thành công là 58.4% Điểm cao nhất

trong quá trình giao dich dat dén 61.72%, trong khi điểm thấp nhất là -11.73%

Kết quả cuỗi cùng của tài sản đã đạt đến 103,697,900 đồng, với điểm cao nhất là 105,281,900 đồng Tý số lợi nhuận chung trong giai đoạn này đạt 3.7% Tuy

nhiên, tý suất lợi nhuận hàng năm chỉ 0.37%, cho thấy sự tăng trưởng chậm hơn so VỚI tỷ suất lợi nhuận tổng thé

Về tính ổn định, tỷ lệ Sharpe Ratio đạt 0.39, ty lệ Sortino Ratio đạt 0.57 và ty

lệ Calmar Ratio đạt 0.18 Điều này cho thấy mức độ rủi ro trong quá trình giao dịch không quá cao nhưng cũng không đạt được mức độ sinh lợi lớn

Trong suốt giai đoạn nảy, mức giảm lớn nhất đã xảy ra là -2.06% và kéo dai trong suốt 856 ngày Mức giảm trung bình là -0.29% và kéo đài trong 80 ngày Điều

này cho thấy có những thời điểm mất giá nhưng không quá sâu và thời gian phục hỗồi sau đó cũng không quá dài.Trung bình, mỗi giao dịch đạt được mức lợi nhuận là

2.89% Thời gian trung bình là 7§ ngảy, trong khi giao dịch lâu nhất kéo dài trong

213 ngày

Tý suất lợi nhuận kỳ vọng (Expectancy) đạt 5.36% và chỉ số SQN (System Quality Number) la 1.39 Diéu nay cho thấy có một mức độ lợi nhuận tích cực, nhưng không đạt được mức độ đáng, kê

Chiến lược giao dịch đã đạt được kết quả tích cực trong giai đoạn từ 2013

đến 2023 Tuy nhiên việc tăng trưởng lợi nhuận không đạt đến mức đáng kê và tỷ lệ

rủi ro cũng không thấp Điều này cho thấy cần xem xét và cải tiến chiến lược giao dịch đề đạt hiệu suất tốt hơn trong tương lai.

Trang 16

- Vé dé thi lợi nhuận của chiến lược giao dịch:

plt.plot(stats._values[-2]['Equity'])

pìt.title('Đồ thị lợi nhuận của chiến lược giao địch")

plt.xlabel('Thdi gian')

le8 Đồ thị lợi nhuận của chiến lược giao dịch

Câu 3:

Sử dụng chiến thuật giao dich 6 cau 2, tiến hành thực hiện vòng lặp với các cặp giá trị đường SMA ngắn hạn và đài hạn tương ứng nhằm mục đích tìm ra cặp

Trang 17

gia ta duong SMA ngan han va dai han dé nhà đầu tư có thê kiếm được số tiền

nhiêu nhất

Xây dựng chiến lược SMA

1# Khởi tạo các biến lưu giữ giá trị SMA ngắn hạn, SMA dai han va tổng vốn cuối cùng lớn nhất tương ứng

2 best_short SMA = @

3 best_long SMA = @

4 best_equity_final = 0

o bes( short SMA =0: Biến này được sử dụng để lưu trữ giá trị của độ ngắn

nhất của đường trung bình đơn giản (Simple Moving Average - SMA) mà

chiến lược giao dịch đã kiểm tra trong quá trình tối ưu hóa

o bes( long SMA =0: Tương tự như best_short SMA, biến này lưu trữ giá trị

của độ dài nhất của đường SMA mà chiến lược giao dịch đã kiểm tra trong

quá trình tối ưu hóa

o bes(_equity_final = 0: Biến này được sử dụng để lưu trữ giá trị tốt nhất của

vốn (equity) cuối cùng sau khi thực hiện backtesting với các cặp giá trị tối ưu

hóa của độ ngắn và độ dài SMA Mục tiêu là tìm cặp giá trị best short SMA

và best long _SMA sao cho vốn cuối cùng là lớn nhất, tức là chiến lược có

hiệu suất tốt nhất trong việc øIao dịch dựa trên SMA trên dữ liệu chứng

khoán

# Vòng lặp để tìm ra cặp giá trị SMA ngắn hạn (¡ từ 19 đến 26) và SMA dài hạn (j từ 30 đến 59) tốt nhất để đạt được tổng vốn cuối cùng lớn nhất for i in range(1@, 21):

for j in range(30, 51):

# Tạo cột short_SMA để lưu giá trị SMA ngắn hạn

df["short_sm4"] = sma_indicator(close=df['close'], window=i)

# Tạo cột long SMA để lưu giá trị SMA dài hạn

đf['long _SMA'"] = sma_indicator(close=df[ "Close"], window=j)

# Tạo cột position để lưu kết quả quyết định mua bán của chiến lược giao dịch (mua: 1, bấn: -1)

đf[”position'] = float( nan")

# Gán giá trị cho cột position theo chiến lược giao dịch Lưu ý: cột position sẽ có giá trị NaN nếu không thỏa điều kiện mua hoặc bán

# Điều kiện mua: SMA ngắn hạn › SA dài hạn và SA ngân hạn lúc trước ‹= SMA dài hạn lúc trước (tức là đường sMA(ngắn hạn) cát từ đưới lên đường %(dài đf.lc[(đf[ short_sHA'] › đf[ long swA']) & (đf{ 'short_sWA'].shiff(1) ‹= đf[ long swA'].shiff(1)), 'positien'] = 1

# Điều kiện bán: SMA ngắn hạn ‹ SMA đài hạn và SHA ngán hạn lúc trước ›= $MA dài hạn lúc trước (tức là đường s⁄A(ngấn hạn) cất từ trên xuống đường SHA(tà đf.loc[(đf[ short _sHA'] ‹ đf[ long swA']) & (đf[ short sHA'].shift(1) ›= df[ long s#A'].shift(1)), ‘position’] = -1

df.loc|(df['short SMA'| > df[long SMA']) & (df['short SMA'].shift(1) <=

df['long_SMA'].shift(1)), 'position"] = 1: Điều kiện mua - Nếu SMA ngắn hạn lớn

Ngày đăng: 06/12/2024, 16:24

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

TÀI LIỆU LIÊN QUAN

w