Khám phá sự thú vị của copula với gói lệnh R-copula trên TTCK Việt Nam

Khám phá sự thú vị của copula với gói lệnh R-copula  trên TTCK Việt Nam[1]

 Lê Văn Tuấn

Đại học Thương mại

Tóm tắt. Trong bài viết này, chúng tôi sẽ sử dụng gói lệch copula của phần mềm R để thực hành việc ứng dụng copula trên thị trường chứng khoán Việt Nam. Mục tiêu của bài viết là xây dựng phân bố đồng thời (qua copula) của lợi suất của danh mục cổ phiếu. Quá trình xây dựng bao gồm đầy đủ các vấn đề suy diễn thống kê cho copula: kiểm định sự độc lập, kiểm định goodness-of-fit, ước lượng tham số, sinh số ngẫu nhiên và vẽ hình minh họa 3d. Kết quả thực nghiệm cho thấy, các cổ phiếu trên TTCK Việt Nam là phụ thuộc theo copula – kết luận này gần như hiển nhiên; tuy nhiên, với các bộ cổ phiếu khác nhau có thể cho các copula khác nhau. Ngoài ra, kết quả thực nghiệm qua copula còn cho thấy các chỉ số đại diện cho TTCK Việt Nam và Mỹ là độc lập.

[1] Tên bài viết phỏng theo tên 2 bài báo: The Joy of Copulas Bivariate Distributions with Uniform MarginalsEnjoy the Joy of Copulas With a Package copula

  1. TỔNG QUAN

Ứng dụng của copula.

Lí thuyết copula là một công cụ hữu hiệu để xây dựng hàm phân phối đồng thời từ các phân phối biên duyên và để mô tả sự phụ thuộc giữa các biến ngẫu nhiên. Nelsen (1999) là cuốn tài liệu kinh điển giới thiệu chi tiết các khái niệm, kiến thức toán học nền tảng của lí thuyết copula. Bên cạnh đó, Cherubini, et al. (2004) và McNeil, et al. (2005) cũng có thể xem là các cuốn từ điển về lý thuyết copula, ngoài các khái niệm toán học, hai cuốn sách này cũng cung cấp một số công cụ thống kê (chưa bao gồm lí thuyết về kiểm định) và rất nhiều ứng dụng của copula trong tài chính. Lí thuyết kiểm định goodness-of-fit của copula được tổng hợp trong Genest, et al. (2007); kết quả đầu tiên là Wang-Wells (2000) – chỉ cho copula Archimedean.  Cho đến hiện tại, lý thuyết copula vẫn còn rất nhiều bài toán mở đặc biệt là trong trường hợp nhiều chiều.

Từ cuối những năm 90 của thế kỉ trước, giới khoa học chứng kiến một sự “đổ bộ như vũ bão” của copula trong tài chính, ở cả khía cạnh học thuật, ứng dụng và thực hành.

Ứng dụng đầu tiên trong tài chính của copula là quản trị rủi ro. Nghiên cứu được xem là tiên phong trong lĩnh vực này là Embrechts, et al. (2002) (được giới thiệu ở dạng tiền xuất bản năm 1999), trong tài liệu này, các tác giả đã trình bày chi tiết ứng dụng của copula để mô tả sự phụ thuộc của các đại lượng ngẫu nhiên cũng như chỉ ra một số sai lầm khi áp dụng hệ số tương quan trong quản trị rủi ro. Embrechts-Puccetti (2006) ứng dụng copula xây dựng chặn cho hàm các thước đo rủi ro ở trong một lớp và giữa các lớp rủi ro (rủi ro thị trường, rủi ro tín dụng, rủi ro hoạt động, …). Cherubini-Luciano (2000) ước lượng giá trị VaR cho danh mục với copula không điều kiện; Palaro-Hotta (2006) ước lượng giá trị VaR cho danh mục với copula điều kiện.

Ứng dụng thứ hai của copula trong tài chính là định giá các công cụ phái sinh: quyền chọn (option) và phái sinh tín dụng (credit derivative – những hợp đồng cho phép chuyển nhượng rủi ro tín dùng từ một đối tượng này sang đối tượng khác trên thị trường tài chính). Lí thuyết và thực hành ứng dụng copula trong định giá phái sinh được trình bày chi tiết trong Cherubini, et al. (2004). Công trình nổi tiếng nhất trong lĩnh vực này là Li (2001); trong đó, tác giả đã cải tiến mô hình rủi ro tín dụng trong định giá nợ công ti và đề xuất copula Gaussian để xây dựng phân phối đồng thời của danh mục rủi ro tín dụng. Trong mô hình của Li, các phân phối biên duyên (thời gian phá sản) là phân phối mũ 1 chiều, vấn đề ở đây là không tồn tại phân phối mũ nhiều chiều. Công trình của Li đã trở nên rất nổi tiếng ngay sau đó và được hàng loạt các định chế tài chính trên toàn thế giới áp dụng để định giá nghĩa vụ nợ có thế chấp (CDO – collateralized debt obligation). Tuy nhiên, cuộc khủng hoảng nợ thế chấp dưới chuẩn bắt đầu từ năm 2007 tại Mỹ đã biến Li từ một người anh hùng trở thành tội đồ, phương trình copula được gọi là công thức đã giết chết phố Wall, copula Gaussian được gọi là phát minh tồi tệ nhất trong quản trị rủi ro tín dụng. Cần nhấn mạnh rằng, mặc dù bị nhiều chỉ trích nhưng copula vẫn là công cụ phổ biến trong định giá phái sinh trên thế giới, giá trị của nó trong thực tế vẫn là vấn đề đang tranh cãi.

