VB.NET で NPV() 関数を使用して、一連のキャッシュ フローの NPV を取得しています。
ただし、NPV() の結果は、手動で計算を実行した結果と一致しません (手動の結果と一致する Investopedia NPV 計算も同様です)。
私の正しい手動の結果と NPV() の結果は 5% 以内で近いですが、同じではありません...
NPV 式を使用して手動で: NPV = C0 + C1/(1+r)^1 + C2/(1+r)^2 + C3/(1+r)^3 + .... + Cn/(1 +r)^n
手動結果は、レート r = 0.04 および期間 n = 10 で RunningTotal に格納されます。
これが私の関連コードです:
編集:どこかにOBOBがありますか?
YearCashOutFlow = CDbl(TxtAnnualCashOut.Text)
YearCashInFlow = CDbl(TxtTotalCostSave.Text)
YearCount = 1
PAmount = -1 * (CDbl(TxtPartsCost.Text) + CDbl(TxtInstallCost.Text))
RunningTotal = PAmount
YearNPValue = PAmount
AnnualRateIncrease = CDbl(TxtUtilRateInc.Text)
While AnnualRateIncrease > 1
AnnualRateIncrease = AnnualRateIncrease / 100
End While
AnnualRateIncrease = 1 + AnnualRateIncrease
' ZERO YEAR ENTRIES
ListBoxNPV.Items.Add(Format(PAmount, "currency"))
ListBoxCostSave.Items.Add("$0.00")
ListBoxIRR.Items.Add("-100")
ListBoxNPVCum.Items.Add(Format(PAmount, "currency"))
CashFlows(0) = PAmount
''''
Do While YearCount <= CInt(TxtLifeOfProject.Text)
ReDim Preserve CashFlows(YearCount)
CashFlows(YearCount) = Math.Round(YearCashInFlow - YearCashOutFlow, 2)
If CashFlows(YearCount) > 0 Then OnePos = True
YearNPValue = CashFlows(YearCount) / (1 + DiscountRate) ^ YearCount
RunningTotal = RunningTotal + YearNPValue
ListBoxNPVCum.Items.Add(Format(Math.Round(RunningTotal, 2), "currency"))
ListBoxCostSave.Items.Add(Format(YearCashInFlow, "currency"))
If OnePos Then
ListBoxIRR.Items.Add((IRR(CashFlows, 0.1)).ToString)
ListBoxNPV.Items.Add(Format(NPV(DiscountRate, CashFlows), "currency"))
Else
ListBoxIRR.Items.Add("-100")
ListBoxNPV.Items.Add(Format(RunningTotal, "currency"))
End If
YearCount = YearCount + 1
YearCashInFlow = AnnualRateIncrease * YearCashInFlow
Loop
編集: 次の値を使用: 割引率 = 4% プロジェクトの寿命 = 10 年 キャッシュ フロー 0 = -78110.00 キャッシュ フロー 1 = 28963.23 キャッシュ フロー 2 = 30701.06 キャッシュ フロー 3 = 32543.12 キャッシュ フロー 4 = 34495.71 キャッシュ フロー 5 = 36565.45 キャッシュフロー 6 = 38759.38 キャッシュ フロー 7 = 41084.94 キャッシュ フロー 8 = 43550.03 キャッシュ フロー 9 = 46163.04 キャッシュ フロー 10 = 48932.82
http://www.investopedia.com/calculator/NetPresentValue.aspxで計算機を使用し 、手動の「教科書」式に従って、同じ結果に到達します。
正味現在価値: $225,761.70
この結果を再現するために NPV() を取得できないようです... $217,078.59 を吐き出します
同じ値の例を使用して手動で反復します...したがって、彼らは私とは異なる関数を使用している必要があります...
MSDN ページの例では、初期費用をキャッシュ フロー リストに含める必要があることが明確に示されています。