Lựa chọn danh mục trực tuyến
Lựa chọn danh mục trực tuyến là gì?
Lựa chọn danh mục trực tuyến (OLPS) là phương pháp phân bổ vốn theo thời gian nhằm tối đa hóa lợi nhuận đầu tư OLPS rất quan trọng trong các ứng dụng tài chính như quản lý tài sản tự động và giao dịch định lượng Ví dụ, A có 10.000 USD ở tuổi 30 và muốn tăng số vốn lên 1.000.000 USD khi nghỉ hưu ở tuổi 60 thông qua đầu tư vào ba tài sản: Microsoft (MSFT), Goldman Sachs (GS) và tín phiếu kho bạc Mỗi tháng, A nhận thông tin cập nhật về ba tài sản và phải quyết định cách phân bổ vốn để tối đa hóa khả năng tăng trưởng Kỹ thuật OLPS giúp A tự động hóa quá trình này Mặc dù OLPS sử dụng dữ liệu lịch sử giống như phân tích kỹ thuật, nhưng khác biệt ở chỗ OLPS điều chỉnh danh mục đầu tư vào đầu mỗi kỳ mà không chỉ dựa vào các biểu đồ và chỉ báo.
OLPS (Online Portfolio Selection) trong giao dịch thực tế đối mặt với thách thức lớn khi thông tin thị trường, chủ yếu là dữ liệu, được cập nhật liên tục Các nhà quản lý danh mục đầu tư cần đưa ra quyết định ngay lập tức dựa trên thông tin hiện có và các biến nội sinh phát sinh từ sự tương tác với thị trường Hai loại phương pháp học máy (ML) đã được nghiên cứu để phát triển các chiến lược cho bài toán này.
Phương pháp học theo cụm (batch learning) cho phép mô hình được huấn luyện từ nhiều tập dữ liệu trước đó, giả định rằng tất cả thông tin về giá và các yếu tố khác là hoàn chỉnh tại một thời điểm quyết định Trong phương pháp này, mỗi quyết định là độc lập và không liên quan đến các quyết định trước đó Chúng ta áp dụng các thuật toán như học phi tham số (nonparametric learning), học dựa trên ví dụ (instance-based learning) và học dựa trên tình huống cơ bản (case-based learning) để tối ưu hóa quá trình ra quyết định Với nguyên lý giao dịch hiệu quả, phương pháp này có thể giúp đạt được mục tiêu của dự án đề ra.
Học trực tuyến (online learning) hay học tăng cường (reinforced learning) là phương pháp học tập trong đó mô hình được huấn luyện từ một trường hợp đơn theo cách tuần tự Quá trình này bao gồm việc giải quyết một chuỗi các vấn đề, đưa ra các giải pháp cho những vấn đề trước đó và có thể bổ sung thêm thông tin phụ.
Nguyên lý và lý thuyết lựa chọn danh mục
Có hai trường phái chính về nguyên lý và lý thuyết lựa chọn danh mục:
1 Lý thuyết trung bình phương sai của Markowitz [18], nói về sự đánh đổi giữa lợi nhuận mong muốn (trung bình) và rủi ro (phương sai) của một danh mục đầu tư, điều này phù hợp cho lựa chọn danh mục đầu tư cho một kỳ.
2 Lý thuyết tăng trưởng vốn đầu tư (hoặc là lý thuyết đầu tư của Kelly) [14] nhằm mục đích tối đa hóa lợi nhuận kỳ vọng dạng logarit của một danh mục đầu tư và giải quyết một cách tự nhiên việc đầu tư dài hạn (nhiều kỳ).
Do tính chất tuần tự của việc lựa chọn danh mục đầu tư, nhiều kỹ thuật OLPS hiện nay thường xây dựng các thuật toán dựa trên nguyên lý và lý thuyết thứ hai.
Cách tiếp cận đầu tiên trong việc lựa chọn danh mục đầu tư trực tuyến dựa trên nguyên tắc "follow the winner" được giới thiệu bởi Cover vào năm [7] Nguyên tắc này khuyến khích nhà đầu tư theo dõi và đầu tư vào những tài sản hoặc quỹ đã thể hiện hiệu suất tốt, nhằm tối ưu hóa lợi nhuận và giảm thiểu rủi ro.
Vào năm 1991, các thuật toán follow the winner đã phân bổ trọng số cao hơn cho những cổ phiếu có hiệu suất tốt trong quá khứ, với niềm tin rằng chúng sẽ tiếp tục mang lại lợi nhuận trong tương lai Năm 1996, Cover và Ordentlich phát triển thuật toán danh mục phổ quát có trọng số Đến năm 1998, họ bổ sung bán khống và ký quỹ vào mô hình Năm 1999, Blum và Kalai giới thiệu chi phí giao dịch vào mô hình Năm 2004, Borodin và Vincent đưa ra cách tiếp cận follow the loser, chuyển trọng số từ cổ phiếu có hiệu suất tốt sang cổ phiếu kém, với giả thuyết rằng cổ phiếu kém có thể mang lại lợi nhuận trong tương lai Họ phát triển thuật toán anti-correlation, thuật toán đầu tiên theo nguyên tắc này Năm 2012, Li, Zhao, Hoi và Gopalkrishnan giới thiệu đảo ngược trung bình tích cực thụ động (PAMR), tiếp theo là đảo ngược trung bình có trọng số tin cậy (CWMR) vào năm 2013 Đến năm 2015, Li, Hoi, Sahoo và Liu cải tiến PAMR thành Đảo ngược trung bình di chuyển trực tuyến (OLMAR).
Cách tiếp cận thứ ba trong quản lý danh mục đầu tư là phương pháp đối sánh mẫu (pattern matching), sử dụng dữ liệu quá khứ để xác định danh mục đầu tư hiện tại bằng cách tìm kiếm các mẫu tương tự Một phương pháp khác là meta-learning, liên quan đến việc học từ các chuyên gia trong học máy Meta-learning giả định sự tồn tại của nhiều chuyên gia từ các chiến lược khác nhau, mỗi chuyên gia tạo ra một danh mục đầu tư cho chu kỳ tiếp theo Các thuật toán meta-learning kết hợp các danh mục này để hình thành một danh mục cuối cùng, phục vụ cho việc tái cân bằng Ví dụ, nghiên cứu của Zhang và Yang vào năm 2017 đã giới thiệu thuật toán Weak Aggregating Algorithm (WAA), cho phép đưa ra quyết định dựa trên lời khuyên từ các chuyên gia và trọng số của họ dựa trên hiệu suất trong các chu kỳ trước.
Tầm quan trọng của lựa chọn danh mục
Khai thác dữ liệu là quá trình thu thập thông tin giá trị từ dữ liệu, đặc biệt quan trọng trong bối cảnh tăng trưởng dữ liệu toàn cầu Các kỹ thuật khai thác dữ liệu như khai thác quy tắc kết hợp, phân loại và phân cụm giúp phát hiện các mẫu khác nhau Phân cụm, một phương pháp phân tích dữ liệu không giám sát, nhóm các dữ liệu tương tự dựa trên các đặc điểm chung, thường sử dụng các thước đo khoảng cách như khoảng cách Euclid và khoảng cách city block Luận văn này phân tích một thuật toán lựa chọn danh mục đầu tư trực tuyến dựa trên nguyên tắc đối sánh mẫu, xác định các mẫu lịch sử tương tự để tìm ra danh mục đầu tư tối ưu cho từng thời kỳ, với thử nghiệm trên bộ dữ liệu chứng khoán bất động sản tại Việt Nam.
Cách tiếp cận để xây dựng thuật toán
Trong lĩnh vực học máy, các phương pháp học tập không có giám sát đóng vai trò quan trọng trong việc phát hiện các cấu trúc và mẫu nổi bật trong dữ liệu không có nhãn.
Việc phân tích hành vi phức tạp của chuỗi thời gian giá trên thị trường tài chính đòi hỏi một mô hình toàn diện để nắm bắt các thuộc tính ảnh hưởng Phương pháp phân nhóm không giám sát, với bốn thuật toán phân cụm, được áp dụng để khám phá các cửa sổ thời gian từ giả lập đến gần đây Phân cụm nhằm chia điểm dữ liệu thành các nhóm tương đồng, nhưng kích thước cửa sổ thời gian đóng vai trò quan trọng; kích thước không phù hợp có thể dẫn đến hiệu suất kém Do đó, việc xác định kích thước tối ưu cho cửa sổ thời gian và tích hợp chi phí giao dịch vào hàm mục tiêu là cần thiết để nâng cao độ chính xác của kết quả.
Dựa trên chiến lược Danh mục đầu tư tái cân bằng (CRP) liên tục, mỗi thời kỳ, danh mục đầu tư được điều chỉnh về một tỷ lệ cố định Sau mỗi kỳ, tài sản tích lũy của danh mục đầu tư sẽ được xác định.
Y t=1 b ⊤ xt. Trong thuật toán này, danh mục đầu tư ngoại tuyến tối ưu thu được là: b ∗ = argmax b n ∈∆ m log Sn(CRP b( )) = argmax b n ∈∆ m n
Trong bài viết này, chúng tôi đề cập đến công thức X t=1 log b ⊤ xt và chiến lược CRP với danh mục đầu tư ngoại tuyến tối ưu, được ký hiệu là Danh mục đầu tư cân bằng không đổi tốt nhất (BCRP) Giá trị danh mục đầu tư tích lũy cuối cùng của thuật toán dựa trên BCRP được trình bày rõ ràng, thể hiện hiệu suất đầu tư hiệu quả.
Chiến lược BCRP (Best Constant Rebalanced Portfolio) là một phương pháp đầu tư tối ưu, tối đa hóa lợi nhuận dựa trên các chuỗi thị trường hoàn chỉnh Cụ thể, nó xác định lợi nhuận tối đa Sn(BCRP) thông qua việc so sánh với các chiến lược CRP khác Đặc biệt, BCRP yêu cầu sự nhận thức sâu sắc và tính toán chính xác để đạt được hiệu quả tốt nhất trong đầu tư.
Tính phổ quát là một yếu tố lý thuyết quan trọng trong các thuật toán lựa chọn danh mục đầu tư trực tuyến (Cover, 1991; Li & Hoi, 2014) Trong đó, tính phổ biến của thuật toán Alg được xác định dựa trên khả năng áp dụng rộng rãi và hiệu quả của nó trong việc tối ưu hóa danh mục đầu tư.
Thuật toán lựa chọn danh mục đầu tư trực tuyến, được đánh giá qua chỉ số 1 n log S n (BCRP −) 1 n log S n (alg), trở nên phổ biến khi độ tiếc trung bình của nó giảm dần về 0 khi n tiến đến vô cùng Trong thực tế, một thuật toán được coi là hiệu suất tốt nếu kết quả của nó gần gũi với kết quả của thuật toán BCRP.
Nguyên tắc đối sánh mẫu
Mục đích
Thuật toán đối sánh mẫu pattern matching nhằm dự đoán nhiều tình huống mà tương đồng với véctơ giá tương đối tiếp theo X i , i ∈ C với phân phối xác suất đều 1
C trong bài viết này đại diện cho ký hiệu tập tương đồng, trong khi C cũng biểu thị số lượng phần tử của tập Thuật toán được đề cập nhằm tối đa hóa lợi nhuận kỳ vọng theo dạng log thông qua tập tương đồng Thông thường, các thuật toán đối sánh mẫu bao gồm hai giai đoạn.
2 Tối ưu hóa danh mục đầu tư.
Mục tiêu của chúng ta là lựa chọn một danh mục đầu tư tại thời điểm t + 1 Đầu tiên, quá trình chọn mẫu sẽ xác định tập C t, bao gồm các chỉ số quá khứ tương tự Giá tương đối tương ứng sẽ được sử dụng để dự đoán cho ngày tiếp theo Mỗi véctơ giá tương đối X i, với i thuộc C t, sẽ được gán xác suất P i = 1.
Bước tối ưu danh mục đầu tư nhằm xác định danh mục tối ưu dựa trên hàm lợi nhuận U(b) tại thời điểm t, với b là véctơ danh mục đầu tư Tại thời điểm bắt đầu, một khoản đầu tư được xác định bởi véctơ b = {b1, b2, , bn} và ∆m là tập hợp các b thỏa mãn điều kiện b ≥ 0 và bT1 = 1 Nếu tập C t rỗng, danh mục đầu tư sẽ được phân bổ đều cho tất cả các tài sản Hàm lợi nhuận cụ thể sẽ được tính toán dựa trên các yếu tố liên quan đến danh mục đầu tư.
U b C( ; t) Xi C ∈ t log b T xi và thường được gọi chung là lợi tức.
Kỹ thuật chọn mẫu
Ý tưởng chính của việc chọn mẫu là xác định các mẫu tương đồng từ lịch sử giá bằng cách so sánh các khoảng thời gian thị trường ngay trước đó Các phương pháp khác nhau có thể được áp dụng để thực hiện quá trình này.
• Chọn mẫu phi tham số dựa trên histogram;
• Chọn mẫu phi tham số dựa trên nhân;
• Chọn mẫu phi tham số dựa trên hàng xóm gần nhất v.v .
Trong quá trình xác định vị trí của các véctơ giá tương đối tương đồng với véctơ tiếp theo x t+1, ta lặp qua tất cả các véctơ giá tương đối x i từ i w= + 1 đến t Một véctơ x i được coi là tương đồng nếu cửa sổ thị trường trước đó x i−1 tương đồng với cửa sổ thị trường gần nhất x t Tập C t bao gồm các chỉ số của các giá tương đối tương đồng, trong đó cửa sổ thị trường (Time Window) được biểu diễn dưới dạng một ma trận kích thước w m×, và sự tương quan thường được tính toán dựa trên các véctơ có kích thước w m×.
Kỹ thuật tối ưu danh mục đầu tư
Bước tiếp theo trong việc áp dụng pattern matching là xây dựng một danh mục đầu tư tối ưu cho tập mẫu C t Hai nguyên lý chính được sử dụng là lý thuyết tăng trưởng vốn của Kelly và nguyên tắc cân bằng lợi nhuận rủi ro của Markowitz.
Györfi và các cộng sự đã phát triển hàm Log-optimal để tính tổng lợi nhuận, dựa trên sự tương đồng của giá tương đối và lý thuyết tăng trưởng vốn Hàm này tối đa hóa lợi nhuận dưới dạng logarit cho một tập mẫu C t, theo công thức cụ thể.
Pi log b xã i (1.1) ở đây, P i biểu thị xác suất ứng với x i , i ∈ C t Gy¨orfi (2006) đã giả sử nó tuân theo phân phối xác suất đều, do đó (1.1) sẽ tương đương với
UL(b, Ct) Xi C ∈ t log b xã i , (1.2)
Cực đại hóa hàm trên giúp tạo ra danh mục BCRP qua các giá tương đối tương đồng Györfi đã giới thiệu hàm Semi-log-optimal để tính toán lợi nhuận của danh mục đầu tư, tương tự như hàm logarithm của ông với mục đích giảm phức tạp trong tính toán Vajda (2006) đã chứng minh các lý thuyết tổng quát về dạng hàm này Công thức tính toán lợi nhuận sử dụng hàm tựa logarithm.
Pif b x( ã i ) (1.3) trong đó, f ( ) là khai triển Taylor bậc hai của hàm log z tại z = 1 f z( ) = − −z 1 1
Gy¨orfi [10] đã đưa phân phối xác suất đều cho P i , do đó (1.3) tương đương với
Ottucsák và Vajda đã phát triển một hàm tính lợi nhuận cho danh mục đầu tư, gọi là Markowitztype, mở rộng chiến lược tựa logarithm Ý tưởng chính là tìm kiếm sự cân bằng giữa giá trị trung bình và phương sai của danh mục đầu tư, tương tự như lý thuyết đánh đổi lợi nhuận rủi ro của Markowitz Dạng hàm tính lợi nhuận này mang lại những hiểu biết mới trong việc quản lý rủi ro và tối ưu hóa lợi nhuận.
Tham số (1.5) thể hiện sự bù trừ trong các phép biến đổi số đơn giản Hàm tựa logarithm tính toán lợi nhuận được xem là một trường hợp đặc biệt của dạng hàm (1.5) Để xác định nghiệm với chi phí giao dịch, Györfi và Vajda đã thực hiện nghiên cứu đáng chú ý.
[11] đã đề xuất một dạng hàm tính lợi nhuận có tên là GV-type, bằng việc kết hợp cả chi phí giao dịch vào hàm tính lợi nhuận
U T (b, C t ) = E {logb xã + log (w b t , b, x t )} thể hiện giá trị kỳ vọng của hàm logarit, trong đó w ( ) ∈ (0,1) là chi phí giao dịch, phản ánh tỷ trọng còn lại sau khi trừ đi chi phí giao dịch Dưới giả thiết phân phối xác suất đều, công thức (1.6) sẽ tương đương với
Trong bất kỳ dạng hàm nào, khi tập tương đồng rỗng, việc lựa chọn danh mục đầu tư tối ưu có thể thực hiện bằng cách phân bổ tỷ trọng đều cho tất cả các tài sản hoặc sử dụng danh mục đầu tư đã có Ngược lại, nếu tập tương đồng không rỗng, danh mục đầu tư tối ưu sẽ được xác định dựa trên giá tương đối và xác suất của các tài sản đó.
Thuật toán lựa chọn danh mục đầu tư trực tuyến 19
Bài toán lựa chọn danh mục đầu tư
Các tham số và biến số của lựa chọn danh mục đầu tư trực tuyến được trình bày dưới đây.
Trong đầu tư, số lượng tài sản (cổ phiếu) trong danh mục đầu tư được ký hiệu là m, với điều kiện m ≥ 2 Số lượng và loại cổ phiếu trong danh mục được xác định ngay từ đầu kỳ đầu tư và giữ nguyên cho đến khi kết thúc kỳ đầu tư.
• n ≥ 1: Chu kỳ đầu tư Ví dụ, nếu quyết định được đưa ra trong khoảng thời gian hàng ngày, thời gian đầu tư sẽ bằng ngày.n
Trong chu kỳ thứ t (t = 1, 2, , n), giá đóng cửa của các tài sản được thể hiện qua một véctơ p_t = (p_{t,1}, p_{t,2}, , p_{t,m}) thuộc R^{m+}, trong đó mỗi phần tử p_{t,i} (i = 1, 2, , m) đại diện cho giá đóng cửa của tài sản thứ i.
Sự thay đổi giá của các tài sản được thể hiện qua véctơ giá tương đối \( x_t = (x_{t,1}, x_{t,2}, \ldots, x_{t,m}) \in \mathbb{R}^{m+} \), trong đó mỗi thành phần \( x_{t,i} \) là tỷ số giữa giá đóng cửa hiện tại và giá đóng cửa ngay trước đó, được tính bằng công thức \( x_{t,i} = \frac{p_{t,i}}{p_{t,i-1}} \).
• x n 1 : x n 1 = (x 1 , x 2 , , xn) là dãy véctơ giá tương đối trong chu kỳ.n
Vec-tơ bt = (bt,1, , bt,m) thể hiện tỷ lệ đầu tư vào m cổ phiếu tại thời điểm đầu kỳ thứ t Trong trường hợp không cho phép bán khống, tất cả các thành phần trong vec-tơ này sẽ dương, và phương trình sẽ được điều chỉnh tương ứng.
• b n 1 : b n 1 = b 1 , b 2 , , bn là một chiến lược ra quyết định trong n giai đoạn, là đâu ra của thuật toán lựa chọn danh mục đầu tư trực tuyến.
• St: giá trị nhận được cuối kỳ thứ t th ,S t = btxt P m i=1 bt,ixt,i
Sn(b n 1, x n 1) thể hiện tổng lợi tức đầu tư tại thời điểm kết thúc giai đoạn đầu tư, trong đó b n 1 được sử dụng như một khoảng thời gian chiến lược và các vect-tơ giá tương đối được biểu thị bằng x n 1.
• wn(b n 1 ): cho biết cấp độ tăng trưởng theo cấp số nhân của chiến lược b n 1 trong đó w n (b n 1 ) = n 1 log Sn (b n 1 ) = 1 n
Giả sử một nhà đầu tư muốn đầu tư vốn vào m tài sản (cổ phiếu) trong n chu kỳ đầu tư Một khoản đầu tư trong chu kỳ thứ t được xác định bởi véctơ danh mục b t = (b t,1 , b t,2 , , b t,m ), trong đó b t,i là phần vốn đầu tư vào tài sản thứ i tại thời điểm bắt đầu chu kỳ t Danh mục đầu tư thường chỉ sử dụng nguồn vốn ban đầu mà không cho phép sử dụng đòn bẩy tài chính hay bán khống, do đó, mỗi thành phần trong danh mục phải không âm và tổng cộng lại bằng 1, tức là 1 bt ∈∆ m := {b t | b t ≥ 0}.
Quá trình đầu tư được thể hiện qua chiến lược danh mục, trong đó tỷ lệ đầu tư cho mỗi tài sản là b1 = 1/m, b2 = 1/m, , bn = 1/m Danh mục bt được xác định dựa trên các hành vi thị trường trong quá khứ, và chiến lược cho n chu kỳ được ký hiệu là bn = (b1, b2, , bn), là kết quả của chiến lược OLPS Trong mỗi chu kỳ, danh mục bt tạo ra lợi nhuận s t Ví dụ, nhà đầu tư A phân bổ 50% vốn vào mã X (5.000 USD), 30% vào mã Y (3.000 USD) và 20% vào mã Z (2.000 USD) Nếu mã X tăng 2 lần, mã Y giảm còn 0,5 lần và mã Z giữ nguyên, tổng vốn của nhà đầu tư A sẽ tăng lên theo tỷ lệ tương ứng.
Vì ta tái đầu tư và áp dụng giá tương đối, tài sản sẽ gia tăng theo hệ số nhân.
Sau mỗi chu kỳ, chiến lược danh mục b n 1 sẽ tạo ra một tài sản tích lũy S n (x n 1 , b n 1 ) tăng lên so với tài sản ban đầu Sự gia tăng này tương ứng với tổng lợi nhuận Π n t=1 btxt.
S0 là ký hiệu cho lượng tài sản ban đầu, thường được đặt là 1 USD Mục tiêu của người quản lý danh mục là xây dựng một chiến lược đầu tư dựa trên giá tương đối của thị trường để đạt được các mục đích cụ thể Họ tính toán tỷ trọng danh mục đầu tư theo từng chu kỳ, sử dụng các véctơ giá tương đối trong quá khứ để đưa ra danh mục mới cho giá tương đối tiếp theo Sau khi điều chỉnh danh mục thông qua mua bán cổ phiếu, thông tin thị trường sẽ được cập nhật vào cuối ngày giao dịch Danh mục sẽ được đánh giá dựa trên lợi nhuận đạt được, và quá trình này tiếp tục lặp lại cho đến chu kỳ cuối, khi chiến lược danh mục được đánh giá dựa trên lượng tài sản tích lũy.
Thuật toán lựa chọn danh mục đầu tư
Trong bài viết này, chúng tôi sẽ trình bày chi tiết thuật toán lựa chọn danh mục đầu tư trực tuyến Thuật toán bắt đầu bằng việc hình thành danh mục đầu tư và xác định trọng số cho các cổ phiếu vào đầu mỗi kỳ giao dịch Doanh thu tổng cộng vào cuối kỳ đầu tư được coi là sản lượng chính Thuật toán tuân theo nguyên tắc đối sánh mẫu và bao gồm hai bước chính: chọn mẫu và tối ưu hóa danh mục đầu tư Trong bước chọn mẫu, chúng tôi áp dụng các phương pháp phân cụm như k-mean, k-medoids, phổ và thứ bậc Bước đầu tiên xác định khoảng thời gian tối ưu dựa trên kết quả của các giai đoạn trước, đồng thời thực hiện phân cụm nhiều lần để tăng độ chính xác Cuối cùng, trong bước tối ưu hóa danh mục đầu tư, chúng tôi cải tiến chức năng tối ưu hóa nhật ký bằng cách xem xét chi phí giao dịch, nhằm nâng cao tính thực tiễn của thuật toán.
2.2.1 Một số giả thiết Để xây dựng thuật toán, ta cần các giả thiết sau đây.
(A1) Tính thanh khoản của thị trường
Giả thiết đầu tiên về thị trường là tính thanh khoản, nghĩa là cổ phiếu có thể được bán hoặc thanh toán ngay lập tức theo mức giá do thuật toán đề xuất, tức là giá niêm yết, tại bất kỳ thời điểm nào.
Thanh khoản thị trường thấp thường dẫn đến chênh lệch lớn giữa giá mua và giá bán, gây ra sự khác biệt giữa giá lệnh và giá thực hiện Cổ phiếu thường được giao dịch theo nhiều lots, là đơn vị giao dịch tiêu chuẩn với số lượng cổ phiếu cố định Do đó, số lượng cổ phiếu không thể phân chia tùy ý Nhiều nghiên cứu đã chỉ ra rằng việc chọn cổ phiếu có vốn hóa thị trường lớn giúp giảm thiểu ảnh hưởng của tính thanh khoản, vì chúng thường có chênh lệch giá thầu - giá bán nhỏ và tính thanh khoản cao.
Bất kỳ chiến lược lựa chọn danh mục nào sẽ không ảnh hưởng đến thị trường hoặc giá của các chứng khoán.
Giả thuyết thứ hai cho rằng chiến lược danh mục đầu tư không ảnh hưởng đến thị trường chứng khoán, tuy nhiên, nếu tổng tài sản trong danh mục đầu tư tăng nhanh do các thuật toán giao dịch, điều này có thể tác động đáng kể đến thị trường Để giảm thiểu ảnh hưởng này, một giải pháp đơn giản là giảm quy mô danh mục đầu tư bằng cách sử dụng nhiều quỹ khác nhau Thêm vào đó, sự phát triển của các thuật toán giao dịch sell-side giúp phân chia các lệnh lớn thành nhiều lệnh nhỏ hơn và lên lịch cho chúng, từ đó giảm thiểu tác động thị trường và giảm đáng kể ảnh hưởng của các thuật toán giao dịch.
Giá đóng cửa là yếu tố quan trọng trong tất cả các phép tính giá cổ phiếu, được giả định là mức giá mà mỗi cổ phiếu sẽ được mua hoặc bán Hơn nữa, trong quá trình đào tạo dữ liệu, giá đóng cửa của các cổ phiếu trong danh mục đầu tư được xem là dữ liệu lịch sử.
Chi phí giao dịch mà nhà đầu tư phải trả phụ thuộc vào nhiều yếu tố như khối lượng giao dịch, giá cổ phiếu và ngành liên quan Để đơn giản hóa, chúng ta có thể coi chi phí giao dịch là một tỷ lệ không đổi so với khối lượng giao dịch, mặc dù thực tế có nhiều tính toán phức tạp để xác định chi phí này trên thị trường.
Nhiều nghiên cứu trên thế giới đã chỉ ra rằng mô hình đề xuất có khả năng chịu đựng chi phí giao dịch vừa phải trong hầu hết các trường hợp Với sự phát triển của các mạng điện tử và cơ sở giao dịch đa phương, các nhà môi giới trực tuyến hiện đang áp dụng tỷ lệ chi phí giao dịch rất thấp, đặc biệt là cho các nhà đầu tư tổ chức lớn Họ thường sử dụng mức phí cố định dựa trên khối lượng giao dịch, giúp các nhà quản lý danh mục đầu tư giảm thiểu chi phí giao dịch hiệu quả hơn.
Mối tương quan đã được áp dụng làm tiêu chí khoảng cách trong tất cả các phương pháp phân cụm Nghiên cứu của Li, Hoi và Gopalkrishnan [20] chỉ ra rằng mối tương quan là tiêu chí khoảng cách hiệu quả hơn so với các thước đo khoảng cách khác trong các thuật toán lựa chọn danh mục đầu tư trực tuyến.
2.2.2 Mô tả thuật toán Đầu vào:
• Ma trận dữ liệu giá lịch sử cho tất cả các cổ phiếu hình thành danh mục đầu tư. Đầu ra:
• Kết quả cuối cùng của thuật toán vào cuối ngày cuối cùng của thời gian đầu tư;
• Các quyết định được thực hiện bằng thuật toán về trọng số Danh mục đầu tư trong mỗi giai đoạn = Stage;
• Thời gian chạy của thuật toán;
• Sai số phần trăm tuyệt đối trung bình (MAPE) như một phép đo độ chính xác của dự đoán;
Bước 1 Nhập ma trận P vào thuật toán.
Bước 2 Xây dựng ma trận giá tương đối.
Bước 3 Xây dựng ma trận trainning và ma trận test.
Vòng lặp số 1: Các bước từ 4 đến 12 được thực hiện cho tất cả các ngày thử nghiệm; nghĩa là, k = 1 : M (M là số ngày thử nghiệm).
Vòng lặp số 2: các bước từ 4 đến 9 được thực hiện cho các timewindow từ
Bước 4 Xây dựng ma trận con dựa trên T W.
Bước 5 Phép biến đổi ma trận thành véctơ.
Bước 6 Phân cụm các ma trận đã biến đổi.
Bước 7 Xác định các mẫu tương tự với mẫu gần đây.
Bước 8 Tối ưu hóa danh mục đầu tư.
Bước 9 là thu thập các danh mục đầu tư tối ưu tiềm năng, đồng thời xác định lợi nhuận trong kỳ và tổng lợi nhuận liên quan đến tập dữ liệu thử nghiệm.
Kết thúc của Vòng lặp số 2.
Bước 10 Đưa ra quyết định về danh mục đầu tư tối ưu của giai đoạn hiện tại.
Bước 11 là tính toán lợi nhuận thực tế trong kỳ và tổng lợi nhuận thực tế vào cuối kỳ hiện tại, liên quan đến danh mục đầu tư tối ưu đã được chọn.
Bước 12 Chuyển dữ liệu giá trong ngày từ tập dữ liệu kiểm tra sang tập dữ liệu đào tạo.
Kết thúc của Vòng số 1.
Bước 13 Tính toán cuối cùng.
Kết quả thực nghiệm và đánh giá hiệu suất 36
Mô tả dữ liệu
Để đánh giá hiệu suất của các thuật toán đề xuất, chúng tôi đã lựa chọn bộ dữ liệu với các đặc trưng đa dạng, bao gồm phân khúc thị trường, cổ phiếu và kích thước khác nhau, nhằm phân tích ảnh hưởng của những yếu tố này đến hiệu suất của các thuật toán.
Dữ liệu đầu vào cho thuật toán trong luận văn này bao gồm giá tương đối theo ngày của các mã chứng khoán bất động sản tại Việt Nam từ 1/1/2022 đến 31/12/2022, được thu thập từ Techcom Securities Tập dữ liệu được chia thành hai phần: Tập dữ liệu 1 gồm 34 mã cổ phiếu ngành bất động sản, trong khi Tập dữ liệu 2 bao gồm mã chứng khoán ngành ngân hàng Tập dữ liệu 1 chứa thông tin giá trong 502 ngày làm việc, với ma trận giá có 34 hàng đại diện cho cổ phiếu và 502 cột biểu thị cho từng ngày.
Trong quá trình phát triển mô hình, 75% thời gian, tương đương 376 ngày, đã được sử dụng để huấn luyện, trong khi 126 ngày còn lại được dành cho việc kiểm thử mô hình Tương tự, Tập dữ liệu 2 bao gồm 24 mã chứng khoán tích cực nhất trong ngành Ngân hàng tại Việt Nam, với ma trận giá tương đối có 24 hàng và 502 cột tương ứng.
Mã nguồn chương trình lấy dữ liệu từ website Techcom Securities được mô tả chi tiết ở phụ lục luận văn.
STT Mã Chứng khoản Tên mã Chứng khoán
8 ITA Công ty cổ phần đầu tư và phát triển hạ tầng IDICO
9 HDC Hoàng Huy Investment Services Group
11 TCH Công ty Cổ phần Tập đoàn Tiến Phước
12 HBC Công ty Cổ phần Xây dựng Hòa Bình
13 DXV Đất Xanh Miền Trung
14 NTL Công ty Cổ phần Nam Tân Uyên
15 SZC Tập đoàn Sài Gòn – Miền Trung
17 VPI Công ty Cổ phần Bất động sản Vinpearlland
18 LDG Công ty Cổ phần Đầu tư và Phát triển Lộc Điền
19 CEO Công ty Cổ phần Tập đoàn Đại Dương
20 ASM Công ty Cổ phần Tập đoàn Điện lực Hồ Chí Minh
21 DXS Công ty Cổ phần Tập đoàn Đất Xanh Sài Gòn
22 TDC Tân Đô Investment Development
23 NDN Công ty Cổ phần Nam Long Investment
24 SZL Công ty Cổ phần Đầu tư Sài Gòn VRG
25 APG Công ty Cổ phần Chứng khoán An Pha
26 TTF Tập đoàn Thành Thành Công
28 ITA Công ty cổ phần đầu tư và phát triển hạ tầng IDICO
29 HQC Công ty Cổ phần Đầu tư và Phát triển
30 LPB Công ty Cổ phần Lộc Phát
31 HAR Công ty Cổ phần Đầu tư Hạ tầng Kỹ thuật Hà Nội
32 PDR Phát Đạt Real Estate Development Corporation
33 VCR Công ty Cổ phần CKBĐS Vingroup
34 HLG Công ty Cổ phần Xây dựng Hòa Long
Bảng 3.1: Bảng danh mục mã chứng khoán Bất động sản
STT Mã Chứng khoản Tên mã Chứng khoán
4 VIB Ngân hàng thương mại cổ phần VP bank
5 MBB Ngân hàng quân đội MB bank
6 TCB Ngân hàng kỹ thương Techcombank
11 VIB Ngân hàng quốc tế VIB
13 MSB TMCP Hàng hải Việt Nam
15 LPB Ngân hàng Bưu điện Việt Nam LienVietPostbank
23 SHB Ngân hàng TMCP Sài Gòn
24 SGB TMCP Sài Gòn Công thương
Bảng 3.2: Bảng danh mục mã chứng khoán ngành Ngân hàng
Xử lý dữ liệu
Dữ liệu chất lượng cao là yếu tố then chốt trong việc phát triển các mô hình dự báo và phân cụm chính xác Để đạt được bộ dữ liệu tối ưu cho từng nhiệm vụ, cần áp dụng các phương pháp xử lý dữ liệu phù hợp.
Bộ dữ liệu được chuẩn hóa qua hai giai đoạn chính: chuẩn hóa các giá trị số và các thuộc tính Tác giả cũng thực hiện việc xử lý dữ liệu thiếu, đồng thời thêm và loại bỏ các thuộc tính nhằm tạo ra bộ dữ liệu phù hợp.
Chuẩn hóa dữ liệu số là bước quan trọng trong việc xử lý bộ dữ liệu, đặc biệt khi hầu hết các thuộc tính đều là số Quá trình này bao gồm việc loại bỏ các ký tự đặc biệt, dấu ngăn cách và khoảng trắng thừa được thu thập trong dữ liệu.
- Chuẩn hóa các thuộc tính: Các thuộc tính của giá chứng khoán như: giá mua, giá bán, giá trần, giá sàn, Tỉ lệ P/E (Price-to-Earnings Ratio),
Bộ dữ liệu có một số ít giá trị bị thiếu, và tác giả đã xử lý vấn đề này bằng cách thay thế các giá trị thiếu bằng cụm từ “Đang cập nhật”.
Sau khi xử lý dữ liệu, chúng tôi đã thu được file Data.csv chứa 34 mã cổ phiếu với 502 dòng dữ liệu tương ứng với 502 ngày làm việc trong năm 2021 và 2022 File này bao gồm 4 cột thông tin: giá bán, giá mua, giá trần và giá sàn Bên cạnh đó, tập dữ liệu thứ hai gồm 24 mã cổ phiếu thuộc ngành ngân hàng, cũng với 502 dòng dữ liệu tương ứng.
Thực hiện chương trình
Bài viết này sẽ trình bày các bước thực hiện theo sơ đồ khối trong Mục 2.3.2 Chương trình được phát triển bằng ngôn ngữ Python và chạy trên nền tảng PyCharm, sử dụng cấu hình máy tính Dell I5-5005U với CPU @ 2.0GHz, RAM 8GB và hệ điều hành Windows.
10 Pro Thực hiện chạy lần lượt các bước sau:
• Chạy yêu cầu trên Python với câu lệnh:
1 pip in sta ll -r r eq ui re me nt s txt
• Thực hiện collecting data khi download data từ trang Vietnam stock market với cấu hình tham số.
Data was collected from January 1, 2022, to January 31, 2022, and saved in the file named "data.csv." For a list of stock codes, please refer to the "stock_codes.yaml" file.
4 da tas et = VN St oc kD at as et (" s to ck _co de s yaml ", s ta rt _da te =" 2022 -01 - 01" , e nd_ da te
5 df = d ata set g et _da ta ()
6 lo gge r in fo ( f" D ata s hap e : { df sha pe }")
8 # Ex por t da ta to c sv fil e
9 np sa vet xt (" d ata c sv ", df , d el im ite r =" , ")
10 lo gge r in fo (" Da ta sa ved to da ta csv ")
1 py tho n da ta py
1 # Loa d data fro m csv fi le
2 data = np lo adt xt (" d ata c sv ", d el imi te r =" ,")
4 po = P or t fo li oO pt im iz at i on ( m ax_ it er 0 0 , cl us t er _a lg or it hm =" KM NLO G ")
5 roi , B , mape = po ex ecu te ( dat a )
6 lo gge r in fo (" To tal re tur n at t he end of the p eri od : {}" fo rma t ( roi [ - 1]) )
7 lo gge r in fo (" MA PE : { }" f orm at ( np m ean ( mape )) )
8 lo gge r in fo (" Do ne ")
••Thực hiện chương trình với các thuật toán: KMNLOG, KMDLOG, SP-CLOG, HRCLOG,
Tiêu chí đánh giá
- Tổng lợi nhuận tích lũy S n
- Năng suất phần trăm (APY).
- Độ lệch chuẩn lợi nhuận.
- Thời gian chạy thuật toán trong 1 ngày.
- Hệ số trung bình chuẩn hóa.
The Mean Absolute Percent Error (MAPE) is a key metric used to evaluate the performance of clustering algorithms In this analysis, we assess four clustering methods: KMeans, KMedoids, Spectral Clustering, and Hierarchical Clustering The data processing is initiated using the KMeans algorithm, which serves as the first step in our evaluation of these clustering techniques.
• Phân cụm theo KMeans, KMedoids, Spectral Clustering và Hierarchical Clustering.
1 cl ass KM ean s ( o bje ct ) :
2 def _ _i nit ( self , n_ cl ust er s =8 , m ax _it er 00 , r an do m_ st at e B) :
3 se lf n _c lu ste rs = n _cl us te rs
4 se lf m ax _it er = ma x_i te r
5 se lf r an do m_ st at e = r an do m_ sta te
8 def _i ni t_ ce nt er s ( s elf ) :
9 np ra ndo m se ed ( s elf ra nd om _s ta te )
10 se lf c ent er s = sel f X [ np r and om cho ice ( se lf X sha pe [0] , se lf n _clu ste rs , re pla ce = Fa lse ) ]
12 def _a ss ig n_ cl us te rs ( s elf ) :
13 se lf l abe ls = np a rgm in ( np l ina lg nor m ( sel f X[: , np ne wa xis ] - s elf c en ters , axi s =2 ) , ax is =1)
15 def _u pd at e_ ce nt er s ( self ):
16 for i in ra nge ( sel f n _c lus te rs ):
17 sel f c ent ers [ i] = np m ean ( self X[ s elf lab els == i ], axi s =0 )
20 r etu rn np a rgm in ( np l ina lg nor m (X [: , np ne wax is ] - se lf ce nters , axi s =2 ) , ax is
23 r etu rn np me an ( np l ina lg n orm ( X [: , np n ewa xi s ] - s elf c enters , axi s = 2) , ax is =1)
25 def ge t_ s im il ar _s ub _m a tr ix ( self , re ce nt _ su b_ ma tr ix = None , X = N one ) :
Calculate the percentage of two vectors within the same cluster across all iterations This process should yield an NxN matrix as the final result.
28 wi th eac h cel l i , j is th e pe rc en tag e of v ect ors in t he sam e cl ust er ove r all it er at ion s
33 if r ec en t_ su b_ ma tr ix is no t None :
34 sel f X = np vs tac k ([ X , re ce nt _s ub _m at ri x ])
36 se lf _ in it _c en te rs ()
38 s im il ar _r ate = np ze ros (( s elf X sh ape [0 ]) )
39 for i in ra nge ( sel f m ax_ it er ) :
40 sel f _ as si gn _c lu st er s ()
41 sel f _ up da te _c en te rs ()
42 for i in ran ge ( X sha pe [0 ]) :
43 if sel f la bel s [ i] == s elf la bel s [ -1]:
44 si mi la r_ ra te [i ] += 1
46 r etu rn self , s im il ar _ra te / sel f m ax_ it er
1 cl ass KM ed oid s ( ob jec t ):
2 def _ _i nit ( self , n_ cl ust er s =8 , m ax _it er 00 , r an do m_ st at e B) :
3 se lf n _c lu ste rs = n _cl us te rs
4 se lf m ax _it er = ma x_i te r
5 se lf r an do m_ st at e = r an do m_ sta te
8 def _i ni t_ ce nt er s ( s elf ) :
9 np ra ndo m se ed ( s elf ra nd om _s ta te )
10 se lf c ent er s = sel f X [ np r and om cho ice ( se lf X sha pe [0] , se lf n _clu ste rs , re pla ce = Fa lse ) ]
12 def _a ss ig n_ cl us te rs ( s elf ) :
13 se lf l abe ls = np a rgm in ( np l ina lg nor m ( sel f X[: , np ne wa xis ] - s elf c en ters , axi s =2 ) , ax is =1)
15 def _u pd at e_ ce nt er s ( self ):
16 for i in ra nge ( sel f n _c lus te rs ):
19 se lf c en ter s [ i] = np mean ( se lf X[ m ask ] , a xis =0)
22 r etu rn np a rgm in ( np l ina lg nor m (X [: , np ne wax is ] - se lf ce nters , axi s =2 ) , ax is
25 r etu rn np me an ( np l ina lg n orm ( X [: , np n ewa xi s ] - s elf c enters , axi s = 2) , ax is =1)
27 def ge t_ s im il ar _s ub _m a tr ix ( self , re cen t_ su b_m at rix , X ):
Calculate the percentage of two vectors within the same cluster across all iterations This process should yield an NxN matrix as the final result.
30 wi th eac h cel l i , j is th e pe rc en tag e of v ect ors in t he sam e cl ust er ove r all it er at ion s
34 se lf X = np vst ack ([ X , re ce nt _s ub _m at r ix ])
35 se lf _ in it _c en te rs ()
37 s im il ar _r ate = np ze ros (( s elf X sh ape [0 ]) )
38 for i in ra nge ( sel f m ax_ it er ) :
39 sel f _ as si gn _c lu st er s ()
40 sel f _ up da te _c en te rs ()
41 for i in ran ge ( X sha pe [0 ]) :
42 if sel f la bel s [ i] == s elf la bel s [ -1]:
43 si mi la r_ ra te [i ] += 1
45 r etu rn self , s im il ar _ra te / sel f m ax_ it er
• Phân cụm theo Spectral Clustering
1 cl ass S pe ct ra lC lu st er in g ( ob jec t ) :
2 def _ _i nit ( self , n_ cl ust er s =8 , a ff ini ty =’ ne ar est _n ei ghb or s ’ , n _n ei gh bor s , ra nd om _s ta te B , m ax _it er 00 ) :
3 se lf n _c lu ste rs = n _cl us te rs
4 se lf a ff ini ty = af fin it y
5 se lf n _n ei gh bo rs = n_ ne ig hbo rs
6 se lf r an do m_ st at e = r an do m_ sta te
7 se lf m ax _it er = ma x_i te r
11 def ge t_ s im il ar _s ub _m a tr ix ( self , re cen t_ su b_m at rix , X ):
12 se lf X = np vst ack ([ X , re ce nt _s ub _m at r ix ])
13 se lf _c on st r uc t_ af fi n it y_ ma tr ix ()
14 se lf _n or ma l iz e_ af fi n it y_ ma tr ix ()
15 se lf _c om pu t e_ la pl ac ia n _m at ri x ()
16 se lf _c om pu te _ ei ge n_ ve ct or s ()
17 r etu rn se lf _r un _k mea ns ()
19 def _c o ns tr uc t_ af f in it y_ ma t ri x ( s elf ) :
20 if s elf af fi nit y == ’ n ea re st_ ne igh bo rs ’:
21 fro m sk lea rn n eig hb or s i mpo rt kn ei gh bo rs _g ra ph
22 A = k ne ig hb or s_ gr ap h ( sel f X , s elf n_ neig hbo rs , mod e =’ co nne cti vit y ’ , in cl ud e_ se lf = Tru e )
24 el if sel f a ffi ni ty == ’rbf ’:
25 fro m sk lea rn m etr ics p ai rwi se im por t r bf _ke rn el
26 sel f A = r bf_ ke rn el ( sel f X)
28 ra ise Va lu eE rro r ( ’ I nva li d a ffi ni ty t ype S upp or te d ty pes a re : ne ar es t_ ne i gh bo rs and rbf ’)
30 def _n o rm al iz e_ af f in it y_ ma t ri x ( s elf ) :
31 D = np d iag ( np sum ( se lf A , axi s =1) )
32 D_ inv = np l in alg inv ( D)
33 se lf L = np mat mul ( D_inv , s elf A )
35 def _c o mp ut e_ la pl a ci an _m at ri x ( sel f ):
36 se lf L = np d iag ( np su m ( sel f L , axis =1 ) ) - sel f L
38 def _c om p ut e_ ei ge n_ ve c to rs ( se lf ) :
39 ei gen val ues , ei ge nv ec tor s = np l ina lg eigh ( se lf L)
40 idx = np a rgs or t ( e ig en va lue s ) [: sel f n _c lu ste rs ]
41 se lf e ig en ve ct or s = e ig en ve cto rs [: , idx ]
43 def _r un _k mea ns ( se lf ) :
44 k mea ns = K Mea ns ( n_ cl us ter s = self n_ clu ster s , ra nd om _s ta te = sel f ra ndo m_s tat e , ma x_i te r = s elf ma x_i te r )
45 _km eans , _si ms = k mea ns g et _s im il ar _s u b_ ma tr ix ( X= s elf e ige nv ec to rs )
• Phân cụm theo Hierarchical Clustering
1 cl ass H ie ra rc h ic al Cl us te ri ng :
2 def _ _i nit ( self , n_ cl ust er s =2 , l ink ag e = ’ ward ’) :
3 se lf n _c lu ste rs = n _cl us te rs
4 se lf l ink ag e = li nk age
5 se lf l abe ls _ = Non e
6 se lf d is ta nce s_ = Non e
9 # Ca lc ul ate the di st anc es b etw een all p air s of sa mpl es
11 se lf d is ta nce s_ = np zer os (( n _sam ples , n_ sa mpl es ))
12 for i in ra nge ( n _sa mp les ) :
13 f or j in r ange (i + 1 , n_ sam pl es ):
14 se lf di sta nc es _ [i , j ] = np li nal g n orm ( X[ i ] - X [j ])
15 se lf di sta nc es _ [j , i ] = sel f d is ta nce s_ [i , j ]
17 # In it ia li ze th e cl us ter s wi th one sam ple ea ch
18 c lus te rs = [[ i ] for i in ra nge ( n _sa mp les ) ]
20 # Pe rfo rm a gg lo mer at iv e cl us te rin g
21 wh ile len ( cl ust er s ) > s elf n_ cl us ter s :
22 # F ind the cl os est pai r of cl ust er s
23 m in _di st an ce = np i nf
24 f or i in r ange ( len ( cl us ter s ) ):
25 for j in ra nge (i + 1 , len ( c lus te rs ) ) :
26 di sta nc e = sel f _ di s ta nc e_ be t we en _c lu st e rs ( c lus te rs [ i ], c lus te rs [ j ])
27 if d ist an ce < mi n_ di st an ce :
28 mi n_ di st an ce = di sta nc e
29 cl os es t_ cl us te rs = ( i , j )
31 # M erg e the c los es t pai r of cl ust er s
32 cl us ter s [ c lo se st _c lu st er s [0] ] += cl ust er s [ c l os es t_ cl us te rs [ 1]]
33 d el cl us ter s [ cl os e st _c lu st er s [1] ]
35 # As sig n la bel s to the s amp le s ba sed on the fin al c lu ste rs
36 se lf l abe ls _ = np zer os ( n_ sa mpl es )
37 for i , cl us ter in en um era te ( c lus te rs ) :
44 if s elf di st an ces _ is No ne :
45 ra ise Va lu eE rro r ( ’ The mod el has not be en t rai ned yet ’)
46 l abe ls = np ze ros (X s hape [0])
47 for i in ra nge ( X sh ape [0 ]) :
48 d ist an ces = [ s elf di st an ces _ [ i , j ] for j in ra nge (X s hap e [ 0]) ]
49 cl us ter = np arg min ( d is ta nce s )
50 la bel s [ i] = self l abe ls _ [ c lus te r ]
53 def _d i st an ce _b et w ee n_ cl us t er s ( self , cl uster 1 , c lu ste r2 ):
54 if s elf li nka ge == ’ ward ’:
56 re tur n np sum ([( np mea n ( se lf d is ta nc es_ [i , c lus te r1 ]) - np m ean ( self di st an ces _ [ i , c lus te r2 ]) ) **2
57 for i in cl us ter 1 + c lu ste r2 ])
58 el if sel f l ink age == ’ sin gl e ’:
60 re tur n np min ([ se lf di st anc es _ [ i, j ] fo r i in c lu ste r1 f or j in c lu ste r2 ])
61 el if sel f l ink age == ’ c omple te ’:
62 # Co mpl et e l ink age
63 re tur n np max ([ se lf di st anc es _ [ i, j ] fo r i in c lu ste r1 f or j in c lu ste r2 ])
65 ra ise Va lu eE rro r ( ’ I nva li d l ink age m eth od ’)
67 def ge t_ par am s ( self , dee p = Tr ue ) :
68 r etu rn { ’ n _cl uste rs ’: s elf n_c lus ters , ’ lin ka ge ’: se lf l ink ag e }
70 def se t_ par am s ( self , ** p ara ms ) :
71 if ’ n_ clu ster s ’ in pa ram s :
72 sel f n _c lus te rs = pa ram s [ ’ n_c lus ters ’]
73 if ’ lin ka ge ’ in pa ram s :
74 sel f l ink age = pa ram s [ ’ linka ge ’]
Tham số của thuật toán
Bộ các tham số sử dụng trong luận văn bao gồm:
• Max intern: 1000 (số lượng vòng lặp)
• Tỷ lệ Train ratio là 0.75
• Chi phí giao dịch cho việc mua bằng 0
• Chi phí giao dịch bán được giả định là 100 VNĐ
• Phân cụm được sao chép trong 10 lần lặp
Hiệu suất của thuật toán
Trong phần này, chúng tôi áp dụng các phương pháp đề xuất cho dữ liệu thực nghiệm tại thị trường Việt Nam, đồng thời so sánh kết quả với nhau và với một số điểm chuẩn cũng như các thuật toán hiện có trong tài liệu, dựa trên các tiêu chí đánh giá đã được xác định.
Lợi tức tích lũy của danh mục đầu tư (S) là chỉ số quan trọng để đánh giá hiệu quả của chiến lược lựa chọn danh mục đầu tư trực tuyến sau khi kết thúc giai đoạn đầu tư.
• Lợi suất phần trăm hàng năm có thể được biểu thị như sauAP Y = √ y
Sn−1, trong đó, y là đường nằm ngang số năm đầu tư
Một cách để đánh giá rủi ro là xem xét độ lệch chuẩn hàng tháng của lợi nhuận từ danh mục đầu tư Để tính toán độ lệch chuẩn hàng năm, trước tiên cần xác định độ lệch chuẩn hàng ngày, sau đó nhân với một hệ số phù hợp.
√ 252 (giả định rằng mỗi năm có 252 ngày làm việc).
• Một phép đo khác là tỷ lệ Sharpe hàng năm tạo ra một ngưỡng cân bằng giữa rủi ro và lợi nhuận.
Tiêu chí này được tính bằng SR = AP Y −Rf, trong đó, , là tỷ suất sinhR lợi phi rủi ro.
Sự phá vỡ vốn là một trong những tiêu chí quan trọng nhất để đánh giá thị trường vốn, tương ứng với giới hạn trên của sự suy giảm từ đỉnh của chức năng tích lũy danh mục đầu tư.
Ngoài ra, mức vốn tối đa có thể được sử dụng để đo lường rủi ro có thể được định nghĩa là:
• Tỷ lệ Calmar là một phép đo khác để cân bằng giữa rủi ro và lợi nhuận:
Tiêu chí đánh giá KMNLOG KMDLOG SPCLOG HRCLOG
Tổng lợi nhuận tích lũy (S n ) 1.4170 1.5555 1.3053 1.5826
Năng suất phần trăm năm (APY) 75.45 % 85.27 % 70.39 % 99.46% Độ lệch chuẩn hàng năm lợi nhuận 0.2895 0.3238 0.3125 0.2955
Tỉ lệ tương đồng Sharpe (SR) 2.6585 3.3256 2.0253 3.9985
Rút tiền tối đa (MDD) 0.1551 0.1523 0.1678 0.1236
Hệ số trung bình chuẩn hóa 9.9996 9.875 9.808 10.223
Thời gian chạy thuật toán của 1 ngày 87.92 s 208.72 s 310.12 s 75.98 s
Bảng 3.3: Kết quả triển khai thuật toán trên Tập dữ liệu 1
3.6.1 Hiệu suất của các thuật toán chạy trên Tập dữ liệu 1
Trong bài viết này, tác giả giới thiệu các thuật toán KMNLOG, KMDLOG, SPCLOG và HRCLOG, trong đó bước chọn mẫu được thực hiện theo phương pháp k-mean, k-medoids và phân nhóm Hàm log-tối ưu được áp dụng cùng với chi phí giao dịch để tối ưu hóa danh mục đầu tư Các thuật toán này được triển khai trên tập dữ liệu 1, bao gồm 34 cổ phiếu hàng đầu trong lĩnh vực Bất động sản tại Việt Nam, trong khoảng thời gian từ ngày 2 tháng 1 năm 2020 đến ngày 29 tháng 12 năm 2021 Bảng tiêu chí đánh giá cho tập dữ liệu 1 được tổng hợp trong bảng sau.
Theo Bảng 3.3, thuật toán HRCLOG mang lại lợi nhuận tích lũy tốt nhất cho danh mục đầu tư (S n) với mức 1 5826, tương đương khoảng 58 26% Trong phép đo APY, HRCLOG cũng dẫn đầu với lợi tức 99 46% trong một năm, cho thấy đây là một mức lợi tức đáng kể Độ lệch tiêu chuẩn hàng năm tối thiểu của lợi nhuận chứng khoán là 0 2895, thuộc về thuật toán KMNLOG, trong khi HRCLOG đứng thứ hai với độ lệch chuẩn hàng năm của lợi nhuận chứng khoán.
Thuật toán HRCLOG đã chứng minh hiệu quả vượt trội về rủi ro và tổng lợi nhuận, với tỷ lệ Sharpe hàng năm cao, cho thấy lợi nhuận tăng thêm so với rủi ro chấp nhận Kết quả tốt nhất cho tiêu chí này thuộc về HRCLOG, cho thấy rằng lợi tức của nó lớn hơn so với rủi ro Bên cạnh đó, chỉ số mức giảm tối đa cũng cho thấy HRCLOG và KMDLOG có giá trị tốt nhất lần lượt là 0.1236, khẳng định thêm khả năng quản lý rủi ro của hai thuật toán này.
Tỷ lệ Calmar đo lường tỷ suất sinh lợi đã điều chỉnh theo rủi ro, với giá trị cao hơn cho thấy hiệu quả mô hình tốt hơn Trong tập dữ liệu mã chứng khoán Bất động sản, nhịp thuật toán HRCLOG và KMNLOG đạt tỷ lệ tốt nhất Mặc dù không có sự khác biệt đáng kể về hiệu suất giữa HRCLOG và KMDLOG, nhưng HRCLOG lại có thời gian chạy trung bình tốt hơn Cuối cùng, độ chính xác của dự đoán được ước tính bằng MAPE, đạt 1 1032% cho thuật toán HRCLOG.
3.6.2 Hiệu suất của các thuật toán chạy trên Tập dữ liệu 2
Trong tập dữ liệu 2, các thuật toán đã được áp dụng cho 24 mã cổ phiếu hàng đầu trong lĩnh vực Ngân hàng Việt Nam, trong khoảng thời gian từ ngày 2 tháng 1 năm 2020 đến ngày 29 tháng 12 năm 2021 Kết quả đánh giá từ các thuật toán đề xuất được thể hiện rõ ràng trong Bảng 3.4.
Theo bảng dữ liệu, thuật toán KMNLOG đạt hiệu suất tốt nhất về tổng lợi nhuận, vượt trội hơn các thuật toán khác về tiêu chí AP Y, độ lệch chuẩn hàng năm của lợi nhuận và SR Ngoài ra, khi xem xét thời gian chạy trung bình, thuật toán HRCLOG cũng cho thấy kết quả khả quan.
Tiêu chí đánh giá KMNLOG KMDLOG SPCLOG HRCLOG
Tổng lợi nhuận tích lũy (S n ) 1.4352 1.1196 1.3332 1.2065
Năng suất phần trăm năm (APY) 105.97 % 88.98 % 79.32 % 82.46% Độ lệch chuẩn hàng năm lợi nhuận 0.4046 0.4442 0.4349 0.4494
Tỉ lệ tương đồng Sharpe (SR) 2.6076 1.2689 2.9825 1.1568
Rút tiền tối đa (MDD) 0.1517 0.1468 0.7856 0.9854
Hệ số trung bình chuẩn hóa 10.2545 9.6895 9.6895 10.3585 Thời gian chạy thuật toán của 1 ngày 85.4 s 213.65 s 736.82 s 73.57 s
Bảng 3.4: Kết quả triển khai thuật toán trên Tập dữ liệu 2 có hiệu suất tốt nhất trong số các thuật toán được đề xuất trong tập dữ liệu này.
Luận văn đạt được mục tiêu đề ra
1 Trình bày một thuật toán lựa chọn danh mục đầu tư trực tuyến dựa trên nguyên tắc đối sánh mẫu mà nó đưa ra quyết định về danh mục đầu tư tối ưu trong từng thời kỳ và cập nhật danh mục đầu tư tối ưu khi bắt đầu của mỗi thời kỳ.
2 Áp dụng thuật toán trình bày vào dữ liệu danh mục đầu tư chứng khoán bất động sản tại Việt Nam.
3 Thực hành nghiêm túc về làm việc sáng tạo, tỉ mỉ, cầu toàn, độc lập tạo ra sản phẩm chất lượng là Luận văn.
Kết quả của luận văn
Luận văn đã tiến hành phân tích chi tiết thuật toán lựa chọn danh mục đầu tư trực tuyến dựa trên nguyên tắc đối sánh mẫu, đồng thời thực hiện thử nghiệm và đánh giá hiệu suất của thuật toán này.
1 Phân tích hai bước cơ bản của thuật toán là chọn mẫu và tối ưu hóa nhằm xác định danh mục đầu tư tối ưu trong từng chu kỳ.
2 Phân tích dữ liệu đầu vào, xử lý dữ liệu, lập trình thuật toán trên cho bộ dữ liệu ngành chứng khoán bất động sản và ngành Ngân hàng tại Việt Nam.
3 Đánh giá ý nghĩa kết quả chương trình và liên hệ ứng dụng tại cơ sở công tác. Định hướng nghiên cứu trong tương lai
Bộ dữ liệu cần được mở rộng bằng cách thu thập thông tin từ các trang web đầu tư danh mục trực tuyến, bao gồm các thuộc tính mới như giá mua và giá bán mà người dùng kỳ vọng, các mã chứng khoán mà nhà đầu tư quan tâm, cũng như các danh mục chứng khoán khác nhau Việc thống nhất dữ liệu giữa người mua và người bán cũng rất quan trọng để tạo ra bộ dữ liệu chính xác và đầy đủ hơn Hơn nữa, cần phát triển một phương pháp mới để khai thác các thuộc tính mô tả và kỳ vọng của nhà đầu tư trong nhiều danh mục đầu tư khác nhau.
Phát triển một thuật toán quản lý rủi ro hiệu quả mà không ảnh hưởng đến lợi nhuận là một thách thức hấp dẫn Việc tích hợp tính thanh khoản vào mô hình sẽ giúp thuật toán trở nên thực tế hơn Đồng thời, cần xem xét chi phí giao dịch một cách thực tế hơn bằng cách giảm bớt các giả định đơn giản hóa hiện có.
- Mô hình Nghiên cứu thêm các thuật toán lựa chọn danh mục đầu tư sau để cải thiện kết quả dự báo tốt hơn.
1 Mua và giữ (Buy-and-Hold)
2 Mua và nắm giữ tốt nhất (Buy-and-Hold best)
3 Danh mục đầu tư tái cân bằng liên tục (Constant Rebalanced Portfolio)
4 Danh mục đầu tư tái cân bằng liên tục tốt nhất (Best Constant Rebalanced Portfolio)
5 Danh mục đầu tư phổ quát (Bìa 1991) (Universal Portfolio (Cover 1991))
6 Gradient hàm mũ (Helmbold et al 1998) (Exponential Gradient)
7 Danh mục đầu tư tái cân bằng liên tục liên tiếp (Gaivoronski và Stella 2000)(Successive Constant Rebalanced Portfolio)
8 Anticor (Borodin, El-Yaniv, và Gogan 2004)
9 Đảo ngược trung bình tích cực thụ động (Li et al 2012) (Passive Aggressive Mean Reversion)
10 Sự thay đổi trung bình theo trọng số của niềm tin (Li et al 2013) (Confi- dence Weighted Mean Reversion)
11 Thời gian biến động (Kirby và Ostdiek 2012) (Volatility Timing)
[1] https://www.tcbs.com.vn/home.
[2] V.H Tiệp, “Machine Learning nâng cao”, Kỹ thuật tính MAPE, (2), pp.3 102-157, 2020.
[3] Abdi, M Najafi, “Online Portfolio Selection Using Spectral Pattern Match- ing”,Financial Engineering and Portfolio Management, (34), pp 175-192,9 2018.
[4] Blum, A Kalai, “Universal portfolios with and without transaction costs”, Machine Learning, 35(3), pp 193-205, 1999.
[5] Brandes Institute (2004) Concentraded Portfolios: “An examination of their characteristics and effectiveness”, (6), pp 213-235, 2004.3
[6] Borodin, A.,Vincent, “Machine Learning and Markets, Can we learn to beat the best stock”,Journal of Artificial Intelligence Research,21, pp 579-594, 2004.
[7] Cover, T M., Ordentlich, “Universal Portfolios with Side Information”,IEEE Transactions on Information Theory, 42(2), pp 348-363, 1991.
[8] Cover, T., Ordentlich Universal portfolios with short sales and margin, IEEE International Symposium on Information Theory - Proceedings, 174,
[9] Gyorfi, L., Lugosi, G., Udina, “Nonparametric kernel-based sequential in- vestment strategies” Mathematical Finance 16(2), pp 337-357, 2006.
[10] Gy¨orfi, L., Urbán, A., Vajda, “Kernel-Based Semi-Log-Optimal Empirical Portfolio Selection Strategies”,International Journal of Theoretical and Ap- plied Finance, 10(03), pp 505-516, 2007.
[11] Gy¨orfi, László, Udina, F., Walk, “Nonparametric nearest neighbor based empirical portfolio selection strategies”, Statistics and Decisions,26(2), pp. 145-157, 2008.
[12] Gy¨orfi, L., Vajda, “Growth Optimal Investment with Transaction Costs”, International Conference on Algorithmic Learning Theory, pp 108-122, 2008.
[13] Henrique, B M., Sobreiro, V A., Kimura, “Literature review”, Machine learning techniques applied to financial market prediction R Expert Systems With Applications, 124, pp 226-251, 2019.
[14] Kelly, “A new interpretation of information rate”, IRE Transactions on Information Theory, (3), pp 185-189, 1956.2
[15] Kimura, “Literature review”, Machine learning techniques applied to finan- cial market prediction R Expert Systems With Applications, 124, pp 226-
[16] Majid Khedmati, Pejman Azin, “An online portfolio selection algorithm using clustering approaches and considering transaction costs”, 159, 30November 2020, 1135462020.
[17] Markowitz, “Portfolio Selection: Efficiency Diversification of Investment version 1.0”, 1952.
[18] Markowitz, “Portfolio Selection: Efficiency Diversification of Investment”, Yale University Press, 1969.
[19] Li, OLPS: “A Toolbox for On-Line Portfolio Selection”, 17, pp 1-5, 2014.
[20] Li, B., Hoi, S C H., Gopalkrishnan, CORN: “Correlation-driven nonpara- metric learning approach for portfolio selection”.ACM Transactions on In- telligent Systems and Technology, (3), pp 1-29, 2011.2
[21] Li, B., Hoi, S C H., Sahoo, D., Liu, “Moving average reversion strategy for on-line portfolio selection”, Artificial Intelligence, 222, pp 104-123, 2019.
[22] Li, B., Hoi, S C H., Sahoo, D., Liu, “Moving average reversion strategy for on-line portfolio selection”, Artificial Intelligence, 222, pp 104-123, 2015.
[23] Li, B., Hoi, S C H., Zhao, P., Gopalkrishnan, “Confidence Weighted Mean Reversion Strategy for Online Portfolio Selection”, ACM Transactions on Knowledge Discovery from Data, (1), pp 1-38, 2013.7
[24] Ottucsák, G., Vajda, “An asymptotic analysis of the mean-variance portfolio selection”, Statistics, Decisions, 25(1/2007), pp 901-923, 2007.
[25] Zhang, Y., Yang, “Online Portfolio Selection Strategy Based on CombiningExperts”, Advice Computational Economics, 50, pp 141-159, 2017.
Mã nguồn lấy dữ liệu từ web Techcom Securities
Thực hiện lấy dữ liệu từ Techcom Securities theo thư viện Vnstock theo source code sau :
3 im por t nu mpy as np
4 from vn st ock im por t *
5 from lo gur u i mpo rt l ogg er
8 cla ss VN St oc kD at as et ( o bje ct ) :
9 def _ _i nit ( self , st oc k_ co de _f il e : str , s ta rt_ da te : str , e nd_ da te : str ) :
10 if not os pat h e xis ts ( st oc k_ co de _f il e ) :
11 rai se Fi le No t Fo un dE rr or (f " F ile { s to ck _c od e_ fi le } not fo und " )
13 wi th op en ( s to ck_ cod e_ fil e , ’ r ’ ) as f :
14 self s to ck _c ode s = y aml sa fe _lo ad (f )
16 se lf c odes = lis t ( sel f s to ck _c ode s keys () )
17 se lf s tart _da te , self e nd_ da te = s tar t_da te , en d_ dat e
19 def g et _da ta ( se lf ) :
21 for c ode in se lf c odes :
22 data = s to ck _h is to ri c al _d at a ( sy mbo l = code , st ar t_d at e = s elf sta rt_ date , en d_d at e = sel f e nd_ da te )
23 lo gge r in fo ( f" Lo ade d dat a for { code } f rom { sel f s ta rt_ da te } to { self e nd_ da te } , dat a sha pe : { d ata sha pe } " )
24 c los e_ pr ic e = dat a [ " Clo se " ] va lue s
25 dt = np v sta ck (( dt , cl os e_ pri ce ) ) if dt is not No ne els e c lo se_ pr ic e
31 d ata set = V NS to ck Da tas et ( " s to ck _co de s yaml " , s tar t_ da te = " 2022 -01 - 01 " , e nd_ da te = "
32 df = dat as et ge t_d at a ()
33 lo gge r i nfo ( f " Dat a sha pe : { df s hap e }" )
35 # Ex por t dat a to cs v file
36 np sa ve txt ( " dat a csv " , df , de lim it er = " , " )
37 lo gge r i nfo ( " Da ta sa ved to da ta csv " )
Mã nguồn chi tiết các bước thuật toán
1 im por t nu mpy as np
3 from tqd m im por t tqd m
4 from lo gur u i mpo rt l ogg er
6 from sc ipy o pti miz e i mpo rt mi ni miz e
7 from sk le arn m etr ic s im por t s il ho ue tt e_ sc or e
8 from sk le arn m etr ic s im por t m e an _a bs ol u te _p er c en ta ge _e r ro r as MAP E