# XNPV - funzione di script

XNPV() restituisce il valore attuale netto aggregato per una programmazione di flussi di cassa (non necessariamente periodici) rappresentati da coppie di numeri in pmt e date. Tutti i pagamenti sono scontati in base ad un anno composto da 365 giorni.

Sintassi:

XNPV(discount\_rate, pmt, date)

Tipo di dati restituiti: numerico

Nota informaticaPer impostazione predefinita, il risultato sarà formattato come valuta.

La formula per calcolare l'XNPV è mostrata di seguito:

Formula di aggregazione XNPV

Formula di aggregazione XNPV

Formula di aggregazione XNPV ![Immagine della formula della funzione di script XNPV.](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-xnpv-formula.png)

dove:

* `P``i`= Flussi di cassa netti in entrata e in uscita durante un singolo periodo `i`

* `d``1`= la data del primo pagamento

* `d``i` = la data del `i`^o^ pagamento

* `rate` = tasso di sconto

Il valore attuale netto, o VAN, viene utilizzato per calcolare il valore totale attuale di una serie futura di flussi di cassa tenendo in considerazione un tasso di sconto. Per calcolare l'XNPV, è necessario stimare flussi di cassa futuri con date corrispondenti. In seguito, per ogni pagamento, si applica il tasso di sconto composto in base alla data del pagamento.

Eseguire un'aggregazione XNPV su una serie di pagamenti è simile a eseguire un'aggregazione Sum sugli stessi pagamenti. La differenza è che ogni importo viene modificato (o "scontato") in base al tasso di sconto scelto (simile al tasso di interesse) e a quanto tempo nel futuro avviene il pagamento. Eseguire XNPV con il parametro discount\_rate impostato su zero renderà XNPV equivalente a un'operazione Sum (i pagamenti non verranno modificati prima di essere sommati). In generale, più discount\_rate si avvicina allo zero, più il risultato di XNPV assomiglierà a quello di un'aggregazione Sum.

Argomenti

| Argomento | Descrizione |
| --- | --- |
| discount\_rate | discount\_rate è il tasso annuale in base al quale dovrebbero essere scontati i pagamenti.<br><br>Un valore di 0,1 indica un tasso di sconto del 10%. |
| pmt | Pagamenti. L'espressione o il campo contenente i flussi di cassa corrispondenti alla programmazione di pagamento fornita in date. I valori positivi sono considerati flussi in entrata, mentre quelli negativi sono considerati flussi in uscita.<br><br>Nota informaticaXNPV() non sconta il flusso di cassa iniziale, dato che avrà sempre luogo alla data di inizio. I pagamenti successivi sono scontati in base ad un anno composto da 365 giorni. È differente da NPV(), dove anche il primo pagamento viene scontato. |
| date | L'espressione o il campo contenente la programmazione di date corrispondente ai pagamenti con flusso di cassa forniti in pmt. Il primo valore viene utilizzato come data di inizio per il calcolo dei differimenti temporali per i flussi di cassa futuri. |

Quando si lavora con questa funzione, si applicano le seguenti limitazioni:

* Se una o entrambe le parti di una coppia di dati includono valori di testo, valori NULL e valori mancanti, l'intera coppia di dati verrà ignorata.

## Casi di utilizzo

* `XNPV()` è utilizzato nella modellistica finanziaria per calcolare il valore attuale netto (VAN) di un'opportunità di investimento.

* Grazie alla sua maggiore precisione, l'XNPV è preferito al VAN per tutti i tipi di modelli finanziari.

## Impostazioni locali

Se non diversamente specificato, gli esempi di questo argomento utilizzano il seguente formato di data: MM/GG/AAAA. Il formato della data viene specificato nell'istruzione `SET DateFormat` nello script di caricamento dei dati. La formattazione predefinita della data potrebbe essere diversa nel proprio sistema, a causa delle impostazioni regionali e di altri fattori. È possibile modificare i formati degli esempi seguenti in base alle proprie esigenze. In alternativa, è possibile modificare i formati nel proprio script di caricamento per adattarli a questi esempi.

Le impostazioni regionali predefinite delle app si basano sulle impostazioni regionali del sistema del computer o del server in cui risulta installato Qlik Sense. Se il server Qlik Sense a cui si accede è impostato in Svezia, l'editor caricamento dati utilizzerà le impostazioni regionali svedesi per date, ora e valuta. Queste impostazioni di formato regionale non riguardano la lingua visualizzata nell'interfaccia utente Qlik Sense. Qlik Sense verrà visualizzato nella stessa lingua del browser utilizzato.

## Esempio 1 - Pagamento singolo (script)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FinancialAggregationFunctions/XNPV.htm)

#### Script di caricamento e risultati

Panoramica

Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.

Lo script di caricamento contiene:

* Un set di dati di un progetto e del suo flusso di cassa per un anno, in una tabella denominata `CashFlow`. La data iniziale per il calcolo è fissata al 1° luglio 2022, con un flusso di cassa netto pari a 0. Dopo un anno, si verifica un flusso di cassa di 1000 dollari.

* Un caricamento residente dalla tabella `CashFlow`, utilizzato per calcolare il campo `XNPV` del progetto in una tabella denominata `XNPV`.

* Nel calcolo del XNPV viene utilizzato un tasso di sconto fisso del 10% (0,1).

* Un'istruzione `Group By` viene utilizzata per raggruppare tutti i pagamenti del progetto.

Script di caricamento

