# XNPV - función de script

XNPV() devuelve el valor actual neto agregado de una planificación de flujos de efectivo (no necesariamente periódicos) representado por números pareados en pmt y date. Todos los pagos son descontados según una base de un año de 365 días.

Sintaxis:

XNPV(discount\_rate, pmt, date)

Tipo de datos que devuelve: numérico

Nota informativaDe forma predeterminada, el resultado recibirá el formato de moneda.

La fórmula para calcular el XNPV se muestra a continuación:

Fórmula de agregación de XNPV

Fórmula de agregación de XNPV

Fórmula de agregación de XNPV ![Imagen de la fórmula para la func ión de secuencia de script XNPV.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-xnpv-formula.png)

donde:

* `P``i`= Entradas y salidas de efectivo netas durante un solo periodo `i`

* `d``1`= la primera fecha de pago

* `d``i` = la `i`^ª^ fecha de pago

* `rate` = la tasa de descuento

El valor actual neto, VAN (NPV en inglés), se utiliza para calcular el valor total actual de una corriente futura de flujos de efectivo dada una tasa de descuento. Para calcular el XNPV, necesitamos estimar los flujos de efectivo futuros con las fechas correspondientes. Después de esto, para cada pago, aplicamos la tasa de descuento compuesta basada en la fecha del pago.

Realizar la agregación XNPV sobre una serie de pagos es similar a realizar una agregación Sum sobre esos pagos. La diferencia es que cada cantidad es modificada (o “descontada”) de acuerdo a la tasa de descuento elegida (similar a la tasa de interés) y a cuánto tiempo está el pago en el futuro. Realizar el XNPV con el parámetro discount\_rate configurado en cero hará que XNPV sea equivalente a una operación Sum (los pagos no se modificarán antes de sumarlos). Por lo general, cuanto más se acerque a cero la tasa de descuento discount\_rate, más similar será el resultado de XNPV al de una agregación Sum.

Argumentos

| Argumento | Descripción |
| --- | --- |
| discount\_rate | discount\_rate es la tasa anual a la que se deben descontar los pagos.<br><br>Un valor de 0,1 indicaría una tasa de descuento del 10%. |
| pmt | Pagos. La expresión o campo que contiene los flujos de caja correspondientes a la programación de pagos proporcionada en date. Se da por sentado que los valores positivos son entradas de efectivo y los valores negativos son salidas de efectivo.<br><br>Nota informativaXNPV() no descuenta el flujo de caja inicial ya que siempre ocurrirá en la fecha de inicio. Los pagos posteriores se descuentan sobre una base anual de 365 días. Esto es diferente de NPV(), donde también se descuenta el primer pago. |
| date | La expresión o campo que contiene la planificación de fechas correspondientes a los pagos de efectivo proporcionados en pmt. El primer valor se utiliza como fecha de inicio para calcular las compensaciones de los flujos de caja futuros. |

Al trabajar con esta función, se aplican las siguientes limitaciones:

* Los valores de texto, valores NULL y los valores perdidos en cualquiera o ambas partes de un par de datos dan como resultado que el par de datos completo no se tenga en cuenta.

## Cuándo se utiliza

* `XNPV()` se utiliza en modelos financieros para calcular el valor actual neto (VAN o NPV en inglés) de una oportunidad de inversión.

* Debido a su mayor precisión, se prefiere XNPV sobre NPV para todo tipo de modelos financieros.

## Configuraciones regionales

A menos que se especifique algo distinto, los ejemplos de este tema utilizan el siguiente formato de fecha: MM/DD/YYYY. El formato de fecha se especifica en la sentencia `SET DateFormat` de su script de carga de datos. El formato de fecha predeterminado puede ser diferente en su sistema, debido a su configuración regional y otros factores. Puede cambiar el formato en los ejemplos a continuación para ajustarlo a sus necesidades. O puede cambiar los formatos en su script de carga para que coincidan con estos ejemplos.

La configuración regional predeterminada en las aps se basa en la configuración del sistema regional de la computadora o servidor donde esté instalado Qlik Sense. Si el servidor de Qlik Sense al que está accediendo está configurado en Suecia, el editor de carga de datos utilizará la configuración regional sueca para las fechas, la hora y la moneda. Estos ajustes de formato regional no están relacionados con el idioma mostrado en la interfaz de usuario de Qlik Sense. Qlik Sense se mostrará en el mismo idioma que esté utilizando en su navegador.

