Numero delle rate (loans.number_of_instalments)¶
Restituisce quante rate di un importo dato rimborsano un finanziamento: il numero esatto di periodi, il numero intero delle rate e l'importo dell'ultima rata, che porta il debito residuo esattamente a zero. Si usa quando il debitore può sostenere una certa rata e la domanda è quanto dura il finanziamento.
Formula¶
Con il tasso periodico \(i\), il capitale \(P\) e la rata \(A\):
Il numero delle rate è \(N = \lceil n^* \rceil\). L'ultima rata è l'importo dovuto alla sua data di pagamento, dalla ricorrenza del debito residuo:
Il tasso periodico si ricava come in loans.instalment: un tasso annuo
nominale con capitalizzazione e periodicità della rata, oppure un tasso periodico.
Esempio¶
Un finanziamento di 3.000 al 2% trimestrale rimborsato con rate trimestrali di 800 richiede quattro rate, l'ultima inferiore alle altre:
from decimal import Decimal
import fairmark as fm
term = fm.loans.number_of_instalments(3000, 800, periodic_rate="0.02", timing="ordinary")
assert term.number_of_instalments == 4
assert term.final_instalment == Decimal("750.01008") # (((3000 x 1.02 - 800) x 1.02 - 800) x 1.02 - 800) x 1.02
assert abs(term.exact_number_of_periods - Decimal("3.936929191448856778307291")) < Decimal("1e-20")
# Rate mensili anticipate di 500, tasso annuo effettivo del 7%.
advance = fm.loans.number_of_instalments(
15000, 500, rate="0.07", compounding="annual", payment_frequency="monthly", timing="due"
)
assert advance.number_of_instalments == 33
Input¶
| Campo | Significato | Default |
|---|---|---|
principal |
Capitale finanziato, in unità di valuta, maggiore di 0 | obbligatorio |
rate, compounding, payment_frequency |
Tasso annuo nominale con la sua capitalizzazione e il numero di rate all'anno (forma a) | una forma di tasso obbligatoria |
periodic_rate |
Tasso per periodo di pagamento, frazione decimale, maggiore di −1 (forma b) | una forma di tasso obbligatoria |
instalment |
Rata costante, in unità di valuta | obbligatorio |
timing |
ordinary (rata posticipata) o due (rata anticipata) |
obbligatorio |
Questa versione del metodo non accetta un balloon.
Output¶
| Campo | Significato |
|---|---|
periodic_rate |
Tasso per periodo di pagamento utilizzato |
exact_number_of_periods |
\(n^*\) |
number_of_instalments |
\(N = \lceil n^* \rceil\), da 1 a 10000 |
final_instalment |
Importo dell'ultima rata, che porta il debito residuo a zero |
Convenzioni (esplicite, riportate in explain.conventions)¶
| Convenzione | Opzioni | Default |
|---|---|---|
| Forma del tasso | (a) tasso annuo con capitalizzazione e periodicità della rata, oppure (b) tasso periodico | esattamente una, obbligatoria |
| Momento di pagamento | ordinary, due |
nessuno: va scelto |
| Numero intero di periodi | un \(n^*\) entro \(10^{-20}\) da un intero è considerato pari a quell'intero; \(N\) è poi confermato dalla ricorrenza del debito residuo: la prima rata il cui importo dovuto supera \(A\) al massimo di \(10^{-20}\) del capitale | fissa |
| Ultima rata | importo dovuto alla sua data di pagamento, debito residuo esattamente zero: inferiore ad \(A\) quando \(n^*\) non è intero, superiore ad \(A\) al massimo di \(10^{-20}\) del capitale quando \(n^*\) è considerato intero | fissa |
| Tasso zero | \(n^* = P / A\), mostrato come passaggio separato | applicato quando \(i = 0\) |
La tolleranza sui numeri interi e la ricorrenza esistono perché una rata calcolata a piena
precisione da loans.instalment restituisca il proprio numero di rate,
invece di una rata in più pari a una frazione di centesimo.
Errori¶
| Codice | Quando |
|---|---|
FM-E001 |
Capitale pari a 0 o negativo, più di 10000 rate necessarie, forma di tasso incompleta o doppia, un campo balloon_amount, oppure un campo mancante o sconosciuto |
FM-E003 |
Il tasso periodico è pari o inferiore a −100% |
FM-E021 |
La rata è pari a 0 o negativa, oppure non supera \(i\,P'\), la quota interessi del primo periodo, qualunque sia il segno del tasso: il debito residuo non arriva mai a zero |
FM-E008 |
Overflow aritmetico (input molto al di fuori di un intervallo realistico) |
Precisione¶
\(n^*\) si calcola come \(q \times \dfrac{\ln(1 - i q)/(-i q)}{\ln(1 + i)/i}\) con \(q = P'/A\): i rapporti \(\ln(1 + x)/x\) si sommano dalla loro serie quando \(|x| < 0.01\), quindi anche i tassi piccoli, positivi o negativi, conservano tutte le cifre; \(n^*\) coincide con un riferimento indipendente a 50 cifre entro circa \(10^{-24}\), anche con tassi di \(\pm 10^{-9}\) e \(-10^{-11}\) per periodo. Il numero delle rate e l'ultima rata non dipendono da questa precisione: \(N\) è confermato dalla ricorrenza del debito residuo, che usa solo moltiplicazioni e sottrazioni ed è esatta fino all'ultima delle 28 cifre significative del motore. I casi di riferimento sono verificati a \(10^{-20}\).
Verificato con¶
- Casi di riferimento in
tests/golden/loans.number_of_instalments/, da un riferimento indipendente a 50 cifre (scripts/reference_loans.py), compresa la rata dell'esempio svolto di ECMA-376, che restituisce esattamente 10 rate, e tassi negativi piccoli su 1200 e 10000 periodi. - La funzione del numero di periodi di
numpy_financialsu finanziamenti casuali, per entrambi i momenti di pagamento.