```
CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2023',1000
];

XNPV:
Load 
	PrjId,
	XNPV(0.1,Values,Dates) as XNPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `PrjId`

* `XNPV`

Tabella dei risultati

| PrjId | XNPV |
| --- | --- |
| 1 | $909.09 |

Secondo la formula, il valore XNPV per il primo record è 0, mentre per il secondo record il valore XNPV è di $909,09. Pertanto, il valore XNPV totale è $909.09.

## Esempio 2 - Pagamenti multipli (script)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FinancialAggregationFunctions/XNPV.htm)

#### Script di caricamento e risultati

Panoramica

Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.

Lo script di caricamento contiene:

* Un set di dati di un progetto e del suo flusso di cassa per un anno, in una tabella denominata `CashFlow`.

* Un caricamento residente dalla tabella `CashFlow`, utilizzato per calcolare il campo `XNPV` del progetto in una tabella denominata `XNPV`.

* Nel calcolo del XNPV viene utilizzato un tasso di sconto fisso del 10% (0,1).

* Un'istruzione `Group By` viene utilizzata per raggruppare tutti i pagamenti del progetto.

Script di caricamento

```
CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2024',500
1,'07/01/2023',1000
];

XNPV:
Load 
	PrjId,
	XNPV(0.1,Values,Dates) as XNPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `PrjId`

* `XNPV`

Tabella dei risultati

| PrjId | XNPV |
| --- | --- |
| 1 | $1322.21 |

In questo esempio, alla fine del primo anno si riceve un pagamento di $1000 dollari e alla fine del secondo anno se ne riceve uno di $500. Con un tasso di sconto del 10% per periodo, l'XNPV effettivo è pari a $1322,21.

Notare che solo la prima riga di dati deve fare riferimento alla data base per i calcoli. Per il resto delle righe, l'ordine non è importante, poiché il parametro della data viene utilizzato per calcolare il periodo trascorso.

## Esempio 3 - Pagamenti multipli e flussi di cassa irregolari (script)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FinancialAggregationFunctions/XNPV.htm)

#### Script di caricamento e risultati

Panoramica

Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.

Lo script di caricamento contiene:

* Tassi di sconto per due progetti in una tabella denominata `Project`.

* Flussi di cassa per più periodi per ogni progetto per ID progetto e Date. Il campo `Dates` viene utilizzato per calcolare la durata per la quale il tasso di sconto viene applicato al flusso di cassa. A parte il primo record (flusso di cassa iniziale e data), l'ordine dei record non è importante e la sua modifica non dovrebbe influire sui calcoli.

* Utilizzando una combinazione di `NoConcatenate`, caricamenti residenti e la funzione `Left Join`, viene creata una tabella temporanea, `tmpNPV`, che combina i record delle tabelle `Project` e `CashFlow` in una tabella piatta. In questa tabella i tassi di sconto saranno ripetuti per ogni flusso di cassa.

* Un caricamento residente dalla tabella `tmpNPV`, utilizzato per calcolare il campo `XNPV` per ciascun progetto in una tabella denominata `XNPV`.

* Il tasso di sconto a valore singolo associato a ciascun progetto viene recuperato tramite la funzione `only()` e utilizzato nel calcolo `XNPV` per ciascun progetto.

* Un'istruzione `Group By`, raggruppata per ID progetto, viene utilizzata per raggruppare tutti i pagamenti e le date corrispondenti per ogni progetto.

* Per evitare che vengano caricati dati sintetici o ridondanti nel modello di dati, la tabella `tmpXNPV` viene eliminata alla fine dello script.

Script di caricamento

```
Project:
Load * inline [
PrjId,Discount_Rate
1,0.1
2,0.15
];

CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2021',0
1,'07/01/2022',1000
1,'07/01/2023',1000
2,'07/01/2020',0
2,'07/01/2023',500
2,'07/01/2024',1000
2,'07/01/2022',500
];

tmpXNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load * 
Resident CashFlow;

XNPV:
Load 
	PrjId,
	XNPV(Only(Discount_Rate),Values,Dates) as XNPV //Discount Rate will be 10% for Project 1 and 15% for Project 2
Resident tmpXNPV
Group By PrjId;

Drop table tmpXNPV;
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `PrjId`

* `XNPV`

Tabella dei risultati

| PrjId | XNPV |
| --- | --- |
| 1 | $1735.54 |
| 2 | $278.36 |

Il progetto ID 1 ha un flusso di cassa iniziale di 0 dollari il 1° luglio 2021. Sono previsti due pagamenti di 1.000 dollari da ricevere alla fine di due anni successivi, a un tasso di sconto del 10% per periodo. Pertanto, il valore XNPV effettivo è pari a $1735.54.

Il progetto ID 2 ha un'uscita iniziale di $1.000 (quindi il segno negativo) il 1° luglio 2020. Dopo due anni è previsto un pagamento di $500. Dopo 3 anni è previsto un altro pagamento di $500. Infine, il 1° luglio 2024 è previsto un pagamento di $1.000. Con un tasso di sconto del 15%, l'XNPV effettivo è pari a $278,36.

## Ulteriori informazioni

* [Drop table](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/drop-table.htm)
* [group by](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm#group_by)
* [Join](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)
* [Max - funzione di script](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/max.htm)
* [NoConcatenate](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/NoConcatenate.htm)
* [NPV - funzione per grafici](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/npv.htm)
* [Only - funzione di script](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/only.htm)
* [Resident LOAD](https://help.qlik.com/it-IT/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm#Resident)