-
numpy.ipmt(rate, per, nper, pv, fv=0.0, when='end')
[source] -
Compute the interest portion of a payment.
Parameters: rate : scalar or array_like of shape(M, )
Rate of interest as decimal (not per cent) per period
per : scalar or array_like of shape(M, )
Interest paid against the loan changes during the life or the loan. The
per
is the payment period to calculate the interest amount.nper : scalar or array_like of shape(M, )
Number of compounding periods
pv : scalar or array_like of shape(M, )
Present value
fv : scalar or array_like of shape(M, ), optional
Future value
when : {{?begin?, 1}, {?end?, 0}}, {string, int}, optional
When payments are due (?begin? (1) or ?end? (0)). Defaults to {?end?, 0}.
Returns: out : ndarray
Interest portion of payment. If all input is scalar, returns a scalar float. If any input is array_like, returns interest payment for each input element. If multiple inputs are array_like, they all must have the same shape.
Notes
The total payment is made up of payment against principal plus interest.
pmt = ppmt + ipmt
Examples
What is the amortization schedule for a 1 year loan of $2500 at 8.24% interest per year compounded monthly?
1>>> principal
=
2500.00
The ?per? variable represents the periods of the loan. Remember that financial equations start the period count at 1!
123>>> per
=
np.arange(
1
*
12
)
+
1
>>> ipmt
=
np.ipmt(
0.0824
/
12
, per,
1
*
12
, principal)
>>> ppmt
=
np.ppmt(
0.0824
/
12
, per,
1
*
12
, principal)
Each element of the sum of the ?ipmt? and ?ppmt? arrays should equal ?pmt?.
123>>> pmt
=
np.pmt(
0.0824
/
12
,
1
*
12
, principal)
>>> np.allclose(ipmt
+
ppmt, pmt)
True
1234567891011121314151617>>> fmt
=
'{0:2d} {1:8.2f} {2:8.2f} {3:8.2f}'
>>>
for
payment
in
per:
... index
=
payment
-
1
... principal
=
principal
+
ppmt[index]
...
print
(fmt.
format
(payment, ppmt[index], ipmt[index], principal))
1
-
200.58
-
17.17
2299.42
2
-
201.96
-
15.79
2097.46
3
-
203.35
-
14.40
1894.11
4
-
204.74
-
13.01
1689.37
5
-
206.15
-
11.60
1483.22
6
-
207.56
-
10.18
1275.66
7
-
208.99
-
8.76
1066.67
8
-
210.42
-
7.32
856.25
9
-
211.87
-
5.88
644.38
10
-
213.32
-
4.42
431.05
11
-
214.79
-
2.96
216.26
12
-
216.26
-
1.49
-
0.00
123>>> interestpd
=
np.
sum
(ipmt)
>>> np.
round
(interestpd,
2
)
-
112.98
numpy.ipmt()

2025-01-10 15:47:30
Please login to continue.