логарифмическая к арифметической ковариационной матричной функции? - PullRequest
4 голосов
/ 05 октября 2011

Существует ли функция, которая может преобразовать ковариационную матрицу, построенную с использованием log-возвратов, в ковариационную матрицу, основанную на простых арифметических возвратах?

Мотивация: Мы хотели бы использовать функцию полезности средней дисперсии, где ожидаемые доходы и дисперсия указываются в арифметических терминах. Однако оценка доходностей и ковариаций часто выполняется с помощью журнальных возвратов из-за свойства аддитивности журнальных возвратов, и мы предполагаем, что цены на активы следуют логнормальному случайному процессу.

Меуччи описывает процесс генерации ковариационной матрицы на основе арифметических возвратов для общего / произвольного распределения логнормальных возвратов в Страница приложения 5 .

1 Ответ

3 голосов
/ 12 октября 2011

Вот мой перевод формул:

linreturn <- function(mu,Sigma) {
  m <- exp(mu+diag(Sigma)/2)-1
  x1 <- outer(mu,mu,"+")
  x2 <- outer(diag(Sigma),diag(Sigma),"+")/2
  S <- exp(x1+x2)*(exp(Sigma)-1)
  list(mean=m,vcov=S)
}

edit : исправлена ​​ошибка -1 на основе комментариев.

Попробуйте пример:

m1 <- c(1,2)
S1 <- matrix(c(1,0.2,0.2,1),nrow=2)

Генерация многомерного лог-нормального возврата:

set.seed(1001)
r1 <- exp(MASS::mvrnorm(200000,mu=m1,Sigma=S1))-1
colMeans(r1)
## [1]  3.485976 11.214211
var(r1)
##         [,1]     [,2]
## [1,] 34.4021  12.4062
## [2,] 12.4062 263.7382

Сравните с ожидаемыми результатами по формулам:

linreturn(m1,S1)

## $mean
## [1]  3.481689 11.182494

## $vcov
##          [,1]      [,2]
## [1,] 34.51261  12.08818
## [2,] 12.08818 255.01563
...