Luận án Phản ứng của thị trường chứng khoán Việt Nam đối với biến động của thị trường chứng khoán quốc tế

Nghiên cứu này xem xét sự phụ thuộc giữa TTCK Việt Nam và TTCK quốc tế gồm Mỹ, Anh, Pháp, Đức, Trung Quốc, Hồng Kông, Nhật Bản, Hàn Quốc, Đài Loan, Singapore, Thái Lan, Malaysia và Indonesia trong điều kiện thị trường biến động bình thường và trong điều kiện thị trường biến động cực biên. Đồng thời, sự lây lan biến động từ TTCK quốc tế dưới tác động của khủng hoảng tài chính thế giới năm 2008 đến TTCK Việt Nam cũng được xem xét. Sự phụ thuộc lẫn nhau giữa TTCK Việt Nam với TTCK quốc tế được giải thích dựa trên các nguyên tắc cơ bản của nền kinh tế vĩ mô như dao động của tỷ giá song phương, thương mại quốc tế và cầu tiêu dùng hàng hóa, quy mô nền kinh tế, quy mô vốn hóa thị trường, FDI, lạm phát, khoảng cách địa lý v.v. Khi mối tương quan động giữa hai thị trường chịu tác động bổ sung bởi các yếu tố như tính thanh khoản thị trường; thông tin bất cân xứng và thông tin không đồng nhất; nhiều điểm cân bằng và giao dịch động lượng, khi đó tồn tại hiệu ứng lây lan. Mẫu dữ liệu theo tần suất ngày với cỡ mẫu dao động từ 4.449 quan sát đến 4.710 quan sát cho mỗi chuỗi lợi suất chứng khoán, được thu thập từ từ cơ sở dữ liệu Datastream của Thomson Reuters từ ngày 01/01/2003 đến ngày 31/12/2021. Mô hình copula có điều kiện (ARMA-GJR- GARCH Copula) được vận dụng trong nghiên cứu này. Copula có điều kiện cho phép mô hình hóa sự phụ thuộc đối xứng, bất đối xứng, sự phụ thuộc đuôi và không giả định các chuỗi lợi suất chứng khoán có phân phối chuẩn. Thông qua mức độ phụ thuộc giữa hai thị trường, nghiên cứu xác định được mức độ phản ứng của TTCK Việt Nam đối với sự biến động của các TTCK quốc tế. Các copula có điều kiện gồm copula Gauss, Student-t, Clayton, Rotated-Clayton, Gumbel, Rotated-Gumbel, Frank, Joe, và các copula hỗn hợp BB1, BB6, BB7 và BB8 được sử dụng để xây dựng hàm phân phối đồng thời của các phân phối biên của mỗi chuỗi lợi suất đã được xác định, nhằm xác định tham số phụ thuộc và phụ thuộc đuôi giữa hai chuỗi lợi suất.

