Различные результаты для IRR от numpy.irr и функции Excel IRR - PullRequest
0 голосов
/ 12 октября 2018

У меня есть следующие годовые денежные потоки:

w=np.array([   -56501, -14918073,  -1745198, -20887403,  -9960686, -31076934,
               0,         0,  11367846,  26736802,  -2341940,  20853917,
        22166416,  19214094,  23056582, -11227178,  18867100,  24947517,
        28733869,  24707603, -17030396,   7753089,  27526723,  31534327,
        26726270, -24607953,  11532035,  29444013,  24350595,  30140678,
       -33262793,   5640172,  32846900,  38165710,  31655489, -74343373,
               0,         0,         0,         0,         0,         0,
               0,         0,         0,         0,         0,         0,
               0,         0,         0,         0,         0,         0,
               0,         0,         0,         0,         0,         0,
               0,         0,         0,         0,         0,         0,
               0,         0,         0,         0,         0,         0,
               0,         0,         0,         0,         0,         0,
               0,         0,         0,         0,         0,         0,
               0,  -8727068])

Я рассчитываю IRR, используя np.irr

np.irr(w)
Out[141]: -0.05393588064654964

Когда я использую функцию IRR в Excel для тех же денежных потоков, яполучить 12%.Эти две функции обычно дают одинаковый результат.Кто-нибудь знает, почему в этом случае результаты так разные?Спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Для данных денежных потоков IRR не является уникальным;см. Несколько IRR .И числовые значения, и значения Excel для r удовлетворяют NPV(r) = 0, где NPV - чистая приведенная стоимость.

Вот график NPV (r) для данных в w.Красные звезды обозначают значения IRR (где NPV (r) равно нулю).

plot

Вот сценарий, который генерирует график:

import numpy as np
import matplotlib.pyplot as plt


w = np.array([   -56501, -14918073,  -1745198, -20887403,  -9960686, -31076934,
                      0,         0,  11367846,  26736802,  -2341940,  20853917,
               22166416,  19214094,  23056582, -11227178,  18867100,  24947517,
               28733869,  24707603, -17030396,   7753089,  27526723,  31534327,
               26726270, -24607953,  11532035,  29444013,  24350595,  30140678,
              -33262793,   5640172,  32846900,  38165710,  31655489, -74343373,
                      0,         0,         0,         0,         0,         0,
                      0,         0,         0,         0,         0,         0,
                      0,         0,         0,         0,         0,         0,
                      0,         0,         0,         0,         0,         0,
                      0,         0,         0,         0,         0,         0,
                      0,         0,         0,         0,         0,         0,
                      0,         0,         0,         0,         0,         0,
                      0,         0,         0,         0,         0,         0,
                      0,  -8727068])

r_excel = 0.1200963665

r_numpy = np.irr(w)

rr = np.linspace(-0.055, 0.16, 500)
npvals = np.array([np.npv(r, w) for r in rr])

plt.plot(rr, npvals/1e6, alpha=0.8)
plt.plot(r_numpy, 0, 'r*')
plt.plot(r_excel, 0, 'r*')

plt.grid(True)
plt.xlabel('r')
plt.ylabel('NPV(r) [millions]')

plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...