Tạo các giá trị đa biến ngẫu nhiên từ dữ liệu thực nghiệm


10

Tôi đang làm việc trên một hàm Monte Carlo để định giá một số tài sản với lợi nhuận tương quan một phần. Hiện tại, tôi chỉ tạo một ma trận hiệp phương sai và cung cấp cho rmvnorm()hàm trong R. (Tạo các giá trị ngẫu nhiên tương quan.)

Tuy nhiên, nhìn vào sự phân phối lợi nhuận của một tài sản, nó thường không được phân phối.

Đây thực sự là một câu hỏi gồm hai phần:
1) Làm cách nào tôi có thể ước tính một số loại PDF hoặc CDF khi tất cả những gì tôi có là một số dữ liệu trong thế giới thực mà không có phân phối đã biết?

2) Làm cách nào tôi có thể tạo các giá trị tương quan như rmvnorm, nhưng đối với phân phối không xác định (và không bình thường) này?

Cảm ơn!


Các bản phân phối dường như không phù hợp với bất kỳ phân phối đã biết nào. Tôi nghĩ sẽ rất nguy hiểm khi giả sử một tham số và sau đó sử dụng nó để ước tính monte carlo.

Không có một loại phương pháp bootstrap hay "empeical monte carlo" nào tôi có thể xem xét?

Câu trả lời:


2

(1) Đó là CDF bạn sẽ cần tạo chuỗi thời gian mô phỏng của mình. Để xây dựng nó, đầu tiên biểu đồ thay đổi / trả giá của bạn. Lấy tổng số tích lũy của dân số bin bắt đầu từ thùng rác đông dân nhất của bạn. Bình thường hóa chức năng mới của bạn bằng cách chia cho tổng dân số bin. Những gì bạn còn lại là một CDF. Đây là một số mã numpy mà lừa:

# Make a histogram of price changes

counts,bin_edges = np.histogram(deltas,numbins,normed=False) # numpy histogram

# Make a CDF of the price changes

n_counts,bin_edges2 = np.histogram(deltas,numbins,normed=True)
cdf = np.cumsum(n_counts)  # cdf not normalized, despite above
scale = 1.0/cdf[-1]
ncdf = scale * cdf

(2) Để tạo các lựa chọn tương quan, sử dụng copula. Xem câu trả lời này cho câu hỏi trước đây của tôi về việc tạo chuỗi thời gian tương quan.


4

Về câu hỏi đầu tiên, bạn có thể cân nhắc lấy lại dữ liệu của mình. Sẽ có một vấn đề trong trường hợp dữ liệu của bạn được tương quan theo thời gian (chứ không phải tương quan đồng thời), trong trường hợp đó bạn sẽ cần một cái gì đó như bootstrap khối. Nhưng đối với dữ liệu trả về, một bootstrap đơn giản có lẽ là tốt.

Tôi đoán câu trả lời cho câu hỏi thứ hai phụ thuộc rất nhiều vào phân phối mục tiêu.


3

Câu trả lời cho câu hỏi đầu tiên là bạn xây dựng một mô hình. Trong trường hợp của bạn, điều này có nghĩa là chọn phân phối và ước tính các tham số của nó.

Khi bạn có bản phân phối, bạn có thể lấy mẫu từ nó bằng thuật toán Gibbs hoặc Metropolis.

Về mặt lưu ý, bạn có thực sự cần lấy mẫu từ bản phân phối này không? Thông thường sự quan tâm là trong một số đặc điểm của phân phối. Bạn có thể ước tính nó bằng cách sử dụng phân phối theo kinh nghiệm thông qua bootstrap hoặc xây dựng lại một mô hình cho đặc tính này.


Tôi quan tâm đến việc lấy mẫu lợi nhuận có thể có cho một tài sản nhất định. Vì phân phối không bình thường VÀ các tài sản được tương quan theo thời gian, điều đó tạo ra một thách thức trong việc lựa chọn phân phối. Tôi đang khám phá phương pháp monte carlo để tối ưu hóa danh mục đầu tư.

1
@ Không, bạn đã xem xét các mô hình biến động ngẫu nhiên khác nhau, chẳng hạn như GARCH chưa?
mpiktas

Tôi đã xem xét các mô hình GARCH. Tuy nhiên, GARCH sẽ không giải quyết vấn đề này. Tôi đang xem xét việc tạo các mẫu ngẫu nhiên tương quan từ nhiều chuỗi thời gian. Công việc mẫu định mức đa biến ngẫu nhiên, nhưng chúng yêu cầu giả định rằng lợi nhuận thường được phân phối và trong trường hợp này, chúng không được.

1
@ Không, làm thế nào về TÌM KIẾM đa biến? Mỗi loạt riêng lẻ là TÌM KIẾM với những đổi mới từ đa biến thông thường với ma trận hiệp phương sai không chéo. Sau đó, lợi nhuận sẽ không có phân phối bình thường, nhưng chúng sẽ được tương quan.
mpiktas

3

Tôi với @mpiktas ở chỗ tôi cũng nghĩ bạn cần một người mẫu.

Tôi nghĩ rằng phương pháp tiêu chuẩn ở đây sẽ là ước tính một copula để nắm bắt cấu trúc phụ thuộc giữa các tài sản khác nhau và sử dụng các phân phối biên phân phối lệch chuẩn hoặc phân phối t cho các tài sản khác nhau. Điều đó mang lại cho bạn một lớp mô hình rất chung (tổng quát hơn, giả sử như phân phối t đa biến) gần như là tiêu chuẩn cho loại nhiệm vụ của bạn (ví dụ: tôi nghĩ Basel II yêu cầu các tổ chức tài chính sử dụng phương pháp copula để ước tính VaR của họ) . Có một copulagói cho R.


1

Một câu trả lời có thể có cho phần đầu tiên của câu hỏi bằng R ... bằng cách sử dụng ecdf()hàm

# simulate some data...
N <- 1000
fdata <- c( rnorm(N %/% 2, mean=14), rnorm(N %/% 2, mean=35))

# here's the Empirical CDF of that data...
E1 <- ecdf(fdata)
plot(E1)

# now simulate 1000 numbers from this ECDF...
ns <- 1000
ans <- as.numeric(quantile(E1, runif(ns)))
hist(ans,pro=T,nclass=113,col='wheat2')

1
Điều này chỉ áp dụng cho dữ liệu đơn biến.
Stéphane Laurent
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.