A função de script NPV() tem uma taxa de desconto e vários valores ordenados por período. As entradas (receitas) são positivas e as saídas (pagamentos futuros) são consideradas valores negativos para esses cálculos. Elas ocorrem no final de cada período.
O Valor presente líquido, ou NPV, é usado para calcular o valor total atual de um fluxo futuro de fluxos de caixa. Para calcular o NPV, precisamos estimar os fluxos de caixa futuros para cada período e determinar a taxa de desconto correta. A função de script NPV() tem uma taxa de desconto e vários valores ordenados por período. As entradas (receitas) são positivas e as saídas (pagamentos futuros) são consideradas valores negativos para esses cálculos. Elas ocorrem no final de cada período.
Sintaxe:
NPV(discount_rate, value)
Tipo de dados de retorno: numérico. Por padrão, o resultado será formatado como moeda.
A fórmula para calcular o valor atual líquido é:
na qual:
Rt= Entradas e saídas líquidas de caixa durante um único período t
i = Taxa de desconto ou retorno que poderia ser obtida em investimentos alternativos
t = Número de períodos do cronômetro
Argumentos
Argumento
Descrição
discount_rate
discount_rate é a taxa percentual de desconto aplicado.
Um valor de 0,1 indicaria uma taxa de desconto de 10%.
value
Esse campo contém valores para vários períodos ordenados por período. Supõe-se que o primeiro valor seja o fluxo de caixa no final do período 1, e assim por diante.
Limitações:
A função NPV() tem as seguintes limitações:
Os valores de texto, os valores NULL e os valores ausentes são ignorados.
Os valores do fluxo de caixa devem estar em ordem crescente de período.
Quando usar
NPV() é uma função financeira usada para verificar a rentabilidade do projeto e derivar outras medidas. Essa função é útil quando fluxos de caixa estão disponíveis como dados brutos.
Configurações regionais
A menos que especificado de outra forma, os exemplos neste tópico usam o seguinte formato de data: MM/DD/AAAA. O formato de data é especificado na instrução SET DateFormat no seu script de carregamento de dados. A formatação de data padrão pode ser diferente no seu sistema devido às suas configurações regionais e outros fatores. Você pode alterar os formatos nos exemplos abaixo para atender às suas necessidades. Ou pode alterar os formatos no seu script de carregamento para corresponder a esses exemplos.
As configurações regionais padrão nos aplicativos são baseadas nas configurações regionais do sistema do computador ou servidor onde o Qlik Sense está instalado. Se o servidor Qlik Sense que você está acessando estiver definido como Suécia, o Editor de carregamento de dados usará as configurações regionais suecas para datas, horas e moedas. Essas configurações de formato regional não estão relacionadas ao idioma exibido na Qlik Sense interface do usuário. Qlik Sense será exibido no mesmo idioma do navegador que você está usando.
Exemplo 1: Pagamento único (script)
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.
O script de carregamento contém:
Um conjunto de dados de um projeto e seu fluxo de caixa referentes a um período, que é carregado em uma tabela denominada CashFlow.
Um carregamento residente da tabela CashFlow, que é usado para calcular o campo NPV do projeto em uma tabela denominada NPV.
Uma taxa de desconto codificada de 10%, usada no cálculo de NPV.
Uma instrução Group By, que é usada para agrupar todos os pagamentos do projeto.
Script de carregamento
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
];
NPV:
Load
PrjId,
NPV(0.1,Values) as NPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
PrjId
NPV
Tabela de resultados
PrjId
NPV
1
$909.09
Para que um único pagamento de $ 1.000 seja recebido no final de um período, com uma taxa de desconto de 10% por período, o NPV é igual a $ 1.000 dividido por (1 + taxa de desconto). O NPV efetivo é igual a $ 909,09
Exemplo 2: Vários pagamentos (script)
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.
O script de carregamento contém:
Um conjunto de dados de um projeto e seu fluxo de caixa referentes a vários períodos, que é carregado em uma tabela denominada CashFlow.
Um carregamento residente da tabela CashFlow, que é usado para calcular o campo NPV do projeto em uma tabela denominada NPV.
Uma taxa de desconto codificada de 10% (0,1) é usada no cálculo de NPV.
Uma instrução Group By, que é usada para agrupar todos os pagamentos do projeto.
Script de carregamento
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
1,2,1000
];
NPV:
Load
PrjId,
NPV(0.1,Values) as NPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
PrjId
NPV
Tabela de resultados
PrjId
NPV
1
$1735.54
Para pagamentos de $ 1.000 a serem recebidos no final de dois períodos, com uma taxa de desconto de 10% por período, o NPV efetivo é igual a $ 1.735,54.
Exemplo 3: Vários pagamentos (script)
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.
O script de carregamento contém:
Taxas de desconto para dois projetos, que são carregadas em uma tabela denominada Project.
Fluxos de caixa para vários períodos para cada projeto por ID de projeto e ID de período. Esse ID de período pode ser usado para ordenar os registros, caso os dados não estejam ordenados.
A combinação de NoConcatenate, carregamentos residentes e a função Left Join para criar uma tabela temporária, tmpNPV. A tabela combina os registros das tabelas Project e CashFlow em uma tabela simples. Essa tabela terá taxas de desconto repetidas para cada período.
Um carregamento residente da tabela tmpNPV, que é usado para calcular o campo NPV de cada projeto em uma tabela denominada NPV.
A taxa de desconto de valor único associada a cada projeto. Isso é recuperado usando a função only() e é usado no cálculo de NPV para cada projeto.
Uma instrução Group By, que é usada para agrupar todos os pagamentos de cada projeto por ID de projeto.
Para evitar que dados sintéticos ou redundantes sejam carregados no modelo de dados, a tabela tmpNPV é descartada no final do script.
Script de carregamento
Project:
Load * inline [
PrjId,Discount_Rate
1,0.1
2,0.15
];
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
1,2,1000
1,3,1000
2,1,500
2,2,500
2,3,1000
2,4,1000
];
tmpNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load *
Resident CashFlow;
NPV:
Load
PrjId,
NPV(Only(Discount_Rate),Values) as NPV //Discount Rate will be 10% for Project 1 and 15% for Project 2
Resident tmpNPV
Group By PrjId;
Drop table tmpNPV;
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
PrjId
NPV
Tabela de resultados
PrjId
NPV
1
$2486.85
2
$2042.12
O ID de projeto 1 espera que pagamentos de $ 1.000 sejam recebidos ao final de três períodos, com uma taxa de desconto de 10% por período. Portanto, o NPV efetivo é igual a $ 2.486,85.
O ID de projeto 2 espera dois pagamentos de $ 500 e dois pagamentos adicionais de $ 1.000 em quatro períodos com uma taxa de desconto de 15%. Portanto, o NPV efetivo é igual a $ 2.042,12.
Exemplo 4: Exemplo de lucratividade do projeto (script)
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.
O script de carregamento contém:
Taxas de desconto e investimentos iniciais (período 0) para dois projetos, carregados em uma tabela denominada Project.
Fluxos de caixa para vários períodos para cada projeto por ID de projeto e ID de período. Esse ID de período pode ser usado para ordenar os registros, caso os dados não estejam ordenados.
A combinação de NoConcatenate, carregamentos residentes e a função Left Join para criar uma tabela temporária, tmpNPV. A tabela combina os registros das tabelas Project e CashFlow em uma tabela simples. Essa tabela terá taxas de desconto repetidas para cada período.
A taxa de desconto de valor único associada a cada projeto, que é recuperada usando a função only() e usada no cálculo do NPV para cada projeto.
Um carregamento residente da tabela tmpNPV é usado para calcular o campo NPV de cada projeto em uma tabela denominada NPV.
É criado um campo adicional que divide o NPV pelo investimento inicial de cada projeto para calcular o índice de lucratividade do projeto.
Um agrupamento por extrato, agrupado por ID de projeto, é usado para agrupar todos os pagamentos de cada projeto.
Para evitar que dados sintéticos ou redundantes sejam carregados no modelo de dados, a tabela tmpNPV é descartada no final do script.
Script de carregamento
Project:
Load * inline [
PrjId,Discount_Rate, Initial_Investment
1,0.1,100000
2,0.15,100000
];
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values,
1,1,35000
1,2,35000
1,3,35000
2,1,30000
2,2,40000
2,3,50000
2,4,60000
];
tmpNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load *
Resident CashFlow;
NPV:
Load
PrjId,
NPV(Only(Discount_Rate),Values) as NPV, //Discount Rate will be 10% for Project 1 and 15% for Project 2
NPV(Only(Discount_Rate),Values)/ Only(Initial_Investment) as Profitability_Index
Resident tmpNPV
Group By PrjId;
Drop table tmpNPV;
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
PrjId
NPV
Crie a seguinte medida:
=only(Profitability_Index)
Tabela de resultados
PrjId
NPV
=only(Profitability_Index)
1
$87039.82
0.87
2
$123513.71
1.24
O ID de projeto 1 tem um NPV efetivo de $ 87.039,82 e um investimento inicial de $ 100.000. Portanto, o índice de rentabilidade é igual a 0,87. Por ser menor que 1, o projeto não é lucrativo.
O ID de projeto 2 tem um NPV efetivo de $ 123.513,71 e um investimento inicial de $ 100.000. Portanto, o índice de rentabilidade é igual a 1,24. Por ser maior que 1, o projeto é lucrativo.