[PYTHON] Schuldenrückzahlungssimulation mit Numpy

Einführung

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 werde es vorerst versuchen

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.

Wie berechnet man numpy?

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.

Wie man numpy implementiert

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

Referenzlink

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

Schuldenrückzahlungssimulation mit Numpy
Gleitender Durchschnitt mit Numpy
Erste Schritte mit Numpy
Lernen Sie mit Chemo Informatics NumPy
Verkettung von Matrizen mit Numpy
Summencode mit Numpy
Führen Sie eine Regressionsanalyse mit NumPy durch
Erweitern Sie NumPy mit Rust
Kernel-Regression nur mit Numpy
Ich habe GP mit Numpy geschrieben
CNN-Implementierung mit nur Numpy
Künstliche Datengenerierung mit Numpy
[Python] Berechnungsmethode mit numpy
Versuchen Sie die Matrixoperation mit NumPy
Animation der Diffusionsgleichung mit NumPy
SMO mit Python + NumPy implementiert
Kleben Sie die Saiten mit Numpy zusammen
Erste Nervenzellsimulation mit NEURON + Python
Behandle numpy Arrays mit f2py
Verwenden Sie OpenBLAS mit numpy, scipy
Implementierung der logistischen Regression mit NumPy
Führen Sie eine minimale quadratische Anpassung mit numpy durch.
Zeichne einen schönen Kreis mit Numpy
Implementieren Sie Keras LSTM Feed Forward mit Numpy
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Extrahieren Sie mehrere Elemente mit dem Numpy-Array