pdf186 trang | Chia sẻ: Minh Bắc | Ngày: 16/01/2024 | Lượt xem: 280 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Luận án Phản ứng của thị trường chứng khoán Việt Nam đối với biến động của thị trường chứng khoán quốc tế, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
rộng và chứng minh tính hợp lệ của Định lý Sklar (1959) đối với chuỗi dữ liệu theo thời gian. Hàm copula có xem xét đến sự thay đổi theo thời gian của các phân phối biên còn được gọi là hàm copula có điều kiện. Nội dung của copula có điều kiện được trình bày như sau: Định lý 2: Gọi H là một hàm phân phối có điều kiện n chiều với các phân phối tích lũy liên tục 1 1 1 1( ),..., ( )n nt tF x F x− −  và gọi 1t− đại diện cho tập hợp các thông tin tại thời điểm t-1. Khi đó, tồn tại một hàm copula điều kiện n chiều duy nhất    : 0,1 0,1 n C → cho 1( ,..., ) n nx x x=  ( ) 1 1 1 1 21 1 1 1 1 1 1 ( ) ( ,..., ) ( ,..., ) ( ),..., ( ) t n n t t n nt t t H x Pr X x X x C u u C F x F x − − − − − −  =    =  =    (2.4) Với biến 1 ( )i i i tu F x −=  có phân phối đồng nhất trên  0,1 . 155 Ngược lại, nếu C là một copula điều kiện n chiều và 1 1 1 1( ),..., ( )n nt tF x F x− −  là các hàm phân phối điều kiện đơn biến. Khi đó, hàm phân phối H được định nghĩa bởi phương trình (2) là một hàm phân phối có điều kiện n chiều với các phân phối biên có điều kiện 1 1 1 1( ),..., ( )n nt tF x F x− −  . Patton (2002) chỉ ra rằng hàm copula có điều kiện có tất cả các tính chất của hàm copula không điều kiện. Giả định tất cả các phân phối đều khả vi, hàm mật độ xác suất n chiều có dạng như sau: 1 1 11 1 1 1 1 1 ( ,..., ) ( ( ),..., ( ) ) ( ) n x n n n i it t t t t i h x x c F x F x f x − − − − − =  =     (2.5) Trong đó 1 1 1 1 1 ( ,..., ) ( ,..., ) ,..., n n t n t n C u u c u u u u − −    =   là hàm mật độ xác suất của hàm copula có điều kiện. 1 ( )i i tf x − là hàm mật độ xác suất biên có điều kiện của biến ix . 2.3 Các độ đo phụ thuộc liên kết với copula Tương quan có lẽ là khái niệm quan trọng nhất trong lý thuyết danh mục đầu tư hiện đại kể từ khi Markowitz (1952) chứng minh tầm quan trọng của đa dạng hóa trong phân bổ danh mục đầu tư cách đây 50 năm. Khái niệm tương quan đã trở nên phổ biến đến mức ngày nay người ta sử dụng thuật ngữ “tương quan” và “phụ thuộc” thay thế cho nhau. Tuy nhiên, như đã đề cập trong Chương 2, sự tương quan không phải là thước đo thích hợp cho sự phụ thuộc khi các chuỗi lợi suất không có phân phối chuẩn. Về mặt hình thức, hai biến ngẫu nhiên ( , )X Y phụ thuộc hoặc liên kết nếu chúng không thỏa mãn điều kiện độc lập theo xác suất, tức là 1 2( , ) ( ). ( )F x y F x F y . Độ đo phụ thuộc tóm tắt cấu trúc phụ thuộc của hai biến ngẫu nhiên bằng một số duy nhất. Bây giờ chúng ta xem xét các thuộc tính mong muốn của một thước đo sự phụ thuộc. Gọi ( , )   là một đại lượng vô hướng của sự phụ thuộc. Theo Embrechts và ctv. (2002), các thuộc tính phụ thuộc bao gồm: (i) ( , ) ( , )X Y Y X = : Đối xứng. (ii) 1 ( , ) 1X Y−   : Chuẩn. (iii) ( , ) 1 ( , )X Y X Y =  : Phụ thuộc dương hoàn hảo. ( , ) 1 ( , )X Y X Y = −  : Phụ thuộc âm hoàn hảo. (iv) Với một phép biến đổi đơn điệu nghiêm ngặt :T → ( , ), ( ( ), ) ( , ), Y X T T X Y Y X T      =  −  Sự phụ thuộc có thể được đo lường bởi các độ đo như tương quan tuyến tính, độ đo sự tương thích (concordance) và độ đo phụ thuộc đuôi. Trong đó, độ đo sự tương thích và độ đo phụ thuộc đuôi có liên quan trực tiếp đến lý thuyết copula. 2.3.1 Tương quan tuyến tính Phép đo quen thuộc nhất về sự phụ thuộc giữa hai biến ngẫu nhiên ( , )X Y là hệ số tương quan tuyến tính Pearson. Hệ số Pearson được định nghĩa là: cov( , ) ( , ) , 1 1 X Y X Y X Y    = −   (2.6) 156 trong đó, ,X Y  lần lượt là độ lệch chuẩn của ,X Y , cov( , )X Y là hiệp phương sai giữa X và Y , cov( , ) ( , ) ( ) ( )X Y E X Y E X E Y= − . Sự phổ biến của tương quan tuyến tính có thể được giải thích vì những lý do sau. Đầu tiên, nó rất dễ tính toán. Đối với hầu hết các phân phối hai biến, việc tính toán mômen thứ hai (phương sai và hiệp phương sai) và suy ra hệ số tương quan rất đơn giản. Thứ hai, tương quan tuyến tính là bất biến đối với các phép biến đổi tuyến tính của các biến. Tương quan tuyến tính là một thước đo tốt cho sự phụ thuộc giữa các biến ngẫu nhiên trong phân phối chuẩn đa biến; tuy nhiên, nó vẫn có một vài thiếu sót sau: (i) Tương quan tuyến tính không được xác định đối với một số phân phối có đuôi dày mà mômen thứ hai không tồn tại, ví dụ như phân phối Student-t với bậc tự do nhỏ hơn 3. Điều này không lý tưởng cho chuỗi thời gian tài chính, các chuỗi lợi suất tài chính thường có phân phối với đuôi dày và tồn tại các mômen cao hơn. (ii) Tính độc lập giữa hai biến ngẫu nhiên ngụ ý rằng tương quan tuyến tính bằng 0 (không tương quan), nhưng điều ngược lại chỉ đúng với phân phối chuẩn đa biến. Ví dụ, nếu (0,1)X N và 2Y X= , khi đó cov( , ) 0X Y = , nhưng ,X Y rõ ràng là phụ thuộc. Tương quan giữa ,X Y bằng 0 yêu cầu cov( , ) 0X Y = ; nhưng sự phụ thuộc giữa ,X Y bằng 0 yêu cầu ( )1 2cov ( ), ( ) 0X Y  = cho bất kỳ phân phối 1 2,  . (iii) Tương quan tuyến tính không bất biến với các phép biến đổi phi tuyến tăng nghiêm ngặt :T → , tức là ( )( ), ( ) ( , )T X T Y X Y  . Ví dụ, nếu chúng ta lấy hàm phân phối chuẩn hai biến với hệ số tương quan  và hàm chuyển đổi ( ) ( )T x x= (phân phối chuẩn tắc), chúng ta có ( ) 6 ( ), ( ) arcsin( ) 2 T X T Y    = . (iv) Hơn nữa, cũng có những vấn đề thống kê với sự tương quan; ví dụ, một quan sát đơn lẻ có thể có ảnh hưởng mạnh tùy ý đến mối tương quan tuyến tính. Vì vậy, tương quan tuyến tính không phải là một thước đo mạnh. 2.3.2 Tương quan hạng Như thảo luận ở nội dung trên, theo giả định về tính chuẩn tắc, hệ số tương quan tuyến tính là thước đo thích hợp cho sự phụ thuộc giữa hai biến. Tuy nhiên, hệ số tương quan tuyến tính (tương quan Pearson) cho cùng một trọng số cho tất cả các quan sát trong mẫu. Do đó, khi giả định phân phối của các biến ngẫu nhiên không tuân theo phân phối chuẩn, tương quan Pearson không phải là thước đo phụ thuộc thích hợp, vì tương quan Pearson không bất biến đối với phép biến đổi tăng nghiêm ngặt (trái ngược với phép biến đổi tích phân xác suất) và do đó hệ số Pearson bị ảnh hưởng bởi các phân phối biên. Do đó, cần phải áp dụng các thước đo phụ thuộc vào copula chứ không phụ thuộc vào các phân phối biên. Hệ số Kendall Tau (Kendall, 1938) và Spearman Rho (Spearman, 1904) đều thỏa mãn những tính chất đó. Một ưu điểm khác của các thước đo phụ thuộc này đó là chúng ít nhạy cảm hơn với các giá trị ngoại lai khi so với tương quan tuyến tính. Thông tin chi tiết về các phép biến đổi đơn điệu và bất biến của copula có thể được tìm thấy trong Schweizer & Wol (1981). Hệ số tương quan hạng Kendall Tau và Spearman Rho là các độ đo sự tương thích (có thể được mô tả là sự phụ thuộc trung bình) giữa X và Y . Các độ đo này chỉ phụ thuộc vào copula của ( , )X Y , không phụ thuộc vào phân phối biên 1( )F x và 2 ( )F y . Do đó, chúng ta không cần biết các dạng phân phối của biến X và Y . Nelsen (2006, p. 157) 157 giải thích rằng hai biến ngẫu nhiên là tương thích (concordant) nếu giá trị “lớn” của một biến này có xu hướng liên kết với giá trị “lớn” của biến kia và giá trị “nhỏ” của biến này với giá trị “nhỏ” của biến kia. Giả sử ( , )i ix y và ( , )i ix y là hai quan sát từ một vectơ ngẫu nhiên ( , )X Y của các biến ngẫu nhiên liên tục X và Y . Khi đó, ( , )i ix y và ( , )i ix y được gọi là tương thích (concordant) nếu i jx x và i jy y hoặc i jx x và i jy y . Hay nói cách khác, ( , )i ix y và ( , )i ix y là tương thích khi ( )( ) 0i j i jx x y y− −  . Ngược lại, ( , )i ix y và ( , )i ix y là không tương thích (discordant) khi ( )( ) 0i j i jx x y y− −  . a) Hệ số Kendall Tau Giả sử 1 1( , )X Y và 2 2( , )X Y là hai vectơ ngẫu nhiên độc lập và có phân phối đồng nhất (iid), với phân phối đồng thời H, hệ số Kendall Tau được xác định là sự khác biệt giữa xác suất tương thích và xác suất không tương thích (Nelsen, 2006, p.158):    1 2 1 2 1 2 1 2( , ) Pr ( )( ) 0 Pr ( )( ) 0X Y X X Y Y X X Y Y = − −  − − −  (2.7) Xét ở khía cạnh copula, hệ số Kendall Tau có thể được biểu thị như sau. Cho hai biến ngẫu nhiên ,X Y và hàm copula của chúng C, hệ số Kendall Tau được xác định như sau (Nelsen, 2006, p.161): 2 ( , ) 4 ( , ) ( , ) 1X Y C u v dC u v  = − (2.8) b) Hệ số Spearman Rho Gọi 1 1( , )X Y , 2 2( , )X Y và 3 3( , )X Y là ba biến ngẫu nhiên độc lập và có phân phối đồng nhất (iid), với phân phối đồng thời H (với phân phối biên F và G) và một copula C, khi đó hệ số Spearman được xác định như sau:    1 2 1 3 1 2 1 3( , ) 3(Pr ( )( ) 0 Pr ( )( ) 0X Y X X Y Y X X Y Y = − −  − − −  (2.9) Được giải thích trong Nelsen (2006, p.167), hệ số Spearman Rho được định nghĩa là số lần khác biệt giữa xác suất tương thích và xác suất không tương thích của hai vectơ 1 1( , )X Y và 2 3( , )X Y với cùng phân phối biên. Nhưng phân phối đồng thời của 1 1( , )X Y là ( , )H x y , trong khi các thành phần của 2 3( , )X Y là độc lập và phân phối của 2 3( , )X Y là ( ) ( )F x G y và copula của chúng là copula tích. Xét mối liên kết với copula, hệ số Spearman Rho được xác định như sau. Cho hai biến ngẫu nhiên ,X Y và hàm copula của chúng C, hệ số Spearman Rho có dạng (Nelsen, 2006, p.161): 2 2 ( , ) 12 ( , ) 3 12 ( , ) 3X Y uvdC u v C u v dudv   = − = −  (2.10) trong đó, ( )u F x= , ( )v G y= . c) Hệ số phụ thuộc đuôi Hệ số phụ thuộc đuôi đo lường xu hướng của hai thị trường sụp đổ hoặc bùng nổ cùng nhau. Sự phụ thuộc đuôi giữa hai biến 1Z và 2Z được biểu thị qua công thức đo lường hệ số phụ thuộc đuôi trên và hệ số phụ thuộc đuôi dưới như sau: 1 1 2 2 1 1 1 1 1 2 ( , ) lim ( ( ) ( )) lim 1 U u u u C u u P Z F u Z F u u  − − − → → − + =   = − (2.11) 158 1 1 2 2 1 1 00 ( , ) lim ( ( ) ( )) limL uu C u u P Z F u Z F u u  + + − − →→ =   = (2.12) Trong đó, , (0,1)U L   , hệ số phụ thuộc đuôi trên (dưới) đo lường xác suất để xảy ra tình huống lợi suất cổ phiếu 2Z sẽ tăng (giảm) mạnh vượt qua một ngưỡng lớn nào đấy khi biết rằng lợi suất cổ phiếu 1Z đã tăng (giảm) mạnh vượt qua một ngưỡng lớn nào đó. 159 Phụ lục 3 Dạng mô hình biên và tham số ước lượng, giai đoạn trước, trong và sau khủng hoảng 3.1. Mô hình phân phối biên các chuỗi lợi suất Giai đoạn trước khủng hoảng Bảng 3.1: Dạng mô hình phân phối biên, giai đoạn trước khủng hoảng (1/2003-7/2007) Chuỗi lợi suất Dạng mô hình phân phối biên VNI ARMA(2,2)-GJR-GARCH(2,2)-Skewed t S&P500 ARMA(0,1)-GJR-GARCH(1,1)-Skewed GED FTSE100 ARMA(2,2)-GJR-GARCH(1,1)-Skewed t CAC40 ARMA(2,2)-GJR-GARCH(1,1)-Skewed t DAX ARMA(2,2)-GJR-GARCH(1,1)-Skewed GED SSEC ARMA(2,2)-GJR-GARCH(2,1)-GED HSI ARMA(2,2)-GJR-GARCH(2,2)-GED Nikkei225 ARMA(1,0)-GJR-GARCH(2,1)-Skewed t KOSPI ARMA(2,2)-GJR-GARCH(2,2)-Skewed GED TAIEX ARMA(1,2)-GJR-GARCH(2,1)-GED STI ARMA(2,2)-GJR-GARCH(2,1)-Skewed GED SET ARMA(2,0)-GJR-GARCH(1,1)-t KLCI ARMA(1,0)-GJR-GARCH(1,1)-Skewed t IDX ARMA(0,2)-GJR-GARCH(1,2)-t Nguồn: Xử lý dữ liệu thu thập từ Datastream. Giai đoạn khủng hoảng Bảng 3.2: Dạng mô hình phân phối biên, giai đoạn khủng hoảng (8/2007-3/2009) Chuỗi lợi suất Dạng mô hình phân phối biên VNI ARMA(1,0)-GJR-GARCH(1,1)-Skewed t S&P500 ARMA(2,1)-GJR-GARCH(1,1)-Skewed GED FTSE100 ARMA(2,2)-GJR-GARCH(1,1)-GED CAC40 ARMA(2,2)-GJR-GARCH(1,1)-Skewed t DAX ARMA(2,2)-GJR-GARCH(1,1)-Skewed t SSEC ARMA(2,2)-GJR-GARCH(1,1)-Skewed-GED HSI ARMA(1,0)-GJR-GARCH(1,1)-Skewed-t Nikkei225 ARMA(2,2)-GJR-GARCH(1,1)-Skewed GED KOSPI ARMA(2,2)-GJR-GARCH(1,2)-GED TAIEX ARMA(1,2)-GJR-GARCH(2,1)-Skewed GED STI ARMA(2,2)-GJR-GARCH(1,1)-Skewed t SET ARMA(0,2)-GJR-GARCH(1,1)-GED KLCI ARMA(0,1)-GJR-GARCH(2,1)-t IDX ARMA(1,0)-GJR-GARCH(1,1)-Skewed t Nguồn: Xử lý dữ liệu thu thập từ Datastream. 160 Giai đoạn sau khủng hoảng Bảng 3.3: Dạng mô hình phân phối biên, giai đoạn sau khủng hoảng (4/2009-12/2021) Chuỗi lợi suất Dạng mô hình phân phối biên VNI ARMA(1,1)-GARCH(1,1)-Skewed t S&P500 ARMA(2,2)-GARCH(1,1)-Skewed GED FTSE100 ARMA(2,2)-GARCH(2,1)-Skewed GED CAC40 ARMA(2,1)-GARCH(1,2)-Skewed t DAX ARMA(1,0)-GARCH(1,1)-Skewed GED SSEC ARMA(2,2)-GARCH(1,1)-Skewed-GED HSI ARMA(0,2)-GARCH(2,1)-Skewed t Nikkei225 ARMA(2,0)-GARCH(2,1)-Skewed t KOSPI ARMA(2,2)-GARCH(2,2)-Skewed GED TAIEX ARMA(1,0)-GARCH(2,1)-Skewed t STI ARMA(1,2)-GARCH(1,1)-Skewed t SET ARMA(2,2)-GARCH(2,1)-Skewed t KLCI ARMA(2,2)-GARCH(1,1)-t IDX ARMA(2,2)-GARCH(2,1)-Skewed t Nguồn: Xử lý dữ liệu thu thập từ Datastream. 3.2 Kết quả ước lượng tham số mô hình biên Giai đoạn trước khủng hoảng Bảng 3.4.: Kết quả ước lượng tham số mô hình biên của mỗi chuỗi lợi suất trước khủng hoảng Phần A: Mô hình ARMA(p,q) c 1 2 1 2 VNI 0,0003** - - -0,0769* - 0,0002 - - 0,0276 - S&P500 0,0003 - - -0,0765** - 0,0002 - - 0,0307 - FTSE100 0,0004* 0,1316* 0,7902* -0,1895* -0,7815* 0,0001 0,0189 0,0184 0,0011 0,0002 CAC40 0,0007 1,3350* -0,9923* 1,3282* 0,9823* 0,0079 0,0670 0,0805 0,0235 0,0064 DAX 0,0007*** -1,3350* -0,9923* 1,3282* 0,9823* 0,0004 0,0035 0,0037 0,0034 0,0006 SSEC 0,0006 -0,3207* -0,8720* 0,3267* 0,8368* 0,0005 0,0129 0,0438 0,01705 0,0448 HSI 0,0007* -0,0085* 0,9827* -0,0054* -1,0062* 0,0000 0,0016 0,0026 0,0001 0,0002 Nikkei225 0,0007** -0,0245 - - - 0,0003 0,0313 - - - KOSPI 0,0013* 1,2583* -0,5478* -1,2443* 0,4953* 0,0003 0,0862 0,0491 0,0951 0,0628 TAIEX 0,0007** 0,6769* - -0,6609* -0,0258 0,0004 0,0329 - 0,0279 0,0824 STI 0,0008* 0,4203* -0,9878* -0,4296* 0,9823* 161 0,0002 0,0050 0,0063 0,0048 0,0006 SET 0,0009** 0,1002* 0,0394 - - 0,0004 0,0261 0,0288 - - KLCI 0,0004** - - 0,1410* - 0,0002 - - 0,0303 - IDX 0,0018* - - 0,1407* -0,0535** 0,0004 - - 0,0356 0,0270 Phần B: Mô hình GJR-GARCH(r,m)  1 2 1 2 1 2 VNI 0,0000 0,0000 - 0,9149* - 0,1179* - 0,0000 0,0185 - 0.0114 - 0,0233 - S&P500 0,0000 0,0000 - 0,9413* - 0,0929* - 0,0000 0,0091 - 0,0101 - 0,0210 - FTSE100 0,0000* 0,0000 - 0,8742* - 0,1503* - 0,0000 0,0086 - 0,0130 - 0,0308 - CAC40 0,0000 0,0000 - 0,9149* - 0,1179* - 0.0003 0,0034 - 0,0114 - 0,0234 - DAX 0,0000 0,0034 - 0,9267* - 0,1104 - 0,0000 0,0531 - 0,1238 - 0,1107 - SSEC 0.0000 0,0000 0,0975* 0,8852* - 0,0647 -0,0808 0,0000 0,0221 0,0381 0,0229 - 0,0583 0,0626 HSI 0.0000** 0,0000 0,0357 0,9415* 0,0001 -0,0250 0,0364 0,0000 0,0345 0,0504 0,0179 0,0121 0,0696 0,0378 Nikkei225 0.0000 0,0000 0,0527 0,9029* - 0,0360 0,0129 0,0000 0,1506 0,1410 0,0272 - 0,1429 0,1378 KOSPI 0.0000* 0,0000 0,0782 0,2317*** 0,5793* 0,0467 0,0555 0,0000 0,1296 0,1168 0,1331 0,1325 0,1535 0,1280 TAIEX 0.0000 0,0000 0,0414 0,9276* - 0,0778 -0,0595 0,0000 0,5433 0,4804 0,0517 - 0,5166 0,4681 STI 0.0000 0,0079 0,0646 0,8933* - 0,0895 -0,0667 0,0000 0,0528 0,1448 0,2907 - 0,0636 0,1232 SET 0.0000* 0,0702 0,0173 0,7576* - 0,0038 0,1136 0,0000 0,0474 0,0476 0,0271 - 0,0619 0,0724 KLCI 0.0000 0,0633 - 0,9216* - 0,0095 - 0,0000 0,0652 - 0,678 - 0,0296 - IDX 0.0000* 0,0289 - 0,1165 0,3835* 0,3956* - 0,0000 0,0241 - 0,1497 0,1880 0,1102 - Nguồn: Xử lý dữ liệu thu thập từ Datastream. 162 Giai đoạn khủng hoảng Bảng 3.5: Kết quả ước lượng tham số mô hình biên của mỗi chuỗi lợi suất khủng hoảng Phần A: Mô hình ARMA(p,q) c 1 2 1 2 VNI -0,0025** 0,3870* - - - 0,0014 0,0541 - - - S&P500 -0,0011** -0,3118 -0,1274 0,1072 - 0,0005 0,4678 0,0941 0,4729 - FTSE100 -0,0014 1,1567* -0,9626* -1,1872* 0,9895* 0,0007 0,0099 0,0114 0,0023 0,0014 CAC40 -0,0016* -0,9850* 0,0159* 0,9264* -0,0936* 0,0001 0,0003 0,0001 0,0001 0,0003 DAX -0,0010** -2,0096* -1,0098* 2,0085* 1,0085* 0,0005 0,0011 0,0005 0,0004 0,0004 SSEC -0,0008 -0,0874** -0,9600* 0,0912*** 0,9196* 0,0010 0,0399 0,0429 0,0546 0,0602 HSI -0,0015 -0,0172 - - - 0,0012 0,0531 - - - Nikkei225 -0,0011* 0,0216* 0,9457* -0,1153* -0,9276* 0,0000 0,0002 0,0002 0,0001 0,0005 KOSPI -0,0011 -1,0985* -0,9808* 1,1275* 1,0110* 0,0008 0,0021 0,0032 0,0023 0,0004 TAIEX -0,0015 -0,8965* -0,9328* 0,9019* 0,9882* 0,0009 0,0189 0,0160 0,0058 0,0049 STI -0,0019** -0,5678* -1,0027* 0,5695* 1,0216* 0,0008 0,0019 0,0153 0,0005 0,0015 SET -0,0008 - - 0,0149 0,0308 0,0007 - - 0,0499 0,0545 KLCI 0,0008 - - 0,1108** - 0,0006 - - 0,0542 - IDX -0,0010 0,0995*** - - - 0,0010 0,0523 - - - Phần B: Mô hình GJR-GARCH (r,m)  1 2 1 2 1 2 VNI 0,0000 0,1578* - 07965* - 0,0810 - 0,0000 0,0557 - 0.0430 - 0,0725 - S&P500 0,0000 0,0000 - 0,9044* - 0,1660* - 0,0000 0,0142 - 0,0208 - 0,0066 - FTSE100 0,0000* 0,0000 - 0,8745* - 0,1969* - 0,0000 0,0129 - 0,0225 - 0,0466 - CAC40 0,0000* 0,0000 - 0,8841* 0,0000 0,2071* - 0,0000 0,0103 - 0,3466 0,3187 0,0705 - DAX 0,0000 0,0000 - 0,8959* - 0,1922 - 163 0,0000 0,1576 - 0,0038 - 0,1998 - SSEC 0,0000 0,0000 - 0,9249* - 0,0832 - 0,0000 0,0497 - 0,1559 - 0,0583 - HSI 0,0000** 0,0119 - 0,8182* - 0,2327* - 0,0000 0,0317 - 0,0511 - 0,0685 - Nikkei225 0,0000* 0,0196* - 0,8156* - 0,1921* - 0,0000 0,0055 - 0,0485 - 0,0616 - KOSPI 0,0000* 0,0000 - 0,8815** 0,0000 0,1878* - 0,0000 0,0174 - 0,4421 0,4095 0,0709 - TAIEX 0,0000* 0,0000 0,0000 0,9365* - -0,0220 0,1128 0,0000 0,1195 0,1280 0,0251 - 0,1250 0,1333 STI 0,0000 0,0000 - 0,9094* - 0,1507* - 0,0000 0,0078 - 0,0308 - 0,0191 - SET 0,0000* 0,0000 - 0,8519* - 0,2012* - 0,0000 0,0123 - 0,0292 - 0,0613 - KLCI 0,0000* 0,0000 0,0000 0,6330* - 0,0929 0.3405*** 0,0000 0,0849 0,0737 0,0967 - 0,1120 0.1774 IDX 0,0000* 0,0035 - 0,6331* - 0,4626* - 0,0000 0,0489 - 0,0914 - 0,1617 - Nguồn: Xử lý dữ liệu thu thập từ Datastream. Giai đoạn sau khủng hoảng Bảng 3.6: Kết quả ước lượng tham số mô hình biên của mỗi chuỗi lợi suất sau khủng hoảng Phần A: Mô hình ARMA(p,q) c 1 2 1 2 VNI S&P500 0,0004* 0,3194* 0,2699* -0,3906* -0.,461* 0,0001 0,0258 0,0252 0,0257 0,0239 FTSE100 0,0001 -0,0556* 0,8378* 0,0387* -0,8744* 0,0000 0,0169 0,0331 0,0138 0,0288 CAC40 0,0002* 0,9486* 0,0460* -0,9987* - 0,0000 0,0032 0,0038 0,0000 - DAX 0,0003** -0,0251 - - - 0,0001 0,0161 - - - SSEC 0,0001 -0,1566* 0,6610* 0,1521* -0,6843* 0,0003 0,0210 0,0242 0,0201 0,0233 HSI 0,0001 - - -0,0061 0,0082 0,0002 - - 0,0173 0,0184 Nikkei225 0,0004** -0,0210 0,0318*** - - 0,0002 0,0188 0,0186 - - KOSPI 0,0000 0,6318* -0,9955* -0,6342* 1,0004* 0,0001 0,0012 0,0015 0,0007 0,0001 TAIEX 0,0004** 0,0264 - - - 164 0,0002 0,0184 - - - STI 0,0001 0,7567* - -0,7632* 0,0289 0,0001 0,1351 - 0,1358 0,0188 SET 0,0025* 0,3206* 0,6798* -0,3075* -0,6887* 0,0000 0,0002 0,0003 0,0001 0,0000 KLCI 0,0002** 1,1134* -0,5179* -1,0803* 0,5094* 0,0001 0,2366 0,0747 0,2387 0,0733 IDX 0,0003* 0,5195** -0,0359 -0,5336** -0,0410 0,0001 0,2552 0,2147 0,2554 0,2235 Phần B: Mô hình GJR-GARCH (r,m)  1 2 1 2 1 2 VNI 0,0000 - - - - - - 0,0000 - - - - - - S&P500 0,0000* 0,0068*** - 0,8338* - 0,2698* - 0,0000 0,0041 - 0,0114 - 0,0274 - FTSE100 0,0000** 0,0027 0,0230 0,9210* - 0,2942* -0,2064* 0,0000 0,0148 0,0154 0,0094 - 0,0415 0,0391 CAC40 0,0000* 0,0000 - 0,6976* 0,1545 0,2658* - 0,0000 0,0000 - 0,1565 0,1441 0,0389 - DAX 0,0000 0,0006 - 0,9027* - 0,1636* - 0,0000 0,0029 - 0,0062 - 0,0227 - SSEC 0,0000** 0,0581* - 0,9391* - -0,0061 - 0,0000 0,0028 - 0,0075 - 0,0114 - HSI 0,0000 0,0000 0,0292 0,9170* - 0,0409 0,0281 0,0000 0,0315 0,0562 0,1071 - 0,0378 0,0902 Nikkei225 0,0000* 0,0000 0,0240 0,8389* - 0,2619* 0,0720 0,0000 0,0245 0,0245 0,0124 - 0,0556 0,0533 KOSPI 0,0000 0,0000 0,0281 0,8939* 0,0000 0,1989* -0,0945** 0,0000 0,0281 0,0287 0,0216 0,0509 0,0539 0,0371 TAIEX 0,0000* 0,0000 0,0329 0,8574* - 0,1634* -0,0313 0,0000 0,0512 0,0536 0,0142 - 0,0619 0,0639 STI 0,0000*** 0,0301* - 0,9162* - 0,0822* - 0,0000 0,0015 - 0,0099 - 0,0116 - SET 0,0000 0,0000 0,0491** 0,8935* - 0,1852* -0,0901*** 0,0000 0,0264 0,0247 0,0169 - 0,0478 0,0472 KLCI 0,0000*** 0,0384* - 0,9265* - 0,0531* - 0,0000 0,0039 - 0,0055 - 0,0143 - IDX 0,0000 0,0005 0,0499** 0,9084* - 0,3132* -0,2589* 0,0000 0,0227 0,0202 0,0192 - 0,0598 0,0563 Nguồn: Xử lý dữ liệu thu thập từ Datastream. 165 Phụ lục 4 Kết quả ước lượng số liệu Thủ tục ước lượng được tiến hành cho 13 cặp TTCK giữa Việt Nam và mỗi TTCK quốc tế cho ba giai đoạn gồm trước khủng hoảng (01/2003-07/2007), khủng hoảng (08/2007-03/2009) và sau khủng hoảng (04/2009-12/2021). Kết quả ước lượng cho từng cặp thị trường trong mỗi giai đoạn là rất nhiều, vì vậy, phụ lục này chỉ trình bày minh họa kết quả các kiểm định thống kê và kết quả ước lượng tham số và lựa chọn hàm copula phù hợp cho mối quan hệ phụ thuộc giữa TTCK Việt Nam và TTCK Mỹ giai đoạn 2002-2021. R version 4.1.2 (2021-11-01) -- "Bird Hippie" Copyright (C) 2021 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 (64-bit) ## 1/ THỐNG KÊ MÔ TẢ # A tibble: 6 x 2 sample group 1 -0.00346 rvnindex 2 -0.00624 rvnindex 3 -0.00466 rvnindex 4 -0.00479 rvnindex 5 -0.00145 rvnindex 6 -0.00359 rvnindex > vni_sp500.summary %>% + knitr::kable(format = "markdown", digits = 6) |group | N| Min.| Mean| Median| Max.| SD| var| SE| |:--------|----:|---------:|--------:|--------:|--------:|--------:|--------:|--------:| |rS&P500 | 4596| -0.127652| 0.000362| 0.000795| 0.109572| 0.012163| 0.000148| 0.000179| |rvnindex | 4596| -0.080623| 0.000456| 0.000574| 0.086870| 0.014281| 0.000204| 0.000211| > ### DO LECH & DO NHON > skewness(vni.data, na.rm = FALSE, type = 3) date rvni NA -0.1637091 > kurtosis(vni.data[,2], na.rm = FALSE, method = c("excess" )) [1] 3.1301 attr(,"method") [1] "excess" > > skewness(sp500.data, na.rm = FALSE, type = 3) date rsp500 NA -0.5382143 Warning message: In skewness.default(X[[i]], ...) : argument is not numeric or logical: returning NA > kurtosis(sp500.data[,2], na.rm = FALSE, method = c("excess" )) [1] 13.84524 attr(,"method") [1] "excess" > ## 2/ KIEM DINH TINH DUNG > adf.test(rvni, alternative = c("stationary"), k = trunc((length(rvni)-1)^(1/3))) Augmented Dickey-Fuller Test data: rvni Dickey-Fuller = -14.723, Lag order = 16, p-value = 0.01 166 alternative hypothesis: stationary > adf.test(rsp500, alternative = c("stationary"), k = trunc((length(rsp500)-1)^(1/3))) Augmented Dickey-Fuller Test data: rsp500 Dickey-Fuller = -16.576, Lag order = 16, p-value = 0.01 alternative hypothesis: stationary > kpss.test(rvni, null="Trend") # H0: chuoi dung KPSS Test for Trend Stationarity data: rvni KPSS Trend = 0.090292, Truncation lag parameter = 10, p-value = 0.1 Warning message: In kpss.test(rvni, null = "Trend") : p-value greater than printed p-value > kpss.test(rsp500, null = "Trend") KPSS Test for Trend Stationarity data: rsp500 KPSS Trend = 0.051519, Truncation lag parameter = 10, p-value = 0.1 > ## 3/ KIEM DINH PHAN PHOI CHUAN > # Null hypothesis: Normality > jarque.bera.test(rvni) Jarque Bera Test data: rvni X-squared = 1900, df = 2, p-value < 2.2e-16 > jarque.bera.test(rsp500) Jarque Bera Test data: rsp500 X-squared = 36970, df = 2, p-value < 2.2e-16 > ## 4/ KIEM DINH TU TUONG QUAN > Box.test(rvni, lag = 2, type = "Ljung-Box") # Ho: khong co tu tuong quan Box-Ljung test data: rvni X-squared = 127.28, df = 2, p-value < 2.2e-16 > Box.test(rsp500, lag = 2, type = "Ljung-Box") Box-Ljung test data: rsp500 X-squared = 110.49, df = 2, p-value < 2.2e-16 ## 5/KIEM DINH HIEU UNG ARCH > ArchTest(rvni, lags = 2) ARCH LM-test; Null hypothesis: no ARCH effects data: rvni Chi-squared = 571.01, df = 2, p-value < 2.2e-16 167 > ArchTest(rsp500, lags = 2) ARCH LM-test; Null hypothesis: no ARCH effects data: rsp500 Chi-squared = 1187.1, df = 2, p-value < 2.2e-16 > ### 6/ VE DO THI QQPLOT CUA VNI & SP500 > # VNI > qqplot1.vni <- ggqqplot(rvni[,2]) + + ggtitle("VN-Index") > qqplot1.vni > > # SP500 > qqplot1.sp500 <- ggqqplot(rsp500[,2]) + + ggtitle("S&P500") > qqplot1.sp500 > ## BUOC 7/ HE SO TUONG QUAN #### > cor.test(vni.sp500[, 1], vni.sp500[, 2]) Pearson's product-moment correlation data: vni.sp500[, 1] and vni.sp500[, 2] t = 16.117, df = 4594, p-value < 2.2e-16 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.2037881 0.2585201 sample estimates: cor 0.2313371 > cor.test(vni.sp500[, 1], vni.sp500[, 2], method = "spearman") Spearman's rank correlation rho data: vni.sp500[, 1] and vni.sp500[, 2] S = 1.3175e+10, p-value < 2.2e-16 alternative hypothesis: true rho is not equal to 0 sample estimates: rho 0.1857299 > cor.test(vni.sp500[, 1], vni.sp500[, 2], method = "kendall") Kendall's rank correlation tau data: vni.sp500[, 1] and vni.sp500[, 2] z = 12.884, p-value < 2.2e-16 alternative hypothesis: true tau is not equal to 0 sample estimates: tau 0.1267446 168 ### MÔ HÌNH ARMA > autoarfima(vni.data[, 2],ar.max = 2, ma.max = 2, criterion = "AIC", method = "full") $fit *----------------------------------* * ARFIMA Model Fit * *----------------------------------* Mean Model : ARFIMA(2,0,2) Distribution : norm Optimal Parameters ------------------------------------ Estimate Std. Error t value Pr(>|t|) ar1 1.014961 0.010530 96.3891 0.000000 ar2 -0.056893 0.015380 -3.6991 0.000216 ma1 -0.820789 0.006799 -120.7233 0.000000 ma2 -0.101859 0.019465 -5.2328 0.000000 sigma 0.013957 0.000146 95.8767 0.000000 Robust Standard Errors: Estimate Std. Error t value Pr(>|t|) ar1 1.014961 0.021806 46.5454 0.000000 ar2 -0.056893 0.020886 -2.7239 0.006451 ma1 -0.820789 0.003532 -232.3929 0.000000 ma2 -0.101859 0.026405 -3.8576 0.000115 sigma 0.013957 0.000499 27.9517 0.000000 LogLikelihood : 13111.58 Information Criteria ------------------------------------ Akaike -5.7035 Bayes -5.6965 Shibata -5.7035 Hannan-Quinn -5.7010 > autoarfima(sp500.data[,2], ar.max = 2, ma.max = 2, criterion = "AIC", method = "full") $fit *----------------------------------* * ARFIMA Model Fit * *----------------------------------* Mean Model : ARFIMA(1,0,0) Distribution : norm Optimal Parameters ------------------------------------ Estimate Std. Error t value Pr(>|t|) mu 0.000362 0.000155 2.3311 0.019747 ar1 -0.144259 0.014599 -9.8811 0.000000 sigma 0.012037 0.000126 95.8442 0.000000 Robust Standard Errors: Estimate Std. Error t value Pr(>|t|) mu 0.000362 0.000151 2.3929 0.016718 ar1 -0.144259 0.037143 -3.8839 0.000103 sigma 0.012037 0.000887 13.5694 0.000000 LogLikelihood : 13792.87 Information Criteria ------------------------------------ Akaike -6.0008 Bayes -5.9966 Shibata -6.0008 Hannan-Quinn -5.9993 169 > ### ƯỚC LƯỢNG CÁC DẠNG MÔ HÌNH GJR-GARCH > # Các dạng MH GJR-GARCH cho chuỗi lợi suất VNI ## GJR-GARCH(11)VNI > vni.garch11n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm") > vni.garch11n.fit <- ugarchfit(spec = vni.garch11n.spec, data = vni.data[,2]) > vni.garch11t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std") > vni.garch11t.fit <- ugarchfit(spec = vni.garch11t.spec, data = vni.data[, 2]) > > vni.garch11st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd") > vni.garch11st.fit <- ugarchfit(spec = vni.garch11st.spec, data = vni.data[, 2]) > > vni.garch11g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged") > vni.garch11g.fit <- ugarchfit(spec = vni.garch11g.spec, data = vni.data[, 2]) > > vni.garch11sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged") > vni.garch11sg.fit <- ugarchfit(spec = vni.garch11sg.spec, data = vni.data[, 2]) ## GJR-GARCH(12)VNI > vni.garch12n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm") > vni.garch12n.fit <- ugarchfit(spec = vni.garch12n.spec, data = vni.data[,2]) > > vni.garch12t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std") > vni.garch12t.fit <- ugarchfit(spec = vni.garch12t.spec, data = vni.data[, 2]) > > vni.garch12st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd") > vni.garch12st.fit <- ugarchfit(spec = vni.garch12st.spec, data = vni.data[, 2]) > > vni.garch12g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged") > vni.garch12g.fit <- ugarchfit(spec = vni.garch12g.spec, data = vni.data[, 2]) > > vni.garch12sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged") > vni.garch12sg.fit <- ugarchfit(spec = vni.garch12sg.spec, data = vni.data[, 2]) ## GJR-GARCH(21)VNI > vni.garch21n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm") > vni.garch21n.fit <- ugarchfit(spec = vni.garch21n.spec, data = vni.data[,2]) > > vni.garch21t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std") > vni.garch21t.fit <- ugarchfit(spec = vni.garch21t.spec, data = vni.data[, 2]) > > vni.garch21st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd") > vni.garch21st.fit <- ugarchfit(spec = vni.garch21st.spec, data = vni.data[, 2]) > > vni.garch21g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged") > vni.garch21g.fit <- ugarchfit(spec = vni.garch21g.spec, data = vni.data[, 2]) 170 > > vni.garch21sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged") > vni.garch21sg.fit <- ugarchfit(spec = vni.garch21sg.spec, data = vni.data[, 2]) > vni.garch22n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm") > vni.garch22n.fit <- ugarchfit(spec = vni.garch22n.spec, data = vni.data[,2]) ## GJR-GARCH(22)VNI > vni.garch22t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std") > vni.garch22t.fit <- ugarchfit(spec = vni.garch22t.spec, data = vni.data[, 2]) > > vni.garch22st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd") > vni.garch22st.fit <- ugarchfit(spec = vni.garch22st.spec, data = vni.data[, 2]) > > vni.garch22g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged") > vni.garch22g.fit <- ugarchfit(spec = vni.garch22g.spec, data = vni.data[, 2]) > > vni.garch22sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged") > vni.garch22sg.fit <- ugarchfit(spec = vni.garch22sg.spec, data = vni.data[, 2]) > # Các dạng MH GJR-GARCH cho chuỗi lợi suất SP500 ## GJR-GARCH(11)SP500 > sp500.garch11n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "norm") > sp500.garch11n.fit <- ugarchfit(spec = sp500.garch11n.spec, data = sp500.data[,2]) > sp500.garch11t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "std") > sp500.garch11t.fit <- ugarchfit(spec = sp500.garch11t.spec, data = sp500.data[, 2]) > sp500.garch11st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "sstd") > sp500.garch11st.fit <- ugarchfit(spec = sp500.garch11st.spec, data = sp500.data[, 2]) > sp500.garch11g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "ged") > sp500.garch11g.fit <- ugarchfit(spec = sp500.garch11g.spec, data = sp500.data[, 2]) > sp500.garch11sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "sged") > sp500.garch11sg.fit <- ugarchfit(spec = sp500.garch11sg.spec, data = sp500.data[, 2]) ## GJR-GARCH(12)SP500 > sp500.garch12n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "norm") > sp500.garch12n.fit <- ugarchfit(spec = sp500.garch12n.spec, data = sp500.data[,2]) > sp500.garch12t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "std") > sp500.garch12t.fit <- ugarchfit(spec = sp500.garch12t.spec, data = sp500.data[, 2]) > sp500.garch12st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "sstd") > sp500.garch12st.fit <- ugarchfit(spec = sp500.garch12st.spec, data = sp500.data[, 2]) > sp500.garch12g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "ged") > sp500.garch12g.fit <- ugarchfit(spec = sp500.garch12g.spec, data = sp500.data[, 2]) > sp500.garch12sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "sged") > sp500.garch12sg.fit <- ugarchfit(spec = sp500.garch12sg.spec, data = sp500.data[, 2]) ## GJR-GARCH(21)SP500 171 > sp500.garch21n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "norm") > sp500.garch21n.fit <- ugarchfit(spec = sp500.garch21n.spec, data = sp500.data[, 2]) > sp500.garch21t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "std") > sp500.garch21t.fit <- ugarchfit(spec = sp500.garch21t.spec, data = sp500.data[, 2]) > sp500.garch21st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "sstd") > sp500.garch21st.fit <- ugarchfit(spec = sp500.garch21st.spec, data = sp500.data[, 2]) > sp500.garch21g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "ged") > sp500.garch21g.fit <- ugarchfit(spec = sp500.garch21g.spec, data = sp500.data[, 2]) > sp500.garch21sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "sged") > sp500.garch21sg.fit <- ugarchfit(spec = sp500.garch21sg.spec, data = sp500.data[, 2]) ## GJR-GARCH(22)SP500 > sp500.garch22n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "norm") > sp500.garch22n.fit <- ugarchfit(spec = sp500.garch22n.spec, data = sp500.data[, 2]) > sp500.garch22t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "std") > sp500.garch22t.fit <- ugarchfit(spec = sp500.garch22t.spec, data = sp500.data[, 2]) > sp500.garch22st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "sstd") > sp500.garch22st.fit <- ugarchfit(spec = sp500.garch22st.spec, data = sp500.data[, 2]) > sp500.garch22g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "ged") > sp500.garch22g.fit <- ugarchfit(spec = sp500.garch22g.spec, data = sp500.data[, 2]) > sp500.garch22sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(1, 0), include.mean = TRUE), distribution.model = "sged") > sp500.garch22sg.fit <- ugarchfit(spec = sp500.garch22sg.spec, data = sp500.data[, 2]) ### LỰA CHỌN MO HINH GJR-GARCH ### # Lựa chọn mô hình biên phù hợp nhất cho chuỗi VNI > vni.model.list <- list(garch11n = vni.garch11n.fit, garch11t = vni.garch11t.fit, garch11st = vni.garch11st.fit, garch11g = vni.garch11g.fit, garch11sg = vni.garch11sg.fit, + garch12n = vni.garch12n.fit, garch12t = vni.garch12t.fit, garch12st = vni.garch12st.fit, garch12g = vni.garch12g.fit, garch12sg = vni.garch12sg.fit, + garch21n = vni.garch21n.fit, garch21t = vni.garch21t.fit, garch21st = vni.garch21st.fit, garch21g = vni.garch21g.fit, garch21sg = vni.garch21sg.fit, + garch22n = vni.garch22n.fit, garch22t = vni.garch22t.fit, garch22st = vni.garch22st.fit, garch22g = vni.garch22g.fit, garch22sg = vni.garch22sg.fit) > > vni.info.mat <- sapply(vni.model.list, infocriteria) > rownames(vni.info.mat) <- rownames(infocriteria(vni.garch11n.fit)) > vni.info.mat garch11n garch11t garch11st garch11g garch11sg garch12n garch12t garch12st garch12g garch12sg garch21n garch21t garch21st Akaike -6.074942 -6.148378 -6.149971 -6.136195 -6.138837 -6.076107 -6.148868 -6.150634 - 6.136721 -6.139556 -6.075309 -6.148241 -6.149802 Bayes -6.062344 -6.134382 -6.134575 -6.122198 -6.123441 -6.062110 -6.133471 -6.133838 - 6.121324 -6.122760 -6.059913 -6.131445 -6.131606 Shibata -6.074949 -6.148388 -6.149983 -6.136205 -6.138849 -6.076116 -6.148879 -6.150648 - 6.136732 -6.139570 -6.075321 -6.148255 -6.149818 Hannan-Quinn -6.070508 -6.143452 -6.144552 -6.131269 -6.133418 -6.071180 -6.143448 -6.144722 - 6.131301 -6.133644 -6.069890 -6.142329 -6.143398 garch21g garch21sg garch22n garch22t garch22st garch22g garch22sg Akaike -6.135963 -6.138552 -6.079611 -6.148083 -6.151254 -6.137678 -6.140673 Bayes -6.119167 -6.120356 -6.062814 -6.129887 -6.131658 -6.119482 -6.121077 Shibata -6.135977 -6.138568 -6.079624 -6.148099 -6.151272 -6.137694 -6.140692 Hannan-Quinn -6.130051 -6.132147 -6.073699 -6.141678 -6.144356 -6.131273 -6.133776 172 > vni.inds <- which(vni.info.mat == min(vni.info.mat), arr.ind=TRUE) > model.vni <- colnames(vni.info.mat)[vni.inds[,2]] > model.vni [1] "garch22st" # Lựa chọn mô hình biên phù hợp nhất cho chuỗi SP500 > sp500.model.list <- list(garch11n = sp500.garch11n.fit, garch11t = sp500.garch11t.fit, garch11st = sp500.garch11st.fit, garch11g = sp500.garch11g.fit, garch11sg = sp500.garch11sg.fit, + garch12n = sp500.garch12n.fit, garch12t = sp500.garch12t.fit, garch12st = sp500.garch12st.fit, garch12g = sp500.garch12g.fit, garch12sg = sp500.garch12sg.fit, + garch21n = sp500.garch21n.fit, garch21t = sp500.garch21t.fit, garch21st = sp500.garch21st.fit, garch21g = sp500.garch21g.fit, garch21sg = sp500.garch21sg.fit, + garch22n = sp500.garch22n.fit, garch22t = sp500.garch22t.fit, garch22st = sp500.garch22st.fit, garch22g = sp500.garch22g.fit, garch22sg = sp500.garch22sg.fit) > sp500.info.mat <- sapply(sp500.model.list, infocriteria) > rownames(sp500.info.mat) <- rownames(infocriteria(sp500.garch11n.fit)) > sp500.info.mat garch11n garch11t garch11st garch11g garch11sg garch12n garch12t garch12st garch12g garch12sg garch21n garch21t garch21st Akaike -6.605855 -6.658348 -6.674851 -6.657802 -6.675970 -6.605597 -6.658014 -6.674520 - 6.657442 -6.675614 -6.606018 -6.657785 -6.674364 Bayes -6.597456 -6.648550 -6.663653 -6.648004 -6.664773 -6.595799 -6.646816 -6.661923 - 6.646245 -6.663017 -6.594821 -6.645188 -6.660367 Shibata -6.605858 -6.658353 -6.674857 -6.657807 -6.675976 -6.605601 -6.658020 -6.674528 - 6.657448 -6.675622 -6.606024 -6.657793 -6.674373 Hannan-Quinn -6.602899 -6.654899 -6.670909 -6.654353 -6.672029 -6.602148 -6.654073 -6.670086 - 6.653501 -6.671180 -6.602077 -6.653351 -6.669437 garch21g garch21sg garch22n garch22t garch22st garch22g garch22sg Akaike -6.657332 -6.675373 -6.605583 -6.658839 -6.675481 -6.656894 -6.676031 Bayes -6.644734 -6.661376 -6.592986 -6.644842 -6.660085 -6.642897 -6.660634 Shibata -6.657339 -6.675382 -6.605591 -6.658848 -6.675493 -6.656903 -6.676042 Hannan-Quinn -6.652898 -6.670446 -6.601149 -6.653912 -6.670062 -6.651967 -6.670611 > sp500.inds <- which(sp500.info.mat == min(sp500.info.mat), arr.ind = TRUE) > model.sp500 <- colnames(sp500.info.mat)[sp500.inds[, 2]] > model.sp500 [1] "garch22sg" > ### THAM SỐ ƯỚC LƯỢNG MÔ HÌNH BIÊN PHÙ HỢP NHẤT: > vni.garch22st.fit *---------------------------------* * GARCH Model Fit * *---------------------------------* Conditional Variance Dynamics ----------------------------------- GARCH Model : gjrGARCH(2,2) Mean Model : ARFIMA(2,0,2) Distribution : sstd Optimal Parameters ------------------------------------ Estimate Std. Error t value Pr(>|t|) mu 0.000108 0.000283 0.382974 0.701739 ar1 1.007260 0.017135 58.784953 0.000000 ar2 -0.030045 0.017710 -1.696544 0.089783 ma1 -0.863563 0.003128 -276.051229 0.000000 ma2 -0.087777 0.007578 -11.582402 0.000000 omega 0.000005 0.000002 2.976167 0.002919 alpha1 0.233529 0.037655 6.201882 0.000000 alpha2 0.072380 0.065388 1.106929 0.268325 beta1 0.000001 0.211944 0.000003 0.999998 beta2 0.643596 0.174903 3.679721 0.000233 gamma1 -0.011699 0.033855 -0.345570 0.729666 gamma2 0.113401 0.029678 3.820984 0.000133 173 skew 0.934262 0.019200 48.659558 0.000000 shape 6.388071 0.543219 11.759654 0.000000 Robust Standard Errors: Estimate Std. Error t value Pr(>|t|) mu 0.000108 0.000331 0.327031 0.743644 ar1 1.007260 0.022972 43.847545 0.000000 ar2 -0.030045 0.024860 -1.208573 0.226827 ma1 -0.863563 0.003380 -255.470418 0.000000 ma2 -0.087777 0.008956 -9.801042 0.000000 omega 0.000005 0.000005 1.060207 0.289050 alpha1 0.233529 0.105260 2.218586 0.026515 alpha2 0.072380 0.226197 0.319984 0.748980 beta1 0.000001 0.801792 0.000001 0.999999 beta2 0.643596 0.666636 0.965437 0.334326 gamma1 -0.011699 0.040588 -0.288242 0.773161 gamma2 0.113401 0.028363 3.998243 0.000064 skew 0.934262 0.022131 42.215317 0.000000 shape 6.388071 0.875349 7.297742 0.000000 LogLikelihood : 14149.58 Information Criteria ------------------------------------ Akaike -6.1513 Bayes -6.1317 Shibata -6.1513 Hannan-Quinn -6.1444 > sp500.garch22sg.fit *---------------------------------* * GARCH Model Fit * *---------------------------------* Conditional Variance Dynamics ----------------------------------- GARCH Model : gjrGARCH(2,2) Mean Model : ARFIMA(1,0,0) Distribution : sged Optimal Parameters ------------------------------------ Estimate Std. Error t value Pr(>|t|) mu 0.000301 0.000094 3.188997 0.001428 ar1 -0.078923 0.014644 -5.389381 0.000000 omega 0.000004 0.000000 15.467271 0.000000 alpha1 0.000000 0.014346 0.000002 0.999998 alpha2 0.000000 0.015110 0.000013 0.999989 beta1 0.072356 0.065492 1.104811 0.269242 beta2 0.689920 0.063193 10.917643 0.000000 gamma1 0.174243 0.026532 6.567359 0.000000 gamma2 0.220687 0.028355 7.782885 0.000000 skew 0.845197 0.015414 54.833670 0.000000 shape 1.349138 0.038595 34.955846 0.000000 Robust Standard Errors: Estimate Std. Error t value Pr(>|t|) mu 0.000301 0.000109 2.768148 0.005638 ar1 -0.078923 0.013648 -5.782669 0.000000 omega 0.000004 0.000000 10.006760 0.000000 alpha1 0.000000 0.018507 0.000001 0.999999 alpha2 0.000000 0.017408 0.000012 0.999991 beta1 0.072356 0.050073 1.445003 0.148457 beta2 0.689920 0.051355 13.434301 0.000000 gamma1 0.174243 0.030131 5.782814 0.000000 gamma2 0.220687 0.030201 7.307291 0.000000 174 skew 0.845197 0.016965 49.821350 0.000000 shape 1.349138 0.044025 30.645069 0.000000 LogLikelihood : 15352.52 Information Criteria ------------------------------------ Akaike -6.6760 Bayes -6.6606 Shibata -6.6760 Hannan-Quinn -6.6706 > ### KIỂM ĐỊNH SỰ PHÙ HỢP CỦA MÔ HÌNH BIÊN > ## Trích xuất chuỗi phần dư u của chuỗi lợi suất S&P500 > sp500.res <- residuals(sp500.garch22sg.fit)/sigma(sp500.garch22sg.fit) > fitdist(distribution = "sged", sp500.res, control = list()) $pars mu sigma skew shape 0.000644163 1.000295086 0.845440906 1.348716514 > u <- pdist(distribution = "sged", q = sp500.res, mu = 0.000644163 , sigma = 1.000295086, skew = 0.845440906, shape = 1.348716514) > ## Trích xuất chuỗi phần dư v của chuỗi lợi suất VNI > vni.res <- residuals(vni.garch22st.fit)/sigma(vni.garch22st.fit) > fitdist(distribution = "sstd", vni.res, control = list()) $pars mu sigma skew shape 0.009319884 1.019121719 0.938542841 6.025807972 > v = pdist("sstd",vni.res, mu = 0.009319884, sigma = 1.019121719, skew = 0.938542841, shape = 6.025807972) > ### Các kiểm định sự phù hợp của mô hình biên: > # Kiem dinh Anderson-Darling > ad.test(u, "punif") Anderson-Darling test of goodness-of-fit Null hypothesis: uniform distribution Parameters assumed to be fixed data: u An = 0.95718, p-value = 0.3806 > ad.test(v, "punif") Anderson-Darling test of goodness-of-fit Null hypothesis: uniform distribution Parameters assumed to be fixed data: v An = 0.58067, p-value = 0.6665 > # Kiem dinh Cramer-von Mises > # Null hypothesis: uniform distribution > cvm.test(u, "punif") Cramer-von Mises test of goodness-of-fit Null hypothesis: uniform distribution Parameters assumed to be fixed data: u omega2 = 0.14482, p-value = 0.4058 > cvm.test(v, "punif") Cramer-von Mises test of goodness-of-fit Null hypothesis: uniform distribution Parameters assumed to be fixed data: v omega2 = 0.086323, p-value = 0.6561 > # Kiem dinh ks-test > ##Null hypothesis: uniform distribution > ks.test(u, "punif") One-sample Kolmogorov-Smirnov test data: u 175 D = 0.012332, p-value = 0.4868 alternative hypothesis: two-sided > ks.test(v, "punif") One-sample Kolmogorov-Smirnov test data: v D = 0.010813, p-value = 0.6557 alternative hypothesis: two-sided ### ƯỚC LƯỢNG THAM SỐ MÔ HÌNH COPULA > BiCopSelect(u, v, familyset= 1:9, selectioncrit="AIC",indeptest = FALSE, level = 0.05) Bivariate copula: t (par = 0.19, par2 = 10, tau = 0.12) > Stu <- BiCopEst(u, v, family = 2, method = "mle", se = T, max.df = 10) > summary(Stu) Family ------ No: 2 Name: t Parameter(s) ------------ par: 0.18 (SE = 0.02) par2: 10 (SE = NA) Dependence measures ------------------- Kendall's tau: 0.12 (empirical = 0.12, p value < 0.01) Upper TD: 0.02 Lower TD: 0.02 Fit statistics -------------- logLik: 73.13 AIC: -142.25 BIC: -129.39

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

  • pdfluan_an_phan_ung_cua_thi_truong_chung_khoan_viet_nam_doi_voi.pdf
  • pdf2 Tom tat LA (Tieng Viet) - Le Van Thu.pdf
  • pdf3 Tom Tat LA (Tieng Anh) - Le Van Thu.pdf
  • docx4 Trang thong tin LA (Tieng Viet) - Le Van Thu.docx
  • docx5 Trang thong tin LA (Tieng Anh) - Le Van Thu.docx
  • pdfQĐCT_Lê Văn Thứ.pdf
Luận văn liên quan