2016-05-28 2 views
0

В настоящее время я пытаюсь моделировать log-return в R и рассчитывать ожидаемый P & L для простой инвестиции. Мой код работает, но у меня есть проблемы в понимании того, почему ожидаемая прибыль не равна:Моделирование Log-Return в R не приводит к ожидаемому результату

(exp(annual_mean * (holding_period/253)) * investment) - investment 

, которая равна 5350 в моем примере. Однако, выполнив следующую имитацию всегда приводишь к прибыл около 5580:

investment <- 1000000 
holding_period <- 45 
annual_mean <- 0.03 
annual_sd <- 0.05 
simulations <- 1000000 

    # Create Matrix for log-returns 
    Paths <- matrix(data = NA, nrow = holding_period, ncol = simulations); 

    # feed matrix with log-returns 
    for (k in 1:simulations) 
    { 
    Returns <- rnorm(holding_period, mean = annual_mean/253, 
    sd = annual_sd/sqrt(253)); 
    Paths[, k] <- investment * exp(cumsum(Returns)); 
    } 

    # calculate EPnL 
    EPnL <- mean(Paths[holding_period, ] - investment); 
    print(EPnL) 

Учитывая большое количество имитаций, я бы не ожидал такое большое отклонение от ожидаемой прибыли. Я также попробовал большее количество симуляций, но результат все тот же.

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

Надеюсь, вы, ребята, понимаете мой вопрос. Я знаю, что это более связанная с финансами тема, но я предполагаю, что в коде есть некоторая неверная интерпретация.

Большое спасибо!

ответ

1

я, наконец, нашел ответ на эту проблему. Я полностью пренебрег тем фактом, что я преобразовываю нормально распределенный доход, умножая его на первоначальные инвестиции и постоянно составляя. В то время как умножение оставляет нормально распределенные доходности, экспоненциальная функция преобразует случайную переменную так, чтобы она была нормально распределена. Поэтому среднее значение равно exp (μ + σ^2/2) с μ и σ^2, равным среднему значению и стандартным отклонениям соответствующего нормального распределения.

2

Я считаю, что проблема связана с использованием вами cumsum - вы обрабатываете возвраты, как если бы ставки складывались, а не умножались/составляли. Если вы немного изменить код и использовать cumprod вместо этого, он, кажется, дает правильный результат ...

# feed matrix with log-returns 
for (k in 1:simulations) 
{ 
Returns <- rnorm(holding_period, mean = annual_mean/253, sd = annual_sd/sqrt(253)) 
Returns <- 1 + Returns 
Paths[, k] <- investment * cumprod(Returns) 
} 

# calculate EPnL 
EPnL <- mean(Paths[holding_period, ] - investment) 
print(EPnL) 
+0

Спасибо, Дэн! Я тоже думал об этом, и, учитывая, что я постоянно усугубляю, это имеет смысл. Но знаете ли вы, как я могу предсказать ценность, которую я получаю от cumsum? Потому что я понял, что то, что я на самом деле делаю, это имитация цен на акции, которые не возвращаются, а мои инвестиции - только начальное значение ... – Philipp

+0

Я боюсь этого, я боюсь ... дайте мне знать, если вы найдете ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^