Функция преобразования годовой доходности возвращает комплексное значение - PullRequest
3 голосов
/ 15 марта 2019

Я пишу функцию Python, которая преобразует сложный коэффициент возврата в годовой:

annual_rate = ((1 + ((1 + compound_rate) ** (1 / nb_days) - 1)) ** 365 - 1)

Это прекрасно работает

compound_rate = 0.1
nb_days = 100
>>0.41606536550485806

Но в некоторых случаях комплексное числовозвращено

compound_rate = -1.8536
nb_days = 362
>>(-1.852192062046392-0.022192088919279443j)

Вот пример из реальной жизни:

Если у меня есть таблица депозитных платежей согласно следующему:

03/03/2018  £1000
03/04/2018  £1000
03/05/2018  £1000
03/06/2018  £1000
03/07/2018  £1000
03/08/2018  £1000
03/09/2018  £1000
03/10/2018  £1000
03/11/2018  £1000
03/12/2018  £1000
03/01/2019  £1000
03/02/2019  £1000

.. и если япотеряв все деньги и получив 100 фунтов стерлингов в конце февраля 2019 года, я бы вложил 12000 фунтов стерлингов с потерей 11900 фунтов стерлингов в течение 362 дней.

Если бы я применил свою формулу оттуда,возвращается комплексное число (см. второй пример выше).

Есть ли что-то, чего я здесь не вижу?В буквальном смысле этот результат не кажется мне реальным.

1 Ответ

2 голосов
/ 15 марта 2019

Это может быть то, что вы ищете:

import numpy as np
l = [-1000]*12
l.append(100)
print(l)
#[-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 100]
print(np.irr(l))
#-0.9090909090908827
...