wp_quant4_f.jpg (630×65)

Ứng dụng thứ ba của copula trong tài chính là tối ưu hóa danh mục đầu tư. Patton (2004) xem xét cho danh mục gồm 2 tài sản. Garci-Tsafack (2007) xem xét cho danh mục gồm 4 tài sản: 2 cổ phiếu và 2 trái phiếu trong 2 nước.

Ứng dụng thứ tư của copula trong tài chính là nghiên cứu sự “lây lan” (contagion) giữa các thị trường tài chính. Rodriguez (2007) là công trình đầu tiên nghiên cứu sự lan truyền giữa các thị trường tài chính bằng công cụ copula, trong công trình này, tác giả đã sử dụng mô hình Markov switching copula.

Ngoài 4 lĩnh vực ứng dụng chính, còn nhiều công trình khác trình bày những ứng dụng riêng lẻ của copula trong tài chính, xem trong Patton (2006).

Ở góc độ “sư phạm”, Genest-Favre (2007) là tài liệu rất nên đọc khi tìm hiểu về lí thuyết copula. Trong tài liệu này, các tác giả đã sử dụng bộ dữ liệu gồm 6 số để minh họa cho việc xây dựng copula.

Ở góc độ thực hành tính toán, nhiều phần mềm cung cấp gói lệnh hỗ trợ copula như: Matlab, R, SAS, EViews, Maple, Mathematica, …  Tài liệu hướng dẫn của phần mềm R có thể xem trong Kojadinovic-Yan (2010) và Yan (2007).

Nền tảng toán học – copula là gì.

Lí thuyết copula được xem  là bắt nguồn từ định lí Sklar (1959): Cho X1, …, Xd là các b.n.n với các hàm phân phối liên tục F1, …, Fd và hàm phân phối đồng thời H. Khi đó tồn tại duy nhất một hàm C: [0, 1]d vào [0, 1] sao cho

Sklar

Hàm C ở trên được gọi là copula, được hiểu một cách đơn giản là hàm phân phối nhiều chiều với các hàm biên duyên là các phân phối đều chuẩn tắc.

Từ định lí Sklar ta thấy, phần phụ thuộc giữa các biến ngẫu nhiên được xác định bởi một copula, và có thể tách rời nó ra khỏi phần các biên duyên. (Hai phần này kết hợp lại với nhau thì cho phân phối đồng thời H). Vì vậy, copula còn được gọi là hàm (cấu trúc) của sự phụ thuộc.

Các họ copula nhiều chiều được R (gói lệnh copula) hỗ trợ là: Clayton, Gumbel-Hougaard, Frank, Plackett (thuộc họ Archimedean); và normal (copula Gaussian), t-copula (thuộc họ elliptical).

Mệnh đề đảo của định lí Sklar: Với bất kỳ copula C và Y1, …, Yd là các b.n.n với các hàm phân phối liên tục F1, …, Fd, công thức (1) định nghĩa một hàm phân phối d chiều H với các hàm biên duyên F1, …, Fd.

Mệnh đề đảo cho phép xây dựng hàm phân phối d chiều H từ các hàm biên duyên. Lưu ý rằng H không phải là hàm phân phối đồng thời “TRUE” của Y1, …, Yd; nhưng H có biên duyên trùng với các phân phối của Y1, …, Yd.

Mệnh đề đảo cho thấy đặc tính “mềm dẻo” của copula: để xây dựng H, ta không cần Y1, …, Yd phải cùng phân phối và cũng không cần có ràng buộc với C.

Một ưu điểm nữa của copula là tính bất biến: copula không đổi nếu ta chuyển dịch Y1, …, Yd dưới các ánh xạ tăng ngặt. Đặc tính này cho phép ta có thể xây dựng copula trực tiếp từ mẫu hoặc từ rank của mẫu; hơn nữa, nếu ta chuyển từ mô hình các lợi suất % của danh mục các tài sản tài chính sang mô hình lợi suất loga, thì copula cũng không đổi.

 Các suy diễn thống kê được thực hiện trên các giả quan sát và copula thực nghiệm.

