Ứng dụng thuật giải di truyền và lập danh mục đầu tư

MỤC LỤC PHỤ BÌA . ii NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP iii NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN .v NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN . vi LỜI CẢM ƠN . vii TÓM TẮT ĐỒ ÁN viii MỤC LỤC 1 DANH MỤC BẢNG BIỂU .3 DANH SÁCH HÌNH VẼ .4 DANH SÁCH CÔNG THỨC .5 Chương 1. TỔNG QUAN 7 1.1.Đặt vấn đề. 7 1.2. Ý nghĩa khoa học và thực tiễn. .8 1.3. Mục tiêu của nghiên cứu. 9 1.4.Bố cục 10 Chương 2. TỔNG QUAN VỀ QUẢN TRN DANH MỤC ĐẦU TƯ 11 2.1.Giới thiệu về quản trị danh mục đầu tư. .11 2.2. Nội dung quản trị danh mục đầu tư .11 2.1.1.Những giả định nền tảng 11 2.1.2.Lý thuyết danh mục Markowitz. 12 2.1.3.Các khái niệm liên quan tới lý thuyết danh mục 13 Chương 3. TỔNG QUAN VỀ THUẬT GIẢI DI TRUYỀN 20 3.1.Giới thiệu về quá trình tiến hóa tự nhiên. .20 3.2.Giới thiệu về thuật giải di truyền. 20 3.3.Các quá trình chính trong thuật giải di truyền. .21 3.3.1. Tiến trình Chọn lọc .21 3.3.2. Quá trình Lai ghép 22 3.3.3Quá trình Đột biến 23 .3.3.4. Hàm Thích nghi 23 3.3.5.Điều kiện kết thúc lặp của GAs .23 3.3.6. Thuật giải di truyền 24 Chương 4. PHƯƠNG PHÁP NGHIÊN CỨU .25 4.1.Mô tả bài toán 25 4.1.1. Xử lý dữ liệu 25 4.1.2. Phát biểu bài toán .25 4.1.3. Mã hóa bài toán. .26 4.1.4. Khởi tạo quần thể. 26 4.1.5. Hàm lượng giá. .27 4.1.6. Các tham số 27 4.2. Phân tích và thiết kế hệ thống 28 4.2.1. Use Case Diagrams 28 4.2.2. Tổ chức các gói (Packages Definitions) .30 4.2.3. Sơ đồ lớp (Class Diagrams) .32 4.2.4.Sơ đồ tuần tự (Sequence Diagrams) .38 4.2.5.Lược đồ cơ sở dữ liệu .40 Chương 5. KẾT QUẢ THỰC NGHIỆM .41 5.1. Phương pháp thực nghiệm 41 5.2. Kết quả chương trình 41 5.3. Đối chiếu thực tế 42 Chương 6. KẾT LUẬN CHUNG 45 TÀI LIỆU THAM KHẢO 47 PHỤ LỤC P1 Phụ lục A: Giới thiệu về Sàn Giao dịch Chứng khoán HOSE . P1 Phụ lục B: Khái quát về tình hình thị trường chứng khoán Việt Nam. P2 Phụ lục C: Các chứng khoán niêm yết trên sàn HOSE (đến ngày 19/11/2008) P3

