Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 73 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
73
Dung lượng
7,94 MB
Nội dung
ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ Một thuật toán lựa chọn danh mục đầu tư trực tuyến sử dụng phương pháp phân nhóm xem xét chi phí giao dịch NGUYỄN VĂN KIÊN Kien.nv202266M@sis.hust.edu.vn Ngành Tốn Tin Giảng viên hướng dẫn: PGS.TS NGUYỄN THỊ THU THỦY Viện: Toán ứng dụng Tin học Hà Nội, tháng năm 2023 Chữ kí GVHD i BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC BÁCH KHOA HÀ NỘI Nguyễn Văn Kiên Một thuật toán lựa chọn danh mục đầu tư trực tuyến sử dụng phương pháp phân nhóm xem xét chi phí giao dịch Chuyên ngành: Toán Tin LUẬN VĂN THẠC SỸ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS NGUYỄN THỊ THU THỦY HÀ NỘI–4/2023 ii Lời cam đoan Tôi xin cam đoan nội dung trình bày luận văn trung thực Tôi xin cam đoan giúp đỡ cho việc thực luận văn cảm ơn thơng tin trích dẫn luận văn rõ nguồn gốc Hà Nội, ngày 08 tháng 04 năm 2023 Học viên Nguyễn Văn Kiên Xác nhận Viện nghiên cứu Xác nhận người hướng dẫn khoa học PGS.TS NGUYỄN THỊ THU THỦY iii Lời cảm ơn Kính gửi Nguyễn Thị Thu Thủy, Em xin gửi lời cảm ơn chân thành đến hướng dẫn nhiệt tình tâm huyết q trình em thực luận văn Viện Toán ứng dụng Tin học - Đại học Bách Khoa Hà Nội Cô sẵn sàng trợ giúp giải đáp thắc mắc em suốt q trình nghiên cứu, giúp em có cách tiếp cận khoa học với đề tài Cơ giúp em xác định vấn đề nghiên cứu, tìm kiếm tài liệu đưa phương pháp nghiên cứu hỗ trợ em trình viết chỉnh sửa thảo Qua hướng dẫn cô, em học nhiều kinh nghiệm quý báu không nghiên cứu khoa học mà cách quản lý tổ chức thời gian hợp lý, hiệu Em tin kiến thức kinh nghiệm tảng để em phát triển tương lai Một lần nữa, em xin bày tỏ lòng biết ơn chân thành đế hướng dẫn tận tình cảm hứng truyền cho em suốt q trình nghiên cứu viết luận văn Em chúc Cô khỏe mạnh thành cơng q trình giảng dạy! Em xin phép gửi tặng Cơ thơ ngắn, gói gém chút tình cảm em dành cho Cơ nhé: Cơ Thủy ơi, người thầy tuyệt vời Nhiệt tình hướng dẫn, tâm huyết truyền đời Khoa học, kiến thức cảm xúc Cô nguồn động lực cho bước chân trẻ trung Bàn tay cô vẽ đường nghiên cứu Cùng học trị bước qua khó khăn thử thách iv Một trí tuệ đầy mơ ước, ngày đêm cần cù Sáng tạo đưa đến tương lai rạng rỡ Cơ Thủy ơi, em biết cảm ơn Vì hi sinh giáo dục Nói lời cảm ơn khơng đủ cao vọng Nhưng lịng học trị cảm kích Cơ Thủy ơi, người Thầy dạy tận tình Hướng dẫn em vượt qua khó khăn Khiến em tin tưởng vào khả Và trưởng thành bàn tay tâm huyết Cô Cô nguồn cảm hứng đưa em đến Với tình yêu giáo dục mãnh liệt tim Cô dạy em không kiến thức mà cách sống Cùng với giá trị vơ giá khơng thể tìm thấy nơi Bao nhiêu lần em gặp khó khăn, bế tác, Cô bên cạnh, động viên em tiếp tục Và em đạt mục tiêu, niềm vui tràn ngập Cô người em muốn chia sẻ Cô Thủy ơi, học cô Sẽ em suốt đời Cảm ơn dạy em Một giảng viên tuyệt vời, gương sáng lòng em! Học viên Nguyễn Văn Kiên v Mục lục Trang phụ bìa i Lời cam đoan ii Lời cảm ơn iii Mục lục vi Danh mục ký hiệu, chữ viết tắt Danh sách bảng Mở đầu Chương Lựa chọn danh mục trực tuyến nguyên tắc đối sánh mẫu 1.1 Lựa chọn danh mục trực tuyến 1.1.1 1.1.2 Lựa chọn danh mục trực tuyến gì? Nguyên lý lý thuyết lựa chọn danh mục 1.1.3 Tầm quan trọng lựa chọn danh mục 10 1.1.4 Cách tiếp cận để xây dựng thuật toán 11 1.2 Nguyên tắc đối sánh mẫu 13 1.2.1 Mục đích 13 1.2.2 Kỹ thuật chọn mẫu 14 vi 1.2.3 1.2.4 Kỹ thuật tối ưu danh mục đầu tư 15 Một vài kết hợp 17 Chương Thuật toán lựa chọn danh mục đầu tư trực tuyến 19 2.1 Bài toán lựa chọn danh mục đầu tư 19 2.2 Thuật toán lựa chọn danh mục đầu tư 22 2.2.1 Một số giả thiết 22 2.2.2 2.3 Mô tả thuật toán 25 Giải thích thủ tục thuật toán sơ đồ khối 26 2.3.1 2.3.2 Giải thích thủ tục thuật tốn 26 Sơ đồ khối 32 Chương Kết thực nghiệm đánh giá hiệu suất 36 3.1 Mô tả liệu 36 3.2 3.3 Xử lý liệu 40 Thực chương trình 40 3.4 Tiêu chí đánh giá 42 3.5 3.6 Tham số thuật toán 48 Hiệu suất thuật toán 48 3.6.1 Hiệu suất thuật toán chạy Tập liệu 50 3.6.2 Hiệu suất thuật toán chạy Tập liệu 51 Kết luận 53 Tài liệu tham khảo 56 Phụ lục 66 Danh mục ký hiệu, chữ viết tắt OLP S Online Portfolio Selection: Lựa chọn danh mục đầu tư trực tuyến GS Goldman Sachs: Cổ phiếu P AMR Passive-aggressive mean reversion: Đảo ngược trung OLMAR bình tích cực thụ động Online moving average reversion: Đảo ngược trung bình di chuyển trực tuyến Danh sách bảng 1.1 Các thuật toán đối sánh mẫu 18 3.1 3.2 Bảng danh mục mã chứng khoán Bất động sản 38 Bảng danh mục mã chứng khoán ngành Ngân hàng 39 3.3 Kết triển khai thuật toán Tập liệu 50 3.4 Kết triển khai thuật toán Tập liệu 52 Mở đầu Trong tài chính, hầu hết hướng tiếp cận đầu tư phân loại thành phân tích phân tích kỹ thuật Phân tích nhằm dự đoán lợi nhuận kỳ vọng cổ phiếu việc đo lường giá trị nội dựa yếu tố kinh tế, tài đo lường chất lượng, chẳng hạn báo cáo tài chính, báo cáo thường niên, tin tức trị, tin tức thị trường v.v Thay vào việc đo lường giá trị nội cổ phiếu, phân tích kỹ thuật lại tiếp cận theo hướng đặt niềm tin vào thể khứ cổ phiếu thị trường số đo lường hiệu cho tương lai chúng, thường áp dụng biểu đồ, số kỹ thuật công cụ khác để xác định đối tác (partern) mà giúp cho việc dự đoán giá cổ phiếu tương lai gợi ý hành động cho tương lai Ngày nay, tổ chức tài bao gồm quỹ tương hỗ, quỹ hưu trí nhà đầu tư cá nhân có xu hướng đầu tư vào thị trường tài hình thành danh mục đầu tư để tăng vốn họ Để làm điều này, họ thường áp dụng phân tích kỹ thuật phân tích công cụ khác để tìm kiếm hội đầu tư sinh lời Những phân tích thường thực thủ cơng cho cổ phiếu đó, hội đầu tư phát chậm Các nhà phân tích tính tốn giá trị nội cổ phiếu dựa báo cáo tài tỷ lệ so sánh giá trị tính tốn với giá cổ phiếu theo đó, định mua bán cổ phiếu Tuy nhiên, nhà 52 Tiêu chí đánh giá KMNLOG KMDLOG SPCLOG HRCLOG 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 Tỉ lệ Calmar 6.9853 3.2585 5.1638 4.5858 Hệ số trung bình chuẩn hóa 10.2545 9.6895 9.6895 10.3585 85.4 s 213.65 s 736.82 s 73.57 s 1.7059 % 1.6694 % 1.6785 % 1.6258 % Tổng lợi nhuận tích lũy (S n ) Thời gian chạy thuật toán ngày MAPE Bảng 3.4: Kết triển khai thuật tốn Tập liệu có hiệu suất tốt số thuật toán đề xuất tập liệu 53 Kết luận Luận văn đạt mục tiêu đề Trình bày thuật tốn lựa chọn danh mục đầu tư trực tuyến dựa nguyên tắc đối sánh mẫu mà đưa định danh mục đầu tư tối ưu thời kỳ cập nhật danh mục đầu tư tối ưu bắt đầu thời kỳ Áp dụng thuật tốn trình bày vào liệu danh mục đầu tư chứng khoán bất động sản Việt Nam Thực hành nghiêm túc làm việc sáng tạo, tỉ mỉ, cầu toàn, độc lập tạo sản phẩm chất lượng Luận văn Kết luận văn Luận văn phân tích chi tiết thuật toán lựa chọn danh mục đầu tư trực tuyến theo nguyên tắc đối sánh mẫu [15] đồng thời đưa thử nghiệm đánh giá hiệu suất thuật tốn Cụ thể: Phân tích hai bước thuật toán chọn mẫu tối ưu hóa nhằm xác định danh mục đầu tư tối ưu chu kỳ Phân tích liệu đầu vào, xử lý liệu, lập trình thuật toán cho liệu ngành chứng khoán bất động sản ngành Ngân hàng Việt Nam Đánh giá ý nghĩa kết chương trình liên hệ ứng dụng sở công tác 54 Định hướng nghiên cứu tương lai - Bộ liệu: Thu thập thêm liệu từ trang web đầu tư danh mục trực tuyến, với thu thập thêm thuộc tính như: giá mua mà người mua kì vọng, giá bán mà người bán kỳ vọng, mã chứng khoán mà người chơi quan tâm, mã chứng khoản theo danh mục, mã chứng khoán mà kiểm soát thống liệu người mua người bán, liệu đầy đủ thông tin xác Ngồi ra, cần tăng cường liệu nhiều danh mục đầu tư khác Đưa phương pháp để tận dụng thuộc tính mơ tả kỳ vọng nhà đầu tư - Thuật tốn: Phát triển thuật tốn quản lý rủi ro cách mà không ảnh hưởng hữu hình đến tổng lợi nhuận hấp dẫn Ngồi ra, tính khoản đưa vào mơ hình để làm cho thuật tốn trở nên thực tế Cũng xem xét chi phí giao dịch theo cách thực tế cách giảm bớt giả định đơn giản hóa thực chi phí giao dịch - Mơ hình Nghiên cứu thêm thuật toán lựa chọn danh mục đầu tư sau để cải thiện kết dự báo tốt Mua giữ (Buy-and-Hold) Mua nắm giữ tốt (Buy-and-Hold best) Danh mục đầu tư tái cân liên tục (Constant Rebalanced Portfolio) Danh mục đầu tư tái cân liên tục tốt (Best Constant Rebalanced Portfolio) Danh mục đầu tư phổ quát (Bìa 1991) (Universal Portfolio (Cover 1991)) Gradient hàm mũ (Helmbold et al 1998) (Exponential Gradient) Danh mục đầu tư tái cân liên tục liên tiếp (Gaivoronski Stella 2000) (Successive Constant Rebalanced Portfolio) 55 Anticor (Borodin, El-Yaniv, Gogan 2004) Đả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ố niềm tin (Li et al 2013) (Confidence Weighted Mean Reversion) 11 Thời gian biến động (Kirby Ostdiek 2012) (Volatility Timing) 56 Tài liệu tham khảo Tiếng Việt [1] https://www.tcbs.com.vn/home [2] V.H Tiệp, “Machine Learning nâng cao”, Kỹ thuật tính MAPE, 3(2), pp 102-157, 2020 Tiếng Anh [3] Abdi, M Najafi, “Online Portfolio Selection Using Spectral Pattern Matching”, Financial Engineering and Portfolio Management, 9(34), pp 175-192, 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”, 3(6), pp 213-235, 2004 [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 57 [8] Cover, T., Ordentlich Universal portfolios with short sales and margin, IEEE International Symposium on Information Theory - Proceedings, 174, 1998 https://doi.org/10.1109/ISIT.1998.708770 [9] Gyorfi, L., Lugosi, G., Udina, “Nonparametric kernel-based sequential investment 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 Applied 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, 2(3), pp 185-189, 1956 [15] Kimura, “Literature review”, Machine learning techniques applied to financial market prediction R Expert Systems With Applications, 124, pp 226251, 2020 [16] Majid Khedmati, Pejman Azin, “An online portfolio selection algorithm using clustering approaches and considering transaction costs”, 159, 30 November 2020, 1135462020 58 [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 nonparametric learning approach for portfolio selection” ACM Transactions on Intelligent Systems and Technology, 2(3), pp 1-29, 2011 [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, 7(1), pp 1-38, 2013 [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 Combining Experts”, Advice Computational Economics, 50, pp 141-159, 2017 59 Phụ lục Mã nguồn lấy liệu từ web Techcom Securities Thực lấy liệu từ Techcom Securities theo thư viện Vnstock theo source code sau : im por t os im por t yam l im por t nu mpy as np from st ock im por t * from lo gur u i mpo rt l ogg er 10 11 cla ss VN St oc kD at as et ( o bje ct ) : def _ _i nit ( self , st oc k_ co de _f il e : str , s ta rt_ da te : str , e nd_ da te : str ) : if not os pat h e xis ts ( st oc k_ co de _f il e ) : 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 " ) 12 13 14 wi th op en ( s to ck_ cod e_ fil e , ’ r ’ ) as f : self s to ck _c ode s = y aml sa fe _lo ad (f ) 15 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 18 19 def g et _da ta ( se lf ) : 20 dt = None 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 60 26 27 r etu rn dt 28 29 30 if _ _n ame == " _ _ma in " : 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 }" ) 2022 -1 -3 ") 34 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 bước thuật toán im por t nu mpy as np from tqd m im por t tqd m from lo gur u i mpo rt l ogg er from sc ipy o pti miz e i mpo rt mi ni miz e from sk le arn m etr ic s im por t s il ho ue tt e_ sc or e 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 from cl us ter im por t KMea ns , KMe doids , Sp ect lC lus te ri ng , H ie r ar ch ic al C lu st er in g ht s :// www ov erl ea f com / p roj ect /6 f6 c5 5a a3 51 7b f9 bf 13 8c c 10 11 12 def o bj ect iv e (x , C , W , b_ ad j_p re v ) : 13 sum = 14 TC = np abs ( b _ad j_ pr ev - x ) * 01 15 16 for i in ran ge ( C sha pe [0 ]) : 17 t = W [i ] * np log ( x * (1 - TC ) ) @ C [i ] 18 sum += np sum ( t ) 19 20 re tur n -1 * sum 21 22 23 def _ ob jec ti ve (x , C , W , b _a dj _pr ev ) : 24 t = ( np l og (x * (1 - np abs ( b _ad j_ pr ev - x ) * 0.0 1) ) @ C T ) @ W 25 re tur n t 61 26 27 28 29 def c on st in t_1 ( b) : re tur n np sum ( b ) - 30 31 32 33 def c on st in t_2 (b , l ) : re tur n b - l 34 35 36 37 def c on st in t_3 (b , u ) : re tur n u - b 38 39 40 def i nit _x0 ( size , l ow er _bo un d =0.01 , up pe r_ bo un d =0 99 ) : 41 # ge ne rat e r and om ve cto r wit h Di ri ch let d is tr ib ut io n and l owe r bo und 0.01 , u pper bo und 42 x0 = np r and om rand ( si ze ) 43 x0 = x0 / np s um ( x0 ) 44 x0 = np cl ip ( x0 , low er_ bou nd , up pe r_ bo un d ) 45 x0 = x0 / np s um ( x0 ) 46 re tur n x0 0.9 47 48 49 def so lve (C , W , b_a dj_ prev , lo we r_ bo und =0.0 001 , up pe r_ bo und =0 99 99 ) : 50 # de fin e bo un ds and co ns tr nt s 51 bo und s = [(0 , 1) fo r _ in nge (C s hap e [ 1]) ] 52 c on st in t_ ar gs _1 = () 53 c on st in t_ ar gs _2 = ( low er_ bou nd ,) # lower - bou nd 54 c on st in t_ ar gs _3 = ( upp er_ bou nd ,) # upper - bou nd # sum of we igh ts = 55 56 c on st rai nt s = [ 57 { ’t ype ’ : ’ eq ’ , ’ fun ’ : co nst rai nt_ , ’ ar gs ’ : c on s tr nt _a rg s_ } , 58 { ’t ype ’ : ’ in eq ’ , ’ fun ’ : c ons tra int _2 , ’ args ’ : c on st in t_ ar gs _2 } , { ’t ype ’ : ’ in eq ’ , ’ fun ’ : c ons tra int _3 , ’ args ’ : c on st in t_ ar gs _3 } 59 60 ] 61 62 x0 = ini t_ x0 ( C sha pe [1] , lo wer _bo und , u pp er _b oun d ) 63 as ser t abs ( np s um ( x0 ) - 1) < 1e -4 , " Sum of x0 is not 1" 64 as ser t np all ( x0 >= l ow er_ bo un d ) and np all ( x0 8] 152 153 # Ca lcu la te the c or re la ti on be twe en si mil ar sub - m at ric es and the re cen t sub - 154 ma tri x 155 c or rel at io ns = np zer os ( le n ( s im il ar _s ub _m a tr ix )) 156 f or i , s ub _m atr ix in en um era te ( s im i la r_ su b_ ma tr ix ) : 157 co rr el at ion = np co rr coe f ( tes t_v ect or , su b_ ma tr ix ) [0 , 1] 158 co rr el at io ns [i ] = co rr el ati on 159 160 # S tep 8: The pr ed ict io n of the ne xt day 161 if len ( s im il ar _s ub _m at ri x ) == 0: # If the m atr ix C is empty , it me ans that no si mil ar d ays ca n be f ound in 162 the p re vio us st eps if k == 0: 163 # If we a re on the fi rst da y of im pl em en ta ti on and test , the u ni for m 164 po rt fol io wil l be 165 # se lec te d as th e op tim al po rt fo lio 166 cu rr ent _B = np ones (( B sh ape [0] ,) ) / B s hape [ 0] else : 167 # If we a re not on the f irst day of i mp le me nt at io n and test , the 168 op tim al po rt fo lio of the # pr evi ou s day w ill be se le cte d as the o pt ima l p or tfo li o 169 cu rr ent _B = B_a dj [: , N + k - 1] 170 171 els e : 172 # No rma li ze the c or re la ti on an d ca lc ul ate the wei ght of each sub - mat rix 173 W = ( co rr el at io ns - np mi n ( c or rel at io ns ) ) / ( np max ( c orr el at io ns ) - np ( co rr el at io ns )) 174 # W = np arr ay ( c orr el at io ns / np su m ( c or re lat io ns ) ) 175 176 177 # Col le ct C - the da y aft er ea ch of the s imi la r sub - ma tri ce s C = t in _n ex t_ da ys [[ i for i , si mi la r_ sc or e in e num er at e ( si m il ar _b et w ee n_ su b_ m at ri ce s ) 178 if s im il ar_ sc or e > 8]] 65 179 180 # Sim il ar d ays are fo und an d t he p red ic ti on of the next day is p erf or me d 181 pri nt ( C) 182 pri nt ( W) 183 pri nt ( " pr ev _B " , B _adj [: , N + k - 1]) 184 cu rr ent _B = sol ve ( C , W , B _adj [: , N + k - ]) 185 pri nt ( " c ur ren t_ B " , c ur ren t_ B ) 186 # Ca lcu la te the r etu rn of the k - th p eri od u sing the cu rre nt op tim al po rt fol io 187 B [: , k ] 188 c ur re nt _t ot al _ re tu rn = 189 f or i in r ange (N - tw + k , N + k ): c ur re nt _t ot al _r et ur n *= np sum ( R [: , i] * B [: , i ]) 190 191 c ur re nt _t ot al _ re tu rn *= np su m (R [: , N + k ] * cu rre nt _B ) 192 193 if b e st _r et ru n_ pe r_ TW is None : 194 b es t_ re tr un _p er _T W = cu rr en t_ to ta l _r et ur n 195 196 bes t_B = c urr en t_B 197 b es t_ C , best_ W , t est _TW = C , W , tw els e : 198 if c u rr en t_ to ta l_ re tu r n > b es t_ re tr un _p er _ TW : 199 200 b es t_ re tr un _p er _T W = cu rr en t_ t ot al _r et ur n 201 be st_ B = cu rr en t_B 202 b es t_ C , best_ W , t est _TW = C , W , tw 203 204 # S tep 10: Ma kin g d eci si on on the op tim al po rt fo lio of the c urr ent p eri od 205 if k == 0: # If we a re on the fi rst da y of im pl em en ta ti on and test , the u ni for m 206 po rt fol io wil l be 207 # se lec te d as th e op tim al po rt fo lio 208 B [: , k ] = np o nes (( B s hape [0 ] ,) ) / B s hap e [0 ] 209 210 else : # F ina l B [: , k ] is the op ti mal p ort fo li o of th e k - th p eri od w ith the tw wi th the h ig hes t r etu rn 211 B [: , N + k ] = be st_ B 212 213 # S tep 11: 214 t ota l_ re tu rn [ N + k ] = b es t_ re tr un _p er _T W 215 B_a dj [: , N + k ] = ( bes t_B * R [: , N + k ]) / ( bes t_B @ R [: , N + k ]) 216 217 # S tep 12: C alc ul ate MA PE b etw ee n the p re di cte d r el ati ve pr ice a nd t he ac tua l re lat iv e pr ice 66 218 p re di ct ed _ re la ti ve _p r ic e = ( be st_ C T @ bes t_W ) / bes t_C s hape [1 ] 219 mape a ppe nd ( MAPE (R [: , N + k ], p re di ct e d_ re la ti ve _p r ic e ) ) 220 221 r etu rn t ota l_r etu rn , B , m ape 222 223 224 if _ _n ame == " _ _ma in " : 225 # Loa d data fro m csv fi le 226 dat a = np lo adt xt ( " d ata cs v " , de li mi ter = " ," ) 227 228 po = Po rt fo l io Op ti mi za ti on ( ma x_i te r =1000 , cl us te r_ al go ri th m = " K MNL OG " ) 229 roi , B , map e = po ex ecu te ( dat a ) 230 lo gge r i nfo ( " To tal re tur n at t he end of the p eri od : {} " f orm at ( roi [ -1]) ) 231 lo gge r i nfo ( " MA PE : {} " fo rma t ( np me an ( m ape ) )) 232 lo gge r i nfo ( " Do ne " )