Valore attuale netto (tvm.npv)¶
Attualizza in \(t = 0\) una serie di flussi di cassa periodici a un unico tasso per periodo. Per
flussi in date di calendario usa tvm.xnpv; per un tasso diverso in ogni
periodo o per la convenzione di metà periodo usa tvm.present_value.
Versione del metodo: 2. La versione 2 calcola i fattori di sconto per tassi negativi dal reciproco di \(1 + r\); solo le ultime cifre dei risultati con tassi negativi differiscono dalla versione 1.
Formula¶
Il primo flusso avviene in \(t = 0\) e non viene attualizzato. È diverso dalla funzione NPV
(VAN) dei fogli di calcolo, che inizia ad attualizzare dal primo valore.
Esempio¶
import fairmark as fm
r = fm.tvm.npv("0.07", [-5000, 1200, 1500, 1800, 2100])
print(r.npv) # 503.0695432159...
Input¶
| Campo | Significato | Default |
|---|---|---|
rate |
Tasso di attualizzazione per periodo, frazione decimale | obbligatorio |
cash_flows |
Flussi di cassa, il primo in \(t = 0\) | obbligatorio |
Output¶
| Campo | Significato |
|---|---|
npv |
Valore attuale netto in \(t = 0\) |
present_values |
Valore attuale di ciascun flusso |
Convenzioni (esplicite, riportate in explain.conventions)¶
| Convenzione | Valore | Default |
|---|---|---|
| Origine dei tempi | cash_flows[0] in \(t = 0\), non attualizzato |
fissa |
Errori¶
| Codice | Quando |
|---|---|
FM-E001 |
Un campo è mancante o sconosciuto |
FM-E002 |
cash_flows è vuoto |
FM-E003 |
Il tasso è pari o inferiore a −100% |
FM-E008 |
Overflow aritmetico (input molto al di fuori di un intervallo realistico) |
Precisione¶
Le potenze intere sono calcolate con moltiplicazioni esatte. Rispetto a un calcolo indipendente a 60 cifre, i risultati concordano entro circa \(10^{-24}\) in termini relativi o meglio. I tassi negativi sono attualizzati tramite il reciproco di \(1 + r\), mantenendo la piena precisione relativa, e gli orizzonti molto lunghi tendono a zero (underflow) invece di andare in overflow. Il caso di riferimento è verificato entro \(10^{-9}\).
Verificato con¶
- Caso di riferimento (golden case) in
tests/golden/tvm.npv/. - Concorda con
numpy_financial.npvepyxirr.npv, che usano la stessa origine dei tempi, e con l'espressione dei fogli di calcoloNPV(r, CF_1, ..., CF_n) + CF_0(Excel, LibreOffice).