Как рассчитать постоянный платеж по кредиту (как PMT), но дополнительный двойной платеж (без процентов) два раза в год

Это мой первый пост в этом сообществе, уже пытался найти свой ответ, но безуспешно :(.

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

Пример (взят из реального графика амортизации):

+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| #  | Date       | Month | Payment  | Amortization | Interests | Balance    | Comment                          |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 1  | 2015-04-30 | Apr   | 2,699.00 | -332.10      | 3,031.10  | 439,425.00 | First payment, usually different |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 2  | 2015-05-31 | May   | 2,715.34 | 39.90        | 2,675.44  | 439,757.10 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 3  | 2015-06-30 | Jun   | 2,711.25 | -53.40       | 2,764.65  | 439,717.20 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 4  | 2015-07-31 | Jul   | 5,614.66 | 2,939.14     | 2,675.52  | 439,770.60 | Double payment                   |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 5  | 2015-08-31 | Aug   | 2,708.01 | -127.38      | 2,835.39  | 436,831.46 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 6  | 2015-09-30 | Sep   | 2,716.12 | 57.70        | 2,658.42  | 436,958.84 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 7  | 2015-10-31 | Oct   | 2,716.14 | 58.08        | 2,658.06  | 436,901.14 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 8  | 2015-11-30 | Nov   | 2,712.08 | -34.50       | 2,746.58  | 436,843.06 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 9  | 2015-12-31 | Dec   | 5,615.47 | 2,957.55     | 2,657.92  | 436,877.56 | Double payment                   |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 10 | 2016-01-31 | Jan   | 2,712.92 | -15.28       | 2,728.20  | 433,920.01 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 11 | 2016-02-29 | Feb   | 2,716.97 | 76.95        | 2,640.02  | 433,935.29 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 12 | 2016-03-31 | Mar   | 2,716.99 | 77.44        | 2,639.55  | 433,858.34 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 13 | 2016-04-30 | Apr   | 2,712.96 | -14.37       | 2,727.33  | 433,780.90 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 14 | 2016-05-31 | May   | 2,717.01 | 77.84        | 2,639.17  | 433,793.27 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 15 | 2016-06-30 | Jun   | 2,712.98 | -13.95       | 2,726.93  | 433,717.43 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 16 | 2016-07-31 | Jul   | 5,616.36 | 2,977.58     | 2,638.78  | 433,732.48 | Double payment                   |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+
| 17 | 2016-08-31 | Aug   | 2,713.84 | 5.55         | 2,708.29  | 430,753.80 |                                  |
+----+------------+-------+----------+--------------+-----------+------------+----------------------------------+

Примечание: в Перу ежемесячный платеж рассчитывается с учетом сбора за страхование жизни, я вычел понятия для упрощения (но в результате получается нефиксированный ежемесячный платеж).

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

Например, кредит на 30 лет, годовая ставка 12% и кредит в размере 1000 долларов США с использованием ипотечного кредита с постоянной амортизацией:

P = A / ((( 1 + i ) ^ n - 1 )/( i ( 1 + i ) ^ n ))
A = loan amount = 1,000
i = monthly rate = (( 1 + 12% ) ^ ( 1 / 12 ) - 1 ) = 0.00948879293
n = periods = 30 * 12 = 360
---
So, my payment (P) will be: USD 9.83 ~

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

Если я плачу один раз, это работает как шарм:

+--------------------------------------------------------------+
| Single Payment                                               |
+-----+---------+---------+----------+--------------+----------+
| #   | # Month | Payment | Interest | Amortization | Balance  |
+-----+---------+---------+----------+--------------+----------+
| 0   |         |         |          |              | 1,000.00 |
+-----+---------+---------+----------+--------------+----------+
| 1   | 1       | 9.83    | 9.50     | 0.33         | 999.67   |
+-----+---------+---------+----------+--------------+----------+
| 2   | 2       | 9.83    | 9.50     | 0.33         | 999.34   |
+-----+---------+---------+----------+--------------+----------+
| 3   | 3       | 9.83    | 9.49     | 0.33         | 999.01   |
+-----+---------+---------+----------+--------------+----------+
| 4   | 4       | 9.83    | 9.49     | 0.34         | 998.67   |
+-----+---------+---------+----------+--------------+----------+
| 5   | 5       | 9.83    | 9.49     | 0.34         | 998.34   |
+-----+---------+---------+----------+--------------+----------+
| 6   | 6       | 9.83    | 9.48     | 0.34         | 997.99   |
+-----+---------+---------+----------+--------------+----------+
| 7   | 7       | 9.83    | 9.48     | 0.35         | 997.65   |
+-----+---------+---------+----------+--------------+----------+
| 8   | 8       | 9.83    | 9.48     | 0.35         | 997.30   |
+-----+---------+---------+----------+--------------+----------+
| 9   | 9       | 9.83    | 9.47     | 0.35         | 996.95   |
+-----+---------+---------+----------+--------------+----------+
| 10  | 10      | 9.83    | 9.47     | 0.36         | 996.59   |
+-----+---------+---------+----------+--------------+----------+
| 11  | 11      | 9.83    | 9.47     | 0.36         | 996.23   |
+-----+---------+---------+----------+--------------+----------+
| 12  | 12      | 9.83    | 9.46     | 0.36         | 995.87   |
+-----+---------+---------+----------+--------------+----------+
| ... |         |         |          |              |          |
+-----+---------+---------+----------+--------------+----------+
| 355 | 7       | 9.83    | 0.54     | 9.29         | 47.72    |
+-----+---------+---------+----------+--------------+----------+
| 356 | 8       | 9.83    | 0.45     | 9.37         | 38.35    |
+-----+---------+---------+----------+--------------+----------+
| 357 | 9       | 9.83    | 0.36     | 9.46         | 28.88    |
+-----+---------+---------+----------+--------------+----------+
| 358 | 10      | 9.83    | 0.27     | 9.55         | 19.33    |
+-----+---------+---------+----------+--------------+----------+
| 359 | 11      | 9.83    | 0.18     | 9.64         | 9.69     |
+-----+---------+---------+----------+--------------+----------+
| 360 | 12      | 9.78    | 0.09     | 9.69         | 0.00     |
+-----+---------+---------+----------+--------------+----------+

Но двойная оплата, очевидно, приводит к отрицательному балансу... Мне нужно, чтобы это было именно так: достичь нуля в последнем.

+-----------------------------------------------------------------+
| Double paying (july and december)                               |
+-----+---------+-----------+----------+--------------+-----------+
| #   | # Month | Payment   | Interest | Amortization | Balance   |
+-----+---------+-----------+----------+--------------+-----------+
| 0   |         |           |          |              | 1,000.00  |
+-----+---------+-----------+----------+--------------+-----------+
| 1   | 1       | 9.83      | 9.50     | 0.33         | 999.67    |
+-----+---------+-----------+----------+--------------+-----------+
| 2   | 2       | 9.83      | 9.50     | 0.33         | 999.34    |
+-----+---------+-----------+----------+--------------+-----------+
| 3   | 3       | 9.83      | 9.49     | 0.33         | 999.01    |
+-----+---------+-----------+----------+--------------+-----------+
| 4   | 4       | 9.83      | 9.49     | 0.34         | 998.67    |
+-----+---------+-----------+----------+--------------+-----------+
| 5   | 5       | 9.83      | 9.49     | 0.34         | 998.34    |
+-----+---------+-----------+----------+--------------+-----------+
| 6   | 6       | 9.83      | 9.48     | 0.34         | 997.99    |
+-----+---------+-----------+----------+--------------+-----------+
| 7   | 7       | 19.65     | 9.48     | 10.17        | 987.82    |
+-----+---------+-----------+----------+--------------+-----------+
| 8   | 8       | 9.83      | 9.38     | 0.44         | 987.38    |
+-----+---------+-----------+----------+--------------+-----------+
| 9   | 9       | 9.83      | 9.38     | 0.45         | 986.93    |
+-----+---------+-----------+----------+--------------+-----------+
| 10  | 10      | 9.83      | 9.38     | 0.45         | 986.48    |
+-----+---------+-----------+----------+--------------+-----------+
| 11  | 11      | 9.83      | 9.37     | 0.46         | 986.03    |
+-----+---------+-----------+----------+--------------+-----------+
| 12  | 12      | 19.65     | 9.37     | 10.29        | 975.74    |
+-----+---------+-----------+----------+--------------+-----------+
| ... |         |           |          |              |           |
+-----+---------+-----------+----------+--------------+-----------+
| 355 | 7       | 19.65     | -43.01   | 62.66        | -4,589.83 |
+-----+---------+-----------+----------+--------------+-----------+
| 356 | 8       | 9.83      | -43.60   | 53.43        | -4,643.26 |
+-----+---------+-----------+----------+--------------+-----------+
| 357 | 9       | 9.83      | -44.11   | 53.94        | -4,697.20 |
+-----+---------+-----------+----------+--------------+-----------+
| 358 | 10      | 9.83      | -44.62   | 54.45        | -4,751.65 |
+-----+---------+-----------+----------+--------------+-----------+
| 359 | 11      | 9.83      | -45.14   | 54.97        | -4,806.61 |
+-----+---------+-----------+----------+--------------+-----------+
| 360 | 12      | -4,852.27 | -45.66   | -4,806.61    | 0.00      |
+-----+---------+-----------+----------+--------------+-----------+

То, что в гугл-листах, здесь .

Есть предположения? Я буду очень признателен за помощь!

заранее спасибо

Проще всего это выяснить с помощью компьютерной программы. Формулы амортизации рассчитаны на то, чтобы принимать один и тот же платеж каждый период... Они не работают с нерегулярными платежами, потому что вам нужно пересчитать оставшуюся амортизацию в том месяце, когда происходит нерегулярный платеж.
Для вашей электронной таблицы все, что вам нужно сделать, это изменить платеж в соответствующих ячейках (как вы делаете сейчас), а затем ввести в последнюю ячейку специальную формулу, которая вычисляет платеж при закрытии.
@RobertHarvey, большое спасибо, но я как раз пытаюсь сделать свой собственный код, чтобы понять это ... поэтому первое предложение для меня не подходит. Что касается второго, мой лист уже делает это: последний платеж берет на себя роль исправления любой неточности round().
Ну тогда я не совсем понимаю. Последний платеж должен быть спроектирован так, чтобы он всегда приводил к нулевому балансу.
А это: docs.google.com/spreadsheets/d/… . Итоговый баланс (платеж №360) в обеих таблицах равен нулю. Один с равными платежами работает нормально, но другой платит намного больше за кредит (вот почему также платеж является отрицательным числом)
Хорошо, кажется, я вижу, что вы пытаетесь сделать. Вы хотите спроектировать ежемесячный платеж таким образом, чтобы, если дополнительные платежи будут производиться через регулярные промежутки времени, ипотека все равно будет амортизироваться в течение 360 месяцев. Существует наивный подход с использованием бинарного поиска; в основном вы должны написать код, который «угадывает» правильное месячное значение, вычисляет амортизацию, включая нерегулярные платежи, видит, превышаете ли вы 360 месяцев или меньше, создаете новое предположение и повторяете, пока оно в конечном итоге не сойдется на правильное решение.
Я не знаю, как это сделать с помощью одной математической формулы, но я почти уверен, что такое упражнение, вероятно, связано с дифференциальными уравнениями, что выходит за рамки моих математических способностей.
Ага, вот оно! Но мои нерегулярные платежи регулярны: 2 дополнительных каждый год. Поэтому я думаю, что должен быть способ установить немного более низкую, но регулярную оплату.
Проценты начисляются в баллах при каждом платежном цикле. Таким образом, единственный способ сделать это (за исключением какого-то дифференциального уравнения, в котором я не разбираюсь) — увеличивать платеж через желаемые интервалы, запускать амортизацию до тех пор, пока она не станет равной нулю, посмотреть, привело ли это к 360 платежам, скорректировать первоначальный взнос и начать сначала. Повторяйте, пока не найдете платеж, который достигает желаемого результата 360 платежей до нулевого баланса.
Что-то вроде этого, но я ищу неитеративный подход. Подобно формуле платежа, но включая эти дополнительные беспроцентные платежи: P = A / ((( 1 + i ) ^ n - 1 )/( i ( 1 + i ) ^ n ))
Да, я понимаю. Ясно, что стандартная формула не поможет.
Почему выплаты в вашем примере такие нерегулярные? Я ожидаю, что все они будут одинаковыми, за исключением двойных платежей, которые должны быть в два раза больше других.
Потому что они в Перу используют для расчета равного / фиксированного платежа, используя годовую ставку плюс страховку жизни. Я вычла ежемесячную сумму страхования жизни, а потом получилась нерегулярная выплата... может быть, это не очень хороший пример, но пока это все, что у меня есть. Я обновлю пример и добавлю оригинал, может быть, он лучше.
Я не понимаю, как это решение :(

Ответы (1)

Мне удалось рассчитать разовый платеж, который позволил обнулить баланс :)

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

Это занимает две итерации, но работает просто отлично! Все еще ищет неитеративный способ...

Месячный коэффициент: 1/(1+monthly rate)^period, например. последний должен быть 1/(1+0.00948879293)^360= 0.03337792393. Учитывая, что последний является дважды оплачиваемым: 0.03337792393*2= 0.06675584786.

Я уже обновил формулы в том же листе Google ( здесь ) и буду работать в линейном решении.

Так:

+──────+──────────+──────────────+────────+──────────+───────────+───────────────+──────────+
| #    | # Month  | Double pay?  | Ratio  | Payment  | Interest  | Amortization  | Balance  |
+──────+──────────+──────────────+────────+──────────+───────────+───────────────+──────────+
| 0    |          |              |        |          |           |               | 1,000.00 |
| 1    | 1        | FALSE        | 0.99   | 8.46     | 9.50      | -1.04         | 1,001.04 |
| 2    | 2        | FALSE        | 0.98   | 8.46     | 9.51      | -1.05         | 1,002.10 |
| 3    | 3        | FALSE        | 0.97   | 8.46     | 9.52      | -1.06         | 1,003.16 |
| 4    | 4        | FALSE        | 0.96   | 8.46     | 9.53      | -1.07         | 1,004.23 |
| 5    | 5        | FALSE        | 0.95   | 8.46     | 9.54      | -1.08         | 1,005.32 |
| 6    | 6        | FALSE        | 0.94   | 8.46     | 9.55      | -1.09         | 1,006.41 |
| 7    | 7        | TRUE         | 1.87   | 16.91    | 9.56      | 7.35          | 999.06   |
| 8    | 8        | FALSE        | 0.93   | 8.46     | 9.49      | -1.03         | 1,000.09 |
| 9    | 9        | FALSE        | 0.92   | 8.46     | 9.50      | -1.04         | 1,001.13 |
| 10   | 10       | FALSE        | 0.91   | 8.46     | 9.51      | -1.05         | 1,002.19 |
| 11   | 11       | FALSE        | 0.90   | 8.46     | 9.52      | -1.06         | 1,003.25 |
| 12   | 12       | TRUE         | 1.79   | 16.91    | 9.53      | 7.38          | 995.87   |
| ...  |          |              |        |          |           |               |          |
| 355  | 7        | TRUE         | 0.07   | 16.91    | 0.62      | 16.29         | 49.28    |
| 356  | 8        | FALSE        | 0.03   | 8.46     | 0.47      | 7.99          | 41.29    |
| 357  | 9        | FALSE        | 0.03   | 8.46     | 0.39      | 8.06          | 33.23    |
| 358  | 10       | FALSE        | 0.03   | 8.46     | 0.32      | 8.14          | 25.09    |
| 359  | 11       | FALSE        | 0.03   | 8.46     | 0.24      | 8.22          | 16.87    |
| 360  | 12       | TRUE         | 0.07   | 17.03    | 0.16      | 16.87         | 0.00     |
+──────+──────────+──────────────+────────+──────────+───────────+───────────────+──────────+
Не может быть намного лучше, чем это.
Теперь я ищу способ рассчитать коэффициент приведенной стоимости для однородных и неоднородных рядов... кто знает, может это сработает :D