## Ejemplo 1: pago único (script)

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

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos de un proyecto y su flujo de caja durante un año, cargado en una tabla denominada `CashFlow`. La fecha inicial para el cálculo se establece en el 1 de julio de 2022, con un flujo de caja neto de 0. Después de un año, se produce un flujo de caja de $1000.

* Una carga residente de la tabla `CashFlow`, que se utiliza para calcular el campo `XNPV` del proyecto en una tabla denominada `XNPV`.

* Se utiliza una tasa de descuento codificada del 10% (0,1) en el cálculo del XNPV.

* Se utiliza una sentencia `Group By` para agrupar todos los pagos del proyecto.

Script de carga

```
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;
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `PrjId`

* `XNPV`

Tabla de resultados

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

Según la fórmula, el valor XNPV para el primer registro es 0 y para el segundo registro, el valor XNPV es $909,09 . Por lo tanto, el XNPV total es de $909,09 .

## Ejemplo 2: múltiples pagos (script)

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

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos de un proyecto y su flujo de caja durante un año, cargado en una tabla denominada `CashFlow`.

* Una carga residente de la tabla `CashFlow`, que se utiliza para calcular el campo `XNPV` del proyecto en una tabla denominada `XNPV`.

* Se utiliza una tasa de descuento codificada del 10% (0,1) en el cálculo del XNPV.

* Se utiliza una sentencia `Group By` para agrupar todos los pagos del proyecto.

Script de carga

```
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;
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `PrjId`

* `XNPV`

Tabla de resultados

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

En este ejemplo, se recibe un pago de $1000 al final del primer año y un pago de $500 al final del segundo año. Con una tasa de descuento del 10% por período, el XNPV efectivo es igual a $1322,21.

Tenga en cuenta que solo la primera fila de datos debe hacer referencia a la fecha base para los cálculos. Para el resto de las filas, el orden no es importante, ya que el parámetro de fecha se usa para calcular el período transcurrido.

## Ejemplo 3 – Múltiples pagos y flujos de caja irregulares (script)

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

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Tasas de descuento para dos proyectos en una tabla llamada `Project`.

* Flujos de caja de múltiples períodos para cada proyecto por ID de proyecto y fechas. Se utiliza el campo `Dates` para calcular la duración durante la cual se aplica la tasa de descuento al flujo de caja. Aparte del primer registro (flujo de caja inicial y fecha), el orden de los registros no es importante y cambiarlo no debería afectar los cálculos.

* Mediante una combinación de `NoConcatenate`, cargas residentes y la función `Left Join`, se crea una tabla temporal, `tmpNPV`que combina los registros de las tablas `Project` y `CashFlow` en una tabla plana. Esta tabla tendrá tasas de descuento repetidas para cada flujo de caja.

* Una carga residente de la tabla `tmpNPV`, que se utiliza para calcular el campo `XNPV` para cada proyecto en una tabla denominada ` XNPV  `.

* La tasa de descuento de valor único asociada a cada proyecto, que se recupera mediante la función `only()` y se utiliza en el cálculo del `XNPV` para cada proyecto.

* Se utiliza una sentencia `Group By`, que agrupa por ID de proyecto, para agrupar todos los pagos y fechas correspondientes para cada proyecto.

* Para evitar que se carguen datos sintéticos o redundantes en el modelo de datos, la tabla `tmpXNPV` se elimina al final del script.

Script de carga

```
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;
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `PrjId`

* `XNPV`

Tabla de resultados

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

El proyecto ID 1 tiene un flujo de caja inicial de $0 el 1 de julio de 2021. Hay dos pagos de $1000 que se han de recibir al final de dos años subsiguientes, a una tasa de descuento del 10% por período. Por lo tanto, el NPV efectivo es igual a $1735,54.

El proyecto ID 2 tiene una salida inicial de $1000 (por lo tanto, el signo negativo) el 1 de julio de 2020. Después de dos años, se espera un pago de $500. Después de tres años, se espera un pago de $500. Finalmente, el 1 de julio de 2024 se espera un pago de $1000. Con la tasa de descuento del 15%, el XNPV efectivo es igual a $278,36.

## Más información

* [Drop table](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/drop-table.htm)
* [group by](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm#group_by)
* [Join](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)
* [Max - función de script](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/max.htm)
* [NoConcatenate](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/NoConcatenate.htm)
* [NPV - función de gráfico](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/npv.htm)
* [Only - función de script](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/only.htm)
* [Resident LOAD](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm#Resident)