Ich denke, Sie werden die pv-Funktion von numpy in Hypothekensimulationen verwenden. Ich war neugierig auf die Implementierung von Numpy und habe es nachgeschlagen.
Referenz
Ich habe das in [Dokumentation] von numpy (https://github.com/numpy/numpy/blob/v1.12.0/numpy/lib/financial.py#L419-L511) beschriebene Beispiel ausprobiert.
What is the present value (e.g., the initial investment) of an investment that needs to total $15692.93 after 10 years of saving $100 every month? Assume the interest rate is 5% (annually) compounded monthly.
Übersetzt ins Japanische werden wir eine Investition in Betracht ziehen, die eine Anfangsinvestition von 15692,93 USD erfordert und 10 Jahre lang einen Gewinn von 100 USD generiert. Was ist der aktuelle Wert bei einem jährlichen Zinssatz von 5%? Was für ein Ort wie. Es ist ein Beispiel, das in Finanzlehrbüchern zu erscheinen scheint.
import numpy as np
np.pv(0.05/12, 10*12, -100, 15692.93)
-100.00067131625819
Obwohl np.pv selbst für diesen Zweck erstellt wurde, kann dieselbe Idee auf Hypothekensimulationen angewendet werden. Lassen Sie uns simulieren, wie viel Sie unter der Annahme "monatliche Zahlung von 150.000 Yen", "35-jährige Rückzahlung" und "jährlicher Zinssatz von 3%" ausleihen können. in diesem Fall,
import numpy as np
np.pv(0.03/12, 35*12, -1500000, 0)
389762052.66542333
Als Ergebnis können Sie sehen, dass Sie ein Haus für etwa 38,97 Millionen Yen kaufen können.
fv +
pv(1 + rate)^{nper} +
\frac{pmt((1 + rate)^{nper} - 1)}{rate} = 0
Es wird gesagt, dass pv durch Lösen berechnet wird. (Nur der Ausdruck bei = 0 wird beschrieben.) Sie können die Summe der geometrischen Reihen sehen, indem Sie sie betrachten, aber lassen Sie uns sie ableiten.
Der zukünftige Wert kann ausgedrückt werden durch die Summe aus "dem positiven zukünftigen Wert pv (geliehener Betrag) des ersten erhaltenen Betrags" und "dem zukünftigen Wert des monatlichen Restbetrags pmt (monatlicher Rückzahlungsbetrag)".
fv = pv (1 + rate)^{nper} + \frac{pmt}{(1-rate)^0} + \dots + \frac{pmt}{(1-rate)^{nper}}
fv = pv (1 + rate)^{nper} + pmt \Sigma_k^{nper} (1+rate)^{-(k-1)}
fv = pv (1 + rate)^{nper} + pmt \frac{1 - (1 + rate)^{nper}}{rate}
Mit diesem Gefühl konnte ich es ableiten.
Wenn man sich die Formel ansieht, kann pv in einem Schuss mit vier Regeln berechnet werden, aber der Numpy-Lehrer scheint komplizierte Dinge zu tun. Trotzdem geht es um Array-ähnliche Argumentunterstützung.
when = _convert_when(when)
(rate, nper, pmt, fv, when) = map(np.asarray, [rate, nper, pmt, fv, when])
temp = (1+rate)**nper
miter = np.broadcast(rate, nper, pmt, fv, when)
zer = np.zeros(miter.shape)
fact = np.where(rate == zer, nper+zer, (1+rate*when)*(temp-1)/rate+zer)
return -(fv + pmt*fact)/temp
Ich habe einen einfachen Simulator für Hypotheken gefunden. Im Inneren habe ich das Gefühl, dass ich die gleiche Berechnung mache. https://www.hownes.com/loan/sim/ http://sukkiri.loan
Recommended Posts