Đồ án Ứ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 TRNDANH 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.3. Quá 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ẻ: netpro | Lượt xem: 1905 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Ứ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
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à

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