부분적으로 상관 관계가있는 수익으로 여러 자산을 평가하기 위해 Monte Carlo 함수를 작업 중입니다. 현재 공분산 행렬을 생성하고 rmvnorm()
R 의 함수에 피드합니다 (상관 된 임의의 값 생성).
그러나 자산의 수익 분배를 보면 일반적으로 분배되지 않습니다.
이것은 실제로 두 부분으로 된 질문입니다.
1) 알려진 분포가없는 실제 데이터 일 때 PDF 또는 CDF를 어떻게 추정 할 수 있습니까?
2) rmvnorm과 같은 상관 값을 생성하지만이 알 수없는 (정규적이지 않은) 분포에 대해 어떻게 할 수 있습니까?
감사!
분포가 알려진 분포에 맞지 않는 것 같습니다. 파라 메트릭을 가정 한 다음 몬테카를로 추정에 사용하는 것이 매우 위험하다고 생각합니다.
내가 볼 수있는 일종의 부트 스트랩이나 “임시 몬테 카를로”방법이 없습니까?
답변
(1) 시뮬레이션 된 시계열을 생성하는 데 필요한 CDF입니다. 그것을 구축하려면 먼저 가격 변경 / 반품을 히스토그램으로 표시하십시오. 가장 왼쪽에있는 빈부터 시작하여 누적 된 빈 인구 집단을 가져옵니다. 총 빈 모집단으로 나누어 새 기능을 정규화하십시오. 남은 것은 CDF입니다. 트릭을 수행하는 몇 가지 numpy 코드는 다음과 같습니다.
# 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) 상관 된 픽을 생성하려면 copula를 사용하십시오. 상관 시계열 생성에 대한 이전 질문에 대한 이 답변 을 참조하십시오 .
답변
첫 번째 질문과 관련하여 데이터 리샘플링을 고려할 수 있습니다. 데이터가 동시 적으로 상관되는 것이 아니라 시간이 지남에 따라 상관 된 경우 문제가있을 수 있으며,이 경우 블록 부트 스트랩과 같은 것이 필요합니다. 그러나 반환 데이터의 경우 간단한 부트 스트랩이 좋습니다.
두 번째 질문에 대한 답은 목표 분포에 크게 의존한다고 생각합니다.
답변
첫 번째 질문에 대한 답은 모델을 작성한다는 것입니다. 귀하의 경우 이는 분포를 선택하고 모수를 추정하는 것을 의미합니다.
분포가 있으면 Gibbs 또는 Metropolis 알고리즘을 사용하여 분포를 샘플링 할 수 있습니다.
참고로,이 분포에서 표본 추출해야합니까? 일반적으로 관심은 분포의 일부 특성에 있습니다. 부트 스트랩을 통한 경험적 분포를 사용하여 추정하거나이 특성에 대한 모델을 다시 작성할 수 있습니다.
답변
나는 또한 당신이 모델이 필요하다고 생각한다는 점에서 @mpiktas와 함께 있습니다.
여기에서 표준 방법은 다른 자산 사이의 의존성 구조를 포착하고 다른 자산에 대한 비정규 정규 분포 또는 t 분포 한계 분포를 사용하는 copula를 추정하는 것입니다. 그것은 당신에게 당신의 종류의 작업에 거의 표준 인 매우 일반적인 모델 클래스를 제공합니다 (예를 들어, 다변량 t- 분포를 가정하면 더 일반적입니다) . 있다 copula
R.위한 패키지
답변
ecdf()
함수를 사용하여 R을 사용하여 질문의 첫 번째 부분에 가능한 대답
# 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')