Cho (X11,…, X1d), …, (X n1,…, Xnd) là n quan sát d chiều, kí hiệu Ri= (Ri1,…, Rid) với Rij là thứ hạng (rank) của Xij trong X1j,…, Xnj.

Giả quan sát (pseudo-observations): pseudo-observations

hệ số 1/(n+1) nhằm tránh những vấn đề nảy sinh tại biên.

Copula thực nghiệm (empirical copula) của mẫu được xác định là

empirical copula

(với 1(A) là hàm chỉ báo (indicator function) của tập A).

Thực hành trên thị trường chứng khoán Việt Nam.

Việc xây dựng phân bố nhiều chiều (thông qua copula) từ dữ liệu (mẫu quan sát nhiều chiều) thường được chia làm 2 bước:

Bước 1. Xây dựng các hàm phân phối biên duyên

Bước 2. Xây dựng hàm copula phù hợp

Ở mỗi bước, ta có thể sử sử dụng bất kì kỹ thuật nào trong thống kê: thống kê tham số, phi tham số, nửa-tham số hay thống kê Bayesian.

Bước 1 thuần túy là thống kê 1 chiều; Bước 2 gồm 2 vấn đề chính: Ước lượng tham số và kiểm định sự phù hợp của mô hình (goodness-of-fit). Tuy nhiên, 99.9%  các ứng dụng của copula đều bỏ qua bước kiểm định goodness-of-fit (xem Embrechts (2009)).

Trong những phần sau, ta sẽ xây dựng copula và phân phối đồng thời của danh mục cổ phiếu (VCB, FPT, HAG) trên sàn HOSE, dữ liệu là ma trận giả quan sát lưu trong biến pseudoReturns (xem phần phụ lục cách tạo biến này).

Tương tự, ta cũng thực hiện kiểm định sự độc lập (qua copula) của TTCK Việt Nam và Mỹ dựa trên hai chỉ số đại diện là chỉ số công nghiệp Dow Jones (DJI) và chỉ số của sàn chứng khoán Hà Nội (HNX).

Download bài viết đầy đủ: r-copula

 —————–&&—————-

4 phản hồi

  1. Kính gửi thầy
    em đã thực hiện theo hướng dẫn của thầy trong loạt bài giảng khám phá sự thú vị của gói lệnh Copula. Tuy nhiên khi thực hiện kiểm định gof các mô hình thì mô hình gumbel có thể thực hiện được ở tất cả các cặp dữ liệu. Còn mô hình ClaytonCopula, Frankcopula, một số kiểm định ra kết quả, một số lại không thực hiện được kiểm định này mà báo kết quả

    “Error in fitCopula.ml(copula, u, start = start, lower = lower, upper = upper, : ‘start’ contains NA values”

    em không hiểu tại sao, nhưng khi mô hình đang chay, chẳng hạn “claytonCopula” bằng “gumbelCopula” thì vẫn thực hiện được ra kết quả được bình thường

    em kính mong thầy giúp em khắc phục lỗi này được không ah
    em cảm ơn thầy
    Kính thư
    em Khương

  2. Vấn đề không ở R mà do tôi🙂. Tôi có bỏ bớt một số thứ trong câu lệnh cho “gọn” nên thành ra với bộ dữ liệu của bạn R không work.
    *) Với clayton, frank, và gumbel câu lệnh nên là:
    R>gofCopula(claytonCopula(para=2,dim = 3), pseudoreturn, estim.method=”mpl”,method = “Sn”, simulation = “mult”)
    *) Với normalCopula nên là:
    R>gofCopula(normalCopula(para=c(0,0,0),dim = 3,dispstr = “un”), pseudoreturn, estim.method=”mpl”,method = “Sn”, simulation = “mult”)
    *) Với tCopula nên là:
    R>gofCopula(tCopula(para=c(0,0,0),dim = 3,dispstr = “un”,df=5,df.fixed = TRUE), pseudoreturn, estim.method=”mpl”,method = “Sn”, simulation = “mult”)
    ————————
    Trong bài báo của tác giả package copula của R. Họ viết: “The value of its attribute parameters is ignored”. Đúng là không quan trọng, nhưng nếu bỏ para thì trong 1 số trường hợp R không work.
    – Với clayton và frank thì bản chất chỉ cần para>0; với gumbel thì cần para>1.
    – Với normal và tCopula thì số chiều của para là: dim * (dim – 1) / 2 (TH 3 chiều thì =3).
    ————————-
    Thank bạn đã giúp tôi hiểu thêm về bài viết của mình🙂

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: