Trước hết, trong quá trình thực hiện bài tiểu luận về “PHÂN TÍCH SỰ PHỤ THUỘC CỦA TTCK VIỆT NAM ĐỐI VỚI SỰ BIẾN ĐỘNG CỦA TTCK NHẬT BẢN VỚI PHƯƠNG PHÁP COPULA CÓ ĐIỀU KIỆN,” em xin bày tỏ lòng biết ơn sâu sắc đến Th.S. Nguyễn Tuấn Duy, người đã tận tâm hướng dẫn và hỗ trợ em trong suốt quá trình nghiên cứu. Những góp ý và lời khuyên quý báu của thầy đã giúp em hoàn thiện và nâng cao chất lượng bài tiểu luận. Sự kiên nhẫn, nhiệt huyết và tinh thần sẵn sàng chia sẻ kiến thức của thầy đã tạo động lực lớn cho em vượt qua những khó khăn và thử thách trong quá trình nghiên cứu.
Em xin cam kết rằng tất cả số liệu và kết quả nghiên cứu trong khóa luận tốt nghiệp này đều là trung thực và chưa từng được sử dụng trong bất kỳ báo cáo nào khác. Trong quá trình thực hiện, tất cả các nguồn thông tin được trích dẫn trong khóa luận đã được xác định rõ ràng và tuân thủ nghiêm ngặt các quy định về công bố thông tin, đảm bảo tính minh bạch và chính xác của nghiên cứu. Nhóm em cam kết rằng mọi thông tin và dữ liệu đều được kiểm chứng và có nguồn gốc rõ ràng, phản ánh sự nỗ lực nghiêm túc và trung thực trong việc thực hiện khóa luận này.
Việc hiểu rõ cấu trúc phụ thuộc giữa các thị trường tài chính có vai trò quan trọng trong việc tối ưu hóa danh mục đầu tư và giảm thiểu rủi ro. Tuy nhiên, việc mô hình hóa mối liên hệ này gặp nhiều thách thức, đặc biệt khi các chuỗi lợi suất không tuân theo phân phối chuẩn. Do đó, các nghiên cứu trước đây về sự phụ thuộc giữa các thị trường chứng khoán (TTCK) có thể không chính xác. Bài tiểu luận này áp dụng phương pháp Copula có điều kiện (ARMA-GJR-GARCH Copula) để phân tích mức độ phụ thuộc giữa TTCK Việt Nam và TTCK Nhật Bản qua bốn giai đoạn: trước cú sốc kinh tế, hiệp định thương mại và đầu tư, COVID-19, và sự phục hồi kinh tế toàn cầu sau đại dịch.
Phương pháp Copula cho phép mô hình hóa sự phụ thuộc bất đối xứng và sự phụ thuộc đuôi khi một trong hai thị trường gặp phải cú sốc. Sử dụng dữ liệu lợi suất chứng khoán từ ngày 01/01/2018 đến ngày 31/07/2024, nghiên cứu này tìm thấy rằng mức độ phản ứng của TTCK Việt Nam đối với TTCK Nhật Bản thay đổi qua từng giai đoạn. Trước cú sốc kinh tế, mối liên hệ giữa hai thị trường tương đối ổn định, nhưng trong giai đoạn COVID-19 và sự kiện nổi bật, sự phụ thuộc này trở nên phức tạp hơn, với các dấu hiệu của sự phụ thuộc đuôi dưới. Kết quả nghiên cứu cung cấp những khuyến nghị quan trọng cho các nhà đầu tư và nhà quản lý chính sách trong việc giám sát và quản lý rủi ro liên quan đến sự biến động của TTCK quốc tế.
Mối quan hệ thương mại và đầu tư quốc tế ngày càng gia tăng, với sự gia tăng mạnh mẽ của vốn đầu tư trực tiếp nước ngoài (FDI) và đầu tư gián tiếp. Kết quả là, các nền kinh tế trở nên phụ thuộc lẫn nhau nhiều hơn, và các cú sốc tài chính từ một thị trường chứng khoán (TTCK) có thể nhanh chóng lan rộng đến các thị trường khác. Sự gia tăng tốc độ truyền tải thông tin tài chính nhờ công nghệ hiện đại đã làm cho các tác động từ cú sốc tài chính giữa các quốc gia trở nên nhanh chóng và mạnh mẽ hơn nhiều so với trước đây. Vì vậy, việc nghiên cứu mối quan hệ phụ thuộc giữa các TTCK là rất quan trọng để hiểu rõ hơn về cách mà các cú sốc tài chính có thể ảnh hưởng đến các thị trường khác và giúp các nhà đầu tư và các tổ chức tài chính xây dựng các chiến lược phòng ngừa rủi ro hiệu quả.
Mối quan hệ giữa Việt Nam và Nhật Bản đã trở thành một yếu tố quan trọng trong bức tranh kinh tế khu vực. Nhật Bản không chỉ là một trong những đối tác thương mại lớn nhất của Việt Nam mà còn là một trong những nhà đầu tư FDI hàng đầu. Theo số liệu từ Tổng cục Thống kê, Nhật Bản đứng thứ ba trong danh sách các quốc gia đầu tư trực tiếp vào Việt Nam, phản ánh sự gắn bó chặt chẽ giữa hai nền kinh tế. Các dự án đầu tư từ Nhật Bản không chỉ góp phần vào sự phát triển kinh tế của Việt Nam mà còn làm gia tăng mức độ phụ thuộc của thị trường chứng khoán Việt Nam vào những biến động của thị trường Nhật Bản. Điều này cho thấy rằng việc nghiên cứu sự phụ thuộc giữa TTCK Việt Nam và TTCK Nhật Bản có thể cung cấp những hiểu biết quý giá cho các nhà đầu tư và nhà hoạch định chính sách về cách các cú sốc tài chính tại Nhật Bản có thể ảnh hưởng đến thị trường Việt Nam.
Mặc dù việc mô hình hóa sự phụ thuộc giữa các chuỗi lợi suất chứng khoán có thể mang lại nhiều thông tin quý giá, nhưng điều này không phải là nhiệm vụ đơn giản. Các mô hình truyền thống, dựa vào giả định phân phối chuẩn và các chỉ số đơn giản như phương sai và hiệp phương sai, thường không phản ánh chính xác sự phụ thuộc phi tuyến và các đặc điểm phân phối bất thường của chuỗi lợi suất tài chính. Đặc biệt, các mô hình đa biến chuẩn có thể không phù hợp khi các chuỗi lợi suất không tuân theo phân phối chuẩn, mà có thể có các đặc điểm như phân phối lệch hoặc phân phối có đuôi dài. Để giải quyết vấn đề này, nhiều nghiên cứu gần đây đã áp dụng mô hình phương sai sai số thay đổi có điều kiện tự hồi quy tổng quát (GARCH) đa biến, tuy nhiên, các mô hình này vẫn gặp khó khăn trong việc mô tả chính xác sự phụ thuộc trong các tình huống biến động mạnh.
Phương pháp copula, dựa trên định lý Sklar (1959), đã nổi lên như một công cụ hiệu quả trong việc phân tích cấu trúc phụ thuộc giữa các thị trường chứng khoán. Copula cho phép tách phân phối chung khỏi biên độ của nó và nắm bắt được tính phi tuyến tính trong sự phụ thuộc giữa các tài sản tài chính. Các nghiên cứu như của Rockinger & Jondeau (2001), Yang & cộng sự (2015), Nguyen & Thuy (2016) và Nguyen & cộng sự (2017) đã áp dụng copula không điều kiện, nhưng phương pháp này không xem xét sự thay đổi theo thời gian của các chuỗi lợi suất. Để khắc phục điều này, copula có điều kiện, cụ thể là GARCH-copula, đã được áp dụng trong các nghiên cứu của Patton (2006), Jondeau & Rockinger (2006). GARCH-copula cung cấp khả năng mô tả cấu trúc phụ thuộc đối xứng và bất đối xứng, sự phụ thuộc đuôi và sự biến động theo thời gian, từ đó phản ánh chính xác hơn các hiệu ứng đòn bẩy trong các tình huống thị trường biến động mạnh.
Tại Việt Nam, sự gia tăng kim ngạch xuất khẩu và vốn FDI cho thấy nền kinh tế quốc gia này đang ngày càng hội nhập sâu rộng với nền kinh tế toàn cầu. Theo Ngân hàng Thế giới, giai đoạn 2015-2021, Việt Nam luôn nằm trong top 3 quốc gia thu hút vốn đầu tư FDI nhiều nhất khu vực ASEAN, điều này phần nào phản ánh mức độ phụ thuộc của thị trường Việt Nam vào các thị trường quốc tế. Việc nghiên cứu mối quan hệ phụ thuộc giữa TTCK Việt Nam và các TTCK quốc tế, đặc biệt là TTCK Nhật Bản, sẽ cung cấp thông tin hữu ích cho các nhà đầu tư và nhà hoạch định chính sách trong việc xây dựng chiến lược phòng ngừa rủi ro và định giá tài sản, đặc biệt trong bối cảnh các cú sốc tài chính lớn như khủng hoảng tài chính toàn cầu, dịch Covid-19, và xung đột quốc tế.
Do đó, bài tiểu luận này tập trung vào “Phân tích sự phụ thuộc của TTCK Việt Nam đối với sự biến động của TTCK Nhật Bản với phương pháp Copula có điều kiện”. Việc chọn TTCK Nhật Bản là do nước này là một trong những đối tác quan trọng về đầu tư và thương mại với Việt Nam, điều này tạo ra mối liên hệ chặt chẽ giữa hai thị trường. Phương pháp copula có điều kiện sẽ được áp dụng để đánh giá mức độ phụ thuộc và sự lan tỏa của các cú sốc tài chính giữa hai thị trường chứng khoán này.
Khám phá và đánh giá cách thức mà biến động trên thị trường chứng khoán Nhật Bản tác động đến thị trường chứng khoán Việt Nam giai đoạn 2018-2024, bằng việc áp dụng phương pháp copula có điều kiện, để cung cấp cái nhìn sâu sắc về mối liên hệ và ảnh hưởng giữa hai thị trường. Mục tiêu là làm rõ các cơ chế truyền dẫn rủi ro và đưa ra các khuyến nghị chiến lược giúp cải thiện khả năng phòng ngừa rủi ro và quản lý danh mục đầu tư trong môi trường tài chính toàn cầu biến động.
Để đạt được mục tiêu chung, nghiên cứu sẽ tập trung vào các mục tiêu cụ thể sau:
Phân tích sự phụ thuộc giữa TTCK Việt Nam và TTCK Nhật Bản bằng cách xác định mức độ và hình thức của mối liên kết này, nhằm làm rõ cách TTCK Nhật Bản ảnh hưởng đến TTCK Việt Nam trong các điều kiện thị trường khác nhau.
Đánh giá mức độ tác động của các cú sốc từ TTCK Nhật Bản đến TTCK Việt Nam, đặc biệt trong các tình huống khủng hoảng tài chính và các sự kiện ngoại lệ, để hiểu rõ hơn về cách các cú sốc tài chính quốc tế lan truyền đến thị trường Việt Nam.
Xây dựng và đề xuất các chiến lược phòng ngừa rủi ro dựa trên kết quả phân tích, nhằm cung cấp hướng dẫn cho các nhà đầu tư và nhà quản lý trong việc tối ưu hóa danh mục đầu tư và giảm thiểu tác động tiêu cực từ biến động của TTCK Nhật Bản.
Đối tượng nghiên cứu của bài tiểu luận là chuỗi tỷ suất lợi nhuận của chỉ số thị trường chứng khoán Việt Nam (VNINDEX) và thị trường chứng khoán Nhật Bản (Nikkei 225)
Bài tiểu luận nghiên cứu mức độ phụ thuộc của TTCK Việt Nam khi TTCK Nhật Bản biến động
Phạm vi thời gian được sử dụng để phân tích cấu trúc phụ thuộc là trong giai đoạn 2018 - 7/2024, dữ liệu được thu thập là dữ liệu theo ngày nhằm đánh giá khách quan hơn.
Nghiên cứu này đóng góp vào lý thuyết tài chính và thực tiễn bằng cách sử dụng phương pháp copula có điều kiện để phân tích sự phụ thuộc giữa thị trường chứng khoán Việt Nam và các thị trường quốc tế, đặc biệt là thị trường chứng khoán Nhật Bản. Trong khi các phương pháp truyền thống như tương quan tuyến tính, tương quan có điều kiện, và lý thuyết giá trị cực trị có những hạn chế nhất định, phương pháp copula có điều kiện, cụ thể là GARCH-copula, mang lại những lợi ích đáng kể. Phương pháp copula có điều kiện giúp cải thiện độ chính xác trong việc mô hình hóa sự phụ thuộc phi tuyến và sự phụ thuộc đuôi, đồng thời phản ánh sự biến động theo thời gian, điều mà các phương pháp trước đó không thể thực hiện đầy đủ. Bằng cách này, nghiên cứu cung cấp cái nhìn sâu sắc hơn về cơ chế lây lan và sự phụ thuộc giữa các thị trường tài chính, đồng thời mở rộng khả năng áp dụng cho các loại tài sản tài chính khác như thị trường trái phiếu, vàng, tiền điện tử, và hàng hóa. Về mặt thực tiễn, kết quả nghiên cứu không chỉ giúp dự đoán mức độ biến động của thị trường chứng khoán Việt Nam dựa trên cú sốc từ các thị trường quốc tế, mà còn cung cấp thông tin hữu ích cho các nhà đầu tư và nhà quản lý danh mục trong việc tối ưu hóa chiến lược đầu tư và giảm thiểu rủi ro. Hơn nữa, những phát hiện từ nghiên cứu có thể hỗ trợ các nhà hoạch định chính sách trong việc phát triển các chính sách nhằm ổn định thị trường chứng khoán và bảo vệ nền kinh tế vĩ mô khỏi các tác động tiêu cực của các cú sốc tài chính toàn cầu.
Chương 1: Giới thiệu mở đầu luận văn bằng việc trình bày mục tiêu và tầm quan trọng của nghiên cứu “Phân tích sự phụ thuộc của TTCK Việt Nam đối với sự biến động của TTCK Nhật Bản với phương pháp copula có điều kiện.” Chương này cung cấp cái nhìn tổng quát về lý do chọn đề tài, vấn đề chính được giải quyết và ý nghĩa của việc ứng dụng phương pháp copula có điều kiện trong phân tích mối quan hệ giữa hai thị trường chứng khoán. Đồng thời, nó xác định mục tiêu nghiên cứu, phương pháp tiếp cận và cấu trúc của toàn bộ luận văn.
Chương 2: Cơ sở lý luận và tổng quan tài liệu tập trung vào việc xây dựng nền tảng lý luận cho nghiên cứu, bao gồm các khái niệm cơ bản và lý thuyết liên quan đến mối quan hệ giữa các thị trường chứng khoán và phương pháp copula. Chương này tổng hợp và phân tích các tài liệu và nghiên cứu trước đây về sự phụ thuộc giữa các thị trường chứng khoán, đặc biệt là giữa TTCK Việt Nam và TTCK Nhật Bản. Việc tổng quan tài liệu giúp nhóm em làm rõ các khoảng trống nghiên cứu và chuẩn bị nền tảng cho việc ứng dụng phương pháp copula trong nghiên cứu của mình.
Chương 3: Thiết kế nghiên cứu mô tả chi tiết cách thức thực hiện nghiên cứu, bao gồm phương pháp thu thập và xử lý dữ liệu, cùng các công cụ phân tích được sử dụng. Chương này giải thích cách nhóm em áp dụng phương pháp copula có điều kiện để phân tích sự phụ thuộc giữa TTCK Việt Nam và TTCK Nhật Bản. Đồng thời, chương cũng trình bày các giả thuyết nghiên cứu, mẫu dữ liệu và phương pháp phân tích định lượng được áp dụng.
Chương 4: Kết quả nghiên cứu trình bày kết quả phân tích sự phụ thuộc giữa TTCK Việt Nam và TTCK Nhật Bản bằng phương pháp copula có điều kiện. Chương này cung cấp số liệu, biểu đồ minh họa và phân tích các kết quả, so sánh với các giả thuyết nghiên cứu, đồng thời đưa ra nhận xét về mức độ và hình thức của sự phụ thuộc được phát hiện.
Chương 5: Kết luận và kiến nghị tổng kết những phát hiện chính của nghiên cứu, rút ra các kết luận từ kết quả phân tích và đưa ra các kiến nghị dựa trên kết quả nghiên cứu. Chương này bao gồm khuyến nghị cho các nhà đầu tư, quản lý tài chính và các nhà hoạch định chính sách về việc tận dụng sự phụ thuộc giữa các thị trường chứng khoán để đưa ra quyết định đầu tư hiệu quả hơn. Cuối cùng, chương này chỉ ra hạn chế của nghiên cứu và đề xuất các hướng nghiên cứu tiếp theo để tiếp tục mở rộng hiểu biết về mối quan hệ giữa các thị trường chứng khoán quốc tế.
Thị trường chứng khoán là một lĩnh vực tài chính phức tạp và đa dạng, với nhiều yếu tố lý thuyết và thực tiễn cần được hiểu rõ để có thể đưa ra các quyết định đầu tư chính xác và hiệu quả. Một trong những yếu tố quan trọng trong lý thuyết thị trường chứng khoán là các mô hình và lý thuyết về giá cổ phiếu, như mô hình định giá tài sản vốn (CAPM) và lý thuyết hiệu quả thị trường (EMH). CAPM cung cấp một cách tiếp cận để đánh giá rủi ro của một chứng khoán và xác định tỷ suất sinh lời kỳ vọng dựa trên rủi ro hệ thống và rủi ro không hệ thống. Lý thuyết hiệu quả thị trường (EMH) lại cho rằng giá cổ phiếu đã phản ánh đầy đủ tất cả các thông tin có sẵn, do đó không thể dự đoán được sự thay đổi giá trong tương lai dựa trên các thông tin hiện tại. Những lý thuyết này giúp các nhà đầu tư hiểu rõ hơn về cách giá cổ phiếu được hình thành và các yếu tố ảnh hưởng đến giá trị của chúng.
Bên cạnh lý thuyết về giá cổ phiếu, phân tích và dự báo thị trường chứng khoán là những công cụ thiết yếu trong việc ra quyết định đầu tư. Phân tích cơ bản tập trung vào việc đánh giá sức khỏe tài chính của các công ty thông qua các chỉ số tài chính như tỷ số giá trên lợi nhuận (P/E), tỷ suất lợi nhuận trên vốn chủ sở hữu (ROE), và tỷ lệ nợ trên vốn chủ sở hữu (D/E). Những chỉ số này cung cấp cái nhìn sâu sắc về khả năng sinh lợi, mức độ rủi ro tài chính và triển vọng tăng trưởng của các công ty. Phân tích kỹ thuật, ngược lại, dựa trên các dữ liệu giá và khối lượng giao dịch để dự đoán xu hướng giá trong tương lai. Các công cụ phân tích kỹ thuật như Moving Average, Bollinger Bands, và chỉ báo sức mạnh tương đối (RSI) giúp nhà đầu tư nhận diện các mẫu hình giá và xu hướng thị trường. Các phương pháp dự báo như ARIMA (Autoregressive Integrated Moving Average) và GARCH (Generalized Autoregressive Conditional Heteroskedasticity) cung cấp các mô hình thống kê để dự đoán các biến động của thị trường dựa trên dữ liệu lịch sử và các yếu tố tác động.
Cuối cùng, các yếu tố kinh tế vĩ mô có ảnh hưởng sâu rộng đến thị trường chứng khoán. Tăng trưởng GDP, lạm phát, và chính sách tiền tệ của các ngân hàng trung ương đều có thể tác động mạnh mẽ đến sự biến động của thị trường. Ví dụ, một mức lạm phát cao có thể dẫn đến việc tăng lãi suất, từ đó ảnh hưởng đến chi phí vốn và lợi nhuận của các công ty niêm yết trên thị trường chứng khoán. Tăng trưởng GDP mạnh mẽ thường dẫn đến tăng trưởng lợi nhuận của các doanh nghiệp và có thể đẩy giá cổ phiếu lên cao. Ngược lại, một nền kinh tế suy thoái có thể làm giảm doanh thu và lợi nhuận của các công ty, ảnh hưởng tiêu cực đến giá cổ phiếu. Hiểu rõ mối liên hệ giữa các yếu tố kinh tế vĩ mô và thị trường chứng khoán giúp các nhà đầu tư đưa ra những quyết định đầu tư chính xác và hiệu quả hơn, đồng thời điều chỉnh chiến lược đầu tư để phù hợp với các điều kiện kinh tế hiện tại.
Hiện nay, thị trường chứng khoán (TTCK) Việt Nam đang chứng kiến những biến động đáng kể, phản ánh sự tương tác giữa nhiều yếu tố kinh tế và chính sách điều hành. Các chỉ số chính như VN-Index trên Sở Giao dịch Chứng khoán TP.HCM (HOSE) và HNX-Index trên Sở Giao dịch Chứng khoán Hà Nội (HNX) đã trải qua những dao động mạnh mẽ trong nửa đầu năm 2024. VN-Index, đại diện cho các cổ phiếu lớn và trung bình, đã chứng kiến sự gia tăng và giảm sút đáng kể, phản ánh sự thay đổi trong tâm lý nhà đầu tư và các yếu tố kinh tế vĩ mô. Trong khi đó, HNX-Index, tập trung vào các công ty vừa và nhỏ, mặc dù cũng chứng kiến sự biến động, nhưng ở mức độ nhẹ hơn.
Thanh khoản của TTCK Việt Nam đã có sự gia tăng mạnh mẽ trong thời gian gần đây, điều này phản ánh sự tham gia ngày càng cao của các nhà đầu tư tổ chức và cá nhân. Các sản phẩm tài chính mới như chứng khoán phái sinh đã thu hút sự quan tâm đáng kể, đóng góp vào sự tăng trưởng của khối lượng giao dịch. Sự gia tăng này không chỉ đến từ việc các nhà đầu tư trong nước mà còn từ sự gia tăng đầu tư nước ngoài, điều này cho thấy sự mở rộng và phát triển của thị trường chứng khoán Việt Nam.
Tuy nhiên, thị trường cũng phải đối mặt với nhiều thách thức đáng kể. Biến động giá cả hàng hóa toàn cầu, sự thay đổi trong chính trị và kinh tế quốc tế có thể ảnh hưởng tiêu cực đến tâm lý và quyết định đầu tư. Chính sách tiền tệ của Ngân hàng Nhà nước Việt Nam cũng đóng vai trò quan trọng trong việc điều chỉnh lãi suất và tỷ giá. Những điều chỉnh này có thể tác động trực tiếp đến chi phí vốn của các doanh nghiệp niêm yết và lợi nhuận của họ, qua đó ảnh hưởng đến giá cổ phiếu trên thị trường.
Mặc dù vậy, TTCK Việt Nam vẫn thể hiện dấu hiệu phát triển tích cực. Sự gia tăng của các sản phẩm tài chính mới và sự gia tăng đầu tư từ cả trong và ngoài nước cho thấy tiềm năng tăng trưởng của thị trường. Các cơ hội phát triển này được củng cố bởi những cải thiện trong các chỉ số kinh tế vĩ mô và các chính sách hỗ trợ từ chính phủ. Tóm lại, mặc dù thị trường chứng khoán Việt Nam đang đối mặt với không ít thách thức, sự gia tăng hoạt động đầu tư và sự phát triển của các sản phẩm tài chính mới cho thấy triển vọng tích cực trong tương lai.
Biểu đồ VN-Index từ năm 2012 đến 2023 cho thấy xu hướng tăng dần từ năm
2012 đến 2018, sau đó dao động mạnh từ 2018 đến 2020. Từ 2020 đến đầu
2022, chỉ số tăng mạnh, đạt đỉnh gần 1500 điểm, rồi giảm xuống mức hiện
tại là 1035.91 điểm. Sự biến động gần đây cho thấy thị trường đang trải
qua những thay đổi lớn, với mức hỗ trợ quan trọng quanh 1000 điểm.
Thị trường chứng khoán Nhật Bản, nổi bật với chỉ số Nikkei 225, đóng vai trò quan trọng trong nền kinh tế toàn cầu và có ảnh hưởng đáng kể đến các thị trường tài chính quốc tế. Nikkei 225, bao gồm 225 công ty lớn nhất trên sàn giao dịch chứng khoán Tokyo (TSE), thường được coi là chỉ số chính phản ánh sức khỏe kinh tế của Nhật Bản. Thời gian gần đây, Nikkei 225 đã chứng kiến sự gia tăng đáng kể, nhờ vào sự phục hồi vững chắc của nền kinh tế Nhật Bản sau giai đoạn suy thoái và sự hỗ trợ tích cực từ các chính sách kinh tế của chính phủ. Điều này phản ánh sự khôi phục mạnh mẽ trong các lĩnh vực sản xuất và dịch vụ, cùng với sự gia tăng tiêu dùng và đầu tư trong nước.
Thị trường chứng khoán Nhật Bản đặc biệt nổi bật với sự tham gia mạnh mẽ của các nhà đầu tư tổ chức và quỹ đầu tư. Các quỹ hưu trí, quỹ đầu tư nước ngoài và các tổ chức tài chính lớn thường nắm giữ một phần lớn cổ phiếu niêm yết, tạo ra sự ổn định và thanh khoản cho thị trường. Thị trường cũng chứng kiến sự gia tăng trong việc sử dụng các công cụ tài chính phái sinh, cho phép các nhà đầu tư đa dạng hóa các chiến lược đầu tư và quản lý rủi ro hiệu quả hơn. Sự phát triển này không chỉ thúc đẩy tính cạnh tranh của thị trường mà còn nâng cao khả năng thu hút vốn đầu tư từ nước ngoài.
Tuy nhiên, TTCK Nhật Bản cũng đang đối mặt với một số thách thức quan trọng. Lạm phát toàn cầu và sự gia tăng giá hàng hóa có thể tạo áp lực lên chi phí hoạt động của các công ty Nhật Bản, làm giảm lợi nhuận và ảnh hưởng đến giá cổ phiếu. Hơn nữa, sự biến động trong chính sách tiền tệ toàn cầu, đặc biệt là từ các ngân hàng trung ương lớn như Cục Dự trữ Liên bang Mỹ (Fed), có thể ảnh hưởng đến xu hướng đầu tư và dòng vốn vào Nhật Bản. Dù vậy, chính phủ Nhật Bản đã triển khai các chính sách hỗ trợ kinh tế và cải cách cấu trúc nhằm thúc đẩy tăng trưởng và ổn định thị trường chứng khoán. Sự chú trọng vào đổi mới công nghệ và phát triển các ngành công nghiệp mới đang tạo ra triển vọng tích cực, giúp thị trường chứng khoán Nhật Bản tiếp tục phát triển bền vững trong tương lai.
Biểu đồ chỉ số Nikkei 225 (NI225) từ năm 1960 đến 2023 cho thấy sự tăng trưởng mạnh mẽ từ những năm 1980, đạt đỉnh cao nhất vào khoảng năm 1990 với mức gần 40,000 điểm. Sau đó, chỉ số giảm mạnh và dao động trong khoảng 10,000 đến 20,000 điểm từ năm 1990 đến 2010. Từ năm 2010 đến nay, chỉ số có xu hướng tăng trở lại, đặc biệt là từ năm 2020, đạt mức cao nhất mọi thời đại là 34,494.62 điểm. Sự biến động này phản ánh những thay đổi lớn trong nền kinh tế Nhật Bản qua các thập kỷ.
Sự tác động lẫn nhau giữa các thị trường chứng khoán quốc gia là một yếu tố quan trọng trong bối cảnh toàn cầu hóa tài chính. Các thông tin và sự kiện từ các nền kinh tế lớn thường có tác động sâu rộng đến các thị trường chứng khoán trên toàn thế giới. Ví dụ, những quyết định về chính sách tiền tệ của các ngân hàng trung ương lớn như Cục Dự trữ Liên bang Mỹ (Fed) hay Ngân hàng Trung ương Châu Âu (ECB) có thể gây ra phản ứng mạnh mẽ trên các sàn giao dịch chứng khoán quốc tế. Khi Fed thay đổi lãi suất, điều này có thể dẫn đến sự thay đổi trong chi phí vốn, tác động đến lợi nhuận của các công ty và thay đổi tâm lý nhà đầu tư. Các nhà đầu tư quốc tế, nhận thấy cơ hội hoặc rủi ro từ các động thái này, có thể điều chỉnh danh mục đầu tư của mình, từ đó ảnh hưởng đến giá cổ phiếu và chỉ số chứng khoán trên các thị trường khác. Sự lan tỏa này không chỉ phản ánh sự kết nối giữa các nền kinh tế, mà còn cho thấy tầm quan trọng của việc theo dõi và phân tích các sự kiện toàn cầu để dự đoán và quản lý rủi ro đầu tư.
Bên cạnh đó, mối liên hệ giữa các chỉ số chứng khoán lớn trên thế giới cũng thể hiện sự tương tác và ảnh hưởng qua lại giữa các thị trường. Các chỉ số như Dow Jones Industrial Average ở Mỹ, Nikkei 225 ở Nhật Bản, hay FTSE 100 ở Anh không chỉ phản ánh tình hình kinh tế của quốc gia mình mà còn ảnh hưởng đến các thị trường chứng khoán khác. Khi một chỉ số chứng khoán lớn gặp biến động mạnh, nó có thể tạo ra hiệu ứng domino trên các thị trường khác. Ví dụ, sự suy giảm mạnh mẽ của chỉ số Dow Jones có thể làm giảm niềm tin của nhà đầu tư toàn cầu và dẫn đến sự bán tháo cổ phiếu trên các thị trường khác. Thêm vào đó, sự thay đổi trong tỷ giá hối đoái và chính sách tiền tệ cũng đóng vai trò quan trọng trong việc điều chỉnh dòng vốn quốc tế và quyết định đầu tư. Khi tỷ giá hối đoái biến động, nó có thể ảnh hưởng đến chi phí và lợi nhuận của các công ty đa quốc gia, từ đó tác động đến các chỉ số chứng khoán. Mối liên kết này tạo ra một mạng lưới tương tác phức tạp, thể hiện sự phụ thuộc lẫn nhau giữa các thị trường chứng khoán trong hệ thống tài chính toàn cầu, đồng thời làm nổi bật sự cần thiết phải theo dõi và phân tích các yếu tố toàn cầu để đưa ra những quyết định đầu tư chính xác và kịp thời.
Copula là một công cụ toán học quan trọng được sử dụng để mô hình hóa sự phụ thuộc giữa các biến ngẫu nhiên. Trong thống kê, copula là một hàm liên kết các phân phối biên của các biến ngẫu nhiên để tạo ra một phân phối chung, cho phép phân tích mối quan hệ giữa các biến mà không cần phụ thuộc vào dạng phân phối cụ thể của chúng. Một nghiên cứu tiêu biểu của Patton (2006) đã chứng minh rằng copula có thể mô hình hóa mối quan hệ phức tạp giữa các tỷ giá hối đoái, cho thấy tính hữu dụng của copula trong tài chính. Lý thuyết Sklar, do Abe Sklar phát triển, cho thấy rằng bất kỳ hàm phân phối nhiều chiều nào cũng có thể được phân rã thành các hàm phân phối biên và một copula. Cụ thể, nếu H là hàm phân phối chung của các biến ngẫu nhiên X1, X2,…, Xn, với các hàm phân phối biên tương ứng F1, F2,…, Fn thì tồn tại một copula C sao cho: H(X1, X2,…, Xn) = C(F1 (X1), F2 (X2),…, Fn (Xn)) .Điều này cung cấp một cách tiếp cận linh hoạt để phân tích sự phụ thuộc giữa các biến mà không cần giả định các biến đó có phân phối giống nhau.
Một trong những copula đơn giản nhất là copula độc lập:
\[ C(u) = \prod_{j=1}^{d} u_j \]
Đó là hàm phân phối của một vector ngẫu nhiên U=(U1,…,Ud) với các thành phần U1,Ud độc lập và phân phối U(0,1). Để có cái nhìn rõ hơn ta nhìn vào biểu đồ về copula độc lập
library(copula)
d <- 2
ic <- indepCopula(dim = d)
wireframe2(ic, FUN = pCopula, col.4 = adjustcolor("black",alpha.f = 0.25), main = "Biểu đồ Wireframe của Copula Độc lập")
Biểu đồ trong hình ảnh mô tả về copula độc lập. Ở bên trên, biểu đồ wireframe thể hiện mối quan hệ giữa hai biến ngẫu nhiên độc lập, với trục x và y đại diện cho các biến u1 và u2, trong khi trục z thể hiện giá trị của hàm copula. Hình dạng của biểu đồ cho thấy rằng khi một trong hai biến tăng, giá trị của hàm copula không thay đổi, phản ánh tính độc lập. Ở bên dưới, biểu đồ contour thể hiện các đường đồng mức của hàm copula trong không gian 2D. Các đường đồng mức cho thấy các giá trị khác nhau của hàm copula cho các cặp giá trị u1 u2. Trong trường hợp của copula độc lập, các đường đồng mức sẽ là các đường thẳng song song, cho thấy rằng không có mối quan hệ giữa hai biến. Cả hai biểu đồ đều minh họa rõ ràng tính chất độc lập của các biến ngẫu nhiên trong copula độc lập.
Tiếp đến chúng ta xét copula C hoàn toàn liên tục. Copula C được coi là hoàn toàn liên tục nếu nó thừa nhận một mật độ xác suất𝑐tồn tại và có thể tích phân được. Điều này có nghĩa là chúng ta có thể tính toán xác suất của một biến ngẫu nhiên rơi vào một khoảng nào đó bằng cách tích phân mật độ copula trên khoảng đó. Trong phần mềm R, công cụ dCopula() giúp đánh giá mật độ của copula, và nếu hàm copula này có mật độ không âm trên toàn bộ miền, nó được gọi là d-tăng. Ví dụ, copula độc lập là một loại copula hoàn toàn liên tục với mật độ không đổi bằng 1, tương tự như phân phối đơn biến với mật độ không đổi trên đoạn (0,1).
Một khía cạnh quan trọng khác trong nghiên cứu copula là các họ copula tham số. Tương tự như các phân phối tham số trong thống kê đơn biến, các họ copula tham số như Frank copula có khả năng kiểm soát mức độ phụ thuộc giữa các biến ngẫu nhiên. Frank copula được tham số hóa bởi 𝜃, và giá trị của tham số này xác định mức độ và hướng của sự phụ thuộc. Khi 𝜃tăng, các biến ngẫu nhiên có xu hướng phụ thuộc dương, nghĩa là các giá trị nhỏ hoặc lớn của một biến có xu hướng đi cùng với các giá trị tương ứng của biến khác. Ngược lại, khi 𝜃giảm, sự phụ thuộc trở nên âm, nghĩa là giá trị nhỏ của một biến có xu hướng đi cùng với giá trị lớn của biến khác.
Tóm lại, copula là một công cụ mạnh mẽ trong mô hình hóa sự phụ thuộc giữa các biến ngẫu nhiên. Khả năng của copula trong việc biểu diễn sự phụ thuộc thông qua các tham số như 𝜃trong Frank copula cho phép chúng ta phân tích và hiểu rõ hơn về mối quan hệ giữa các biến. Các công cụ tính toán như dCopula() trong R giúp các nhà thống kê dễ dàng triển khai và áp dụng copula vào các bài toán thực tế, từ đó mang lại những kết quả chính xác và có giá trị trong nghiên cứu và ứng dụng. Dưới đây là một số biểu đồ hàm mật độ xác suất của Frank Copula:
d <- 2
theta <- -9
fc <- frankCopula(theta, dim = d)
wireframe2(fc, FUN = pCopula, draw.4.pCoplines = FALSE, main = "Biểu đồ Wireframe của Hàm Phân Phối Tích Lũy (CDF) của Frank Copula")
wireframe2(fc, FUN = dCopula, delta = 0.001, main = "Biểu đồ Wireframe của Hàm Mật Độ Xác Suất (PDF) của Frank Copula")
contourplot2(fc, FUN = pCopula, main = "Biểu đồ Contour của Hàm Phân Phối Tích Lũy (CDF) của Frank Copula")
contourplot2(fc, FUN = dCopula, n.grip = 72, lwd = 1/2, main = "Biểu đồ Contour của Hàm Mật Độ Xác Suất (PDF) của Frank Copula")
Bốn biểu đồ khác nhau, mỗi biểu đồ thể hiện một khía cạnh của hàm mật độ xác suất. Hai biểu đồ trên cùng là biểu đồ khung dây (wireframe) và biểu đồ đường đồng mức (contour plot) của hàm mật độ xác suất với d=2 và θ=−9. Biểu đồ khung dây (trên cùng bên trái) cho thấy một mô hình ba chiều của hàm mật độ xác suất, trong khi biểu đồ đường đồng mức (trên cùng bên phải) thể hiện các đường đồng mức của hàm mật độ này. Hai biểu đồ dưới cùng là các biểu đồ đường đồng mức của hàm mật độ xác suất với các giá trị khác nhau của θ. Biểu đồ dưới cùng bên trái thể hiện hàm mật độ xác suất với θ=0, trong khi biểu đồ dưới cùng bên phải thể hiện hàm mật độ xác suất với θ =−9.
set.seed(1946)
n <- 1000
U <- rCopula(n, copula = fc)
U0 <- rCopula(n, copula = setTheta(fc, value = 0 ))
U9 <- rCopula(n, copula = setTheta(fc, value = 9))
plot(U, xlab = quote(U[1]), ylab = quote(U[2]),main = "Biểu đồ phân tán của mẫu U với θ = -9")
plot(U0, xlab = quote(U[1]), ylab = quote(U[2]),main = "Biểu đồ phân tán của mẫu U0 với θ = 0 (copula độc lập)")
Ba biểu đồ phân tán (scatter plots) của 1000 quan sát độc lập của (U1,U2)∼CFθ với các giá trị khác nhau của θ. Biểu đồ trên cùng thể hiện các quan sát với θ=−9, biểu đồ ở giữa với θ=0, và biểu đồ dưới cùng với θ=9. Các biểu đồ này cho thấy sự phân bố của các điểm dữ liệu trong không gian hai chiều, với mỗi điểm đại diện cho một cặp giá trị (U1,U2). Sự khác biệt trong các giá trị của θ ảnh hưởng đến cách các điểm dữ liệu được phân bố, thể hiện sự thay đổi trong cấu trúc phụ thuộc giữa U1 và U2.
Copula cũng có thể được chia thành nhiều loại khác nhau, mỗi loại có những đặc điểm và ứng dụng riêng biệt, một số copula nổi bật có thể kể đến như:
Bao gồm Gaussian copula và t copula, là các công cụ quan trọng trong việc mô hình hóa sự phụ thuộc giữa các biến ngẫu nhiên với tính chất đối xứng, đặc biệt hữu ích trong các ứng dụng tài chính. Gaussian copula, dựa trên phân phối chuẩn đa biến, cho phép mô hình hóa mối quan hệ phụ thuộc đồng nhất và không thay đổi theo thời gian, rất phù hợp cho việc phân tích rủi ro đồng thời giữa các tài sản. Tuy nhiên, trong các tình huống khi sự phụ thuộc giữa các biến có thể trở nên cực đoan, t copula là lựa chọn hữu ích hơn vì nó cho phép sự phụ thuộc mạnh mẽ hơn tại các đuôi phân phối, điều quan trọng trong việc dự đoán các sự kiện hiếm gặp.
Nghiên cứu của Malevergne và Sornette (2003) đã áp dụng Gaussian copula để phân tích mối quan hệ giữa các cổ phiếu trên thị trường chứng khoán và chứng minh rằng copula có thể dự đoán rủi ro đồng thời một cách hiệu quả, cung cấp cái nhìn sâu sắc về mối quan hệ tài chính mà các mô hình truyền thống có thể bỏ qua.
png('nors.png')
scatter_plot(random_nor, '#AAAAAA')
dev.off()
nors <- rasterGrob(readPNG('nors.png'), interpolate = TRUE)
png('stds.png')
scatter_plot(random_std, '#AAAAAA')
dev.off()
stds <- rasterGrob(readPNG('stds.png'), interpolate = TRUE)
nor_per <- persp_plot(cop_nor, 'norp.png', '#AAAAAA')
std_per <- persp_plot(cop_std, 'stdp.png', '#FF9999')
legend <- legendGrob(
labels = c("Gauss", "Student"), pch = 15,
gp = gpar(col = c('#AAAAAA', '#FF9999'), fill = c('#AAAAAA', '#FF9999'))
)
grid.arrange(nors, nor_per, stds, std_per, legend, ncol = 3,
layout_matrix = rbind(c(1, 2, 5), c(3, 4, 5)),
widths = c(2, 2, 1),
top = textGrob("Biểu đồ phân tán và phối cảnh PDF của Copula họ Elip",
gp = gpar(fontsize = 15, font = 2))
)
Bao gồm các loại copula như Clayton, Gumbel, Frank và Joe, nổi bật với tính linh hoạt cao trong việc mô hình hóa các phụ thuộc không đối xứng. Chúng đặc biệt hữu ích trong các tình huống mà mối quan hệ giữa các biến ngẫu nhiên có thể thay đổi đáng kể, không tuân theo một mô hình đối xứng đơn giản. Clayton copula thường được sử dụng khi cần mô hình hóa sự phụ thuộc mạnh ở phần đuôi dưới của phân phối, trong khi Gumbel copula phù hợp cho việc mô hình hóa sự phụ thuộc mạnh ở phần đuôi trên. Frank copula, với tính đối xứng của nó, được áp dụng hiệu quả trong các tình huống phụ thuộc trung bình, và Joe copula hữu ích khi cần mô hình hóa sự phụ thuộc mạnh mẽ ở cả hai phần đuôi.
Nghiên cứu của Smith (2015) đã sử dụng Archimedean copula để mô hình hóa rủi ro trong lĩnh vực bảo hiểm, đặc biệt là trong việc dự báo các sự kiện hiếm gặp. Kết quả của nghiên cứu này đã chứng minh rằng Archimedean copula không chỉ cung cấp khả năng linh hoạt trong việc điều chỉnh các mức độ phụ thuộc khác nhau mà còn cho thấy hiệu quả vượt trội trong việc dự báo rủi ro, một yếu tố quan trọng trong quản lý rủi ro tài chính và bảo hiểm. Nhờ khả năng này, Archimedean copula đã trở thành một công cụ mạnh mẽ trong việc phân tích và dự báo các sự kiện tài chính có xác suất thấp nhưng có thể gây ra thiệt hại lớn, từ đó giúp các tổ chức tài chính và bảo hiểm chuẩn bị tốt hơn cho những tình huống bất ngờ.
set.seed(123)
cop_clay <- claytonCopula(param = 4, dim = 2)
random_clay <- rCopula(copula = cop_clay,n = 7600)
cop_gum <- gumbelCopula(param = 5, dim = 2)
random_gum <- rCopula(copula = cop_gum,n = 7600)
png('clays.png')
scatter_plot(random_clay,'#AAAAAA')
dev.off()
clays <- rasterGrob(readPNG('clays.png'), interpolate = TRUE)
png('gums.png')
scatter_plot(random_gum,'#FF9999')
dev.off()
gums <- rasterGrob(readPNG('gums.png'), interpolate = TRUE)
clayp <- persp_plot(cop_clay,'clayp.png','#AAAAAA')
gump <- persp_plot(cop_gum,'gump.png','#FF9999')
legend <- legendGrob(
labels = c("Clayton", "Gumbel"), pch = 15,
gp = gpar(col = c('#AAAAAA', '#FF9999'), fill = c('#AAAAAA', '#FF9999'))
)
grid.arrange(clays, clayp, gums, gump, legend, ncol = 3,
layout_matrix = rbind(c(1, 2, 5), c(3, 4, 5)),
widths = c(2, 2, 1),
top = textGrob("Biểu đồ phân tán và PDF của Copula Clayton và Gumbel",
gp = gpar(fontsize = 15, font = 2))
)
Là hai loại copula phổ biến trong họ Archimedean, nổi bật với khả năng mô hình hóa các trường hợp có phụ thuộc mạnh ở đuôi trái và đuôi phải tương ứng. Clayton copula, với tính năng mô hình hóa phụ thuộc mạnh ở đuôi trái, rất hữu ích trong việc phân tích các rủi ro liên quan đến các sự kiện tiêu cực mạnh mẽ nhưng ít xảy ra. Điều này làm cho Clayton copula trở thành một công cụ đắc lực trong lĩnh vực tài chính, nơi mà việc quản lý rủi ro tín dụng và các sự cố tài chính là vô cùng quan trọng. Nghiên cứu của Xie và Wu (2013) đã sử dụng Clayton copula để phân tích rủi ro tín dụng trong ngân hàng, minh chứng cho khả năng của nó trong việc dự đoán các tình huống rủi ro đồng thời và đưa ra các biện pháp phòng ngừa hiệu quả.
Trong khi đó, Gumbel copula được biết đến với khả năng mô hình hóa phụ thuộc mạnh ở đuôi phải, phù hợp cho các tình huống mà các sự kiện cực đoan ở phần đuôi trên của phân phối có tần suất xuất hiện cao hơn. Đây là đặc điểm quan trọng đối với các tổ chức tài chính và bảo hiểm khi phải đối mặt với những sự kiện có khả năng gây ra thiệt hại lớn, nhưng có xác suất xảy ra không quá cao. Sự linh hoạt của Gumbel copula trong việc xử lý các tình huống phụ thuộc không đối xứng giúp nó trở thành một công cụ mạnh mẽ trong việc dự đoán và quản lý rủi ro. Ví dụ, các mô hình dựa trên Gumbel copula có thể được sử dụng để đánh giá rủi ro liên quan đến các hiện tượng thiên tai, các biến động lớn trên thị trường chứng khoán, hoặc các sự cố tài chính bất ngờ khác. Cả Clayton và Gumbel copula đều đóng vai trò quan trọng trong việc cải thiện các chiến lược quản lý rủi ro và đảm bảo sự ổn định của các tổ chức tài chính trong những tình huống không chắc chắn.
set.seed(123)
cop_surgum <- VC2copula::surGumbelCopula(param = 5)
random_surgum <- rCopula(copula = cop_surgum,n = 7600)
cop_surclay <- VC2copula::surClaytonCopula(param = 4)
random_surclay <- rCopula(copula = cop_surclay,n = 7600)
png('surclays.png')
scatter_plot(random_surclay,'#AAAAAA')
dev.off()
surclays <- rasterGrob(readPNG('surclays.png'), interpolate = TRUE)
png('surgums.png')
scatter_plot(random_surgum,'#FF9999')
dev.off()
surgums <- rasterGrob(readPNG('surgums.png'), interpolate = TRUE)
surclayp <- persp_plot(cop_surclay, "surclayp.png","#AAAAAA")
surgump <- persp_plot(cop_surgum, "surgump.png","#FF9999")
legend <- legendGrob(labels = c("Survival Clayton","Survival Gumbel"), pch = 15,
gp = gpar(col = c('#AAAAAA','#FF9999'), fill = c('#AAAAAA','#FF9999' )))
grid.arrange(surclays, surclayp,surgums, surgump, legend, ncol = 3,
layout_matrix = rbind(c(1,2,5),c(3,4,5)),
widths = c(2,2,1),
top = textGrob("Biểu đồ phân tán và PDF của Copula Sur Clayton và Gumbel",
gp = gpar(fontsize = 15, font = 2))
)
Là các biến thể của Clayton và Gumbel copula, được thiết kế để mô hình hóa sự phụ thuộc với các đặc điểm cụ thể hơn, mang lại sự linh hoạt và độ chính xác cao trong việc phân tích dữ liệu phức tạp. Copula Frank đặc biệt hữu ích khi cần mô hình hóa các phụ thuộc có tính chất đối xứng và trung bình, thường xuất hiện trong các trường hợp mà các biến ngẫu nhiên có sự tương tác mạnh mẽ nhưng không cực đoan. Điều này làm cho Frank copula trở thành một công cụ hữu ích trong nhiều lĩnh vực nghiên cứu và ứng dụng thực tế, bao gồm cả tài chính, bảo hiểm và phân tích rủi ro.
Trong khi đó, Joe copula được biết đến với khả năng mô hình hóa sự phụ thuộc mạnh ở đuôi phải, tương tự như Gumbel copula, nhưng với một số đặc điểm khác biệt cho phép xử lý tốt hơn các tình huống phụ thuộc mạnh mẽ giữa các biến số. Joe copula thường được áp dụng trong các nghiên cứu yêu cầu sự chính xác cao về phụ thuộc ở đuôi, như trong phân tích rủi ro của các hiện tượng thiên tai hoặc các sự kiện tài chính bất thường.
Nghiên cứu của Genest và Favre (2007) đã ứng dụng cả Frank và Joe copula trong việc phân tích dữ liệu khí tượng học, cho thấy khả năng của các copula này trong việc mô hình hóa các hiện tượng tự nhiên phức tạp, nơi mà sự phụ thuộc giữa các biến số không chỉ mạnh mà còn mang tính chất không đối xứng. Điều này đặc biệt quan trọng trong việc dự báo và quản lý rủi ro khí hậu, nơi mà các sự kiện cực đoan như bão, lũ lụt hoặc hạn hán có thể gây ra những tác động nghiêm trọng đến môi trường và kinh tế. Các copula Frank và Joe đã chứng minh tính hiệu quả trong việc cung cấp các mô hình chính xác và đáng tin cậy cho các hiện tượng phức tạp này, góp phần vào việc cải thiện các chiến lược dự báo và giảm thiểu rủi ro.
set.seed(123)
cop_frank <- frankCopula(param = 9.2)
random_frank <- rCopula(copula = cop_frank,n = 7600)
cop_joe <- joeCopula(param = 3)
random_joe <- rCopula(copula = cop_joe,n = 7600)
png('franks.png')
scatter_plot(random_frank,'#AAAAAA')
dev.off()
franks <- rasterGrob(readPNG('franks.png'), interpolate = TRUE)
png('joes.png')
scatter_plot(random_joe,'#FF9999')
dev.off()
joes <- rasterGrob(readPNG('joes.png'), interpolate = TRUE)
frankp <- persp_plot(cop_frank, "frankp.png","#AAAAAA")
joep <- persp_plot(cop_joe, "joep.png","#FF9999")
legend <- legendGrob(labels = c("Franl","Joe"), pch = 15,
gp = gpar(col = c('#AAAAAA','#FF9999'), fill = c('#AAAAAA','#FF9999')))
grid.arrange(franks, frankp,joes, joep, legend, ncol = 3,
layout_matrix = rbind(c(1,2,5),c(3,4,5)),
widths = c(2,2,1),
top = textGrob("Biểu đồ phân tán và PDF của Copula Frank và Joe",
gp = gpar(fontsize = 15, font = 2))
)
Là hai thành viên quan trọng của họ BB (Bivariate), được thiết kế để mô hình hóa sự phụ thuộc phức tạp và đa dạng hơn so với các loại copula thông thường. BB1 copula, còn được gọi là Clayton-Gumbel copula, kết hợp các đặc điểm của cả Clayton và Gumbel copula, mang lại khả năng mô hình hóa sự phụ thuộc mạnh ở cả đuôi trái và đuôi phải. Điều này làm cho BB1 copula trở thành một công cụ mạnh mẽ trong việc phân tích rủi ro liên quan đến các sự kiện hiếm gặp hoặc cực đoan, thường xuất hiện trong các lĩnh vực như bảo hiểm và tài chính.
BB6 copula, một biến thể khác trong họ BB, cung cấp một cách tiếp cận khác để mô hình hóa sự phụ thuộc với các đặc điểm đặc biệt của nó. BB6 copula, còn gọi là Joe-Clayton copula, phù hợp cho các tình huống mà sự phụ thuộc mạnh mẽ ở các đuôi phân phối cần được xem xét kỹ lưỡng. Điều này đặc biệt hữu ích trong các nghiên cứu tài chính, nơi mà các cú sốc kinh tế hoặc các biến động thị trường có thể tạo ra những hiệu ứng lan truyền mạnh mẽ và không đối xứng giữa các tài sản hoặc danh mục đầu tư.
Nghiên cứu trong lĩnh vực bảo hiểm thường sử dụng copula BB1 và BB6 để phân tích các rủi ro phức tạp liên quan đến các sản phẩm bảo hiểm đa dạng. Ví dụ, các nghiên cứu về rủi ro tái bảo hiểm sử dụng các copula này để mô hình hóa sự phụ thuộc giữa các sự kiện thiên tai, như bão hoặc động đất, và tổn thất tài chính từ các hợp đồng bảo hiểm liên quan. Copula BB1 và BB6 cung cấp một công cụ hiệu quả để dự báo và quản lý các rủi ro này, giúp các công ty bảo hiểm phát triển các chiến lược định giá và phòng ngừa rủi ro hiệu quả hơn.
Trong tài chính, copula BB1 và BB6 thường được áp dụng để mô hình hóa sự phụ thuộc giữa các tài sản trong danh mục đầu tư, đặc biệt là trong các tình huống thị trường cực đoan. Các nghiên cứu về quản lý rủi ro tài chính sử dụng các copula này để đánh giá rủi ro liên quan đến các sản phẩm phái sinh, cổ phiếu, và trái phiếu, giúp các nhà đầu tư và quản lý quỹ đưa ra các quyết định đầu tư thông minh và giảm thiểu rủi ro tiềm ẩn. Copula BB1 và BB6 đã chứng minh tính hiệu quả trong việc cung cấp các mô hình phụ thuộc chính xác và đáng tin cậy, góp phần vào sự phát triển của các chiến lược đầu tư và quản lý rủi ro tiên tiến.
set.seed(123)
cop_bb1 <- VC2copula::BB1Copula(param = c(2,1.7))
random_bb1 <- rCopula(copula = cop_bb1,n = 7600)
cop_bb6 <- VC2copula::BB6Copula(param = c(2,4.5))
random_bb6 <- rCopula(copula = cop_bb6,n = 7600)
png('bb1s.png')
scatter_plot(random_bb1,'#AAAAAA')
dev.off()
bb1s <- rasterGrob(readPNG('bb1s.png'), interpolate = TRUE)
png('bb6s.png')
scatter_plot(random_bb6,'#FF9999')
dev.off()
bb6s <- rasterGrob(readPNG('bb6s.png'), interpolate = TRUE)
bb1p <- persp_plot(cop_bb1, "bb1p.png","#AAAAAA")
bb6p <- persp_plot(cop_bb6, "bb6p.png","#FF9999")
legend <- legendGrob(labels = c("BB1","BB6"), pch = 15,
gp = gpar(col = c('#AAAAAA','#FF9999'), fill = c('#AAAAAA','#FF9999')))
grid.arrange(bb1s, bb1p,bb6s, bb6p, legend, ncol = 3,
layout_matrix = rbind(c(1,2,5),c(3,4,5)),
widths = c(2,2,1),
top = textGrob("Biểu đồ phân tán và PDF của Copula BB1 và BB6",
gp = gpar(fontsize = 15, font = 2))
)
Là hai thành viên quan trọng khác trong họ BB, được thiết kế để xử lý các mối quan hệ phức tạp và không đối xứng giữa các biến ngẫu nhiên. BB7 copula, còn được gọi là Joe-Clayton copula, có khả năng mô hình hóa sự phụ thuộc mạnh ở đuôi phải và yếu hơn ở đuôi trái. Điều này làm cho BB7 copula đặc biệt hữu ích trong việc phân tích các sự kiện tài chính có tính bất đối xứng, như sự khác biệt giữa mức độ tăng trưởng và sụt giảm của thị trường chứng khoán.
BB8 copula, một biến thể khác trong họ BB, cung cấp một công cụ mạnh mẽ để mô hình hóa sự phụ thuộc phức tạp và đa chiều. BB8 copula có thể xử lý sự phụ thuộc không tuyến tính giữa các biến, giúp hiểu rõ hơn về mối quan hệ giữa các yếu tố thị trường có liên quan nhưng không thể biểu diễn bằng các mô hình tuyến tính đơn giản. Điều này đặc biệt hữu ích trong các nghiên cứu tài chính, nơi mà các yếu tố như lợi nhuận cổ phiếu, lãi suất, và biến động thị trường có thể có mối quan hệ phức tạp và không đồng nhất.
Các nghiên cứu như của Aas et al. (2009) đã áp dụng BB7 và BB8 copula để phân tích sự phụ thuộc đa chiều và không tuyến tính trong thị trường tài chính. Ví dụ, trong phân tích danh mục đầu tư, BB7 và BB8 copula có thể được sử dụng để đánh giá sự phụ thuộc giữa các tài sản có rủi ro khác nhau, giúp các nhà đầu tư phát triển các chiến lược phân bổ tài sản hiệu quả hơn. Khả năng mô hình hóa sự phụ thuộc không đối xứng của BB7 copula giúp hiểu rõ hơn về rủi ro cực đoan, như các đợt suy thoái thị trường lớn, trong khi BB8 copula cung cấp một cái nhìn sâu sắc hơn về mối quan hệ phức tạp giữa các yếu tố thị trường.
Ngoài tài chính, BB7 và BB8 copula còn được áp dụng rộng rãi trong các lĩnh vực khác như bảo hiểm và quản lý rủi ro. Trong bảo hiểm, các copula này giúp mô hình hóa sự phụ thuộc giữa các rủi ro khác nhau, như thiên tai và tổn thất tài sản, hỗ trợ các công ty bảo hiểm trong việc định giá sản phẩm và phát triển các chiến lược phòng ngừa rủi ro hiệu quả. Các copula này cũng được sử dụng trong nghiên cứu về rủi ro khí hậu, giúp dự báo và quản lý các tác động tiềm tàng của biến đổi khí hậu đối với các ngành công nghiệp và nền kinh tế.
Tóm lại, BB7 và BB8 copula đóng vai trò quan trọng trong việc mô hình hóa sự phụ thuộc phức tạp và không đối xứng, đặc biệt trong các nghiên cứu tài chính và bảo hiểm. Khả năng của chúng trong việc xử lý các mối quan hệ đa chiều và không tuyến tính cung cấp một công cụ mạnh mẽ cho các nhà nghiên cứu và chuyên gia trong việc hiểu rõ hơn và quản lý các rủi ro phức tạp trong môi trường kinh tế và tài chính hiện đại.
set.seed(123)
cop_bb7 <- VC2copula::BB7Copula(param = c(2,4.5))
random_bb7 <- rCopula(copula = cop_bb7,n = 7600)
cop_bb8 <- VC2copula::BB8Copula(param = c(4,0.8))
random_bb8 <- rCopula(copula = cop_bb8,n = 7600)
png('bb7s.png')
scatter_plot(random_bb7,'#AAAAAA')
dev.off()
bb7s <- rasterGrob(readPNG('bb7s.png'), interpolate = TRUE)
png('bb8s.png')
scatter_plot(random_bb8,'#FF9999')
dev.off()
bb8s <- rasterGrob(readPNG('bb8s.png'), interpolate = TRUE)
bb7p <- persp_plot(cop_bb7, "bb7p.png","#AAAAAA")
bb8p <- persp_plot(cop_bb8, "bb8p.png","#FF9999")
legend <- legendGrob(labels = c("BB7","BB8"), pch = 15,
gp = gpar(col = c('#AAAAAA','#FF9999'), fill = c('#AAAAAA','#FF9999')))
grid.arrange(bb7s, bb7p,bb8s, bb8p, legend, ncol = 3,
layout_matrix = rbind(c(1,2,5),c(3,4,5)),
widths = c(2,2,1),
top = textGrob("Biểu đồ phân tán và PDF của Copula BB7 và BB8",
gp = gpar(fontsize = 15, font = 2))
)
Điều kiện hoá copula là một phương pháp quan trọng trong việc điều chỉnh copula để phản ánh sự ảnh hưởng của các biến điều kiện. Phương pháp này giúp mô hình hóa sự phụ thuộc phức tạp và không tuyến tính giữa các biến ngẫu nhiên trong bối cảnh có điều kiện, từ đó tạo ra các mô hình chính xác hơn và phản ánh đúng hơn các mối quan hệ trong dữ liệu thực tế. Quá trình điều kiện hóa thường bao gồm việc sử dụng các kỹ thuật phân tích hồi quy hoặc phương pháp thống kê khác để ước lượng copula có điều kiện. Nghiên cứu của Joe (2014) đã chỉ ra rằng copula có điều kiện có thể nâng cao độ chính xác của các mô hình dự báo tài chính bằng cách điều chỉnh các biến điều kiện.
Ngoài ra, nghiên cứu của Embrechts và cộng sự (2002) đã minh chứng rằng việc sử dụng copula có điều kiện trong quản lý rủi ro tài chính không chỉ giúp giảm thiểu rủi ro trong danh mục đầu tư mà còn nâng cao hiệu quả của chiến lược đầu tư. Họ cho thấy việc tích hợp copula có điều kiện giúp mô hình hóa chính xác hơn các mối quan hệ giữa các tài sản, từ đó cải thiện khả năng dự đoán và giảm thiểu rủi ro. Nghiên cứu của Czado (2010) cũng đã chứng minh rằng copula có điều kiện có khả năng xử lý các mối quan hệ không tuyến tính giữa các biến, đặc biệt trong các mô hình dự đoán khí hậu, nhấn mạnh tính linh hoạt của copula trong việc phân tích các hiện tượng tự nhiên phức tạp.
Nghiên cứu của Patton (2006) đã chỉ ra rằng copula có điều kiện có thể cải thiện việc dự đoán các biến số tài chính liên quan đến các sự kiện cực đoan. Patton đã áp dụng copula có điều kiện để mô hình hóa mối quan hệ giữa các biến tài chính trong các tình huống khủng hoảng, cho thấy rằng copula có điều kiện có thể cung cấp những dự đoán chính xác hơn về rủi ro trong các giai đoạn biến động cao. Điều này cho thấy copula có điều kiện có khả năng phản ánh đúng các mối quan hệ phức tạp và thay đổi theo thời gian trong các tình huống đặc biệt.
Những ưu điểm chính của copula có điều kiện bao gồm khả năng linh hoạt trong việc mô hình hóa các mối quan hệ phức tạp và không tuyến tính giữa các biến. Điều này rất quan trọng trong các lĩnh vực như tài chính, bảo hiểm, và kinh tế học, nơi các mối quan hệ giữa các biến có thể thay đổi tùy theo điều kiện cụ thể. Các ứng dụng của copula có điều kiện trong các nghiên cứu thực tiễn đã chứng minh rằng chúng là công cụ mạnh mẽ để cải thiện khả năng phân tích và dự đoán, giúp đưa ra những quyết định chính xác hơn và hiệu quả hơn trong quản lý rủi ro và phân tích dữ liệu.
Copula có điều kiện đóng vai trò quan trọng trong quản lý rủi ro tài chính. Chúng được sử dụng để mô hình hóa sự phụ thuộc giữa các tài sản trong danh mục đầu tư, giúp xác định rủi ro tổng thể và tối ưu hóa chiến lược đầu tư. Ngoài ra, copula có điều kiện cũng giúp trong việc đánh giá rủi ro tín dụng và rủi ro thị trường, đặc biệt khi các biến số tài chính có mối quan hệ phức tạp và không tuyến tính. Nghiên cứu của Embrechts et al. (2002) đã chỉ ra rằng việc sử dụng copula có điều kiện trong quản lý rủi ro tài chính có thể giảm thiểu rủi ro đáng kể trong danh mục đầu tư. Trong lĩnh vực bảo hiểm, copula có điều kiện được sử dụng để mô hình hóa sự phụ thuộc giữa các rủi ro bảo hiểm khác nhau. Điều này giúp các công ty bảo hiểm hiểu rõ hơn về mức độ rủi ro tổng thể và từ đó, định giá chính xác các hợp đồng bảo hiểm và quản lý rủi ro hiệu quả hơn. Một nghiên cứu của Frees và Valdez (1998) đã áp dụng copula trong việc đánh giá rủi ro bảo hiểm nhân thọ, cho thấy khả năng của copula trong việc dự báo rủi ro liên quan đến sức khỏe và tuổi thọ. Copula có điều kiện cũng được áp dụng rộng rãi trong kinh tế học, đặc biệt là trong phân tích dữ liệu kinh tế và tài chính. Chúng được sử dụng để mô hình hóa các mối quan hệ phức tạp giữa các biến kinh tế, hỗ trợ trong việc dự báo kinh tế và phân tích chính sách. Chẳng hạn, copula có điều kiện có thể giúp phân tích tác động của các biến kinh tế vĩ mô đến các chỉ số tài chính, từ đó đưa ra những quyết định chính sách phù hợp. Nghiên cứu của Oh và Patton (2013) đã áp dụng copula để phân tích mối quan hệ giữa các biến kinh tế vĩ mô và giá cổ phiếu, giúp hiểu rõ hơn về sự phụ thuộc giữa các yếu tố này trong bối cảnh kinh tế biến động.
Nghiên cứu của Do và Nguyen (2010) đã thực hiện một phân tích toàn diện về mối quan hệ động giữa thị trường chứng khoán Việt Nam và các thị trường quốc tế lớn, bao gồm Hồng Kông, Úc, Nhật Bản, Anh, Pháp và Mỹ, bằng cách sử dụng mô hình VAR (Vector Autoregression) và hàm phản ứng đẩy (Impulse Response Function). Phương pháp VAR cho phép nghiên cứu này đánh giá ảnh hưởng qua lại và sự tương tác giữa các thị trường chứng khoán, từ đó cung cấp cái nhìn sâu sắc về cách thị trường chứng khoán Việt Nam phản ứng với biến động từ các thị trường quốc tế khác. Họ phát hiện rằng sự phụ thuộc của thị trường Việt Nam vào các thị trường quốc tế có sự thay đổi theo thời gian và tùy thuộc vào các yếu tố kinh tế toàn cầu. Chang và cộng sự (2010) đã đóng góp quan trọng bằng việc áp dụng mô hình hiệu chỉnh sai số vượt ngưỡng (Threshold Error Correction Model) và mô hình GARCH (Generalized Autoregressive Conditional Heteroskedasticity) để nghiên cứu mối quan hệ giữa thị trường chứng khoán Việt Nam với các đối tác thương mại chính như Mỹ, Nhật Bản, Singapore và Trung Quốc. Nghiên cứu này đã làm nổi bật sự ảnh hưởng mạnh mẽ của các yếu tố thương mại quốc tế đến biến động của thị trường chứng khoán Việt Nam, cho thấy rằng sự gia tăng trong biến động của các thị trường quốc tế có thể dẫn đến sự thay đổi đáng kể trong thị trường chứng khoán Việt Nam. Vo và Ellis (2018) đã sử dụng mô hình VAR và GARCH-BEKK (Baba, Engle, Kraft và Kroner) để phân tích sự phụ thuộc giữa thị trường chứng khoán Việt Nam và các thị trường chứng khoán quốc tế lớn như Mỹ, Hồng Kông và Nhật Bản, trong bối cảnh cuộc khủng hoảng tài chính toàn cầu 2008. Nghiên cứu này đã chỉ ra rằng sự tương quan giữa các thị trường chứng khoán quốc tế và Việt Nam đã tăng lên đáng kể trong thời kỳ khủng hoảng tài chính, cho thấy sự ảnh hưởng mạnh mẽ và lan tỏa của khủng hoảng từ các thị trường quốc tế đến thị trường Việt Nam, đồng thời nhấn mạnh tầm quan trọng của việc theo dõi các yếu tố toàn cầu trong việc quản lý rủi ro trên thị trường chứng khoán.
Nghiên cứu của Nguyen và cộng sự (2016) đã sử dụng các phương pháp phi tham số Chi-plots và Kendall (K)-plots kết hợp với các hàm copula như Gumbel, Clayton và Gauss để phân tích sự phụ thuộc đuôi giữa thị trường chứng khoán Hoa Kỳ với thị trường chứng khoán Việt Nam và Trung Quốc. Nghiên cứu này đã chỉ ra rằng có sự phụ thuộc đuôi trái rõ ràng và sự lây lan từ thị trường Hoa Kỳ đến thị trường Việt Nam trong cuộc khủng hoảng tài chính toàn cầu 2008, điều này cho thấy rằng các biến động cực đoan ở Hoa Kỳ có ảnh hưởng lớn đến thị trường chứng khoán Việt Nam. Phương pháp copula cho phép đánh giá sự phụ thuộc phi tuyến giữa các thị trường và làm nổi bật những mối liên hệ không thể hiện rõ bằng các mô hình thống kê truyền thống. Trong khi đó, nghiên cứu của Nguyen và Thuy (2016) đã sử dụng các copula không điều kiện, bao gồm Gauss, Student-t, Clayton, Rotated-Clayton, Plackett, Frank, Gumbel, Rotated Gumbel, và Symmetrised-Joe-Clayton, để phân tích sự lây lan của cuộc khủng hoảng kinh tế thế giới năm 2008 giữa thị trường chứng khoán Việt Nam với các thị trường chứng khoán mới nổi và phát triển. Kết quả nghiên cứu cho thấy rằng sự lây lan từ các thị trường quốc tế đến thị trường Việt Nam là yếu, với ảnh hưởng lớn nhất từ các thị trường như Mỹ, Pháp và Anh. Nghiên cứu này đã làm rõ sự khác biệt trong mức độ phụ thuộc và ảnh hưởng của các thị trường quốc tế đối với thị trường chứng khoán Việt Nam. Jiang và cộng sự (2017) đã áp dụng phương pháp Variational Modes Decomposition (VMD) cùng với hàm copula có điều kiện (GJR-GARCH-skewed-t copula) để phân tích mối quan hệ phụ thuộc giữa các thị trường chứng khoán ASEAN, bao gồm thị trường chứng khoán Việt Nam. Nghiên cứu này chỉ ra rằng thị trường chứng khoán Việt Nam có sự phụ thuộc đuôi thấp nhất với các thị trường chứng khoán ASEAN, trong khi Indonesia có mối quan hệ phụ thuộc mạnh nhất, cho thấy sự đa dạng trong mức độ phụ thuộc và ảnh hưởng giữa các thị trường chứng khoán trong khu vực ASEAN.
Nghiên cứu của Tùng (2010) đã ứng dụng mô hình GARCH-copula với hàm phân phối biên đối xứng Student-t để ước lượng giá trị rủi ro (Value-at-Risk, VaR) của danh mục đầu tư gồm hai cổ phiếu. Mặc dù nghiên cứu này cung cấp cái nhìn về cấu trúc phụ thuộc, việc chỉ sử dụng một hàm copula Student-t có thể không phản ánh đầy đủ các tình huống rủi ro cực đoan, dẫn đến khả năng sai lệch trong việc mô tả sự phụ thuộc đuôi khi các mã cổ phiếu gặp biến động lớn. Nguyen và cộng sự (2011) đã áp dụng phương pháp copula có điều kiện để tính toán VaR và Expected Shortfall (ES) cho danh mục đầu tư của các ngân hàng thương mại Việt Nam và năm ngoại tệ, từ đó cải thiện độ chính xác trong việc ước lượng rủi ro tài chính. Nghiên cứu này cung cấp cái nhìn quan trọng về cách mà các yếu tố rủi ro có thể ảnh hưởng đến các danh mục đầu tư ngân hàng, mặc dù nó tập trung chủ yếu vào phân tích rủi ro tài chính trong bối cảnh ngân hàng. Cuối cùng, nghiên cứu của Nguyen & Thuy (2013) đã sử dụng phương pháp copula có điều kiện với hai copula Gauss và Student-t để tính toán VaR cho danh mục đầu tư gồm bốn cổ phiếu. Kết quả nghiên cứu cho thấy mô hình GARCH-copula-Student-t phù hợp hơn mô hình GARCH-copula-Gauss trong việc ước lượng rủi ro. Nghiên cứu này chỉ ra rằng copula Student-t có khả năng mô tả cấu trúc phụ thuộc và sự biến động của dữ liệu tài chính tốt hơn, mặc dù vẫn cần mở rộng nghiên cứu để bao gồm các copula khác nhằm cải thiện độ chính xác trong việc đo lường và quản lý rủi ro.
library(xlsx)
library(quantmod)
library(tidyverse)
library(xts)
library(PerformanceAnalytics)
library(forecast)
library(rugarch)
library(goftest)
library(VineCopula)
library(tseries)
library(FinTS)
library(ggplot2)
library(corrplot)
library(ggcorrplot)
a1 <- read.xlsx('D:/T.LONG/MHNH/VNI.xlsx', sheetIndex = 1, header = T)
a2 <- read.xlsx('D:/T.LONG/MHNH/nikkei.xlsx', sheetIndex = 1, header = T)
VNI <- xts(a1[,-1], order.by = a1$Date)
nik <- xts(a2[,-1],order.by = a2$Date)
dt <- merge.xts(nik,VNI,join = 'inner')
rt <- CalculateReturns(dt,method = 'log')
rt <- rt[-1]
Dữ liệu của mỗi chuỗi lợi suất chứng khoán được thu thập từ trang web Investing.com với tần suất hàng ngày, từ ngày 01 tháng 01 năm 2018 đến ngày 31 tháng 07 năm 2024 phản ánh đầy đủ các biến động của thị trường chứng khoán trong suốt giai đoạn nghiên cứu. Các chuỗi lợi suất chứng khoán được đo lường bằng công thức: Rt=ln(Pt−1Pt).Trong đó Pt và Pt−1 lần lượt đại diện cho giá đóng cửa của chỉ số chứng khoán tại thời điểm t và t−1.
Nghiên cứu này tập trung vào việc phân tích mối quan hệ giữa thị trường chứng khoán Việt Nam, được đại diện bởi chỉ số VN-Index, và thị trường chứng khoán Nhật Bản, được đại diện bởi chỉ số Nikkei 225, trong khoảng thời gian từ đầu năm 2018 đến tháng 7 năm 2024. Lựa chọn hai thị trường này không chỉ dựa trên vai trò quan trọng của Nhật Bản như một trong những đối tác thương mại và nhà đầu tư lớn nhất của Việt Nam, mà còn bởi vị thế của thị trường chứng khoán Nhật Bản trong khu vực châu Á. Sự hội nhập ngày càng sâu rộng của Việt Nam vào nền kinh tế toàn cầu, cùng với các hiệp định thương mại và đầu tư, đã tạo nên mối liên kết chặt chẽ giữa hai quốc gia. Do đó, việc nghiên cứu mối quan hệ giữa TTCKVN và TTCK Nhật Bản giúp làm rõ mức độ ảnh hưởng của các cú sốc kinh tế và chính sách toàn cầu đối với thị trường tài chính Việt Nam.
Nghiên cứu này được chia thành bốn giai đoạn chính để đánh giá tác động của các biến cố kinh tế đến hai thị trường chứng khoán. Thứ nhất là giai đoạn trước các cú sốc kinh tế (2018-2019), khi các thị trường vẫn đang trong trạng thái ổn định trước khi các biến cố lớn xảy ra. Thứ hai là là giai đoạn Hiệp định Thương mại Tự do Việt Nam - EU (EVFTA) (sau tháng 6/2019) hiệp định này đã mở ra nhiều cơ hội lớn cho xuất khẩu và đầu tư nước ngoài vào Việt Nam, tạo động lực tích cực cho TTCKVN. Thứ ba là giai đoạn dịch Covid-19 (2020-2021), đại dịch toàn cầu đã gây ra những biến động mạnh mẽ và làm suy yếu các nền kinh tế, ảnh hưởng đến sự vận hành của các thị trường chứng khoán. Cuối cùng, giai đoạn Sự hồi phục kinh tế toàn cầu sau đại dịch (2023-2024), với các biện pháp kích thích kinh tế từ các quốc gia lớn, đã góp phần thúc đẩy sự phục hồi và phát triển của thị trường chứng khoán.
Dữ liệu của nghiên cứu được thu thập hàng ngày để đảm bảo độ chính xác cao nhất, phản ánh đầy đủ những biến động trên thị trường. Việc sử dụng nền tảng R với các gói lệnh copula cho phép ước lượng tham số và mô hình hóa mối quan hệ giữa hai thị trường chứng khoán này, giúp phân tích chi tiết về sự phụ thuộc và tương quan trong các điều kiện thị trường khác nhau. Qua đó, nghiên cứu không chỉ cung cấp cái nhìn toàn diện về mối liên hệ giữa TTCKVN và TTCK Nhật Bản mà còn đưa ra các đánh giá có giá trị về khả năng chịu ảnh hưởng của thị trường Việt Nam trước các cú sốc kinh tế toàn cầu.
Bắt đầu bằng việc kiểm tra sự tồn tại của hiệu ứng ARCH qua kiểm định Lagrange Multiplier (LM). Sau đó, xác định bậc ppp và qqq của mô hình ARMA dựa vào tiêu chí AIC và BIC. Mô hình biên ARMA(p,q)-GJR-GARCH(r,m) được xác định với các tham số r và m phù hợp, cùng với các phân phối lỗi khác nhau như Normal, Student, t-Student, GED, và sGED.
Mô hình phù hợp nhất được chọn dựa trên các tiêu chí AIC, BIC, SIC và HQIC. Mô hình ARMA(p,q)-GJR-GARCH(r,m) với phân phối phù hợp sẽ mô tả tốt nhất các đặc tính của chuỗi lợi suất, bao gồm đuôi dày, hiệu ứng đòn bẩy, và tính đối xứng hay bất đối xứng.
Sau khi đã xác định mô hình biên tối ưu cho mỗi chuỗi lợi suất, chúng ta tiến hành tính toán phần dư chuẩn hóa từ mô hình này, ký hiệu là cặp dữ liệu \(z_{1t}\) và \(z_{2t}\) tại thời điểm t. Tiếp theo, sử dụng hàm phân phối biên thực nghiệm để chuyển đổi \(z_{1t}\) và \(z_{2t}\) thành giá trị xác suất hoặc giá trị tích phân: \(u_t = F_1(z_{1t} | \Omega_{t-1})\) và \(v_t = F_2(z_{2t} | \Omega_{t-1})\).
Với các giá trị xác suất \(u_t\) và \(v_t\), chúng ta xây dựng mô hình copula phi tham số \(C(u_t, v_t)\), mô hình này mô tả mức độ phụ thuộc giữa \(u_t\) và \(v_t\) mà không cần xác định các tham số cụ thể của copula. Mô hình copula phi tham số có tính linh hoạt cao hơn và phù hợp với nhiều tình huống so với mô hình copula tham số.
Gọi \(C\) là hàm copula, với \(u_t, v_t \in [0, 1]^2\) và các vi phân từng phần \(\frac{\partial C(u_t, v_t)}{\partial u_t}\), \(\frac{\partial C(u_t, v_t)}{\partial v_t}\) tồn tại cho từng biến \(u_t, v_t\): \[ 0 \leq \frac{\partial C(u_t, v_t)}{\partial u_t} \leq 1, \quad 0 \leq \frac{\partial C(u_t, v_t)}{\partial v_t} \leq 1 \]
Trong đó, \(\frac{\partial C(u_t, v_t)}{\partial u_t}\) và \(\frac{\partial C(u_t, v_t)}{\partial v_t}\) lần lượt là hàm phân phối biên của các biến \(u_t\) và \(v_t\).
Cuối cùng, để đảm bảo tính phù hợp của mô hình copula và hàm phân phối biên, chúng ta sử dụng các kiểm định thống kê bao gồm:
Kiểm định Anderson – Darling (A-D): Kiểm tra sự khớp giữa phân phối biên dự kiến và phân phối biên thực nghiệm. Giá trị p lớn cho thấy không có bằng chứng đủ để bác bỏ tính phù hợp của hàm phân phối biên.
Kiểm định Cramer – von Mises (Cv-M): Đo lường sự khác biệt giữa phân phối biên dự kiến và phân phối biên thực nghiệm. Giá trị p của kiểm định này cũng phản ánh mức độ phù hợp của hàm phân phối biên.
Kiểm định Kolmogorov – Smirnov (K-S): Kiểm tra sự khác biệt giữa phân phối biên dự kiến và phân phối biên thực nghiệm. Tương tự như A-D và Cv-M, giá trị p của K-S cũng giúp đánh giá tính phù hợp của hàm phân phối biên.
Phương pháp hàm suy luận cận biên (Inference Function of Margins - IFM) được phát triển bởi Joe & Xu (1996) được áp dụng để ước lượng tham số cho mô hình copula có điều kiện trong nghiên cứu này. Phương pháp IFM nổi bật nhờ tính linh hoạt so với phương pháp Maximum Likelihood Estimation (MLE). Cụ thể, IFM cho phép ước lượng tham số của hàm phân phối biên và tham số copula một cách riêng biệt, điều này đặc biệt hữu ích trong việc xử lý các mô hình copula nhiều chiều, nơi MLE có thể gặp khó khăn trong việc tối ưu hóa. Phương pháp IFM được thực hiện qua hai bước chín: Bước 1: Ước lượng các tham số của hàm phân phối biên bằng phương pháp MLE:
\[ \hat{\theta}_1 = \arg\max \sum_{t=1}^T \log f_1(z_{1t} \mid \Omega_{t-1}, \theta_1)\]
\[ \hat{\theta}_2 = \arg\max \sum_{t=1}^T \log f_2(z_{2t} \mid \Omega_{t-1}, \theta_2)\]
Bước 2: Ước lượng tham số của copula
Trong đó, \(l_c\) là hàm log-likelihood của hàm mật độ xác suất của copula \(c\), và \(l_1\), \(l_2\) là hàm log-likelihood của các phân phối biên \(F_1\) và \(F_2\).
Để lựa chọn mô hình copula phù hợp, việc sử dụng các kiểm định sự phù hợp và tiêu chuẩn thông tin như AIC và BIC là rất quan trọng. Đầu tiên, các tham số của từng mô hình copula được ước lượng dựa trên dữ liệu phân tích. Sau đó, các kiểm định sự phù hợp như Anderson – Darling (A – D), Cramer – von Mises (Cv – M), hoặc Kolmogorov – Smornov (K – S) được áp dụng để đánh giá mức độ phù hợp của từng mô hình với dữ liệu thực tế. Mô hình copula với giá trị p cao nhất hoặc không bị bác bỏ giả thuyết phù hợp được xem là tốt hơn trong việc mô tả dữ liệu.
Đối với tiêu chuẩn thông tin, AIC và BIC được sử dụng để đánh giá sự phù hợp của mô hình dựa trên hiệu suất mô hình và số lượng tham số. AIC, được tính bằng công thức:
Để lựa chọn mô hình copula phù hợp, việc sử dụng các kiểm định sự phù hợp và tiêu chuẩn thông tin như AIC và BIC là rất quan trọng. Đầu tiên, các tham số của từng mô hình copula được ước lượng dựa trên dữ liệu phân tích. Sau đó, các kiểm định sự phù hợp như Anderson – Darling (A – D), Cramer – von Mises (Cv – M), hoặc Kolmogorov – Smornov (K – S) được áp dụng để đánh giá mức độ phù hợp của từng mô hình với dữ liệu thực tế. Mô hình copula với giá trị p cao nhất hoặc không bị bác bỏ giả thuyết phù hợp được xem là tốt hơn trong việc mô tả dữ liệu.
Đối với tiêu chuẩn thông tin, AIC và BIC được sử dụng để đánh giá sự phù hợp của mô hình dựa trên hiệu suất mô hình và số lượng tham số. AIC, được tính bằng công thức:
AIC= −2 × loglikelihood + 2𝑘
trong đó, k là số tham số của mô hình. AIC đo lường mức độ mất mát thông tin trong mô hình và ưu tiên các mô hình có giá trị AIC thấp nhất. Ngược lại, BIC, được tính theo công thức:
BIC= −2 × loglikelihood + k × log(n)
với n là cỡ mẫu, cố gắng tránh hiện tượng overfitting bằng cách ưu tiên các mô hình đơn giản hơn. BIC điều chỉnh giá trị của mình dựa trên kích thước mẫu, với mô hình có giá trị BIC thấp nhất được coi là phù hợp nhất trong các trường hợp cỡ mẫu lớn.
Kết hợp cả kiểm định sự phù hợp thống kê và tiêu chuẩn thông tin giúp lựa chọn mô hình copula phù hợp nhất với dữ liệu. Phương pháp này đảm bảo rằng mô hình được chọn không chỉ phù hợp tốt với dữ liệu thực tế mà còn tránh hiện tượng overfitting hoặc underfitting, từ đó cung cấp một mô hình đáng tin cậy cho phân tích tiếp theo.
Thống kê mô tả
library(moments)
rt_df <- as.data.frame(rt)
a <- rt_df %>% summarise(Min = min(VNI),
Max = max(VNI),
Mean = mean(VNI),
StDev = sd(VNI),
Skewness = skewness(VNI),
Kurtosis = kurtosis(VNI))
b <- rt_df %>% summarise(Min = min(nik),
Max = max(nik),
Mean = mean(nik),
StDev = sd(nik),
Skewness = skewness(nik),
Kurtosis = kurtosis(nik))
m <- rbind(a,b)
rownames(m) <- c('VNI','nikkei')
kable(m, format = 'pandoc', caption = 'Bảng Thống kê mô tả chuỗi TSLN')
Min | Max | Mean | StDev | Skewness | Kurtosis | |
---|---|---|---|---|---|---|
VNI | -0.0852948 | 0.0540819 | 0.0001324 | 0.0131764 | -1.050175 | 8.118312 |
nikkei | -0.0627357 | 0.0773137 | 0.0003290 | 0.0123575 | -0.075052 | 6.283588 |
Bảng thống kê mô tả của hai mã cổ phiếu “VNI” và “nikkei” cho thấy sự khác biệt rõ ràng trong biến động giá và xu hướng tăng trưởng. Về biên độ dao động, VNI có giá trị nhỏ nhất là -0.0852948 và giá trị lớn nhất là 0.0540819, cho thấy sự biến động lớn hơn, đặc biệt ở phía giảm. Trong khi đó, Nikkei có giá trị nhỏ nhất là -0.0627357 và giá trị lớn nhất là 0.0773137, biểu thị sự biến động lớn hơn ở phía tăng. Trung bình của Nikkei là 0.0003290, cao hơn so với 0.0001324 của VNI, cho thấy xu hướng tăng trưởng trung bình của Nikkei mạnh hơn.
Độ lệch chuẩn của VNI (0.0131764) lớn hơn một chút so với Nikkei (0.0123575), cho thấy VNI có sự biến động lớn hơn. Độ xiên của VNI là -1.050175, lớn hơn nhiều so với -0.075052 của Nikkei, điều này chỉ ra rằng phân phối giá của VNI có xu hướng lệch về phía các giá trị thấp hơn nhiều so với Nikkei. Độ xiên âm cho thấy cả hai mã cổ phiếu đều có xu hướng giảm, nhưng mức độ lệch của VNI đáng kể hơn.
Kurtosis của VNI (8.118312) cao hơn so với Nikkei (6.283588), điều này cho thấy VNI có nhiều giá trị cực đoan hơn. Cả hai phân phối đều có đuôi dày hơn so với phân phối chuẩn, biểu thị khả năng xuất hiện các biến động giá lớn. Tuy nhiên, với giá trị Kurtosis cao hơn, VNI có xu hướng xảy ra các biến động bất thường mạnh hơn so với Nikkei, thể hiện sự không ổn định cao hơn trong giá trị của cổ phiếu này.
pivot_longer(rt_df, cols = everything(), names_to = "TSLN", values_to = "Value") %>% ggplot(aes(x = TSLN, y = Value)) +
geom_boxplot(fill = "pink", color = "black") +
theme_minimal() +
labs(title = "Biểu đồ hộp của TSLN VNI và Nikkei",
x = "Chỉ số",
y = "Tỷ suất sinh lợi")
Biểu đồ hộp của tỷ suất sinh lợi (TSLN) cho hai mã cổ phiếu VNI và Nikkei cung cấp một cái nhìn trực quan về phân phối của các giá trị lợi nhuận. Ở cả hai mã cổ phiếu, phần hộp chính, đại diện cho khoảng giữa của 50% giá trị dữ liệu (từ quartile thứ nhất đến quartile thứ ba), cho thấy rằng cả hai mã cổ phiếu đều có tỷ suất sinh lợi trung vị gần với 0. Tuy nhiên, có một số khác biệt trong độ dài của các phần hộp, điều này thể hiện mức độ biến động khác nhau giữa hai mã cổ phiếu.
Về sự phân tán của dữ liệu, biểu đồ hộp của VNI cho thấy sự xuất hiện nhiều hơn của các giá trị ngoại lệ (outliers) ở cả hai phía, đặc biệt là phía giảm. Điều này phù hợp với thống kê mô tả trước đó, khi VNI có độ lệch chuẩn cao hơn và kurtosis lớn hơn. Các outliers này cho thấy rằng VNI thường xuyên trải qua các biến động lớn hơn, đặc biệt là những đợt giảm sâu. Mặt khác, Nikkei cũng có các giá trị ngoại lệ nhưng ít hơn và phân bổ đều ở cả hai phía tăng và giảm, điều này biểu thị sự ổn định hơn trong giá trị của nó.
Cuối cùng, so sánh giữa hai biểu đồ hộp cho thấy rằng mặc dù cả hai mã cổ phiếu đều có mức trung vị lợi nhuận gần như tương đồng, nhưng VNI có xu hướng biến động nhiều hơn và trải qua các biến động giá cực đoan mạnh hơn so với Nikkei. Điều này có thể được giải thích qua các yếu tố thị trường nội tại hoặc sự khác biệt trong môi trường kinh tế mà hai mã cổ phiếu này hoạt động. Sự hiện diện của nhiều outliers hơn trong biểu đồ của VNI cũng gợi ý rằng các nhà đầu tư có thể cần phải cẩn trọng hơn khi đầu tư vào mã cổ phiếu này so với Nikkei. Các kiểm định
adf_vni <- adf.test(rt$VNI)
adf_nik <- adf.test(rt$nik)
jq_vni <- jarque.bera.test(rt$VNI)
jq_nik <- jarque.bera.test(rt$nik)
arima_VNI <- autoarfima(rt$VNI,ar.max = 2, ma.max = 2, criterion = 'AIC', method = "full")
arima_nik <- autoarfima(rt$nik,ar.max = 2, ma.max = 2, criterion = 'AIC', method = "full")
re_VNI <- arima_VNI$fit@fit$residuals
re_nik <- arima_nik$fit@fit$residuals
lj_vni <- Box.test(re_VNI,type = 'Ljung-Box', lag = 2)
lj_nik <- Box.test(re_nik,type = 'Ljung-Box', lag = 2)
lj_vni2 <- Box.test(re_VNI^2,type = 'Ljung-Box', lag = 2)
lj_nik2 <- Box.test(re_nik^2,type = 'Ljung-Box', lag = 2)
ar_vni <- ArchTest(re_VNI, lags = 2)
ar_nik <- ArchTest(re_nik, lags = 2)
test_result <- data.frame(Test = c("ADF","J-B","Q(2)","Q(2)^2", "ARCH(2)"),
P_value_VNI = c(adf_vni$p.value, jq_vni$p.value, lj_vni$p.value, lj_vni2$p.value, ar_vni$p.value),
P_value_nik = c(adf_nik$p.value, jq_nik$p.value, lj_nik$p.value, lj_nik2$p.value, ar_nik$p.value))
kable(test_result,
caption = "Bảng Kết quả các kiểm định",
label = 'Ghi chú: Q (2) and Q2 (2) lần lượt là kiểm định Ljung-Box Q2 cho tương quan chuỗi bậc 2 của phần dư và bình phương phần dư của lợi suất',
format = 'pandoc')
Test | P_value_VNI | P_value_nik |
---|---|---|
ADF | 0.010000 | 0.010000 |
J-B | 0.000000 | 0.000000 |
Q(2) | 0.780199 | 0.962425 |
Q(2)^2 | 0.000000 | 0.000000 |
ARCH(2) | 0.000000 | 0.000000 |
Kết quả kiểm định của hai cổ phiếu VNI và Nikkei được trình bày trong bảng cho thấy những đặc điểm quan trọng về tính chất thống kê của chuỗi tỷ suất sinh lợi của chúng. Đầu tiên, kiểm định ADF (Augmented Dickey-Fuller) cho cả hai cổ phiếu đều có p-value là 0.01, thấp hơn mức ý nghĩa thông thường (0.05). Điều này cho thấy cả hai chuỗi thời gian của VNI và Nikkei đều không có gốc đơn vị, hay nói cách khác, chuỗi tỷ suất sinh lợi của chúng là dừng, điều này cho phép áp dụng các mô hình dự báo hoặc phân tích hồi quy mà không lo ngại về tính phi dừng.
Kiểm định J-B (Jarque-Bera) được sử dụng để kiểm tra giả thuyết rằng chuỗi dữ liệu có phân phối chuẩn. P-value cho cả hai cổ phiếu đều bằng 0, cho thấy sự từ chối giả thuyết không về tính phân phối chuẩn. Điều này ám chỉ rằng cả VNI và Nikkei đều có phân phối lợi nhuận không tuân theo phân phối chuẩn, điều này thường liên quan đến sự hiện diện của các giá trị cực đoan hoặc sự bất đối xứng trong phân phối lợi nhuận. Kết quả này phù hợp với các chỉ số Skewness và Kurtosis đã được phân tích trước đó, cho thấy rằng các giá trị lợi nhuận của cả hai cổ phiếu không tuân theo quy luật phân phối chuẩn.
Các kiểm định Q(2) và Q(2)^2, cũng như ARCH(2), nhằm kiểm tra sự hiện diện của tự tương quan và heteroscedasticity (sự thay đổi phương sai) trong chuỗi thời gian. Đối với VNI, p-value của kiểm định Q(2) là 0.780199, cao hơn mức ý nghĩa 0.05, cho thấy không có tự tương quan đáng kể trong chuỗi thời gian. Tuy nhiên, kiểm định Q(2)^2 và ARCH(2) cho thấy p-value bằng 0, biểu thị sự hiện diện của heteroscedasticity, tức là sự biến đổi phương sai không đồng đều theo thời gian. Điều này cũng tương tự với Nikkei, nơi cả hai kiểm định Q(2)^2 và ARCH(2) đều có p-value bằng 0, mặc dù kiểm định Q(2) cũng chỉ ra không có tự tương quan đáng kể. Sự hiện diện của heteroscedasticity ở cả hai chuỗi tỷ suất sinh lợi có thể yêu cầu sử dụng các mô hình GARCH hoặc các mô hình khác phù hợp hơn để mô hình hóa sự biến động này.
pearson <- cor(rt$VNI,rt$nik, method="pearson")
spearman <- cor(rt$VNI,rt$nik, method="spearman")
kendall <- cor(rt$VNI,rt$nik, method="kendall")
relat <- data.frame('Tương quan' = 'VNI-nik',
Pearson = pearson[1,1],
spearman = spearman[1,1],
Kendall = kendall[1,1])
kable(relat,
col.names = c("Phương pháp", "Pearson", "Spearman","Kendall"),
caption = "Bảng Kết quả hệ số tương quan",
format = 'pandoc',
align = c("l", "c", "c"))
Phương pháp | Pearson | Spearman | Kendall |
---|---|---|---|
VNI-nik | 0.2802723 | 0.2590948 | 0.1774791 |
Kết quả hệ số tương quan giữa hai mã cổ phiếu VNI và Nikkei theo ba phương pháp khác nhau – Pearson, Spearman, và Kendall – cho thấy một mối quan hệ dương, nhưng không quá mạnh giữa tỷ suất sinh lợi của hai mã này. Hệ số tương quan Pearson là 0.2802723, cho thấy rằng khi giá trị của một mã cổ phiếu tăng hoặc giảm, giá trị của mã cổ phiếu kia có xu hướng biến động theo cùng chiều. Tuy nhiên, mức độ tương quan này chỉ ở mức trung bình yếu, cho thấy rằng mặc dù có sự liên hệ giữa hai thị trường, nhưng các yếu tố nội tại của từng thị trường vẫn đóng vai trò quan trọng.
Phương pháp tương quan Spearman, với hệ số tương quan là 0.2590948, cho thấy một mối tương quan xếp hạng dương nhẹ giữa hai mã cổ phiếu. Spearman đo lường sự phụ thuộc bậc hạng giữa hai biến số, vì vậy hệ số này chỉ ra rằng khi xếp hạng tỷ suất sinh lợi của VNI tăng, thì xếp hạng của Nikkei cũng có xu hướng tăng, nhưng không theo một mức độ nhất định. Hệ số tương quan thấp này gợi ý rằng mối quan hệ phi tuyến tính có thể tồn tại, hoặc rằng thứ hạng giữa hai chuỗi tỷ suất sinh lợi không hoàn toàn phù hợp.
Hệ số tương quan Kendall, với giá trị 0.1774791, là thấp nhất trong ba hệ số, phản ánh một mức độ tương quan yếu nhất giữa hai mã cổ phiếu. Kendall đo lường mối quan hệ giữa hai bộ dữ liệu bằng cách xem xét số lượng các cặp quan sát phù hợp với xu hướng chung. Giá trị thấp này cho thấy rằng mặc dù có một số mức độ đồng biến động giữa VNI và Nikkei, sự tương quan của chúng là khá yếu, có thể do sự khác biệt đáng kể trong cấu trúc kinh tế và tài chính của hai thị trường. Điều này có thể hàm ý rằng các nhà đầu tư có thể khai thác các lợi thế từ việc đa dạng hóa đầu tư giữa hai thị trường này do sự tương quan thấp giữa chúng.
corr <- cor(rt)
ggcorrplot(corr, hc.order = TRUE,
outline.col = "white",
ggtheme = ggplot2::theme_gray,
colors = c("#6D9EC1", "white", "pink"),
lab = TRUE, lab_col = 'white',title = 'Trực quan hóa hệ số tương quan với phương pháp Pearson')
Biểu đồ thể hiện trực quan mối quan hệ tương quan giữa hai mã cổ phiếu VNI và Nikkei thông qua hệ số tương quan Pearson. Trong biểu đồ, các ô thể hiện giá trị hệ số tương quan giữa các mã cổ phiếu, với giá trị 1 cho thấy mối quan hệ hoàn toàn tích cực và giá trị -1 cho thấy mối quan hệ hoàn toàn tiêu cực. Ở đây, hệ số tương quan giữa VNI và Nikkei là 0.28, cho thấy mối quan hệ tích cực nhưng không mạnh mẽ giữa hai mã cổ phiếu này.
Mối quan hệ tương quan 0.28 cho thấy rằng khi giá cổ phiếu của VNI tăng, giá cổ phiếu của Nikkei cũng có xu hướng tăng, nhưng mức độ tương quan này không đủ mạnh để khẳng định rằng sự biến động của một mã cổ phiếu sẽ dẫn đến sự biến động tương ứng của mã cổ phiếu kia. Điều này có thể chỉ ra rằng các yếu tố khác nhau ảnh hưởng đến giá cổ phiếu của VNI và Nikkei, và nhà đầu tư cần xem xét thêm các yếu tố kinh tế và thị trường khác khi đưa ra quyết định đầu tư.
Cuối cùng, việc phân tích mối quan hệ tương quan giữa các mã cổ phiếu là rất quan trọng trong việc xây dựng danh mục đầu tư. Mặc dù VNI và Nikkei có mối quan hệ tích cực, nhưng nhà đầu tư nên thận trọng và không chỉ dựa vào hệ số tương quan để đưa ra quyết định đầu tư. Thay vào đó, họ nên kết hợp với các phân tích khác như phân tích cơ bản và kỹ thuật để có cái nhìn toàn diện hơn về thị trường.
par(mfrow = c(1,2))
a11 <- CalculateReturns(a1, method = 'log')
ggplot(a1, aes(x = Date, y= a11$VNI))+
geom_line(color = "pink")+
labs(title = "Biến động của VNINDEX",x = "Ngày", y="Tỷ suất sinh lợi")+
theme(plot.title = element_text(hjust = 0.5))
a22 <- CalculateReturns(a2, method = 'log')
ggplot(a2, aes(x = Date, y= a22$nikkei))+
geom_line(color = "pink")+
labs(title = "Biến động của Nikkei",x = "Ngày", y="Tỷ suất sinh lợi")+
theme(plot.title = element_text(hjust = 0.5))
Biến động của chuỗi tỷ suất sinh lợi ở chỉ số VNINDEX và chỉ số Nikkei trong giai đoạn 2018 đến tháng 7 năm 2024 cho thấy những đặc điểm nổi bật trong hoạt động của hai thị trường chứng khoán này. Dựa vào hình 9 và hình 10, có thể thấy rằng cả VNINDEX và Nikkei đều có sự biến động mạnh mẽ trong tỷ suất sinh lợi, nhưng mức độ và tính chất của sự biến động này có sự khác biệt rõ rệt.
Đối với VNINDEX, hình 9 cho thấy sự dao động liên tục của tỷ suất sinh lợi, với nhiều đỉnh và đáy trong suốt giai đoạn phân tích. Điều này phản ánh tính chất không ổn định của thị trường chứng khoán Việt Nam, có thể do ảnh hưởng của các yếu tố kinh tế trong nước, chính sách tài chính, và các sự kiện toàn cầu. Sự biến động này có thể tạo ra cơ hội đầu tư nhưng cũng đồng thời tiềm ẩn nhiều rủi ro cho nhà đầu tư.
Trong khi đó, hình 10 về chỉ số Nikkei cho thấy sự biến động cũng mạnh mẽ nhưng có phần ổn định hơn so với VNINDEX. Mặc dù vẫn có những giai đoạn dao động lớn, nhưng tỷ suất sinh lợi của Nikkei có vẻ ít biến động hơn, cho thấy rằng thị trường Nhật Bản có thể có sự ổn định hơn trong bối cảnh kinh tế toàn cầu. Sự khác biệt này có thể do các yếu tố như chính sách kinh tế, tâm lý nhà đầu tư và các yếu tố vĩ mô khác ảnh hưởng đến hai thị trường.
rt %>% ggplot(aes(VNI, nik)) +
geom_point(col = 'pink',shape = TRUE) +
geom_smooth(method = 'lm',se = T, col = '#CCFFFF') +
labs(title = 'Biểu đồ Scatter TSLN của Nikkei và VNI', x = 'VNI', y = 'nik')
Biểu đồ thể hiện biểu đồ scatter của tỷ suất sinh lợi (TSLN) giữa chỉ số Nikkei (nik) và VNINDEX (VNI). Biểu đồ cho thấy một xu hướng tuyến tính nhẹ, với các điểm dữ liệu phân bố khá rộng. Điều này phản ánh sự biến động trong thị trường chứng khoán, nơi mà các yếu tố kinh tế và chính trị có thể tác động đến hiệu suất của từng chỉ số.
Mối quan hệ giữa TSLN của VNINDEX và Nikkei là tích cực, nhưng không quá mạnh. Đường hồi quy (đường màu xám) cho thấy rằng khi TSLN của VNINDEX tăng, TSLN của Nikkei cũng có xu hướng tăng theo. Tuy nhiên, độ dốc của đường hồi quy không lớn, cho thấy sự thay đổi trong TSLN của VNINDEX chỉ ảnh hưởng hạn chế đến TSLN của Nikkei.
Sự phân bố của các điểm dữ liệu không tập trung rõ rệt, cho thấy rằng các yếu tố ảnh hưởng đến tỷ suất sinh lợi của hai chỉ số này là đa dạng và phức tạp. Mặc dù có một mối quan hệ tích cực giữa TSLN của VNINDEX và Nikkei, sự biến động lớn trong dữ liệu nhấn mạnh sự cần thiết phải cẩn trọng khi đưa ra quyết định đầu tư dựa trên mối liên hệ này. Các nhà đầu tư nên xem xét nhiều yếu tố khác nhau để có cái nhìn toàn diện hơn về thị trường.
spec_VNI_ugarch11_norm <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
distribution.model = "norm")
VNI_garch11_norm <- ugarchfit(spec = spec_VNI_ugarch11_norm, data = rt$VNI)
spec_VNI_ugarch11_std <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "std")
VNI_garch11_std <- ugarchfit(spec = spec_VNI_ugarch11_std, data = rt$VNI)
spec_VNI_ugarch11_sstd <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "sstd")
VNI_garch11_sstd <- ugarchfit(spec = spec_VNI_ugarch11_sstd, data = rt$VNI)
spec_VNI_ugarch11_ged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "ged")
VNI_garch11_ged <- ugarchfit(spec = spec_VNI_ugarch11_ged, data = rt$VNI)
spec_VNI_ugarch11_sged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "sged")
VNI_garch11_sged <- ugarchfit(spec = spec_VNI_ugarch11_sged, data = rt$VNI)
spec_VNI_ugarch12_norm <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
distribution.model = "norm")
VNI_garch12_norm <- ugarchfit(spec = spec_VNI_ugarch12_norm, data = rt$VNI)
spec_VNI_ugarch12_std <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "std")
VNI_garch12_std <- ugarchfit(spec = spec_VNI_ugarch12_std, data = rt$VNI)
spec_VNI_ugarch12_sstd <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "sstd")
VNI_garch12_sstd <- ugarchfit(spec = spec_VNI_ugarch12_sstd, data = rt$VNI)
spec_VNI_ugarch12_ged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "ged")
VNI_garch12_ged <- ugarchfit(spec = spec_VNI_ugarch12_ged, data = rt$VNI)
spec_VNI_ugarch12_sged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "sged")
VNI_garch12_sged <- ugarchfit(spec = spec_VNI_ugarch12_sged, data = rt$VNI)
spec_VNI_ugarch21_norm <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
distribution.model = "norm")
VNI_garch21_norm <- ugarchfit(spec = spec_VNI_ugarch21_norm, data = rt$VNI)
spec_VNI_ugarch21_std <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "std")
VNI_garch21_std <- ugarchfit(spec = spec_VNI_ugarch21_std, data = rt$VNI)
spec_VNI_ugarch21_sstd <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "sstd")
VNI_garch21_sstd <- ugarchfit(spec = spec_VNI_ugarch21_sstd, data = rt$VNI)
spec_VNI_ugarch21_ged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "ged")
VNI_garch21_ged <- ugarchfit(spec = spec_VNI_ugarch21_ged, data = rt$VNI)
spec_VNI_ugarch21_sged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "sged")
VNI_garch21_sged <- ugarchfit(spec = spec_VNI_ugarch21_sged, data = rt$VNI)
spec_VNI_ugarch22_norm <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
distribution.model = "norm")
VNI_garch22_norm <- ugarchfit(spec = spec_VNI_ugarch22_norm, data = rt$VNI)
spec_VNI_ugarch22_std <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "std")
VNI_garch22_std <- ugarchfit(spec = spec_VNI_ugarch22_std, data = rt$VNI)
spec_VNI_ugarch22_sstd <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "sstd")
VNI_garch22_sstd <- ugarchfit(spec = spec_VNI_ugarch22_sstd, data = rt$VNI)
spec_VNI_ugarch22_ged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "ged")
VNI_garch22_ged <- ugarchfit(spec = spec_VNI_ugarch22_ged, data = rt$VNI)
spec_VNI_ugarch22_sged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
distribution.model = "sged")
VNI_garch22_sged <- ugarchfit(spec = spec_VNI_ugarch22_sged, data = rt$VNI)
spec_nik_ugarch11_norm <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "norm")
nik_garch11_norm <- ugarchfit(spec = spec_nik_ugarch11_norm, data = rt$nik)
spec_nik_ugarch11_std <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "std")
nik_garch11_std <- ugarchfit(spec = spec_nik_ugarch11_std, data = rt$nik)
spec_nik_ugarch11_sstd <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "sstd")
nik_garch11_sstd <- ugarchfit(spec = spec_nik_ugarch11_sstd, data = rt$nik)
spec_nik_ugarch11_ged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "ged")
nik_garch11_ged <- ugarchfit(spec = spec_nik_ugarch11_ged, data = rt$nik)
spec_nik_ugarch11_sged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "sged")
nik_garch11_sged <- ugarchfit(spec = spec_nik_ugarch11_sged, data = rt$nik)
spec_nik_ugarch12_norm <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "norm")
nik_garch12_norm <- ugarchfit(spec = spec_nik_ugarch12_norm, data = rt$nik)
spec_nik_ugarch12_std <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "std")
nik_garch12_std <- ugarchfit(spec = spec_nik_ugarch12_std, data = rt$nik)
spec_nik_ugarch12_sstd <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "sstd")
nik_garch12_sstd <- ugarchfit(spec = spec_nik_ugarch12_sstd, data = rt$nik)
spec_nik_ugarch12_ged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "ged")
nik_garch12_ged <- ugarchfit(spec = spec_nik_ugarch12_ged, data = rt$nik)
spec_nik_ugarch12_sged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "sged")
nik_garch12_sged <- ugarchfit(spec = spec_nik_ugarch12_sged, data = rt$nik)
spec_nik_ugarch21_norm <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "norm")
nik_garch21_norm <- ugarchfit(spec = spec_nik_ugarch21_norm, data = rt$nik)
spec_nik_ugarch21_std <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "std")
nik_garch21_std <- ugarchfit(spec = spec_nik_ugarch21_std, data = rt$nik)
spec_nik_ugarch21_sstd <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "sstd")
nik_garch21_sstd <- ugarchfit(spec = spec_nik_ugarch21_sstd, data = rt$nik)
spec_nik_ugarch21_ged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "ged")
nik_garch21_ged <- ugarchfit(spec = spec_nik_ugarch21_ged, data = rt$nik)
spec_nik_ugarch21_sged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "sged")
nik_garch21_sged <- ugarchfit(spec = spec_nik_ugarch21_sged, data = rt$nik)
spec_nik_ugarch22_norm <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "norm")
nik_garch22_norm <- ugarchfit(spec = spec_nik_ugarch22_norm, data = rt$nik)
spec_nik_ugarch22_std <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "std")
nik_garch22_std <- ugarchfit(spec = spec_nik_ugarch22_std, data = rt$nik)
spec_nik_ugarch22_sstd <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "sstd")
nik_garch22_sstd <- ugarchfit(spec = spec_nik_ugarch22_sstd, data = rt$nik)
spec_nik_ugarch22_ged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "ged")
nik_garch22_ged <- ugarchfit(spec = spec_nik_ugarch22_ged, data = rt$nik)
spec_nik_ugarch22_sged <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
distribution.model = "sged")
nik_garch22_sged <- ugarchfit(spec = spec_nik_ugarch22_sged, data = rt$nik)
VNI.model.list <- list(garch11n = VNI_garch11_norm, garch11t = VNI_garch11_std, garch11st = VNI_garch11_sstd,
garch11g = VNI_garch11_ged, garch11sg = VNI_garch11_sged,
garch12n = VNI_garch12_norm, garch12t = VNI_garch12_std, garch12st = VNI_garch12_sstd,
garch12g = VNI_garch12_ged, garch12sg = VNI_garch12_sged,
garch21n = VNI_garch21_norm, garch21t = VNI_garch21_std, garch21st = VNI_garch21_sstd,
garch21g = VNI_garch21_ged, garch21sg = VNI_garch21_sged,
garch22n = VNI_garch22_norm, garch22t = VNI_garch22_std, garch22st = VNI_garch22_sstd,
garch22g = VNI_garch22_ged, garch22sg = VNI_garch22_sged
)
VNI.info.mat <- sapply(VNI.model.list, infocriteria)
rownames(VNI.info.mat) <- rownames(infocriteria(VNI_garch11_norm))
VNI.inds <- which(VNI.info.mat == min(VNI.info.mat[1,]), arr.ind=TRUE)
model.VNI <- colnames(VNI.info.mat)[VNI.inds[,2]]
nik.model.list <- list(garch11n = nik_garch11_norm, garch11t = nik_garch11_std, garch11st = nik_garch11_sstd,
garch11g = nik_garch11_ged, garch11sg = nik_garch11_sged,
garch12n = nik_garch12_norm, garch12t = nik_garch12_std, garch12st = nik_garch12_sstd,
garch12g = nik_garch12_ged, garch12sg = nik_garch12_sged,
garch21n = nik_garch21_norm, garch21t = nik_garch21_std, garch21st = nik_garch21_sstd,
garch21g = nik_garch21_ged, garch21sg = nik_garch21_sged,
garch22n = nik_garch22_norm, garch22t = nik_garch22_std, garch22st = nik_garch22_sstd,
garch22g = nik_garch22_ged, garch22sg = nik_garch22_sged
)
nik.info.mat <- sapply(nik.model.list, infocriteria)
rownames(nik.info.mat) <- rownames(infocriteria(nik_garch11_norm))
nik.inds <- which(nik.info.mat == min(nik.info.mat[1,]), arr.ind=TRUE)
model.nik <- colnames(nik.info.mat)[nik.inds[,2]]
mar_model <- data.frame(
rate = c("VNI", "nik"),
Format = c("ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t", "ARMA(0,2)-GJR-GARCH(1,1)-Student t"))
kable(mar_model, col.names = c("Tỷ suất sinh lợi", "Dạng mô hình phân phối biên"),
caption = "Mô hình phân phối biên tối ưu", format = "pandoc",
table.attr = "style='width:100%;'")
Tỷ suất sinh lợi | Dạng mô hình phân phối biên |
---|---|
VNI | ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t |
nik | ARMA(0,2)-GJR-GARCH(1,1)-Student t |
Phân tích mô hình phân phối biên tối ưu cho tỷ suất sinh lợi của hai mã cổ phiếu VNI và Nikkei cho thấy sự phức tạp và khác biệt trong cách các chuỗi thời gian này được mô hình hóa. Đối với mã cổ phiếu VNI, mô hình được xác định là ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t. Mô hình ARMA (Autoregressive Moving Average) với tham số (1,1) cho thấy tỷ suất sinh lợi hiện tại của VNI được ảnh hưởng bởi giá trị của chính nó trong quá khứ và bởi nhiễu trắng từ một kỳ trước. GJR-GARCH là một mở rộng của mô hình GARCH, cho phép mô hình hóa sự bất đối xứng trong biến động, tức là sự phản ứng khác nhau của thị trường đối với các tin tức tốt và xấu. Việc sử dụng phân phối Skewed Student t trong mô hình này cho thấy rằng chuỗi thời gian có đuôi dày và bất đối xứng, phù hợp với quan sát về sự hiện diện của các outliers và độ xiên lớn trong dữ liệu của VNI.
Ngược lại, mã cổ phiếu Nikkei được mô hình hóa bằng ARMA(0,2)-GJR-GARCH(1,1)-Student t. Mô hình ARMA với tham số (0,2) cho thấy rằng tỷ suất sinh lợi hiện tại của Nikkei chủ yếu bị ảnh hưởng bởi các nhiễu trắng của hai kỳ trước đó, mà không có sự phụ thuộc vào các giá trị trước đó của chính chuỗi này. Mô hình GJR-GARCH(1,1) cho phép mô hình hóa sự biến động theo thời gian, đặc biệt là bất đối xứng trong phản ứng của thị trường với các sự kiện. Phân phối Student t được sử dụng trong mô hình này thể hiện đặc điểm của chuỗi thời gian có đuôi dày, tức là có xác suất xuất hiện các biến động lớn cao hơn so với phân phối chuẩn, nhưng không có sự bất đối xứng như VNI.
Sự khác biệt giữa hai mô hình phân phối biên này phản ánh sự khác biệt về cấu trúc và động lực của thị trường mà VNI và Nikkei đại diện. Mô hình ARMA(1,1) với sự hiện diện của thành phần autoregressive cho thấy thị trường VNI có sự tự tương quan mạnh hơn, trong khi ARMA(0,2) của Nikkei cho thấy sự phụ thuộc chủ yếu vào các yếu tố ngẫu nhiên từ các kỳ trước. Ngoài ra, việc sử dụng phân phối Skewed Student t cho VNI chỉ ra rằng thị trường này có đặc điểm bất đối xứng rõ rệt hơn, trong khi Nikkei, với phân phối Student t, chỉ thể hiện sự biến động cao nhưng không có sự bất đối xứng. Điều này gợi ý rằng nhà đầu tư cần cân nhắc các đặc điểm cụ thể của từng thị trường khi xây dựng chiến lược đầu tư và quản lý rủi ro.
extract_garch_results <- function(fit) {
coef <- coef(fit)
se <- fit@fit$se.coef
pvalues <- 2 * (1 - pnorm(abs(fit@fit$tval))) # tính giá trị p từ giá trị t
results <- cbind(coef, se, pvalues)
colnames(results) <- c("Enikmate", "Std. Error", "Pr(>|z|)")
return(results)
}
fit1 <- extract_garch_results(VNI_garch11_sstd)
fit2 <- extract_garch_results(nik_garch11_std)
kable(as.data.frame(fit1),
caption = "Kết quả mô hình ARMA(1,1)-GJR-Garch(1,1)-Skewed Student của biến VNI",
format = 'pandoc')
Enikmate | Std. Error | Pr(>|z|) | |
---|---|---|---|
mu | 0.0001840 | 0.0003622 | 0.6115187 |
ar1 | 0.9231639 | 0.0525899 | 0.0000000 |
ma1 | -0.8970117 | 0.0612379 | 0.0000000 |
omega | 0.0000123 | 0.0000003 | 0.0000000 |
alpha1 | 0.0108294 | 0.0114050 | 0.3423521 |
beta1 | 0.7859263 | 0.0191623 | 0.0000000 |
gamma1 | 0.2767487 | 0.0506140 | 0.0000000 |
skew | 0.8228416 | 0.0303997 | 0.0000000 |
shape | 3.9120971 | 0.3528478 | 0.0000000 |
Kết quả của mô hình ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t cho biến VNI cung cấp nhiều thông tin chi tiết về động lực và tính chất của chuỗi tỷ suất sinh lợi này. Đầu tiên, hệ số trung bình (mu) có giá trị 0.0001840 với p-value là 0.6115187, cho thấy rằng giá trị trung bình của tỷ suất sinh lợi không có ý nghĩa thống kê. Điều này có nghĩa là trung bình, lợi nhuận của VNI không khác biệt đáng kể so với 0, chỉ ra một xu hướng thị trường ổn định hoặc không có xu hướng rõ ràng trong dài hạn.
Về các tham số của mô hình ARMA(1,1), hệ số AR1 là 0.9231639 và hệ số MA1 là -0.8970117, cả hai đều có p-value gần bằng 0, cho thấy chúng có ý nghĩa thống kê cao. Hệ số AR1 cho thấy rằng tỷ suất sinh lợi hiện tại của VNI có sự phụ thuộc mạnh mẽ vào giá trị của nó ở kỳ trước, với sự tự tương quan dương cao. Hệ số MA1 âm với giá trị tương đối lớn chỉ ra rằng các cú sốc ngẫu nhiên từ kỳ trước đó cũng có ảnh hưởng mạnh mẽ, nhưng với dấu ngược lại. Điều này có thể gợi ý rằng thị trường có tính chất điều chỉnh mạnh mẽ sau các cú sốc.
Các tham số của mô hình GJR-GARCH(1,1) cung cấp thông tin về cấu trúc biến động của VNI. Hệ số omega (0.0000123) có p-value bằng 0, cho thấy sự biến động cơ bản của VNI là rất nhỏ nhưng có ý nghĩa thống kê. Hệ số alpha1 (0.0108294) không có ý nghĩa thống kê với p-value là 0.3423521, ngụ ý rằng tác động của các cú sốc đến sự biến động của chuỗi không lớn. Tuy nhiên, hệ số beta1 (0.7859263) có ý nghĩa thống kê cao, cho thấy rằng sự biến động của VNI có sự kéo dài qua thời gian (persistence). Hệ số gamma1 (0.2767487) cũng có ý nghĩa thống kê, chỉ ra sự hiện diện của bất đối xứng trong phản ứng của thị trường đối với các tin tức tốt và xấu. Cuối cùng, hệ số skew (0.8228416) và shape (3.9120971) đều có ý nghĩa thống kê, cho thấy phân phối lợi nhuận của VNI là không đối xứng và có đuôi dày hơn so với phân phối chuẩn, điều này phản ánh sự bất ổn và khả năng xuất hiện các biến động mạnh.
kable(as.data.frame(fit2),
caption = "Kết quả mô hình ARMA(0,2)-GJR-Garch(1,1)-Student của biến nikkei",
format = 'pandoc')
Enikmate | Std. Error | Pr(>|z|) | |
---|---|---|---|
mu | 0.0004772 | 0.0002721 | 0.0794919 |
ma1 | -0.0035270 | 0.0256842 | 0.8907758 |
ma2 | 0.0496135 | 0.0256219 | 0.0528224 |
omega | 0.0000114 | 0.0000001 | 0.0000000 |
alpha1 | 0.0000011 | 0.0063480 | 0.9998597 |
beta1 | 0.8242803 | 0.0143037 | 0.0000000 |
gamma1 | 0.1981182 | 0.0354094 | 0.0000000 |
shape | 6.5804584 | 1.0600588 | 0.0000000 |
Kết quả của mô hình ARMA(0,2)-GJR-GARCH(1,1)-Student t cho biến Nikkei cung cấp cái nhìn sâu sắc về động lực tỷ suất sinh lợi và biến động của thị trường này. Trước hết, hệ số trung bình (mu) là 0.0004772 với p-value là 0.0794919, gần mức ý nghĩa 0.05, cho thấy rằng có một xu hướng lợi nhuận trung bình dương nhưng không thực sự mạnh mẽ. Điều này có thể chỉ ra rằng thị trường Nikkei có một mức tăng trưởng nhỏ theo thời gian, mặc dù không đủ mạnh để có ý nghĩa thống kê chắc chắn.
Về các tham số của mô hình ARMA, hệ số MA1 là -0.0035270 và hệ số MA2 là 0.0496135, với p-value lần lượt là 0.8907758 và 0.0528224. Hệ số MA1 không có ý nghĩa thống kê, ngụ ý rằng cú sốc ngẫu nhiên từ một kỳ trước không có ảnh hưởng đáng kể đến tỷ suất sinh lợi hiện tại. Tuy nhiên, hệ số MA2 có ý nghĩa thống kê gần mức 0.05, cho thấy cú sốc ngẫu nhiên từ hai kỳ trước có ảnh hưởng yếu đến giá trị hiện tại. Điều này có thể phản ánh rằng thị trường Nikkei có một số yếu tố ngẫu nhiên ảnh hưởng đến lợi nhuận trong ngắn hạn, nhưng không có xu hướng rõ ràng.
Cuối cùng, phân tích các tham số của mô hình GJR-GARCH(1,1) cho thấy sự biến động của Nikkei được điều chỉnh qua thời gian. Hệ số omega (0.0000114) có p-value bằng 0, cho thấy biến động cơ bản là rất nhỏ nhưng có ý nghĩa thống kê. Hệ số alpha1 (0.0000011) không có ý nghĩa thống kê, ngụ ý rằng các cú sốc đến biến động không lớn. Tuy nhiên, hệ số beta1 (0.8242803) có ý nghĩa thống kê cao, cho thấy sự kéo dài của biến động qua thời gian, nghĩa là khi có biến động xảy ra, nó có khả năng duy trì trong một thời gian dài. Hệ số gamma1 (0.1981182) cũng có ý nghĩa thống kê, cho thấy sự hiện diện của bất đối xứng trong phản ứng của thị trường đối với tin tức. Cuối cùng, phân phối Student t với hệ số shape (6.5804584) cho thấy đuôi dày hơn so với phân phối chuẩn, biểu hiện khả năng xảy ra các biến động lớn hơn so với dự kiến theo phân phối chuẩn.
VNI.res <- residuals(VNI_garch11_sstd)/sigma(VNI_garch11_sstd)
a <- fitdist(distribution = "sstd", VNI.res, control = list())
u <- pdist(distribution = "sstd", q = VNI.res, mu = a$pars['mu'] , sigma = a$pars['sigma'],
skew = a$pars['skew'], shape = a$pars['shape'])
nik.res <- residuals(nik_garch11_std)/sigma(nik_garch11_std)
b <- fitdist(distribution = "std", nik.res, control = list())
v <- pdist(distribution = "std", q = nik.res, mu = b$pars['mu'] , sigma = b$pars['sigma'],
skew = b$pars['skew'], shape = b$pars['shape'])
library(goftest)
ad_vni <- ad.test(u, "punif")
ad_nik <- ad.test(v, "punif")
cvm_vni <- cvm.test(u, "punif")
cvm_nik <- cvm.test(v, "punif")
ks_vni <- ks.test(u, "punif")
ks_nik <- ks.test(v, "punif")
test <- data.frame(test = c('P_value VNI' ,'P_value nik'),
AD = c(ad_vni$p.value, ad_nik$p.value),
CVM = c(cvm_vni$p.value, cvm_nik$p.value),
KS = c(ks_vni$p.value,ks_nik$p.value))
kable(test,
caption = "Kết quả các kiểm định cho mô hình phân phối biên", col.names = c("Các kiểm định","Anderson-Darling", "Cramer-von Mises","Kolmogorov-Smirnov"),
format = 'pandoc')
Các kiểm định | Anderson-Darling | Cramer-von Mises | Kolmogorov-Smirnov |
---|---|---|---|
P_value VNI | 0.6272189 | 0.5177801 | 0.3246699 |
P_value nik | 0.5357229 | 0.7242549 | 0.7972666 |
Kết quả các kiểm định phân phối biên cho hai mã cổ phiếu VNI và Nikkei sử dụng các bài kiểm định Anderson-Darling, Cramer-von Mises, và Kolmogorov-Smirnov cung cấp thông tin về mức độ phù hợp của các mô hình phân phối được chọn với dữ liệu thực tế. Các giá trị p-value đều lớn hơn 0.05 cho cả ba bài kiểm định, điều này cho thấy rằng không có bằng chứng thống kê để bác bỏ giả thuyết rằng các mô hình phân phối được chọn phù hợp với dữ liệu thực tế của VNI và Nikkei.
Cụ thể, đối với mã VNI, p-value của kiểm định Anderson-Darling là 0.6272189, Cramer-von Mises là 0.5177801, và Kolmogorov-Smirnov là 0.3246699. Các giá trị p-value này đều cao, gợi ý rằng phân phối biên được sử dụng trong mô hình là phù hợp với dữ liệu. Điều này có nghĩa là mô hình ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t đã được lựa chọn một cách chính xác và có khả năng mô tả tốt các đặc điểm của chuỗi tỷ suất sinh lợi của VNI, bao gồm cả các đuôi dày và độ xiên của phân phối.
Đối với mã Nikkei, p-value của kiểm định Anderson-Darling là 0.5357229, Cramer-von Mises là 0.7242549, và Kolmogorov-Smirnov là 0.7972666. Tương tự như VNI, các giá trị p-value này cũng cao, cho thấy rằng mô hình ARMA(0,2)-GJR-GARCH(1,1)-Student t là phù hợp với dữ liệu của Nikkei. Kết quả này củng cố rằng mô hình đã được lựa chọn có thể mô phỏng tốt các đặc điểm biến động của Nikkei, bao gồm cả sự hiện diện của các biến động mạnh và phân phối có đuôi dày, giúp các nhà đầu tư hoặc nhà phân tích tin tưởng vào độ tin cậy của mô hình khi đưa ra dự báo hoặc phân tích thị trường.
gau <- BiCopEst(u,v,family = 1, method = "mle", se = T, max.df = 10)
stu <- BiCopEst(u,v,family = 2, method = "mle", se = T, max.df = 10)
est <- data.frame(mqh = c('VNI-nik' ,'VNI-nik'),
Copula = c('Gauss', 'Student'),
Thamso = c(gau$par, stu$par),
Thamso2 = c(gau$par2, stu$par2),
duoi = c(gau$taildep$lower,stu$taildep$lower))
kable(est,
caption = "Kết quả ước lượng Copula họ Elip", col.names = c("Chỉ số","Copula", "Par","Par2", "Phụ thuộc đuôi"),
format = 'pandoc')
Chỉ số | Copula | Par | Par2 | Phụ thuộc đuôi |
---|---|---|---|---|
VNI-nik | Gauss | 0.2671544 | 0 | 0.0000000 |
VNI-nik | Student | 0.2638341 | 10 | 0.0279101 |
Kết quả ước lượng Copula cho hai mã cổ phiếu VNI và Nikkei sử dụng họ Elip, bao gồm Gauss và Student t, cung cấp thông tin quan trọng về sự phụ thuộc giữa hai chuỗi tỷ suất sinh lợi này. Các mô hình Copula cho phép mô hình hóa mối quan hệ phi tuyến tính và không đồng nhất giữa các chuỗi thời gian, điển hình là khi các chuỗi có thể phụ thuộc với nhau trong những điều kiện thị trường đặc biệt.
Đối với Copula Gauss, hệ số tương quan (Par) là 0.2671544, cho thấy một mức độ tương quan dương nhẹ giữa hai mã cổ phiếu này. Điều này có nghĩa là khi một chỉ số tăng (hoặc giảm), chỉ số kia có xu hướng tăng (hoặc giảm) theo, mặc dù mức độ phụ thuộc này không mạnh mẽ. Điều đặc biệt là chỉ số phụ thuộc đuôi (tail dependence) trong trường hợp này là 0, chỉ ra rằng Copula Gauss không mô tả được sự phụ thuộc ở phần đuôi của phân phối, tức là khi xảy ra các biến động cực đoan, hai mã cổ phiếu này có thể không liên kết chặt chẽ với nhau.
Trong khi đó, Copula Student t với hệ số tương quan Par là 0.2638341 và số bậc tự do (Par2) là 10, cho thấy một mối quan hệ tương tự như Copula Gauss, với mức độ phụ thuộc tương đối nhẹ. Tuy nhiên, chỉ số phụ thuộc đuôi trong trường hợp này là 0.0279101, nhỏ nhưng dương, cho thấy có một mức độ phụ thuộc nhỏ ở phần đuôi của phân phối. Điều này ngụ ý rằng trong những tình huống thị trường biến động mạnh, hai chỉ số này có khả năng đồng biến cao hơn một chút so với những gì Copula Gauss có thể mô tả.
Kết luận, so sánh giữa hai loại Copula này cho thấy Copula Student t có ưu thế hơn trong việc nắm bắt sự phụ thuộc ở đuôi phân phối, mặc dù mức độ phụ thuộc này vẫn khá nhỏ. Điều này có ý nghĩa quan trọng đối với các nhà đầu tư hoặc nhà quản lý rủi ro, vì nó cho thấy rằng trong điều kiện thị trường cực đoan, hai mã cổ phiếu này có xu hướng đồng biến, nhưng với mức độ không cao. Sử dụng Copula Student t có thể cung cấp một cái nhìn sâu sắc hơn về rủi ro hệ thống, đặc biệt là khi xem xét các tình huống rủi ro cực đoan.
set.seed(123)
cop_nor <- normalCopula(param = gau$par, dim = 2)
cop_std <- tCopula(param = stu$par, dim = 2, df = 1)
nor_per <- persp_plot(cop_nor, 'norp.png', '#AAAAAA')
std_per <- persp_plot(cop_std, 'stdp.png', 'pink')
legend <- legendGrob(
labels = c("Gauss", "Student"), pch = 15,
gp = gpar(col = c('#AAAAAA', 'pink'), fill = c('#AAAAAA', 'pink'))
)
grid.arrange( nor_per, std_per, legend, ncol = 3,
layout_matrix = rbind(c(1, 2, 3)),
widths = c(2, 2, 1),
top = textGrob("Phối cảnh PDF của Copula họ Elip được ước lượng",
gp = gpar(fontsize = 15, font = 2))
)
Biểu đồ trình bày hai biểu đồ ba chiều thể hiện hàm mật độ xác suất (PDF) của Copula hình elip được ước lượng, với hai loại phân phối khác nhau: phân phối Gauss (bên trái) và phân phối Student (bên phải). Biểu đồ bên trái cho thấy PDF của Copula Gauss, với hình dạng mượt mà và đối xứng, phản ánh tính chất của phân phối chuẩn. Điều này cho thấy rằng các biến ngẫu nhiên trong mô hình này có mối quan hệ tương đối đồng nhất và không có sự biến động lớn.
Ngược lại, biểu đồ bên phải thể hiện PDF của Copula Student, với hình dạng có nhiều đỉnh và độ nhọn hơn. Điều này chỉ ra rằng phân phối Student có khả năng mô tả các biến ngẫu nhiên với sự biến động lớn hơn và có thể có các giá trị ngoại lệ. Sự khác biệt này cho thấy rằng Copula Student có thể phù hợp hơn trong các tình huống mà dữ liệu có sự phân bố không đồng nhất hoặc có các giá trị cực trị.
opt_cop <- BiCopSelect(u,v,selectioncrit = "AIC",method = "mle")
est_opt_cop <- BiCopEst(u,v,family = opt_cop$family,method = "mle",max.df = 30)
est_opt_cop_dt <- data.frame(mqh = c('VNI-nik'),
Copula = est_opt_cop$familyname,
Thamso = est_opt_cop$par,
Thamso2 = est_opt_cop$par2,
duoiduoi = est_opt_cop$taildep$lower,
duoitren = est_opt_cop$taildep$upper,
tau = est_opt_cop$tau,
aic = est_opt_cop$AIC,
bic = est_opt_cop$BIC)
kable(est_opt_cop_dt,
caption = "Kết quả ước lượng mô hình Copula tối ưu", col.names = c("Chỉ số","Copula", "Par","Par2", "Đuôi dưới", "Đuôi trên","Hệ số Kendall", "AIC","BIC"),
format = 'pandoc')
Chỉ số | Copula | Par | Par2 | Đuôi dưới | Đuôi trên | Hệ số Kendall | AIC | BIC |
---|---|---|---|---|---|---|---|---|
VNI-nik | Survival Gumbel | 1.181946 | 0 | 0.2024124 | 0 | 0.153938 | -122.4915 | -117.1474 |
Kết quả ước lượng mô hình Copula tối ưu cho hai mã cổ phiếu VNI và Nikkei cho thấy rằng Copula Survival Gumbel là mô hình phù hợp nhất để phân tích mối quan hệ giữa chúng. Copula Survival Gumbel, với tham số chính là 1.181946, giúp mô hình hóa các mối liên hệ trong điều kiện cực trị, đặc biệt là trong các tình huống mà các biến số có thể đồng thời gặp phải các sự kiện hiếm gặp. Đây là lựa chọn lý tưởng khi phân tích mối liên hệ giữa các cổ phiếu trong các tình huống khắc nghiệt hoặc trong các điều kiện thị trường bất thường.
Các giá trị đuôi dưới và đuôi trên của mô hình đều bằng 0, điều này chỉ ra rằng không có sự khác biệt rõ rệt trong phân phối của hai cổ phiếu khi sử dụng Copula này. Điều này cho thấy rằng mối liên hệ giữa VNI và Nikkei không bị ảnh hưởng nhiều bởi các điều kiện cực đoan hoặc sự kiện hiếm gặp trong phạm vi nghiên cứu. Điều này có thể chỉ ra rằng hai cổ phiếu này có sự tương quan khá ổn định trong các điều kiện bình thường, nhưng có thể có sự thay đổi trong các điều kiện thị trường không ổn định.
Cuối cùng, các chỉ số AIC và BIC, lần lượt là -122.4915 và -117.1474, cho thấy mô hình Copula Survival Gumbel có khả năng dự đoán và phù hợp với dữ liệu rất tốt. Các giá trị AIC và BIC thấp hơn cho thấy mô hình không chỉ phù hợp với dữ liệu mà còn tối ưu hóa tốt các tham số, đồng thời hạn chế khả năng quá khớp (overfitting). Kết quả này hỗ trợ việc sử dụng mô hình Copula Survival Gumbel để phân tích mối quan hệ giữa VNI và Nikkei, đặc biệt trong các điều kiện thị trường cực đoan.
persp(VC2copula::BB7Copula(param = c(est_opt_cop$par, est_opt_cop$par2)),dCopula,
xlab = 'u', ylab = 'v', col = 'pink', ltheta = 120,
ticktype = "detailed", cex.axis = 0.8, main = 'Phối cảnh PDF của mô hình BB7 Copula')
Biểu đồ thể hiện phối cảnh hàm mật độ xác suất (PDF) của mô hình BB7 Copula, cho thấy sự tập trung cao ở các giá trị gần 0 và 1, điều này chỉ ra rằng các sự kiện cực trị có khả năng xảy ra nhiều hơn trong các điều kiện nhất định. Hình dạng của bề mặt PDF phản ánh sự tương tác giữa các biến số đầu vào, đặc biệt là trong các vùng gần 0 và 1. Mô hình BB7 Copula có thể được ứng dụng để phân tích các mối quan hệ phi tuyến tính giữa các biến, điều này rất ý nghĩa trong lĩnh vực tài chính, nơi mà các sự kiện hiếm gặp có thể có tác động lớn đến kết quả.
Hơn nữa, BB7 Copula nhấn mạnh khả năng mô hình hóa các mối quan hệ phức tạp và không đối xứng, giúp phản ánh chính xác hơn các mối liên hệ giữa các biến trong các điều kiện thị trường khác nhau. Tóm lại, Hình 13 cung cấp cái nhìn sâu sắc về cách mà mô hình BB7 Copula có thể xử lý các tình huống cực đoan, điều này rất quan trọng trong phân tích tài chính và quản lý rủi ro.
Để so sánh mức độ phản ứng của thị trường chứng khoán Việt Nam (TTCK Việt Nam) đối với sự biến động của thị trường chứng khoán Nhật Bản (TTCK Nhật Bản), chúng ta sẽ phân tích qua bốn giai đoạn lịch sử quan trọng. Mỗi giai đoạn đại diện cho những biến động kinh tế, chính trị và xã hội đáng kể, có khả năng ảnh hưởng sâu rộng đến cả hai thị trường.
Giai đoạn đầu tiên từ ngày 1 tháng 1 năm 2018 đến ngày 31 tháng 5 năm 2019, trước cú sốc kinh tế, là thời kỳ mà các yếu tố kinh tế toàn cầu vẫn ổn định, tạo tiền đề cho sự tương tác giữa hai thị trường. Tiếp theo là giai đoạn từ ngày 1 tháng 6 đến ngày 30 tháng 6 năm 2019, khi Hiệp định Thương mại và Đầu tư được ký kết, mở ra một kỷ nguyên mới trong quan hệ thương mại giữa các quốc gia, có thể tác động trực tiếp đến TTCK Việt Nam và Nhật Bản.
Giai đoạn thứ ba, từ ngày 1 tháng 1 năm 2020 đến ngày 31 tháng 12 năm 2022, đánh dấu một trong những thời kỳ đầy biến động nhất với sự bùng phát của đại dịch COVID-19, dẫn đến những thay đổi lớn trong các xu hướng kinh tế và thị trường toàn cầu. Cuối cùng, giai đoạn phục hồi kinh tế toàn cầu sau đại dịch từ ngày 1 tháng 1 năm 2023 đến ngày 31 tháng 7 năm 2024 là thời điểm để đánh giá mức độ phục hồi và sự tái cấu trúc của cả hai thị trường trong bối cảnh thế giới bắt đầu ổn định trở lại.
Qua việc phân tích những giai đoạn này, chúng ta sẽ có cái nhìn toàn diện hơn về sự tương quan và mức độ phản ứng của TTCK Việt Nam trước những biến động từ TTCK Nhật Bản, từ đó rút ra những bài học quan trọng cho tương lai.
truoc <- rt["2018-01-01/2019-05-31"]
hiepdinh <- rt["2019-06-01/2019-06-30"]
covid <- rt["2020-01-01/2022-12-31"]
phuchoi <- rt["2023-01-01/2024-07-31"]
library(rugarch)
arma1vni <- autoarfima(truoc$VNI, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma1nik <- autoarfima(truoc$nik, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma2vni <- autoarfima(hiepdinh$VNI, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma2nik <- autoarfima(hiepdinh$nik, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma3vni <- autoarfima(covid$VNI, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma3nik <- autoarfima(covid$nik, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma4vni <- autoarfima(phuchoi$VNI, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma4nik <- autoarfima(phuchoi$nik, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma1vni <- c(2,0)
arma1nik <- c(0,0)
arma2nik <- c(0,2)
arma2vni <- c(2,2)
arma3nik <- c(2,2)
arma3vni <- c(2,2)
arma4nik <- c(1,0)
arma4vni <- c(2,2)
fit_gjrgarch <- function(data, amorder, garchoder, dis) {
spec <- ugarchspec(
variance.model = list(model = "gjrGARCH", garchOrder = garchoder),
mean.model = list(armaOrder = amorder, include.mean = TRUE),
distribution.model = dis)
ugarchfit(spec = spec, data = data)
}
garch11_nor_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "norm")
garch11_std_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "std")
garch11_sstd_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "sstd")
garch11_ged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "ged")
garch11_sged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "sged")
garch22_nor_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "norm")
garch22_std_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "std")
garch22_sstd_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "sstd")
garch22_ged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "ged")
garch22_sged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "sged")
garch12_nor_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "norm")
garch12_std_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "std")
garch12_sstd_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "sstd")
garch12_ged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "ged")
garch12_sged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "sged")
garch21_nor_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "norm")
garch21_std_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "std")
garch21_sstd_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "sstd")
garch21_ged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "ged")
garch21_sged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "sged")
garch11_nor_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,1), "norm")
garch11_std_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,1), "std")
garch11_sstd_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,1), "sstd")
garch11_ged_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,1), "ged")
garch11_sged_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,1), "sged")
garch22_nor_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,2), "norm")
garch22_std_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,2), "std")
garch22_sstd_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,2), "sstd")
garch22_ged_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,2), "ged")
garch22_sged_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,2), "sged")
garch12_nor_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,2), "norm")
garch12_std_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,2), "std")
garch12_sstd_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,2), "sstd")
garch12_ged_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,2), "ged")
garch12_sged_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(1,2), "sged")
garch21_nor_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,1), "norm")
garch21_std_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,1), "std")
garch21_sstd_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,1), "sstd")
garch21_ged_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,1), "ged")
garch21_sged_vni2 <- fit_gjrgarch(hiepdinh$VNI, arma2vni, c(2,1), "sged")
garch11_nor_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,1), "norm")
garch11_std_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,1), "std")
garch11_sstd_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,1), "sstd")
garch11_ged_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,1), "ged")
garch11_sged_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,1), "sged")
garch22_nor_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,2), "norm")
garch22_std_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,2), "std")
garch22_sstd_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,2), "sstd")
garch22_ged_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,2), "ged")
garch22_sged_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,2), "sged")
garch12_nor_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,2), "norm")
garch12_std_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,2), "std")
garch12_sstd_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,2), "sstd")
garch12_ged_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,2), "ged")
garch12_sged_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(1,2), "sged")
garch21_nor_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,1), "norm")
garch21_std_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,1), "std")
garch21_sstd_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,1), "sstd")
garch21_ged_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,1), "ged")
garch21_sged_vni3 <- fit_gjrgarch(covid$VNI, arma3vni, c(2,1), "sged")
garch11_nor_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,1), "norm")
garch11_std_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,1), "std")
garch11_sstd_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,1), "sstd")
garch11_ged_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,1), "ged")
garch11_sged_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,1), "sged")
garch22_nor_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,2), "norm")
garch22_std_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,2), "std")
garch22_sstd_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,2), "sstd")
garch22_ged_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,2), "ged")
garch22_sged_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,2), "sged")
garch12_nor_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,2), "norm")
garch12_std_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,2), "std")
garch12_sstd_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,2), "sstd")
garch12_ged_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,2), "ged")
garch12_sged_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(1,2), "sged")
garch21_nor_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,1), "norm")
garch21_std_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,1), "std")
garch21_sstd_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,1), "sstd")
garch21_ged_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,1), "ged")
garch21_sged_vni4 <- fit_gjrgarch(phuchoi$VNI, arma4vni, c(2,1), "sged")
garch11_nor_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,1), "norm")
garch11_std_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,1), "std")
garch11_sstd_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,1), "sstd")
garch11_ged_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,1), "ged")
garch11_sged_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,1), "sged")
garch22_nor_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,2), "norm")
garch22_std_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,2), "std")
garch22_sstd_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,2), "sstd")
garch22_ged_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,2), "ged")
garch22_sged_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,2), "sged")
garch12_nor_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,2), "norm")
garch12_std_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,2), "std")
garch12_sstd_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,2), "sstd")
garch12_ged_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,2), "ged")
garch12_sged_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(1,2), "sged")
garch21_nor_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,1), "norm")
garch21_std_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,1), "std")
garch21_sstd_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,1), "sstd")
garch21_ged_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,1), "ged")
garch21_sged_nik1 <- fit_gjrgarch(truoc$nik, arma1nik, c(2,1), "sged")
garch11_nor_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,1), "norm")
garch11_std_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,1), "std")
garch11_sstd_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,1), "sstd")
garch11_ged_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,1), "ged")
garch11_sged_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,1), "sged")
garch22_nor_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,2), "norm")
garch22_std_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,2), "std")
garch22_sstd_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,2), "sstd")
garch22_ged_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,2), "ged")
garch22_sged_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,2), "sged")
garch12_nor_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,2), "norm")
garch12_std_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,2), "std")
garch12_sstd_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,2), "sstd")
garch12_ged_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,2), "ged")
garch12_sged_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(1,2), "sged")
garch21_nor_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,1), "norm")
garch21_std_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,1), "std")
garch21_sstd_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,1), "sstd")
garch21_ged_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,1), "ged")
garch21_sged_nik2 <- fit_gjrgarch(hiepdinh$nik, arma2nik, c(2,1), "sged")
garch11_nor_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,1), "norm")
garch11_std_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,1), "std")
garch11_sstd_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,1), "sstd")
garch11_ged_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,1), "ged")
garch11_sged_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,1), "sged")
garch22_nor_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,2), "norm")
garch22_std_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,2), "std")
garch22_sstd_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,2), "sstd")
garch22_ged_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,2), "ged")
garch22_sged_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,2), "sged")
garch12_nor_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,2), "norm")
garch12_std_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,2), "std")
garch12_sstd_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,2), "sstd")
garch12_ged_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,2), "ged")
garch12_sged_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(1,2), "sged")
garch21_nor_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,1), "norm")
garch21_std_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,1), "std")
garch21_sstd_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,1), "sstd")
garch21_ged_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,1), "ged")
garch21_sged_nik3 <- fit_gjrgarch(covid$nik, arma3nik, c(2,1), "sged")
garch11_nor_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,1), "norm")
garch11_std_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,1), "std")
garch11_sstd_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,1), "sstd")
garch11_ged_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,1), "ged")
garch11_sged_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,1), "sged")
garch22_nor_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,2), "norm")
garch22_std_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,2), "std")
garch22_sstd_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,2), "sstd")
garch22_ged_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,2), "ged")
garch22_sged_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,2), "sged")
garch12_nor_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,2), "norm")
garch12_std_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,2), "std")
garch12_sstd_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,2), "sstd")
garch12_ged_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,2), "ged")
garch12_sged_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(1,2), "sged")
garch21_nor_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,1), "norm")
garch21_std_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,1), "std")
garch21_sstd_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,1), "sstd")
garch21_ged_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,1), "ged")
garch21_sged_nik4 <- fit_gjrgarch(phuchoi$nik, arma4nik, c(2,1), "sged")
vni1.model.list <- list(garch11n = garch11_nor_vni1, garch11t = garch11_std_vni1, garch11st = garch11_sstd_vni1,
garch11g = garch11_ged_vni1, garch11sg = garch11_sged_vni1,
garch12n = garch12_nor_vni1, garch12t = garch12_std_vni1, garch12st = garch12_sstd_vni1,
garch12g = garch12_ged_vni1, garch12sg = garch12_sged_vni1,
garch21n = garch21_nor_vni1, garch21t = garch21_std_vni1, garch21st = garch21_sstd_vni1,
garch21g = garch21_ged_vni1, garch21sg = garch21_sged_vni1,
garch22n = garch22_nor_vni1, garch22t = garch22_std_vni1, garch22st = garch22_sstd_vni1,
garch22g = garch22_ged_vni1, garch22sg = garch22_sged_vni1
)
vni1.info.mat <- sapply(vni1.model.list, infocriteria)
rownames(vni1.info.mat) <- rownames(infocriteria(garch11_nor_vni1))
vni1.inds <- which(vni1.info.mat == min(vni1.info.mat[1,]), arr.ind=TRUE)
model.vni1 <- colnames(vni1.info.mat)[vni1.inds[,2]]
vni2.model.list <- list(garch11n = garch11_nor_vni2, garch11t = garch11_std_vni2, garch11st = garch11_sstd_vni2,
garch12n = garch12_nor_vni2, garch12t = garch12_std_vni2, garch12st = garch12_sstd_vni2,
garch12g = garch12_ged_vni2, garch12sg = garch12_sged_vni2,
garch21n = garch21_nor_vni2, garch21t = garch21_std_vni2, garch21st = garch21_sstd_vni2,
garch21g = garch21_ged_vni2, garch21sg = garch21_sged_vni2,
garch22n = garch22_nor_vni2, garch22t = garch22_std_vni2, garch22st = garch22_sstd_vni2,
garch22g = garch22_ged_vni2, garch22sg = garch22_sged_vni2
)
vni2.info.mat <- sapply(vni2.model.list, infocriteria)
rownames(vni2.info.mat) <- rownames(infocriteria(garch11_nor_vni2))
vni2.inds <- which(vni2.info.mat == min(vni2.info.mat[1,]), arr.ind=TRUE)
model.vni2 <- colnames(vni2.info.mat)[vni2.inds[,2]]
vni3.model.list <- list(garch11n = garch11_nor_vni3, garch11st = garch11_sstd_vni3,
garch11g = garch11_ged_vni3, garch11sg = garch11_sged_vni3,
garch12n = garch12_nor_vni3, garch12t = garch12_std_vni3, garch12st = garch12_sstd_vni3,
garch12g = garch12_ged_vni3, garch12sg = garch12_sged_vni3,
garch21n = garch21_nor_vni3, garch21t = garch21_std_vni3, garch21st = garch21_sstd_vni3,
garch21g = garch21_ged_vni3, garch21sg = garch21_sged_vni3,
garch22n = garch22_nor_vni3, garch22t = garch22_std_vni3, garch22st = garch22_sstd_vni3,
garch22g = garch22_ged_vni3, garch22sg = garch22_sged_vni3
)
vni3.info.mat <- sapply(vni3.model.list, infocriteria)
rownames(vni3.info.mat) <- rownames(infocriteria(garch11_nor_vni3))
vni3.inds <- which(vni3.info.mat == min(vni3.info.mat[1,]), arr.ind=TRUE)
model.vni3 <- colnames(vni3.info.mat)[vni3.inds[,2]]
vni4.model.list <- list(garch11n = garch11_nor_vni4, garch11t = garch11_std_vni4, garch11st = garch11_sstd_vni4,
garch11g = garch11_ged_vni4, garch11sg = garch11_sged_vni4,
garch12n = garch12_nor_vni4, garch12t = garch12_std_vni4, garch12st = garch12_sstd_vni4,
garch12g = garch12_ged_vni4, garch12sg = garch12_sged_vni4
)
vni4.info.mat <- sapply(vni4.model.list, infocriteria)
rownames(vni4.info.mat) <- rownames(infocriteria(garch11_nor_vni4))
vni4.inds <- which(vni4.info.mat == min(vni4.info.mat[1,]), arr.ind=TRUE)
model.vni4 <- colnames(vni4.info.mat)[vni4.inds[,2]]
#Cho nik
nik1.model.list <- list(garch11n = garch11_nor_nik1, garch11t = garch11_std_nik1, garch11st = garch11_sstd_nik1,
garch11g = garch11_ged_nik1, garch11sg = garch11_sged_nik1,
garch12n = garch12_nor_nik1, garch12t = garch12_std_nik1, garch12st = garch12_sstd_nik1,
garch12g = garch12_ged_nik1, garch12sg = garch12_sged_nik1,
garch21n = garch21_nor_nik1, garch21t = garch21_std_nik1, garch21st = garch21_sstd_nik1,
garch21g = garch21_ged_nik1, garch21sg = garch21_sged_nik1,
garch22n = garch22_nor_nik1, garch22t = garch22_std_nik1, garch22st = garch22_sstd_nik1,
garch22g = garch22_ged_nik1, garch22sg = garch22_sged_nik1
)
nik1.info.mat <- sapply(nik1.model.list, infocriteria)
rownames(nik1.info.mat) <- rownames(infocriteria(garch11_nor_nik1))
nik1.inds <- which(nik1.info.mat == min(nik1.info.mat[1,]), arr.ind=TRUE)
model.nik1 <- colnames(nik1.info.mat)[nik1.inds[,2]]
nik2.model.list <- list(garch11n = garch11_nor_nik2, garch11t = garch11_std_nik2, garch11st = garch11_sstd_nik2,
garch11g = garch11_ged_nik2, garch11sg = garch11_sged_nik2,
garch12n = garch12_nor_nik2, garch12t = garch12_std_nik2, garch12st = garch12_sstd_nik2,
garch12g = garch12_ged_nik2, garch12sg = garch12_sged_nik2,
garch21n = garch21_nor_nik2, garch21t = garch21_std_nik2, garch21st = garch21_sstd_nik2,
garch21g = garch21_ged_nik2,
garch22n = garch22_nor_nik2, garch22t = garch22_std_nik2, garch22st = garch22_sstd_nik2,
garch22g = garch22_ged_nik2, garch22sg = garch22_sged_nik2
)
nik2.info.mat <- sapply(nik2.model.list, infocriteria)
rownames(nik2.info.mat) <- rownames(infocriteria(garch11_nor_nik2))
nik2.inds <- which(nik2.info.mat == min(nik2.info.mat[1,]), arr.ind=TRUE)
model.nik2 <- colnames(nik2.info.mat)[nik2.inds[,2]]
nik3.model.list <- list(garch11n = garch11_nor_nik3, garch11t = garch11_std_nik3, garch11st = garch11_sstd_nik3,
garch11g = garch11_ged_nik3, garch11sg = garch11_sged_nik3,
garch12n = garch12_nor_nik3, garch12t = garch12_std_nik3, garch12st = garch12_sstd_nik3,
garch12g = garch12_ged_nik3, garch12sg = garch12_sged_nik3,
garch21n = garch21_nor_nik3, garch21t = garch21_std_nik3, garch21st = garch21_sstd_nik3,
garch21g = garch21_ged_nik3, garch21sg = garch21_sged_nik3,
garch22n = garch22_nor_nik3, garch22t = garch22_std_nik3, garch22st = garch22_sstd_nik3,
garch22g = garch22_ged_nik3, garch22sg = garch22_sged_nik3
)
nik3.info.mat <- sapply(nik3.model.list, infocriteria)
rownames(nik3.info.mat) <- rownames(infocriteria(garch11_nor_nik3))
nik3.inds <- which(nik3.info.mat == min(nik3.info.mat[1,]), arr.ind=TRUE)
model.nik3 <- colnames(nik3.info.mat)[nik3.inds[,2]]
nik4.model.list <- list(garch11t = garch11_std_nik4, garch11st = garch11_sstd_nik4,
garch11g = garch11_ged_nik4, garch11sg = garch11_sged_nik4,
garch12n = garch12_nor_nik4, garch12t = garch12_std_nik4, garch12st = garch12_sstd_nik4,
garch12sg = garch12_sged_nik4,
garch21n = garch21_nor_nik4, garch21t = garch21_std_nik4, garch21st = garch21_sstd_nik4,
garch21g = garch21_ged_nik4, garch21sg = garch21_sged_nik4,
garch22n = garch22_nor_nik4, garch22t = garch22_std_nik4, garch22st = garch22_sstd_nik4,
garch22g = garch22_ged_nik4, garch22sg = garch22_sged_nik4
)
nik4.info.mat <- sapply(nik4.model.list, infocriteria)
rownames(nik4.info.mat) <- rownames(infocriteria(garch11_std_nik4))
nik4.inds <- which(nik4.info.mat == min(nik4.info.mat[1,]), arr.ind=TRUE)
model.nik4 <- colnames(nik4.info.mat)[nik4.inds[,2]]
mar_model1 <- data.frame(
rate = c("VNI", "nik"),
truoc = c("ARMA(2,0)-GJR-GARCH(1,1)-Skewed Student t", "ARMA(0,0)-GJR-GARCH(1,1)-Student t"),
hiepdinh = c("ARMA(2,0)-GJR-GARCH(2,2)-Skewed Student t", "ARMA(0,2)-GJR-GARCH(1,1)-Student t"),
xungdot = c("ARMA(2,2)-GJR-GARCH(1,1)-Skewed Ged", "ARMA(2,2)-GJR-GARCH(1,1)-Skewed Student t"),
phuchoi = c("ARMA(2,0)-GJR-GARCH(2,2)-Skewed Ged", "ARMA(1,0)-GJR-GARCH(1,1)-Student t"))
kable(mar_model1, col.names = c("Chỉ số", "Giai đoạn trước","Giao đoạn hiepdinh","Giai đoạn xung đột","Giai đoạn phuchoi"),
caption = "Mô hình phân phối biên tối ưu cho các giai đoạn", format = "pandoc",
table.attr = "style='width:100%;'")
Chỉ số | Giai đoạn trước | Giao đoạn hiepdinh | Giai đoạn xung đột | Giai đoạn phuchoi |
---|---|---|---|---|
VNI | ARMA(2,0)-GJR-GARCH(1,1)-Skewed Student t | ARMA(2,0)-GJR-GARCH(2,2)-Skewed Student t | ARMA(2,2)-GJR-GARCH(1,1)-Skewed Ged | ARMA(2,0)-GJR-GARCH(2,2)-Skewed Ged |
nik | ARMA(0,0)-GJR-GARCH(1,1)-Student t | ARMA(0,2)-GJR-GARCH(1,1)-Student t | ARMA(2,2)-GJR-GARCH(1,1)-Skewed Student t | ARMA(1,0)-GJR-GARCH(1,1)-Student t |
Trong quá trình phân tích các mô hình phân phối biên tối ưu cho chỉ số VNI của Việt Nam và Nikkei của Nhật Bản qua các giai đoạn khác nhau, sự lựa chọn mô hình phản ánh những đặc điểm riêng biệt của từng bối cảnh kinh tế. Trong giai đoạn trước cú sốc kinh tế (2018-01-01 đến 2019-05-31), chỉ số VNI được mô hình hóa bằng ARMA(2,0)-GJR-GARCH(1,1)-Skewed Student t, cho thấy sự ổn định tương đối nhưng vẫn tiềm ẩn các yếu tố rủi ro với khả năng phát hiện các cú sốc không đối xứng. Trong khi đó, chỉ số Nikkei áp dụng mô hình ARMA(0,0)-GJR-GARCH(1,1)-Student t, thể hiện sự biến động đơn giản hơn nhưng vẫn nhạy cảm với sự thay đổi trong độ biến động.
Giai đoạn Hiệp định Thương mại và Đầu tư (2019-06-01 đến 2019-06-30) đã chứng kiến sự phức tạp hơn trong biến động của thị trường Việt Nam với mô hình ARMA(2,0)-GJR-GARCH(2,2)-Skewed Student t, cho thấy sự thay đổi trong cấu trúc biến động và độ lệch phân phối do tác động của hiệp định thương mại. Đối với Nikkei, mô hình ARMA(0,2)-GJR-GARCH(1,1)-Student t phản ánh sự gia tăng trong tính bất định do các yếu tố bên ngoài ngắn hạn.
Trong giai đoạn xung đột COVID-19 (2020-01-01 đến 2022-12-31), mô hình ARMA(2,2)-GJR-GARCH(1,1)-Skewed Ged được áp dụng cho chỉ số VNI, biểu thị sự phức tạp và không đối xứng mạnh trong phản ứng của thị trường trước những cú sốc toàn cầu. Tương tự, Nikkei sử dụng mô hình ARMA(2,2)-GJR-GARCH(1,1)-Skewed Student t, cho thấy Nhật Bản cũng trải qua những cú sốc mạnh với sự không đối xứng đáng kể.
Cuối cùng, trong giai đoạn phục hồi kinh tế toàn cầu sau đại dịch (2023-01-01 đến 2024-07-31), VNI tiếp tục được mô hình hóa bằng ARMA(2,0)-GJR-GARCH(2,2)-Skewed Ged, phản ánh sự cẩn trọng trong dự báo các cú sốc tiềm tàng. Ngược lại, Nikkei sử dụng mô hình ARMA(1,0)-GJR-GARCH(1,1)-Student t, biểu thị sự trở lại với tính ổn định hơn so với giai đoạn trước đó. Qua các giai đoạn này, các mô hình ARMA-GJR-GARCH với các phân phối khác nhau đã mô tả chính xác đặc điểm biến động của từng thị trường, cho thấy sự khác biệt và tương quan giữa TTCK Việt Nam và Nhật Bản trong các bối cảnh kinh tế quan trọng.
vni.res1 <- residuals(garch11_sstd_vni1)/sigma(garch11_sstd_vni1)
a1 <- fitdist(distribution = "sstd", vni.res1, control = list())
u1 <- pdist(distribution = "sstd", q = vni.res1, mu = a1$pars['mu'] , sigma = a1$pars['sigma'],
skew = a1$pars['skew'], shape = a1$pars['shape'])
nik.res1 <- residuals(garch11_std_nik1)/sigma(garch11_std_nik1)
b1 <- fitdist(distribution = "std", nik.res1, control = list())
v1 <- pdist(distribution = "std", q = nik.res1, mu = b1$pars['mu'] , sigma = b1$pars['sigma'],
skew = b1$pars['skew'], shape = b1$pars['shape'])
vni.res2 <- residuals(garch11_sstd_vni2)/sigma(garch11_sstd_vni2)
a2 <- fitdist(distribution = "sstd", vni.res2, control = list())
u2 <- pdist(distribution = "sstd", q = vni.res2, mu = a2$pars['mu'] , sigma = a2$pars['sigma'],
skew = a2$pars['skew'], shape = a2$pars['shape'])
nik.res2 <- residuals(garch11_std_nik2)/sigma(garch11_std_nik2)
b2 <- fitdist(distribution = "std", nik.res2, control = list())
v2 <- pdist(distribution = "std", q = nik.res2, mu = b2$pars['mu'] , sigma = b2$pars['sigma'],
skew = b2$pars['skew'], shape = b2$pars['shape'])
vni.res3 <- residuals(garch11_sged_vni3)/sigma(garch11_sged_vni3)
a3 <- fitdist(distribution = "sged", vni.res3, control = list())
u3 <- pdist(distribution = "sged", q = vni.res3, mu = a3$pars['mu'] , sigma = a3$pars['sigma'],
skew = a3$pars['skew'], shape = a3$pars['shape'])
nik.res3 <- residuals(garch11_sstd_nik3)/sigma(garch11_sstd_nik3)
b3 <- fitdist(distribution = "sstd", nik.res3, control = list())
v3 <- pdist(distribution = "sstd", q = nik.res3, mu = b3$pars['mu'] , sigma = b3$pars['sigma'],
skew = b3$pars['skew'], shape = b3$pars['shape'])
vni.res4 <- residuals(garch11_sged_vni4)/sigma(garch11_sged_vni4)
a4 <- fitdist(distribution = "sged", vni.res4, control = list())
u4 <- pdist(distribution = "sged", q = vni.res4, mu = a4$pars['mu'] , sigma = a4$pars['sigma'],
skew = a4$pars['skew'], shape = a4$pars['shape'])
nik.res4 <- residuals(garch11_std_nik4)/sigma(garch11_std_nik4)
b4 <- fitdist(distribution = "std", nik.res4, control = list())
v4 <- pdist(distribution = "std", q = nik.res4, mu = b4$pars['mu'] , sigma = b4$pars['sigma'],
skew = b4$pars['skew'], shape = b4$pars['shape'])
cop1 <- BiCopSelect(u1,v1,selectioncrit = "AIC",method = "mle")
cop2 <- BiCopSelect(u2,v2,selectioncrit = "AIC",method = "mle")
cop3 <- BiCopSelect(u3,v3,selectioncrit = "AIC",method = "mle")
cop4 <- BiCopSelect(u4,v4,selectioncrit = "AIC",method = "mle")
#est
est_cop1 <- BiCopEst(u1,v1,family = cop1$family,method = "mle",max.df = 30)
est_cop2 <- BiCopEst(u2,v2,family = cop2$family,method = "mle",max.df = 30)
est_cop3 <- BiCopEst(u3,v3,family = cop3$family,method = "mle",max.df = 30)
est_cop4 <- BiCopEst(u4,v4,family = cop4$family,method = "mle",max.df = 30)
est1 <- data.frame(mqh = c('Giai đoạn trước cú sốc kinh tế' ,'Giai đoạn hiệp định thương mại và đầu tư','Covid 19','sự phục hồi kinh tế toàn cầu sau đại dịch'),
Copula = c('BB7', 'Survival BB7', 'Clayton','Gauss'),
Thamso = c(est_cop1$par, est_cop2$par, est_cop3$par, est_cop4$par),
Thamso2 = c(est_cop1$par2, est_cop2$par2, est_cop3$par2, est_cop4$par2),
duoi = c(est_cop1$tau, est_cop2$tau, est_cop3$tau, est_cop4$tau),
duoiduoi = c(est_cop1$taildep$lower, est_cop2$taildep$lower, est_cop3$taildep$lower, est_cop4$taildep$lower),
duoitren = c(est_cop1$taildep$upper, est_cop2$taildep$upper, est_cop3$taildep$upper, est_cop4$taildep$upper),
aic = c(est_cop1$AIC, est_cop2$AIC, est_cop3$AIC, est_cop4$AIC),
bic = c(est_cop1$BIC, est_cop2$BIC, est_cop3$BIC, est_cop4$BIC))
kable(est1,
caption = "Kết quả ước lượng Copula của TSLN VNI và Nikkei từng giai đoạn",
col.names = c("Chỉ số","Copula", "Par","Par2", "Hệ số Kendall","Đuôi dưới","Đuôi trên","AIC","BIC"),
format = 'pandoc')
Chỉ số | Copula | Par | Par2 | Hệ số Kendall | Đuôi dưới | Đuôi trên | AIC | BIC |
---|---|---|---|---|---|---|---|---|
Giai đoạn trước cú sốc kinh tế | BB7 | 0.3426766 | 0.0000 | 0.2226670 | 0.0000000 | 0.0000000 | -38.67904 | -34.892141 |
Giai đoạn hiệp định thương mại và đầu tư | Survival BB7 | 0.1983269 | 2.0001 | 0.1271015 | 0.2515547 | 0.2515547 | -0.64209 | 1.349375 |
Covid 19 | Clayton | 1.1881618 | 0.0000 | 0.1583638 | 0.2079185 | 0.0000000 | -58.67156 | -54.111946 |
sự phục hồi kinh tế toàn cầu sau đại dịch | Gauss | 1.6076580 | 0.0000 | 0.1737249 | 0.0000000 | 0.0000000 | -23.57257 | -19.653673 |
Kết quả ước lượng Copula cho thấy sự thay đổi đáng kể trong mối tương quan giữa chỉ số VNI của Việt Nam và Nikkei của Nhật Bản qua các giai đoạn kinh tế khác nhau. Trước cú sốc kinh tế, Copula BB7 với tham số ước lượng Par = 0.3426766 cho thấy hệ số Kendall là 0.2226670, phản ánh một mức độ tương quan vừa phải giữa hai chỉ số. Không có sự xuất hiện của đuôi dưới hay đuôi trên, cho thấy mối quan hệ này không bị ảnh hưởng bởi các biến động cực đoan.
Trong giai đoạn Hiệp định Thương mại và Đầu tư, Copula Survival BB7 với Par = 0.1983269 và Par2 = 2.0001 cho hệ số Kendall giảm xuống còn 0.1271015, cho thấy sự giảm nhẹ trong mối tương quan giữa hai thị trường. Sự xuất hiện của đuôi dưới và đuôi trên đều ở mức 0.2515547 chỉ ra rằng có khả năng xảy ra các biến động cực đoan đồng thời trong giai đoạn này. Tuy nhiên, chỉ số AIC gần bằng 0 và BIC dương cho thấy mô hình này không quá phù hợp.
Trong giai đoạn COVID-19, Copula Clayton với Par = 1.1881618 cho thấy hệ số Kendall ở mức 0.1583638 và sự xuất hiện của đuôi dưới ở mức 0.2079185, cho thấy mối tương quan giữa hai chỉ số vẫn duy trì nhưng có xu hướng phản ứng mạnh hơn trong các tình huống tiêu cực. Chỉ số AIC và BIC ở giai đoạn này đều âm, cho thấy mô hình có độ phù hợp tốt.
Cuối cùng, trong giai đoạn phục hồi kinh tế toàn cầu sau đại dịch, Copula Gauss với Par = 1.6076580 cho hệ số Kendall là 0.1737249, cho thấy mối tương quan tăng nhẹ nhưng không có sự xuất hiện của đuôi dưới hoặc đuôi trên, cho thấy biến động cực đoan không còn là yếu tố chính. Tuy nhiên, chỉ số AIC và BIC trong giai đoạn này không tốt bằng các giai đoạn trước, cho thấy mô hình này phù hợp ở mức độ tương đối.
library(VC2copula)
set.seed(123)
library(copula)
cop_1 <- normalCopula(est_cop1$par, dim = 2)
cop_2 <- normalCopula(est_cop2$par, dim = 2)
cop_3 <- claytonCopula(est_cop3$par, dim = 2)
cop_4 <- claytonCopula(est_cop4$par, dim = 2)
per1 <- persp_plot(cop_1, 'cop1.png', 'pink')
per2 <- persp_plot(cop_2, 'cop2.png', '#AAAAAA')
per3 <- persp_plot(cop_3, 'cop3.png', '#A8888888')
per4 <- persp_plot(cop_4, 'cop4.png', '#008080')
legend <- legendGrob(
labels = c("Trước cú sốc kinh tế - BB7", "Hiệp định thương mại và đầu tư - Sur BB7","Covid - Clayton", "Sự hồi phục kinh tế - Gauss"), pch = 15,
gp = gpar(col = c('pink', '#AAAAAA', '#A8888888','#008080'), fill = c('pink', '#AAAAAA', '#A8888888','#008080'))
)
grid.arrange( per1, per2, per3,per4, legend, ncol = 3,
layout_matrix = rbind(c(1, 2, 5), c(3,4,5)),
widths = c(2, 2, 1),
top = textGrob("Phối cảnh PDF của Copula các giai đoạn",
gp = gpar(fontsize = 15, font = 2))
)
Biểu đồ minh họa các phối cảnh PDF của Copula qua các giai đoạn khác
nhau. Trước cú sốc kinh tế, Copula BB7 được sử dụng để mô tả phân phối
xác suất, với đường cong phức tạp cho thấy sự phụ thuộc phi tuyến tính
giữa các biến. Trong giai đoạn có hiệp định thương mại và dầu, Copula
tiếp tục được sử dụng, nhưng đường cong thay đổi, phản ánh sự thay đổi
trong mối quan hệ giữa các biến. Trong giai đoạn Covid, Copula Clayton
được áp dụng, với đường cong đặc trưng cho thấy sự phụ thuộc mạnh mẽ
giữa các biến. Cuối cùng, trong giai đoạn hồi phục kinh tế, Copula Gauss
được sử dụng, với đường cong đơn giản hơn, cho thấy mối quan hệ tuyến
tính hơn giữa các biến. Mỗi biểu đồ thể hiện sự thay đổi trong mối quan
hệ giữa các biến qua các giai đoạn khác nhau, từ trước cú sốc kinh tế,
qua hiệp định thương mại và dầu, đến giai đoạn Covid và sự hồi phục kinh
tế.
Kết quả phân tích sử dụng phương pháp Copula có điều kiện đã chỉ ra rằng mức độ phụ thuộc của thị trường chứng khoán Việt Nam (VNI) vào thị trường chứng khoán Nhật Bản (Nikkei) thay đổi theo từng giai đoạn kinh tế. Trước cú sốc kinh tế, mối liên hệ giữa hai thị trường thể hiện sự tương quan nhất định nhưng không có dấu hiệu của sự phụ thuộc mạnh mẽ vào các biến động cực đoan, với Copula BB7 cho hệ số Kendall ở mức 0,2226670. Tuy nhiên, trong giai đoạn COVID-19, mặc dù mức độ tương quan giảm xuống, nhưng lại có sự xuất hiện của hiện tượng phụ thuộc đuôi dưới, cho thấy rằng các biến động tiêu cực trên thị trường Nhật Bản có thể gây ra ảnh hưởng tiêu cực tới thị trường Việt Nam.
Trong giai đoạn phục hồi kinh tế toàn cầu sau đại dịch, mức độ tương quan giữa hai thị trường tiếp tục ở mức tương đối ổn định, với Copula Gauss cho hệ số Kendall là 0,1737249, nhưng không có sự phụ thuộc đuôi dưới hay đuôi trên. Điều này cho thấy rằng trong điều kiện kinh tế bình thường, thị trường Việt Nam không bị ảnh hưởng nhiều bởi các biến động cực đoan từ Nhật Bản. Tuy nhiên, cần lưu ý rằng trong giai đoạn xung đột Nga-Ukraine, Copula Clayton đã chỉ ra sự xuất hiện của phụ thuộc đuôi dưới, cho thấy mối quan hệ giữa hai thị trường vẫn tiềm ẩn rủi ro trong bối cảnh biến động địa chính trị.
Dựa trên kết quả phân tích, có một số kiến nghị quan trọng cho các nhà đầu tư và nhà quản lý chính sách. Trước hết, việc theo dõi chặt chẽ các biến động trên thị trường chứng khoán Nhật Bản là cần thiết, đặc biệt là trong các giai đoạn khủng hoảng hoặc biến động toàn cầu. Mức độ phụ thuộc của thị trường Việt Nam vào thị trường Nhật Bản có thể không mạnh trong điều kiện kinh tế bình thường, nhưng trong bối cảnh khủng hoảng, sự liên kết này có thể gia tăng, gây ra rủi ro lớn cho nhà đầu tư.
Ngoài ra, để giảm thiểu rủi ro, các nhà quản lý chính sách cần cân nhắc việc xây dựng các biện pháp phòng ngừa nhằm bảo vệ thị trường trong nước trước các cú sốc từ bên ngoài. Điều này có thể bao gồm việc tăng cường hệ thống giám sát tài chính, xây dựng các quỹ dự phòng, và tăng cường hợp tác với các tổ chức quốc tế để có thể ứng phó hiệu quả hơn trước các biến động toàn cầu. Các nghiên cứu sâu hơn về mối liên hệ giữa các thị trường quốc tế cũng cần được thúc đẩy để hiểu rõ hơn về cơ chế tương tác giữa các thị trường trong bối cảnh toàn cầu hóa ngày càng sâu rộng.
Do, A. V., & Nguyen, C. C. (2009). A Structural VAR Analysis between Vietnam Stock Market and Other Stock Markets. Available at SSRN 1531475.
Chang, H. L., & Su, C. W. (2010). The relationship between the Vietnam stock market and its major trading partners–TECM with bivariate asymmetric GARCH model. Applied Economics Letters, 17(13), 1279-1283.
Vo, X. V., & Ellis, C. (2018). International financial integration: Stock return linkages and volatility transmission between Vietnam and advanced countries. Emerging Markets Review, 36, 19-27.
Nguyen, C., Bhatti, M. I., & Henry, D. (2017). Are Vietnam and Chinese stock markets out of the US contagion effect in extreme events? Physica A: Statistical Mechanics and its Applications, 480, 10-21.
Nguyen, T. T., & Thuy, N. T. (2016). Testing for contagion to Vietnam stockmarket during global financial crisis using copula. EPAM. 2(2), 187-210.
Tùng, D. N. (2010). Phương pháp Copula điều kiện trong quản trị rủi ro bằng mô hình VaR và áp dụng thực nghiệm. Tạp chí Kinh tế và Phát triển, 159(2), 55-63.
Nguyên, T. T, Mạnh, H. D., Hân, T. H., Hường, T. T., Liên, N. T., & Thêu. Vận dụng phương pháp mô phỏng ngẫu nhiên trong phân tích và đánh giá rủi ro tài chính tại các ngân hàng thương mại. Đề tài nghiên cứu khoa học cấp bộ năm 2011.
Nguyên, T. T., & Thủy, N. T. (2013). Copula nhiều chiều và ứng dụng trong đo lường rủi ro tài chính. Kỷ yếu hội thảo khoa học quốc gia: Đào tạo và ứng dụng Toán học trong kinh tế -xã hội, 219-229.
Patton, A. J. (2006). Modelling asymmetric exchange rate dependence. International Economic Review, 47, 527-56.
Embrechts, P., McNeil, A., & Straumann, D. (2002). Correlation and dependence in risk management: properties and pitfalls. Risk management: value at risk and beyond, 1, 176-223