[PYTHON] Simulation de remboursement de dette avec numpy

introduction

Je pense que vous utiliserez la fonction pv de numpy dans les simulations hypothécaires. J'étais curieux de connaître l'implémentation de numpy, alors j'ai cherché.

référence

Je vais essayer de l'utiliser pour le moment

J'ai essayé l'exemple décrit dans [Documentation] de numpy (https://github.com/numpy/numpy/blob/v1.12.0/numpy/lib/financial.py#L419-L511).

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.

Traduit en japonais, nous considérerons un investissement qui nécessite un investissement initial de 15692,93 $ et générera 100 $ de profit pendant 10 ans. Quelle est la valeur actuelle, en supposant un taux d'intérêt annuel de 5%? Quel endroit, comme. C'est un exemple qui semble apparaître dans les manuels de finance.

import numpy as np
np.pv(0.05/12, 10*12, -100, 15692.93)

-100.00067131625819

Bien que np.pv lui-même soit conçu à cet effet, la même idée peut être appliquée aux simulations hypothécaires. Simulons le montant que vous pouvez emprunter en supposant que «paiement mensuel de 150 000 yens», «remboursement sur 35 ans» et «taux d'intérêt annuel de 3%». dans ce cas,

import numpy as np
np.pv(0.03/12, 35*12, -1500000, 0)

389762052.66542333

En conséquence, vous pouvez voir que vous pouvez acheter une maison pour environ 38,97 millions de yens.

Comment calculer numpy

fv +
     pv(1 + rate)^{nper} +
     \frac{pmt((1 + rate)^{nper} - 1)}{rate} = 0

On dit que pv est calculé par résolution. (Seule l'expression quand = 0 est décrite.) Vous pouvez voir la somme des séries géométriques en la regardant, mais dérivons-la.

La valeur future peut être exprimée par la somme de "la valeur future positive pv (montant emprunté) du premier montant obtenu" et "la valeur future du solde mensuel pmt (montant du remboursement mensuel)".

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}

Avec ce sentiment, j'ai pu en déduire.

Comment implémenter numpy

En regardant la formule, le pv peut être calculé en un seul coup avec quatre règles, mais le professeur numpy semble faire des choses compliquées. Même ainsi, il s'agit de la prise en charge des arguments de type tableau.

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

Lien de référence

J'ai trouvé un simulateur simple pour les hypothèques. A l'intérieur, j'ai l'impression de faire le même calcul. https://www.hownes.com/loan/sim/ http://sukkiri.loan

Recommended Posts

Simulation de remboursement de dette avec numpy
Moyenne mobile avec numpy
Premiers pas avec Numpy
Apprenez avec Chemo Informatics NumPy
Concaténation de matrices avec Numpy
Code de bourdonnement avec numpy
Effectuer une analyse de régression avec NumPy
Étendre NumPy avec Rust
Régression du noyau avec Numpy uniquement
J'ai écrit GP avec numpy
Implémentation CNN avec juste numpy
Génération artificielle de données avec numpy
[Python] Méthode de calcul avec numpy
Essayez l'opération matricielle avec NumPy
Animation de l'équation de diffusion avec NumPy
Implémentation de SMO avec Python + NumPy
Coller les chaînes avec Numpy
Première simulation de cellule nerveuse avec NEURON + Python
Gérez les tableaux numpy avec f2py
Utilisez OpenBLAS avec numpy, scipy
Implémentation de la régression logistique avec NumPy
Effectuez un ajustement carré minimum avec numpy.
Dessinez un beau cercle avec numpy
Implémenter Keras LSTM feed forward avec numpy
Essayez la simulation de contrôle de fréquence avec Python
Extraire plusieurs éléments avec le tableau Numpy