Я пытаюсь воссоздать это приложение . Однако для случаев, когда частота депозитов не совпадает с периодами начисления процентов, выходные данные моей функции не соответствуют выходным данным связанного приложения для общей стоимости инвестиций.
Вот моя функция ...
def compound_interest(principal, pmt, rate, frequency, period, time):
contribution_frequencies = {'weekly' : 52, 'biweekly' : 26, 'monthly' : 12, 'quarterly' : 4, 'semiannually' : 2, 'yearly' : 1}
compounding_periods = {'monthly' : 12, 'quarterly' : 4, 'semiannually' : 2, 'yearly' : 1}
frequency = contribution_frequencies[frequency]
period = compounding_periods[period]
rate = rate / 100
principal_interest = principal * (1 + (rate / period)) ** (period * time)
fv = (pmt * frequency) / period * ((1 + (rate / period)) ** (period * time) - 1) / (rate / period)
total = principal_interest + fv
return round(total, 2)
Вот мои тесты, в которых частота депозитов совпадает с периодами начисления ...
print(compound_interest(5000, 100, 5, 'monthly', 'monthly', 15))
print(compound_interest(5000, 100, 5, 'yearly', 'yearly', 15))
print(compound_interest(5000, 100, 5, 'quarterly', 'quarterly', 15))
print(compound_interest(5000, 100, 5, 'semiannually', 'semiannually', 15))
Возвращенные фактические значения ниже из моей функции совпадают с фактическими значениями, которые я получаю из выходных данных связанного приложения ...
37297.41
12552.5
19393.36
14878.11
Для случаев, отличных от указанных выше, фактические значения тестов не совпадают со значениями для связанного приложения. Например ....
print(compound_interest(5000, 100, 5, 'weekly', 'monthly', 15))
возвращается ...
126393.73
тогда как связанное приложение возвращает ...
126579.19
Имейте в виду, что мое уравнение рассчитывает для дополнительных депозитов, внесенных в конце периода начисления процентов (или примерно так: говорит ), который, по-видимому, такой же, как в связанном приложении.
Как бы я переписал свою функцию так, чтобы ее возвращенные фактические значения совпадали с фактическими значениями связанного приложения для всех комбинаций частоты внесения и периодов начисления?
Спасибо!