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. Para obter mais informações, consulte Modificando configurações regionais para aplicativos e scripts.
As configurações regionais padrão nos aplicativos são baseadas no perfil do usuário. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Cloud. O Qlik Cloud será exibido no mesmo idioma do navegador que você está usando.
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
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 guia.
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 guia.
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 guia.
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.
Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!