pdf47 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2621 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Ứng dụng thuật giải di truyền và lập danh mục đầu tư, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
............................. 32 Hình 4.4.Sơ đồ Lớp BusinessServices::StockArtifacts ................................................... 33 Hình 4.5.Sơ đồ Lớp BusinessServices::DataTransferObjects ........................................ 34 Hình 4.6.Sơ đồ Lớp BusinessServices::ExternalSystemInterfaces................................. 35 Hình 4.7.Sơ đồ Lớp BusinessServices::StockSystem ..................................................... 36 Hình 4.8.Sơ đồ Lớp Business::AISystem ....................................................................... 37 Hình 4.9.Sơ đồ Tuần tự của use case Choose Candidate Securities ............................... 38 Hình 4.10.Sơ đồ Tuần tự của use case Generate Efficient Porfolio ............................... 39 Hình 4.11. Lược đồ Cơ sở dữ liệu ................................................................................... 40 5 DANH SÁCH CÔNG THỨC Công thức tính Tỷ suất sinh lợi:  =  + ∆ +  2.1 Công thức tính Tỷ suất sinh lợi mong đợi: ER = .  2.2 Công thức tính Tỷ suất sinh lợi mong đợi của một Danh mục:  =  .  2.3 Phương sai của Tỷ suất sinh lợi:  = [ − ].  2.4 Độ lệch chuNn của Tỷ suất sinh lợi:  = √ 2.5.1 Độ lệch chuNn của Tỷ suất sinh lợi thực nghiệm:  = 1%&[ − ]' 2.5.2 Hiệp phương sai của những Tỷ suất sinh lợi: ()*+, = -.á 0ị 1ỳ *ọ345[+ − +][, − ,]6 = +, 2.6.1 6 Hiệp phương sai của những Tỷ suất sinh lợi thực nghiệm: ()*+, = 1%+ − +. , − ,'  2.6.2 Hệ số tương quan: 8+, = ()*+,+, 2.7 Độ lệch chuNn của một danh mục đầu tư:  = & + ()*  :   2.8 7 CHƯƠNG 1. TỔNG QUAN 1.1. Đặt vấn đề Bên cạnh sự phát triển của thị trường tài chính nói chung, thì với tốc độ phát triển nhanh chóng của công nghệ thông tin, con người kỳ vọng vào việc làm sao có thể ứng dụng công nghệ thông tin vào lĩnh vực tài chính một cách hiệu quả nhất. Đặc biệt là khai thác những giá trị tiềm Nn đằng sau những con số, những dữ liệu phát sinh,… được thu thập trong suốt quá trình hình thành và phát triển của nền tài chính. “…Vào những năm cuối của 1980, phương pháp khai khoáng dữ liệu từ dữ liệu lịch sử giao dịch nhằm rút trích ra những thông tin hữu ích được đề xướng với sự trợ giúp của các thiết bị tính toán tiên tiến…”. (Markellos và các cộng sự, 2003) Thuật giải Di truyền (Genetic Algorithm) là một phương pháp tối ưu để giải quyết những bài toán tìm kiếm trên không gian lớn, dựa trên việc mô phỏng quá trình tiến hóa sinh học trong tự nhiên. Các loài đã tồn tại và tiến hóa thông qua quá trình đấu tranh sinh tồn khắc nghiệt. Ở mỗi thế hệ, các cá thể thực hiện các quá trình chọn lọc, lai ghép và đột biến một cách bán ngẫu nhiên, để tạo ra những thế hệ tiếp theo tốt hơn, nhắm tới sự thích nghi với môi trường tự nhiên. Về mặt tài chính, quản lý danh mục đầu tư là một nghiệp vụ quan trọng trong kinh doanh chứng khoán, là công cụ hữu hiệu để hạn chế rủi ro và tối đa hóa lợi nhuận. Vấn đề đặt ra là làm thế nào để có thể quản lý danh mục đầu tư một cách tối ưu? Một thuận lợi lớn nhất trong lĩnh vực đầu tư đã và đang được thừa nhận trong suốt những thập niên vừa qua, đó là, việc thiết lập một danh mục đầu tư tối ưu là một vấn đề không chỉ đơn giản là sự kết hợp của nhiều chứng khoán riêng lẻ mà còn có cả những đặc trưng rủi ro – tỷ suất sinh lợi mong đợi. Chính vì vậy, đặt ra vấn đề, làm cách nào để có thể ứng dụng thuật giải di truyền vào việc tìm kiếm một (tập hợp các) danh mục đầu tư hiệu quả, với tiêu chí đa 8 dạng hóa danh mục đầu tư, tối thiểu rủi ro và tối đa tỷ suất sinh lợi. Từ đó mở ra những phương pháp tiếp cận mô hình dự báo trong việc quản trị danh mục năng động. Tựu trung lại, bài toán có thể được phát biểu như sau: Từ một danh sách có < chứng khoán thuộc các lĩnh vực (được niêm yết trên sàn HOSE), chúng ta cần thiết lập một danh mục đầu tư hiệu quả có = = ≤ < chứng khoán. Chúng ta cũng giả định rằng tỷ trọng giữa các chứng khoán là như nhau. Sao cho, danh mục kết quả có độ lệch chun (sẽ được giới thiệu trong chương 2) là nhỏ nhất hoặc thỏa mãn yêu cầu của nhà đầu tư. 1.2. Ý nghĩa khoa học và thực tiễn Chúng ta cũng đều biết rằng, mỗi loại tài sản thường mang một độ rủi ro – tỷ suất sinh lợi khác nhau, và khi được kết hợp lại, danh mục kết quả sẽ mang một độ rủi ro mới. Dĩ nhiên, nếu một danh mục đầu tư chỉ bao gồm một loại chứng khoán duy nhất, công việc quản trị danh mục đầu tư sẽ trở nên vô cùng đơn giản. Tuy nhiên, “không để chung trứng trong một giỏ” - một nguyên tắc khá nổi tiếng trong tài chính nói chung, và trong quản lý danh mục đầu tư nói riêng, nó có nghĩa rằng, phải thực hiện việc đa dạng hóa trong cơ cấu một danh mục đầu tư. Nói cách khác, một danh mục đầu tư nên kết hợp nhiều loại tài sản (cổ phiếu, trái phiếu, tài sản cố định…) với những độ rủi ro và tỷ trọng khác nhau. Do đó, điều mà chúng ta thực sự và cần hướng đến, là một sự kết hợp giữa nhiều loại tài sản với những rủi ro – tỷ suất sinh lợi khác nhau, sao cho, độ rủi ro – tỷ suất sinh lợi của danh mục thỏa mãn yêu cầu của nhà đầu tư. Với một danh sách gồm 3 chứng khoán, chúng ta có tới 2 − 1 sự kết hợp (không kể trường hợp một kết hợp không có phần tử nào). Do đó, việc tìm kiếm một sự kết hợp tối ưu (danh mục đầu tư hiệu quả) từ một danh sách có tới hàng 9 trăm các tài sản (chứng khoán) trở nên khó khăn đối với mỗi nhà đầu tư. Chẳng hạn, với một danh sách có 3 tài sản A, B, C. Chúng ta có 2? − 1 = 7 sự kết hợp. Đó là: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Dĩ nhiên chúng ta sẽ không cần tính tới {∅6, một danh mục không có loại tài sản nào. Chính vì vậy, hãy tưởng tượng một danh sách gồm 100 tài sản, đồng nghĩa với có 2AA − 1 danh mục có thể được tạo ra. Xem ra việc tìm kiếm một danh mục đầu tư hiệu quả trở nên khó khăn, nếu như không muốn nói là bất khả thi đối với những nhà đầu tư. Đó là chúng ta còn chưa kể tới việc ước lượng mức độ rủi ro của mỗi loại tài sản, vốn là một công việc quan trọng không kém, và được thực hiện trước khi tìm một sự kết hợp từ các tài sản rủi ro. Chính vì vậy, việc tìm hiểu và ứng dụng thuật giải di truyền của đề tài đã mở ra những ý tưởng, những cách thức… nhằm giải quyết bài toán kết hợp nhiều tài sản rủi ro đã nêu ở trên, một cách hiệu quả với chi phí thời gian dễ chấp nhận. 1.3. Mục tiêu của nghiên cứu. Bài toán mà chúng ta đặt ra và cần giải quyết đó là tìm kiếm một sự kết hợp từ nhiều loại tài sản rủi ro khác nhau, nhằm thiết lập một danh mục đầu tư hiệu quả, tức là có độ rủi ro phù hợp với chiến lược mua bán của mỗi nhà đầu tư. Đây cũng chính là mục tiêu quan trọng và trước nhất của đề tài. Bên cạnh đó, việc nghiên cứu cũng phải mở ra những cách thức, những giải pháp… nhằm giải quyết bài toán trên một cách hiệu quả hơn, và tất nhiên, là có thể đáp ứng nhu cầu thực tế trong lĩnh vực đầu tư chứng khoán nói riêng, và các lĩnh vực khác nói chung. Ngoài ra, cũng phải kể tới việc đề tài phải cung cấp các kiến thức tài chính cần thiết như các học thuyết kinh tế, các mô hình toán kinh tế; các kiến thức trong lĩnh vực Trí tuệ Nhân tạo, Khai khoáng Dữ liệu; cũng như khả năng ứng dụng và triển khai của công nghệ thông tin vào các lĩnh vực đời sống. 10 1.4. Bố cục Bố cục đồ án chia thành 6 chương. Chương 1 trình bày các vấn đề tổng quan, tính cấp thiết và lý do hình thành đề tài, ý nghĩa khoa học và thực tiễn, cũng như phạm vi, cấu trúc của đồ án. Chương 2 trình bày các học thuyết, lý thuyết kinh tế cần thiết để giải quyết bài toán được đề cập trong đồ án. Chương 3 trình bày các kỹ thuật đã đang và sẽ ứng dụng, nhằm giải quyết bài toán xây dựng danh mục đầu tư hiệu quả, cụ thể là thuật giải di truyền. Chương 4 tập trung vào phương pháp nghiên cứu, các cách thức giải quyết bài toán, các mô tả về mặt công nghệ, hệ thống… Chương 5 trình bày các kết quả thực nghiệm thu được, khi giải quyết bài toán thiết lập danh mục đầu tư hiệu quả. Cuối cùng, chương 6 sẽ nêu những kết luận chung, những kết quả đạt được, hướng phát triển của đồ án. 11 CHƯƠNG 2. TỔNG QUAN VỀ QUẢN TRN DANH MỤC ĐẦU TƯ 2.1. Giới thiệu về quản trị danh mục đầu tư Trong suốt những thập niên vừa qua, một thuận lợi lớn nhất trong lĩnh vực đầu tư đã và đang được thừa nhận rằng, việc thiết lập một danh mục đầu tư tối ưu là một vấn đề không chỉ đơn giản là sự kết hợp của nhiều chứng khoán riêng lẻ, mà còn có cả những đặc trưng rủi ro – tỷ suất sinh lợi mong đợi. Đặc biệt, điều đó chỉ ra rằng, chúng ta cần phải xem xét mối quan hệ giữa những phương thức đầu tư, nếu chúng ta đang xây dựng một danh mục tối ưu, mà danh mục đó sẽ đáp ứng những mục tiêu đầu tư của chúng ta. Điều quan trọng là sự thừa nhận trong việc thiết lập danh mục đã được giải thích trong lý thuyết đa dạng hóa danh mục đầu tư. 2.2. Nội dung của quản trị danh mục đầu tư 2.2.1. Những giả định nền tảng Trước khi trình bày lý thuyết danh mục, chúng ta cần làm rõ một vài giả định chung của lý thuyết. Điều này không chỉ bao gồm một danh mục đầu tư tối ưu mà còn có nghĩa là rủi ro và thái độ rủi ro. - Một giả định cơ bản của lý thuyết danh mục đó là, một nhà đầu tư mong muốn tối đa hóa tỷ suất sinh lợi từ việc đầu tư của mình, với mộ mức độ rủi ro cho phép. Để giải quyết một cách thích đáng giả định này, chắc chắn những quy tắc nền tảng phải được trình bày. Đầu tiên, danh mục của bạn nên bao gồm tất cả những tài sản và các khoản nợ phải trả, không chỉ đơn thuần là cổ phiếu và trái phiếu, mà còn có các khoản mục như xe hơi, nhà cửa, và những khoản đầu tư có tính thanh khoản thấp như: tem, đồ cổ, đồ nội thất… 12 Tuy nhiên trong phạm vi đề tài, chúng ta cũng giả định rằng, danh mục đầu tư của chúng ta chỉ bao gồm các loại chứng khoán cổ phiếu. Tuy nhiên, cục diện đầu tư cũng cần phải được xem xét lại vì tỷ suất sinh lợi từ hầu hết các loại chứng khoán này tác động qua lại lẫn nhau, và mối quan hệ giữa những tỷ suất sinh lợi đối với các tài sản trong danh mục đầu tư là rất quan trọng. Vì một danh mục đầu tư tốt, không đơn giản chỉ là một bộ sưu tập các khoản mục đầu tư tốt cá thể. - Một giả định nữa của lý thuyết danh mục đầu tư, về cơ bản, những nhà đầu tư luôn từ chối rủi ro. Bằng chứng là, hầu hết các nhà đầu tư không thích rủi ro, thì họ luôn theo đuổi những hình thức bảo hiểm khác nhau như bảo hiểm nhân thọ, y tế… nhằm đề phòng những biến cố không chắc chắn trong tương lai. Và dĩ nhiên, sự lựa chọn giữa hai cổ phiếu có cùng tỷ suất sinh lợi, nhà đầu tư sẽ chọn tài sản có mức rủi ro thấp hơn. Tuy nhiên, điều này không ám chỉ rằng mọi người đều từ chối rủi ro. Sự thật là không ai mua bảo hiểm cho tất cả mọi thứ xung quanh cả. Thậm chí, có người còn không mua bất kỳ loại bảo hiểm nào, đó có thể là một sự lựa chọn, hoặc là họ không có khả năng theo đuổi nó. Thêm nữa, một số cá nhân, bên cạnh việc mua các loại bảo hiểm như tai nạn ô tô, bênh tật… họ đồng thời cũng mua vé số, đánh bạc… vốn được biết đến như những khoản sinh lợi tiêu cực. Điều này đồng nghĩa với việc luôn tồn tại những cá nhân sẵn lòng chấp nhận rủi ro. Trong khi có nhiều thái độ ứng xử khác nhau về rủi ro, thì giả định cơ bản của chúng ta cho rằng, hầu hết các nhà đầu tư đều chuyển một khoản tiền lớn để phát triển danh mục đầu tư mà vẫn từ chối rủi ro. Vì vậy, chúng ta mong đợi một mối quan hệ đồng thuận giữa tỷ suất sinh lợi mong đợi và rủi ro mong đợi. Đặc biệt, đây cũng là điều mà nhìn chung, chúng ta luôn tìm kiếm trong tương lai. 2.2.2. Lý thuyết danh mục Markowitz 13 Vào đầu những năm 1960, những nhà đầu tư đã nói về rủi ro, nhưng không có những ước lượng cụ thể cho từng khoản mục. Tuy nhiên, để xây dựng một mô hình danh mục đầu tư, các nhà đầu tư phải xác định lượng rủi ro có thể có. Mô hình danh mục đầu tư cơ bản được Harry Markowitz phát triển. Ông là người đoạt giải Nobel kinh tế sau khi phát minh ra thuyết danh mục hiện đại năm 1952. Học thuyết này nhấn mạnh tầm quan trọng của danh mục đầu tư, các rủi ro và sự tương quan giữa các cổ phiếu với việc đa dạng hóa danh mục đầu tư. Điều này đã thay đổi cách thức mà các nhà đầu tư đang thực hiện. Cụ thể, Markowitz đã phát hiện, tỷ suất sinh lợi mong đợi đối với một danh mục của các tài sản, và một ước lượng rủi ro mong đợi. Markowitz chỉ ra rằng, phương sai của tỷ suất sinh lợi là một ước lượng có ý nghĩa của rủi ro danh mục với một tập hợp những giả định, và ông đã tìm ra công thức để tính toán phương sai của danh mục. Công thức tính toán phương sai danh mục này, đã chỉ ra sự quan trọng của việc đa dạng hóa đầu tư để giảm thiểu rủi ro tổng thể và cũng chỉ ra cách đa dạng hóa đầu tư hiệu quả. 2.2.3. Các khái niệm liên quan tới lý thuyết danh mục 2.2.3.1. Tỷ suất lợi nhuận (Rate of Return) Chúng ta định nghĩa tỷ suất sinh lợi qua một thời kỳ t, với thời gian là ∆, sẽ là tỷ suất sinh lợi được thực hiện từ thời điểm t đến thời điểm  + ∆. Nếu giá của chứng khoán ở thời điểm t là P(t) , ở thời điểm  + ∆ là P( + ∆, và thu nhập của chứng khoán trong suốt thời kỳ là d(t). Vậy tổng tỷ suất sinh lợi của chứng khoán sẽ là:  =  + ∆ +  2.1 Do đó tỷ lệ sinh lợi của chứng khoán sẽ là 00 =  − 1 Ví dụ: Giá đóng cửa của cổ phiếu A tháng 10/2008 là 40$ và tháng 11/2008 là 50$. Chi phí phải trả cho giao dịch là 4$ khi mua và bán cổ 14 phiếu, cổ tức nhận được là 2$. Vậy tổng tỷ suất sinh lợi của chứng khoán sẽ là:  = 50$ + 2$ − 4$40$ = 1,2 *à 00 = 0,2 = 20% 2.2.3.2. Tỷ suất lợi nhuận mong đợi (Expected Rate of Return) Tỷ suất lợi nhuận mong đợi đối với một tài sản được tính như trong bảng 2.1. Tỷ suất sinh lợi mong đợi đối với một tài sản rủi ro cụ thể với tập hợp tỷ suất sinh lợi tiềm năng, và một giả định các khả năng xảy ra các mức tỷ suất sinh lợi dự kiến. Bảng 2.1. Ví dụ về cách tính tỷ suất mong đợi Khả năng Tỷ suất sinh lợi (%) Tỷ suất sinh lợi mong đợi 0,20 8,0 1,60 0,30 10,0 3,00 0,20 12,0 2,40 0,30 14,0 4,20 E(R)= 11,20 Tỷ suất sinh lợi mong đợi của tài sản rủi ro: ER = .  2.2 Trong đó: - Rj là tỷ suất sinh lợi của tài sản rủi ro trong tình huống j. 15 - Pj là khả năng xảy ra mức tỷ suất sinh lợi Rj Tỷ suất sinh lợi mong đợi đối với một danh mục của những khoản đầu tư, đơn giản là giá trị trung bình theo tỷ trọng của tỷ suất sinh lợi mong đợi đối với những khoản đầu tư cụ thể trong danh mục. Tỷ trọng này là sự cân đối tổng giá trị đối với các khoản đầu tư. Tỷ suất sinh lợi mong đợi đối với một danh mục đầu tư được tính theo công thức sau:  =  .  2.3 Trong đó: - wi : Tỷ trọng đầu tư tài sản i trong danh mục. - E(Ri): Tỷ suất sinh lợi mong đợi của tài sản i. 2.2.3.3. Phương sai (độ lệch chuNn) của tỷ suất sinh lợi đối với một khoản đầu tư cụ thể (Variance or Standard Deviation). Phương sai hay độ lệch chuNn, là một phương pháp ước lượng chênh lệch của những mức tỷ suất sinh lợi có thể có Ri, so với tỷ suất sinh lợi mong đợi [E(Ri)] sau đây. Phương sai:  = [ − ].  2.4 Trong đó: - pi là khả năng xảy ra tỷ suất sinh lợi. - Độ lệch chuNn:  = √ 2.5 Tuy nhiên, khi tính toán độ lệch chuNn của các giá trị tỷ suất sinh lợi thực nghiệm, chúng ta có thể lấy tổng bình phương các khoảng chênh lệch và chia cho N. Với N là số mẫu thực nghiệm. 16  = 1%&[ − ]' 2.6 Việc tính toán phương sai và độ lệch chuNn của tỷ suất sinh lợi mong đợi đối với tài sản rủi ro trong bảng 2.1 được tính lại trong bảng 2.2. Bảng 2.2. Tính toán Phương sai tỷ suất sinh lợi mong đợi đối với một tài sản cụ thể. Ri [Ri – E(Ri) {Ri – E(Ri)}2 Pi {Ri – E(Ri)}2pi 8,0 -3,20 10,24 0,20 2,048 10,0 -1,20 1,44 0,30 0,432 12,0 0,80 0,64 0,20 0,128 14,0 2,80 7,84 0,30 2,235 4,960 Khi đó  = 4,960 và độ lệch chuNn  = 2,227% 2.2.3.4. Hiệp phương sai của những tỷ suất sinh lợi (Covariance) Trong phần này, chúng ta trình bày về hiệp phương sai của tỷ suất sinh lợi được dự định để ước lượng, đưa ra công thức để tính toán nó. Phân tích danh mục, chúng ta thường quan tâm tới hiệp phương sai của tỷ suất sinh lợi hơn là sự thay đổi giá cả và một vài thứ khác. Hiệp phương sai là một ước lượng để hai mức độ ưu tiên khác nhau “tiến lại gần nhau” nhằm tạo ra một giá trị có ý nghĩa. Một giá trị hiệp phương sai dương, có nghĩa là tỷ suất sinh lợi đối với hai khoản đầu tư có khuynh hướng dịch chuyển về một hướng, so với mức trung bình của chúng trong suốt một khoảng thời gian. Ngược lại, 17 một giá trị hiệp phương sai âm, chỉ ra tỷ suất sinh lợi đối với hai khoản đầu tư có khuynh hướng dịch chuyển về hai hướng khác nhau, liên quan đến mức trung bình vào từng thời điểm cụ thể trong một khoảng thời gian. Độ lớn của hiệp phương sai phụ thuộc vào phương sai của những chuỗi tỷ suất sinh lợi cụ thể, cũng như mối quan hệ giữa những chuỗi tỷ suất sinh lợi. Đối với hai tài sản A và B, hiệp phương sai của tỷ suất sinh lợi được định nghĩa là: ()*+, = -.á 0ị 1ỳ *ọ345[+ − +][, − ,]6 = +, 2.6.1 Trong trường hợp tỷ suất sinh lợi của hai tài sản A và B được tính dự vào thực nghiệm thì hiệp phương sai của chúng được xác định như sau: ()*+, = 1%+ − +. , − ,'  2.6.2 2.2.3.5. Hệ số tương quan của những tỷ suất sinh lợi (Corelation) Hiệp phương sai bị ảnh hưởng bởi biến thiên của hai chuỗi tỷ suất sinh lợi riêng lẻ. Vì vậy, một con số hiệp phương sai chỉ có thể nhấn mạnh một mối quan hệ mờ nhạt, nếu hai chuỗi tỷ suất sinh lợi riêng lẻ không ổn định nhưng lại phản ánh mối quan hệ bền vững nếu hai chuỗi này rất ổn định. Hiển nhiên, chúng ta muốn “chuNn hóa” ước lượng hiệp phương sai này để đưa vào xem xét tính biến thiên của hai chuỗi tỷ suất sinh lợi riêng lẻ như công thức sau: 8+, = ()*+,+, 2.7 Trong đó: - 8+, : Hệ số tương quan của những tỷ suất sinh lợi. - + : Độ lệch chuNn của RiA 18 - , : Độ lệch chuNn của RiB Như vậy hệ số tương quan là sự “chuNn hóa” ước lượng hiệp phương sai. Bằng cách chuNn hóa hiệp phương sai bởi những độ lệch chuNn riêng lẻ sẽ mang lại hệ số tương quan 8+,), hệ số tương quan này chỉ có thể thay đổi trong khoảng từ -1 đến +1. Giá trị +1 có thể nhấn mạnh mối quan hệ tuyến tính xác định giữa RA và RB, nghĩa là, tỷ suất sinh lợi đối với hai cổ phiếu cùng thay đổi trong một kiểu tuyến tính xác định hoàn toàn. Giá trị -1 có thể nhấn mạnh mối quan hệ phủ định hoàn toàn giữa hai chuỗi tỷ suất sinh lợi, như khi tỷ suất sinh lợi của một cổ phiếu cao hơn mức trung bình, tỷ suất sinh lợi của những cổ phiếu khác sẽ thấp hơn mức trung bình bằng một số lượng lớn. Để tính toán ước lượng chuNn này, cần tính toán được độ lệch chuNn đối với hai chuỗi tỷ suất riêng lẻ. Chúng ta đã có những giá trị RiA - E(RA) và RiB – E(RB). 2.2.3.6. Độ lệch chuNn của một danh mục đầu tư Như đã biết, một tương quan +1,0 có thể nhấn mạnh tương quan xác định hoàn toàn, và một giá trị -1,0 có nghĩa là tỷ suất sinh lợi đã thay đổi theo hướng hoàn toàn ngược lại. Một giá trị 0 có nghĩa là tỷ suất sinh lợi không có mối quan hệ tuyến tính – tương quan độc lập, qua thống kê chúng không có tương quan với nhau. Nhưng không có nghĩa là chúng độc lập với nhau. Một giá trị như 8+, = 0,108 là rất thấp. Liên quan đến hệ số tương quan thấp này không khác thường đối với những cổ phiếu trong những ngành khác nhau (ngành giải khát và ngành xây dựng). Sự tương quan giữa những cổ phiếu của những công ty trong phạm vi một vài ngành gần bằng 0,85. Bây giờ, chúng ta thảo luận về các khái niệm của hiệp phương sai và hệ số tương quan, chúng ta có thể xem công thức tính toán độ lệch chuNn của tỷ suất sinh lợi đối với một danh mục những tài sản, phương 19 pháp ước lượng rủi ro của chúng ta đối với một danh mục. Như đã được ghi nhận, Harry Markowitz tìm thấy công thức để tính toán độ lệch chuNn của danh mục đầu tư.  = & + ()*  :   2.8 Trong đó: -  : Độ lệch chuNn của danh mục đầu tư. - wi : Tỷ trọng đầu tư của tài sản riêng lẻ trong danh mục, tỷ trọng này được xác định bởi tỷ lệ của giá trị trong danh mục đầu tư. - σQ : Phương sai của tỷ suất sinh lợi đối với tài sản i. - ()* : Hiệp phương sai giữa tỷ suất sinh lợi đối với tài sản i và tài sản j, với Covij = . Công thức này cho thấy độ lệch chuNn của danh mục đầu tư là một phần giá trị trung bình của những phương sai riêng lẻ (trong đó tỷ trọng là bình phương), cộng với tỷ trọng hiệp phương sai giữa những tài sản trong danh mục. Độ lệch chuNn đối với danh mục của những tài sản bao gồm, không chỉ phương sai của những tài sản riêng lẻ mà còn bao gồm hiệp phương sai giữa những cặp tài sản riêng lẻ trong danh mục. Công thức (2.8) chính là cơ sở để chúng ta giải quyết bài toán đã đặt ra bằng thuật giải di truyền, sẽ được trình bày ở chương kế tiếp. 20 CHƯƠNG 3. TỔNG QUAN VỀ THUẬT GIẢI DI TRUYỀN 3.1. Giới thiệu về quá trình tiến hóa tự nhiên Như chúng ta đều biết rằng, quá trình tiến hóa tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất và đặc biệt là, tự nó đã mang tính tối ưu. Dù rằng không được chứng minh, song nó vô cùng phù hợp với hiện thực khách quan. Thực tế cho thấy, quá trình tiến hóa thể hiện tính tối ưu ở chỗ, thế hệ sau bao giờ cũng tốt hơn thế hệ trước. Tiến hóa tự nhiên được duy trì nhờ hai quá trình cơ bản: sinh sản và chọn lọc tự nhiên. Xuyên suốt quá trình này, các thế hệ mới luôn được sinh ra để bổ sung và thay thế cho thế hệ cũ. Cá thể nào phát triển hơn, thích ứng hơn đối với môi trường sẽ tồn tại. Ngược lại, cá thể nào không thích ứng được sẽ bị đào thải. Các cá thể mới sinh ra trong quá trình tiến hóa nhờ sự lai ghép ở thế hệ cha – mẹ. Một cá thể mới có thể mang những tính trạng của cha – mẹ (gọi là cơ chế di truyền), cũng có thể mang những tính trạng hoàn toàn mới (gọi là cơ chế đột biến). Chính hai cơ chế này giữ vai trò chủ đạo trong tiến trình tiến hóa và có mức độ quan trọng như nhau. Dù rằng, xác suất xảy ra của hiện tượng đột biến thấp hơn rất nhiều so với hiện tượng di truyền. 3.2. Giới thiệu về thuật giải di truyền Thuật giải di truyền (Genetic Algorithms – GAs), do John Holland (1975) và Goldberg (1989) đề xuất và phát triển. Cũng như những thuật toán tiến hóa khác nói chung, thuật giải di truyền dựa trên việc mô phỏng quá trình tiến hóa sinh học. Chính vì vậy, nguyên lý hoạt động của thuật giải sử dụng các nguyên lý di truyền về sự thích nghi và sự sống của các cá thể thích nghi nhất trong tự nhiên. Nhìn chung, các thuật toán tiến hóa tuy có có những điểm khác biệt, song về cơ bản, đều mô phỏng ba quá trình cơ bản: lai ghép, đột biến, và chọn lọc tự nhiên. Tập hợp tất cả các lời giải trong không gian tìm kiếm gọi là kiểu hình. Các kiểu hình này khi mã hóa gọi là kiểu gen. Toán tử di truyền sẽ được thực thi trên đối 21 tượng này. Một ánh xạ từ kiểu hình sang kiểu gen gọi là quá trình mã hóa. Mỗi cá thể trong kiểu gen có nhiều nhiễm sắc thể. Trong mỗi nhiễm sắc thể có chứa nhiều gen. Mỗi đặc trưng di truyền cụ thể được quy định bởi giá trị và vị trí của gen trong nhiễm sắc thể. Độ thích nghi là thước đo khả năng sống sót và phát triển của cá thể trong môi trường. Toán tử xác định cá thể trong thế hệ hiện tại được giữ lại trong thế hệ tiếp theo, được gọi là chọn lọc. Toán tử kết hợp ngẫu nhiên hai cá thể được chọn là lai ghép. Toán tử thay đổi ngẫu nhiên cấu trúc cá thể, tức làm thay đổi giá trị của gen gọi là đột biến. 3.3. Các quá trình chính trong thuật giải di truyền 3.3.1. Tiến trình Chọn lọc Đối với tiến trình chọn lọc (chọn quần thể mới thỏa phân bố xác suất dựa trên các độ thích nghi), ta dùng bánh xe Ru-lét với các rãnh được định kích thước theo độ thích nghi. Bánh xe Ru-lét được xây dựng như sau: - Tính độ thích nghi R*ST* của mỗi nhiễm sắc thể *. = 1…)_W.XR với pop_size là kích thước quần thể. - Tính tổng giá trị thích nghi toàn quần thể: Y =  R*ST*Z_[\] 3.1 - Tính xác suất chọn pQ cho mỗi nhiễm sắc thể vQi = 1…pop_size:  = R*ST*Y 3.2 - Tính vị trí xác xuất qQ của mỗi nhiễm sắc thể vQi = 1…pop_size d = 3.3 22 Tiến trình chọn lọc được thực hiện bằng cách quay bánh xe Ru-lét pop_size lần; mỗi lần chọn một nhiễm sắc thể từ quần thể hiện hành vào quần thể mới theo cách sau: - Phát sinh ngẫu nhiên một số r trong đoạn [0..1] - Nếu r < qQ thì chọn nhiễm sắc thể đầu tiên vQ; ngược lại thì chọn nhiễm sắc thể thứ i là vQ 2 ≤ i ≤ pop_size sao cho qQ: < 0 ≤ qQ 3.3.2. Quá trình Lai ghép Phép lai là quá trình hình thành nhiễm sắc thể mới, trên cơ sở các nhiễm sắc thể cha – mẹ, bằng cách ghép một hay nhiều đoạn gen của hai (hay nhiều) nhiễm sắc thể cha – mẹ với nhau. Phép lai xảy ra với xác xuất pc, có 3 dạng lai ghép cơ bản: lai một vị trí (lai đơn), lai nhiều vị trí (lai bội) và lai đều. Đồ án chỉ trình bày kiểu lai đơn. Quá trình lai đơn có thể mô phỏng như sau: Đối với mỗi nhiễm sắc thể trong quần thể: - Phát sinh một số ngẫu nhiên r trong đoạn [0,1]. - Nếu r < pg thì chọn nhiễm sắc thể đó để lai ghép. Bây giờ, ta ghép đôi các nhiễm sắc thể đã được chọn một cách ngẫu nhiên: đối với mỗi cặp nhiễm sắc thể được ghép đôi, ta phát sinh ngẫu nhiên một số )W trong đoạn [1,h − 1] với h là chiều dài của mỗi nhiễm sắc thể. Số )W cho biết vị trí của điểm lai. Hai nhiễm sắc thể: ii…iZ[iZ[j…ik*à ll…lZ[lZ[j…lk sẽ được thay bằng cặp con của nó là ii…iZ[lZ[j…lk *à ll…lZ[iZ[j…ik. 23 3.3.3. Quá trình Đột biến Đột biến là hiện tượng cá thể con mang một (số) tính trạng không có trong mã di truyền của cha – mẹ. Phép đột biến xảy ra với xác suất pm, nhỏ hơn rất nhiều so với xác suất lai pc. Phép đột biến có thể được mô phỏng như sau: Đối với mỗi nhiễm sắc thể trong quần thể hiện hành (nghĩa là sau khi lai) và đối với mỗi bit trong nhiễm sắc thể: - Phát sinh một số r trong đoạn [0,1]; - Nếu r < pm, đột biến bit đó (từ 1 thành 0 hoặc từ 0 thành 1) 3.3.4. Hàm Thích nghi Sau quá trình chọn lọc, lai ghép và đột biến, quần thể mới cần phải được lượng giá. Việc lượng giá này được dùng để xây dựng phân bố xác suất (cho quá trình chọn lọc kế tiếp). Vì hàm thích nghi phải nhận giá trị không âm, do đó phải xây dựng ánh xạ hàm mục tiêu đang xét sang hàm thích nghi, thông qua một hay nhiều ánh xạ. Nếu bài toán tối ưu là cực tiểu một hàm mục tiêu 4n thì việc chuyển 4n này sang hàm thích nghi on trong GAs như sau: on = (kpq − 4n 1ℎ. 4n < (kpq; %4ượl Tạ. on = 0; Trong đó, (kpq là tham số đầu vào. Có thể lấy (kpq là giá trị 4n lớn nhất trong quần thể hiện tại, hoặc lớn nhất sau 1 vòng lặp. 3.3.5. Điều kiện kết thúc lặp của GAs Để kết thúc vòng lặp GAs, thường có thể chỉ định trước số thế hệ cần tạo ra, sau đó kiểm tra độ thích nghi những phần tử tốt nhất bằng cách so sánh với bài toán ban đầu. 24 3.3.6. Thuật giải di truyền Tóm lại, một thuật giải di truyền, giải một bài toán được cho phải có năm thành phần sau: - Một cấu trúc dữ liệu z biểu diễn không gian lời giải của bài toán. - Phương pháp khởi tạo quần thể ban đầu 0. - Hàm định nghĩa độ thích nghi R*ST , đóng vai trò môi trường. - Các phép toán di truyền như đã mô phỏng ở trên. - Các tham số thuật giải di truyền sử dụng (kích thước quần thể, xác suất lai, đột biến…) Thuật toán GAs có thể được biểu diễn dưới dạng lưu đồ thuật giải (xem Hình 3.1) như sau: Hình 3.1: Lưu đồ thuật giải di truyền 25 CHƯƠNG 4. PHƯƠNG PHÁP NGHIÊN CỨU Trở lại với nhiệm vụ của đồ án, chúng ta sẽ sử dụng thuật giải di truyền để thiết lập một danh mục đầu tư bao gồm các cổ phiếu hiện đang giao dịch trên sàn HOSE. 4.1. Mô tả bài toán 4.1.1. Xử lý dữ liệu Dữ liệu được sử dụng là lịch sử giao dịch của các mã chứng khoán được niêm yết trên sàn HOSE, gồm có 168 mã cổ phiếu các loại (xem phụ lục A). Dữ liệu giao dịch này có khoảng 100,000 dòng dữ liệu, bắt đầu từ khi mã chứng khoán đó được giao dịch cho tới ngày 19 tháng 11 năm 2008. Các thông tin cần có trong file dữ liệu là Mã Chứng khoán, Ngày Giao dịch, Giá Đóng cửa. Thông thường các file dữ liệu này được cung cấp miễn phí trên các website Hoặc trên các diễn đàn như 4.1.2. Phát biểu bài toán Từ một danh sách có 3 chứng khoán thuộc các lĩnh vực, được niêm yết trên sàn HOSE, chúng ta cần thiết lập một danh mục đầu tư hiệu quả có h h < 3 chứng khoán. Chúng ta cũng giả định tỷ trọng giữa các chứng khoán là như nhau. Sao cho, danh mục kết quả có độ lệch chuNn (đã được giới thiệu trong chương 2) là nhỏ nhất hoặc thỏa mãn yêu cầu của nhà đầu tư. Dĩ nhiên, người đầu tư mong muốn tìm được một danh mục ưng ý nhất, tuy nhiên việc đưa ra một lời giải duy nhất trong trường hợp này sẽ không phù hợp và thiếu sự linh động. Do đó, kết quả bài toán sẽ là một tập các danh mục hiệu quả thỏa mãn yêu cầu về mức rủi ro mà nhà đầu tư có thể chấp nhận. 26 4.1.3. Mã hóa bài toán Mặc dù chúng ta chỉ cần 8 bit ( 28 = 256), là hoàn toàn có thể biểu diễn cho tất cả các chứng khoán đang được niêm yết trên sàn HOSE, tuy nhiên, điều này sẽ gây ra bất tiện, đó là khi có những chuỗi nhị phân không biểu diễn cho một loại chứng khoán nào. Do vậy, chúng ta sẽ sử dụng một chuỗi nhị phân (gồm các bit 1 và 0) có chiều dài n-bit (với n là số lượng chứng khoán được niêm yết trên sàn HOSE) làm nhiễm sắc thể để biểu diễn một danh mục gồm 3 mã chứng khoán đang được giao dịch trên sàn HOSE. Mỗi bit sẽ biểu diễn cho sự xuất hiện hoặc không xuất hiện của một mã chứng khoán. Thứ tự các các bit này (tương ứng với mỗi mã chứng khoán) được quy định theo thứ tự bảng chữ cái. 4.1.4. Khởi tạo quần thể Tiến trình khởi tạo quần thể khá đơn giản. Chúng ta cần tạo ra một quần thể các nhiễm sắc thể. Trong đó mỗi nhiễm sắc thể là một vector nhị phân dài n-bit, tất cả n-bit này đều được khởi tạo ngẫu nhiên. Để thực hiện việc khởi tạo ngẫu nhiên này, chúng ta cần có thêm một tham số, đó là ước lượng về số lượng chứng khoán sẽ xuất hiện trong các danh mục kết quả. Bởi chúng ta không không mong muốn một danh mục có số lượng cổ phiếu quá lớn, thậm chí là có tất cả các cổ phiếu hiện đang giao dịch trên thị trường. Khi đó, sự xuất hiện của mỗi loại chứng khoán trong danh mục sẽ phụ thuộc vào xác suất xuất hiện Z: {ál W|ấ n|ấ ℎ.ệ3 Z = h3 Trong đó: - h : ước lượng số lượng chứng khoán có trong danh mục kết quả. - 3: Số lượng chứng khoán được chọn. Khi đó, quá trình khởi tạo được mô tả như sau: 27 - Tại mỗi bit của chuỗi nhị phân của mỗi nhiễm sắc thể trong quần thể, chúng ta phát sinh một số thực r ngẫu nhiên trong đoạn [0, 1]. - Nếu r < p} thì loại chứng khoán đó sẽ xuất hiện trong danh mục, tức là giá trị của bit bằng 1. Ngược lại bit bằng 0, loại chứng khoán đó sẽ không xuất hiện trong danh mục. 4.1.5. Hàm lượng giá Chúng ta sẽ sử dụng công thức tính độ lệch chuNn của danh mục (được trình bày trong chương 2) như một hàm mục tiêu của bài toán, tuy nhiên, mục tiêu chúng ta là cần tối thiểu hàm này, do đó hàm thích nghi R*ST của các vector nhị phân cần được điều chỉnh thành: R*ST* = on = (m~ −  trong đó  = & + ()*  :   (kpq = 100 Lý do chúng ta chọn Cm~ = 100 chính là chúng ta không mong muốn một danh mục có độ lệch chuNn quá lớn. 4.1.6. Các tham số Một vấn đề cũng khá quan trọng trong việc giải bài toán sử dụng thuật toán di truyền đó là việc chọn các tham số cho bài toán. Một số tham số cần lưu ý đó là kích thước quần thể _size, xác suất lai tạo _pc, xác xuất đột biến _pm, số thế hệ _tours. Trong bài toán, chúng ta sẽ sử dụng các giá trị mặc định sau _size = số lượng cổ phiếu được chọn, _pc = 0.8, _pm = 0.01, _tours = 30. 28 Một tham số cũng khá quan trọng đó là _po chỉ ra xác xuất xuất hiện của bit 1, tức là liên quan tới số lượng cổ phiếu trong danh mục kết quả. Dĩ nhiên, để cho linh động và phù hợp với tài nguyên của máy, các tham số này hoàn toàn có thể được thay đổi trong chương trình. 4.2. Phân tích và thiết kế hệ thống 4.2.1. Use Case Diagrams Hình 4.1.Lược đồ Use Case cho hệ thống 4.2.1.1. Đặc tả UC001: Choose Candidate Securities - Mô tả chức năng: o Cho phép người dùng chọn danh sách chứng khoán ứng viên có thể xuất hiện trong danh mục kết quả. - Dòng sự kiện: o Dòng dự kiện chính:  Hệ thống hiển thị danh sách tất cả các Chứng khoán vào Hộp danh sách (listbox) chứng khoán. 29  Người dùng chọn một (số) chứng khoán từ Hộp danh sách chứng khoán và đưa vào Hộp danh sách chứng khoán được chọn.  Nhấn nút “Tiếp tục” - Yêu cầu đặc biệt: Không - Tình trạng trước: Không - Tình trạng sau: Một danh sách các chứng khoán được chọn. 4.2.1.2. Đặc tả UC002: Generate Efficient Porfolio - Mô tả chức năng: o Cho phép người dùng thiết lập các tham số và xuất ra kết quả là tập hợp các danh mục đầu tư hiệu quả. - Dòng sự kiện: o Dòng sự kiện chính:  Người dùng thiết lập (hoặc để mặc định) các tham số.  Người dùng nhấn nút “Thiết lập Danh mục”.  Hệ thống hiển thị tập hợp các danh mục hiệu quả.  Người dùng nhấn vào mỗi danh mục trong Hộp danh sách Danh mục để xem chi tiết các chứng khoán có trong danh mục đó. o Dòng sự kiện phụ:  Người dùng nhấn nút “Quay lại” để trở lại phần chọn danh sách chứng khoán. - Điều kiện đặc biệt: Không 30 - Tình trạng trước: Một danh sách các chứng khoán đã được chọn. - Tình trạng sau: Tập hợp các danh mục hiệu quả. 4.2.2. Tổ chức các gói (Packages Definitions) Hình 4.2. Tổ chức các gói và sự phụ thuộc - Applications: Tầng Applications chứa gói InvestorActivities, gói này chứa các thành phần cần thiết để hiện thị và xử lý ở phía người dùng. 31 - BusinessServices: Tầng Business Services gồm các gói con có thể được sử dụng ở nhiều ứng dụng khác, các gói này chứa các thành phần cần thiết để xử lý các thông điệp gửi đến từ phía người dùng. o Gói StockArtifacts: Đóng gói các Lớp liên quan đến nghiệp vụ đầu tư chứng khoán. o Gói DataTransferObjects: Đóng gói các lớp hỗ trợ cho việc giao tiếp (truyền tham số) giữa các tầng ứng dụng với nhau (theo mẫu DTO Patterns) o Gói ExternalSystemInterfaces: Đóng gói các lớp giao diện giúp cho tầng Applications có thể triệu gọi các phương thức từ các hệ thống con (hoặc bên ngoài) như AISystem, StockSystem. o Gói StockSystem: Đóng gói các lớp hiện thực các phương thức cung cấp dữ liệu, xử lý thông điệp… chứng khoán để cung cấp thông tin, xử lý các thông điệp liên quan tới nghiệp vụ chứng khoán cho các ứng dụng khác. o Gói AISystem: Đóng gói các lớp hiện thực cho những phương thức xử lý của một hệ thống Trí tuệ nhận tạo, chẳng hạn như đưa ra kết quả các danh mục đầu tư hiệu quả. 32 4.2.3. Sơ đồ lớp (Class Diagrams) 4.2.3.1. Sơ đồ Lớp của Applications::InvestorActivies Hình 4.3. Sơ đồ lớp gói Applications::InvestorActivities - Lớp ChooseCandidateSecuritiesForm: Hiển thị các thành phần giao diện phía người dùng liên quan tới việc lựa chọn các chứng khoán. - Lớp GenerateEfficientPorfolioForm: Hiển thị các thành phần giao diện phía người dùng liên quan tới việc thiết lập các tham số để tìm kiếm các danh mục đầu tư hiệu quả. - Lớp SecuritiesChoosingController: Thành phần xử lý các thông điệp khi người dùng tương tác với thành phần giao diện cũng như có khả năng tương tác với các thành phần xử lý khác hoặc hệ thống ngoài thông qua các interfaces của hệ thống đó. - Lớp PorfolioAdvisorController: Thành phần xử lý các thông điệp khi người dùng tương tác với các thành phần giao diện của lớp GenerateEfficientPorfolioForm, cũng như có khả năng tương tác với các thành phần xử lý khác, hoặc hệ thống ngoài thông qua các interfaces của hệ thống đó. 33 4.2.3.2. Sơ đồ Lớp của BusinessServices::StockArtifacs Hình 4.4.Sơ đồ lớp BusinessServices::StockArtifacts - Lớp Industry: biểu diễn thông tin của một nhóm ngành công nghiệp theo chuNn ICB (Xem phụ lục 2) - Lớp Company: biểu diễn thông tin của một công ty. - Lớp Securities: biểu diễn thông tin của một loại chứng khoán cũng như các phương thức hỗ trợ cho nghiệp vụ đầu tư chứng khoán. - Lớp Transaction: biểu diễn thông tin của một giao dịch ứng với một loại chứng khoán. - Lớp Porfolio: biểu diễn thông tin của một danh mục đầu tư cũng như định nghĩa các phương thức cần thiết. 34 4.2.3.3. Sơ đồ Lớp của BusinessServices::DataTransferObjects Hình 4.5.Sơ đồ lớp BusinessServices::DataTransferObjects - Lớp DTOAIParameter: Lớp chứa các thông tin các tham số hỗ trợ việc truyền dữ liệu giữa các tầng dịch vụ (theo mẫu DTOPatterns), các thông tin của lớp này nhằm phục vụ cho hệ thống AISystem để giải quyết bài toán tìm kiếm danh mục đầu tư hiệu quả. - Lớp DTOEPsParameter: Lớp chứa các thông tin về các tham số để gửi tới hệ thống StockSystem nhằm phục vụ cho giải pháp tìm kiếm danh mục đầu tư hiệu quả. - Lớp DTOGAsParameter: Lớp chứa các thông tin về các tham số để gửi tới hệ thống 35 4.2.3.4. Sơ đồ Lớp của BusinessServices::ExternalSystemInterfaces Hình 4.6.Sơ đồ lớp BusinessServices::ExternalSystemInterfaces - Lớp giao diện (interfaces) IAISystem: Cung cấp giao diện để các ứng dụng có thể tương tác với hệ thống AISystem. - Lớp giao diện IstockSystem: Cung cấp giao diện để các ứng dụng có thể tương tác với hệ thống StockSystem. 36 4.2.3.5. Sơ đồ Lớp của BusinessServices::StockSystem Hình 4.7.Sơ đồ lớp BusinessServices::StockSystem - Gói StockSubSystem cung cấp các lớp hỗ trợ cho việc tương tác (thêm, xóa, sửa, truy vấn dữ liệu) tới cơ sở dữ liệu (Database). o Lớp DBConnector: Cung cấp các phương thức thao tác với cơ sở dữ liệu (kết nối, thêm, xóa, sửa, truy vấn dữ liệu). o Lớp DBSecurities: Cung cấp các phương thức thao tác với cơ sở dữ liệu liên quan tới thông tin của các loại chứng khoán. o Lớp DBIndustry: Cung cấp các phương thức thao tác với cơ sở dữ liệu liên quan tới thông tin của một lĩnh vực công nghiệp theo chuNn ICB. 37 - Gói Proxy cung cấp các lớp hiện thực hóa các phương thức của lớp giao diện (đã đề cập tới trong sơ đồ Lớp ExternalSystemInterfaces) mà hệ thống cung cấp. 4.2.3.6. Sơ đồ Lớp của BusinessServices::AISystem Hình 4.8.Sơ đồ lớp Business:AISystem - Gói GeneticAlgorithmSubSystem: Cung cấp các lớp hỗ trợ thuật giải di truyền. o Lớp GeneticAlgorithm: Lớp biểu diễn cho thuật giải di truyền. o Lớp Generation: Lớp biểu diễn thông tin của một quần thể. 38 o Lớp Individual: Lớp biểu diễn thông tin của một cá thể trong quần thể. - Gói Proxy: cung cấp các lớp hiện thực các giao diện (interfaces) mà hệ thống AISystem cung cấp. o Lớp AISystem: hiện thực các phương thức của giao diện của hệ thống AISystem. 4.2.4. Sơ đồ tuần tự (Sequence Diagrams) 4.2.4.1. Sơ đồ tuần tự của Applications::InvestorActivies Hình 4.9.Sơ đồ tuần tự của use case Choose Candidate Securities Mô tả xử lý: - Người dùng mở form ChooseCandidateSecuritiesForm để chọn các mã chứng khoán. - Thành phần xử lý của giao diện SecuritiesChoosingControleler này sẽ gọi tới hệ thống StockSystem thông qua giao diện IstockSystem mà nó cung cấp để lấy mã của tất cả các chứng khoán. 39 o Trong quá trình này, nó cũng tạo ra các thực thể Securities để chứa thông tin mà hệ thống StockSystem trả về. - Người dùng chọn các lĩnh vực công nghiệp để lấy danh sách các chứng khoán trong lĩnh vực đó. - Thành phần xử lý của giao diện này cũng triệu gọi tới hệ thống StockSystem thông qua giao diện IstockSystem để lấy mã của các chứng khoán trong lĩnh vực công nghiệp đó. Hình 4.10.Sơ đồ tuần tự của use case Generate Efficient Porfolio Mô tả xử lý: - Người dùng mở form GenerateEfficientPorfolioForm để thiết lập các các thông số cho việc tìm kiếm danh mục đầu tư hiệu quả. - Thành phần xử lý của giao diện PorfolioAdvisorController sẽ gọi tới hệ thống AISystem thông qua giao diện IAISystem mà hệ thống này cung cấp. 40 - Tại hệ thống AISystem, hệ thống này có phương thức gọi tới hệ thống StockSystem thông qua giao diện IstockSystem để lấy thông tin về các chứng khoán mà người dùng đã chọn (để xây dựng bản đồ Gene phục vụ cho việc mã hóa và giải mã các chuỗi nhiễm sắc thể trong thuật giải di truyền). - Sau khi nhận được danh sách thông tin các chứng khoán từ hệ thống StockSystem, hệ thống AISystem tiếp tục xử lý để trả về tập các danh mục đầu tư hiệu quả. 4.2.5. Lược đồ cơ sở dữ liệu Hình 4.11. Lược đồ cơ sở dữ liệu Company StockSymbol CompanyName CompanyWebsite CompanySumary SectorCode IndustryCode Industry IndustryCode IndustryName Transaction Ticker Date [Open] High Low [Close] Volume RateOfReturn 41 CHƯƠNG 5. KẾT QUẢ THỰC NGHIỆM Trong chương này, đề tài sẽ trình bày nội dung và kết quả thực nghiệm, cũng như đưa ra những kết luận sau khi tiến hành chạy thử chương trình ứng dụng thuật toán di truyền đã xây dựng. 5.1. Phương pháp thực nghiệm Việc thực nghiệm sẽ được tiến hành đối với danh sách cổ phiếu thuộc một nhóm ngành (trong trường hợp này là nhóm ngành Tài chính). Do các ràng buộc về mặt kỹ thuật và các yếu tố ngoại cảnh tác động nên thực nghiệm sẽ sử dụng các tham số có giá trị phù hợp. Các tham số mặc định mà chương trình sẽ sử dụng đó là: - Số lượng cổ phiếu : 5 - Sử dụng mô hình dự báo rủi ro quá khứ, từ ngày 1/1/2000 đến ngày 1/1/2008 - Độ lệch chuNn danh mục kỳ vọng: 5-10% - Kích thước quần thể: 10 - Xác suất lai: 0.8 - Xác suất đột biến: 0.01 - Số lần lặp (số thế hệ sinh ra): 10 Dĩ nhiên, tùy vào năng lực của thiết bị hay cấu hình máy tính, cũng như nhu cầu của người sử dụng… mà có thể chọn các tham số phù hợp. 5.2. Kết quả chương trình Đầu tiên chọn một danh sách các chứng khoán thuộc lĩnh vực tài chính (11 loại cổ phiếu) gồm: BMI, DIC, HDC, ITA, NTL, PVF, SSI, STB, TDH, VGP và VIC . 42 Với các tham số mặc định, kết quả chương trình sinh ra một tập hợp các danh mục A1, A2, A3, A4, A5 với các giá trị Độ lệch chuNn tương ứng như trong bảng 5.1 sau đây: Bảng 5.1. Kết quả chạy thử chương trình. Danh Mục Cổ phiếu Độ lệch chun (%) A1 HDC, TDH 7.14 A2 BMI, NTL, TDH 6.22 A3 BMI, TDH 6.09 A4 NTL, STB, TDH 6.2 A5 DIC, TDH, VGP 9.06 A6 BMI, HDC, NTL, TDH, VGP 9.81 5.3. Đối chiếu thực tế Để thử kiểm tra kết quả của chương trình, ta thực hiện một cuộc giả định đầu tư trong khoảng thời gian một tháng với số tiền là 100 triệu VNĐ (từ 02/01/2008 đến 01/02/2008) trên danh mục A6. Chúng ta giả định tỷ trọng là bình quân đối với mỗi loại cổ phiếu. Sở dĩ ta chọn A6, đơn giản vì số lượng cổ phiếu của nó là 5, điều này cũng khá hợp lý với tiêu chí đa dạng hóa danh mục đầu tư cũng như tham số mà chúng ta đã đặt ra từ đầu. Bảng 5.2 (ở trang sau) là giá đóng cửa của 5 loại cổ phiếu trong danh mục A6 vào cuối phiên giao dịch ngày 02/01/2008. 43 Bảng 5.2. Bảng giá đóng cửa của các cổ phiếu trong thực nghiệm phiên giao dịch 02/01/2008. Mã Cổ phiếu Giá đóng cửa BMI 77 HDC 103 NTL 144 TDH 140 VGP 46 Giả sử, chúng ta thực hiện việc đầu tư 100 triệu trên 5 loại cổ phiếu trên, tài sản chúng ta hiện có gồm (lưu ý, số lượng mua phải theo lô 10): Bàng 5.3. Thống kê tài sản sau khi thực hiện phiên giao dịch 02/01/2008. Mã Cổ phiếu Số lượng Giá mua Giá trị (ngàn đồng) BMI 260 77 20,020 HDC 190 103 19,570 NTL 140 144 20,160 TDH 140 140 19,600 VGP 430 46 19,780 Tổng giá trị CP 99, 130 Số dư tiền mặt 870 TỔNG 100,000 44 Sau một tháng, chúng ta sẽ tiến hành đánh giá cục diện đầu tư vào cuối phiên giao dịch ngày 01/02/2008 (như trong bảng 5.4 sau đây): Bàng 5.4. Thống kê giá trị tài sản phiên 01/02/2008 Mã Cổ phiếu Số lượng mua Giá đóng cửa Giá trị (ngàn VNĐ) BMI 260 75 19,500 HDC 190 92 17,480 NTL 140 150 21,000 TDH 140 140 19,600 VGP 430 42 18,060 Tổng giá trị CP 95,640 Tiền mặt 870 TỔNG 96,510 Chúng ta nhận thấy rằng tài sản của chúng ta hiện tại là 96,510,000 VNĐ, tức là giảm -3,49% so với số tiền đầu tư ban đầu. Kết quả -3.49% rõ ràng không làm chúng ta hài lòng, song xét trên khía cạnh đầu tư thì con số -3.49% là một con số rủi ro trong phạm vi cho phép mà nhà đầu tư có thể chấp nhận được. Chúng ta cũng để ý rằng, giai đoạn từ đầu năm 2008, thị trường Việt Nam sau những cơn “sốt” đang trên đà đi xuống. Vì vậy, nếu đem con số -3.49% so sánh với sự mất giá chung của toàn thị trường (được đánh giá bằng chỉ số VNIndex) giảm từ 921.07 xuống 859.62 điểm, tức là thay đổi -6.67%. Rõ ràng con số - 3.49% là dễ chấp nhận hơn trong bối cảnh đó. Ngoài ra, cũng phải kể đến, trong thực tế, khi có những biến động về giá, đặc biệt là khi có dấu hiệu thua lỗ, nhà đầu tư hoàn toàn có thể thực hiện các phương án cắt lỗ như thay đổi cơ cấu danh mục, thay đổi tỷ trọng đầu tư… nhằm đảm bảo sự ổn định chung của toàn danh mục. 45 CHƯƠNG 6. KẾT LUẬN CHUNG Từ những kết quả đạt được từ chương trình, cho thấy, việc ứng dụng thuật toán di truyền vào thiết lập danh mục đầu tư hiệu quả cho ra những kết quả khá khả quan. Danh mục mà chúng ta thu được (trong nhiều trường hợp) thường có xu hướng bao gồm những loại cổ phiếu blue-chips, tức là những loại cổ phiếu có mức vốn hóa lớn trên thị trường. Điều này hoàn toàn có thể lý giải được. Cụ thể, các loại cố phiếu này thường ít bị mất giá khi thị trường đi xuống, do đó, độ lệch chuNn của chúng thường thấp hơn các loại cổ phiếu thường (penny stocks). Tuy nhiên, trong trường hợp chúng ta muốn tìm kiếm những “cơ hội” từ sự kết hợp những loại cổ phiếu thường (bởi những cổ phiếu blue-chips thường khó mua do số dư bán thường rất thấp khi thị trường đi lên), chương trình cũng thực sự hữu ích khi giúp chọn ra những sự kết hợp tốt nhất có thể. Bằng lý thuyết và thực tiễn, chúng ta cũng công nhận rằng, danh mục đầu tư hiệu quả mà chúng ta xây dựng phụ thuộc rất nhiều vào mô hình phân phối rủi ro của mỗi tài sản trong danh mục. Chính vì vậy, việc đưa ra một sự ước lượng rủi ro cho từng loại tài sản trong danh mục là rất quan trọng. Trong nghiên cứu này, chúng ta đã đưa ra, và sử dụng mô hình rủi ro bằng phương pháp thống kê đơn giản. Tức là dựa trên giá đóng cửa trong quá khứ của các loại cổ phiếu. Điều này cũng được xem là hợp lý khi nó dựa trên một trong những giả định cơ bản của phân tích kỹ thuật, “con người có xu hướng tái mắc sai lầm cũ” hay “quá khứ sẽ tự lặp lại”. Chúng ta cũng thừa nhận rằng, thị trường chứng khoán Việt Nam cũng như thị trường thế giới, luôn phụ thuộc vào rất nhiều yếu tố kinh tế, văn hóa, chính trị… thậm chí là vào tâm lý của các nhà đầu tư. Do đó, để đưa ra một dự đoán chính xác về mức độ rủi ro là hoàn toàn khó khăn. Đó cũng thực sự là một khó khăn không nhỏ và đầy thử thách đối với việc ứng dụng các kỹ thuật, các mô hình dự đoán khi triển khai vào thị trường chứng khoán. Dĩ nhiên chúng ta hoàn toàn có thể “phó mặc” để những nhà đầu tư tự đánh giá mức độ rủi ro cho mỗi loại tài sản tùy vào khả năng đánh giá của họ. Sau đó, sử dụng 46 chương trình để thiết lập những danh mục hiệu quả phù hợp với thái độ chấp nhận rủi ro của mỗi cá nhân nhà đầu tư. Tuy nhiên, chúng ta kỳ vọng vào một sự mở rộng của đề tài này, cụ thể là việc xây dựng những mô hình dự đoán rủi ro mới. Bằng cách dựa vào chuỗi thời gian (time-series) kết hợp với các kỹ thuật Khai khoáng dữ liệu, từ đó có thể tìm kiếm những yếu tố thông tin phản ánh vào giá của các loại cổ phiếu tại thời điểm đó. Sau đó, sử dụng các mô hình rút trích luật như Bayes để đưa ra những dự đoán rủi ro. Một điểm khác biệt mà đề tài này đưa ra, đó là trong quá trình hiện thực mã chương trình nhằm ứng dụng thuật giải di truyền, phần phân tích và thiết kế đã cố gắng đưa ra một cấu trúc dữ liệu nói riêng, và kiến trúc hệ thống nói chung một cách khá phức tạp hơn việc ứng dụng đơn thuần. Điều này khiến cho việc thực thi giải thuật chậm hơn. Bù lại, việc triển khai, tái sử dụng và đăc biệt là mở rộng những thành phần đã có đối với những trường hơp khác, thậm chí là những ứng dụng trong lĩnh vực khác sẽ dễ dàng hơn, linh động hơn. Ứng dụng được phát triển trên sự tìm hiểu về bài toán thiết lập danh mục đầu tư chưa hoàn chỉnh. Mà thực sự là khó có thể hoàn chỉnh trong một thời gian ngắn, khi mà phải mò mẫm trong khối lượng kiến thức tài chính hoàn toàn mới, nhằm tìm kiếm những mô hình toán kinh tế, giúp giải quyết mục tiêu là ứng dụng công nghệ thông tin vào lĩnh vực tài chính. Thực tế là, trong suốt quá trình đó, cá nhân người thực hiện đề tài, luôn phải đối mặt với những luồng tư tưởng trái chiều từ nhiều học thuyết kinh tế, nhiều trường phái đối lập. Và thật sự khó khăn để tìm kiếm cho mình một mô hình đúng đắn. Đó là chưa kể vào việc đi vào vết xe đổ của nhiều tìm hiểu và nghiên cứu trước đó. Tuy nhiên, việc tìm hiểu về bài toán này mang lại nhiều kiến thức để tiếp cận và mở rộng những công cụ hỗ trợ việc đầu tư hiệu quả và hoàn thiện hơn. Đặc biệt là, hướng tới một mô hình dự đoán rủi ro đã đề cập ngay phía trên, cũng như đưa những yếu tố thông tin vào quản lý danh mục, nhằm hướng tới một công cụ hỗ trợ việc quản lý danh mục đầu tư năng động (Active Porfolio Management). 47 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Lại Hải Đăng, Lưu Trường Văn, Nguyễn Tấn Bình. Thuật giải di truyền (GAs) và ứng dụng trong quản lý xây dựng. Luận văn Tiến sĩ. Đại học Quốc gia TP.HCM. [2] TS. Phan Thị Bích Nguyệt (2006). Đầu tư Tài chính. Nhà xuất bản Thống kê. [3] TS. Nguyễn Văn Thuận (2003). Quản trị Tài chính. Nhà xuất bản Thống kê. [4] TS. Nguyễn Đình Thúc (2001). Lập trình Tiến hóa. Nhà xuất bản Giáo dục. [5] Tiếng Anh [6] Pegah Falinouss (2007). Stock Trend Prediction Using News Articles.Master Thesis. Lulea University of Technology. [7]

Các file đính kèm theo tài liệu này:

  • pdfỨng dụng thuật giải di truyền và lập danh mục đầu tư.pdf