Danh mục

Giải bài toán Markowitz: Tối ưu hóa danh mục đầu tư chứng khoán bằng VBA for Excel

Số trang: 18      Loại file: pdf      Dung lượng: 288.28 KB      Lượt xem: 13      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tham khảo tài liệu giải bài toán markowitz: tối ưu hóa danh mục đầu tư chứng khoán bằng vba for excel, tài chính - ngân hàng, đầu tư chứng khoán phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Giải bài toán Markowitz: Tối ưu hóa danh mục đầu tư chứng khoán bằng VBA for Excel Giải bài toán Markowitz: Tối ưu hóa danh mục đầu tư chứng khoán bằng VBA for Excel Tác giả: Nguyễn Văn ThắngHarry Markowitz đã mô hình hóa quá trình lựa chọn danh mục đầu tư (nhờđó đoạt giải Nobel kinh tế năm 1990) dưới dạng một bài toán quy hoạch phituyến (bài toán Markowitz). Mục tiêu của bài toán Markowitz là tìm các tỉtrọng của các chứng khoán trong danh mục đầu tư sao cho giảm tới mức tốithiểu phương sai (rủi ro) của danh mục mà đạt được một mức thu nhập đãđịnh. Giải liên tiếp bài toán với các mức thu nhập mục tiêu người ta xác địnhđược một tập hợp các danh mục đầu tư có hiệu quả. Từ đây nhà đầu tư sẽ lựachọn một danh mục nằm trong tập hợp này dựa trên quan điểm của mình vềviệc đánh đổi giữa thu nhập và rủi ro.TìmVới hệ ràng buộcTrong đó: Phương sai thu nhập của danh mục đầu tư Tỉ trọng của chứng khoán thứ i trong danh mục đầu tư gồm n chứng khoán; do thị trường chứng khoán nước ta chưa cho phép bán khống. (Nếu cho phép bán khống thì bài Xi toán được giải bằng phương pháp Lagrange và rủi ro của danh mục tối ưu còn giảm nhiều hơn, bài toán Markowitz kinh điển không có điều kiện này) Thu nhập kỳ vọng của chứng khoán ri thứ i Thu nhập dự tính của toàn bộ danh mục đầu tưTôi đã viết một chương trình nhỏ bằng VBA for Excel để giải bài toánMarkowitz. Qua tạp chí TGVT giới thiệu để các bạn cùng xem xét và sửa đổichương trình hiệu quả hơn.THUẬT TOÁNPhương pháp giải: Tham khảo phương pháp “Gradien” và “đơn hình” tronggiáo trình “Tối ưu hóa” – Nhà xuất bản khoa học kỹ thuật của PGS.TS BùiMinh Trí.Bước 1 : Tìm phương án đầu tiên xoBước 2 : Tính các đạo hàm riêng của f(x) tại xoBước 3 : Khởi tạo vector ma trận cho bài toán đơn hìnhBước 4 : Sử dụng thuật toán đơn hình hai pha để giải bài toán đơn hình đểtìm hướng di chuyển xkBước 5 : Kiểm tra điều kiện tối ưu của bài toán MarkowitzBước 6 : Nếu chưa tìm thấy lời giải, tính nhân tố l, tính xk+1, đặt xo=xk+1rồi quay trở lại bước 2.CHƯƠNG TRÌNHChương trình gồm 20hàm viết bằng VBA forExcel được tóm tắt trongbảng bên dưới. Bạn đọccó thể tải file “Solutionfor Markowitz.xls” tạiwebsite của TGVT đểxem chi tiết mã nguồn(mở Tools\Macro\VisualBasic Editor để xem). (dữ liệu trích từ trang web http://www.saga.vn/ Taichinh/Quihoach/Mohinhhoa_Dubao/5673.saga)HƯỚNG DẪN SỬDỤNGDữ liệuGiả sử chúng ta xem xét việc thiết lập danh mục đầu tư từ 5 mã chứng khoánvà có bảng dữ liệu về thu nhập từ tháng 12/2004 đến 7/2007 tại sheet Dulieuvùng B2:F33 như sau:Để thuận lợi cho việc tính toán ta định nghĩa các vùng dữ liệu bằng chọnInsert\Name\Define như sau:AGF=dulieu!$B2$B33; GIL=dulieu!$C2$C33; GMD=dulieu!$D2$D33;NKD=dulieu!$E2$E33; REE =dulieu!$F2$F33Thiết lập các tham sốTham số được thiết lập tại sheet thamso, như sau: Hàm/thủ tục Chức năng Tham số • Hàm lấy dữ • “Var” bảng dữ liệu liệu, tính phương về ma trận phương án khởi tạo, tạo sai; lập vector • ”R” bảng dữ liệu về 1. Function Sol(Var Gradien của vector thu nhập kỳ As Range, R As f(xo), gọi hàm vọng của các chứng Range, RConst As “donhinh” để tìm khoán, Double, idx As xk; tìm lamda l, • “Rconst” thu nhập Integer) As Double tính toán xk+1. mục tiêu của danh • Trả về tỷ trọng mục, tối ưu của chứng • “idx” số thứ tự của khoán thứ “idx” chứng khoán cần tính trong danh mục tỷ trọng • R() vector thu nhập • Thủ tục lập kỳ vọng của các phương án đầu2. Sub FirstSol(R() As chứng khoán tiên của bài toánDouble, X() As • X() vector trả về MarkowitDouble, RConst As của phương án (phương án nàyDouble) • Rconst thu nhập chỉ bao gồm 2 mục tiêu của chứng chứng khoán) khoán • X() vector phương án đang xét Xo • Thủ tục tính các3. Sub SetGradien(X() • Var() (mảng 2 đạo hàm riêngAs Double, Var() As chiều) ma trận hiệp của hàm f(x) rồiDouble, Gra() As phương sai các gán vào mảngDouble) chứng khoán Gra() • Gra() vector gradien của hàm f(x)4. Function • Hàm trả về • X() vector phươngLamda(X() As nhân tố lamda l án đang xét XoDouble, DX() As để từ đó chuyển • DX() là vector hiệuDouble, Var() As sang một phương của phương án Xk vàDouble) As Double án phân bổ chứng Xo khoán mới tốt • Var() ma trận hiệp hơn phương sai các chứng khoán ...

Tài liệu được xem nhiều: