{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Net Present Value (NPV) - Examples" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PV Example" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "lifetime = 20 #years\n", "discount_rate = 0.04 #0.0775 #per unit\n", "size = 100 #kW\n", "specific_cost = 800 #EUR/kW\n", "fom = 20 #EUR/kW/a\n", "fit = 0.1 #EUR/kWh\n", "flh = 1000 #h/a\n", "flows = pd.DataFrame(index=range(lifetime+1))\n", "flows[\"investment\"] = [-size*specific_cost] + [0]*lifetime\n", "flows[\"FOM\"] = [0] + [-size*fom]*lifetime\n", "flows[\"income\"] = [0] + [size*flh*fit]*lifetime\n", "flows[\"total_flow\"] = flows.sum(axis=1)\n", "flows[\"discount_factor\"] = [(1+discount_rate)**(-t) for t in range(lifetime+1)]\n", "flows[\"discounted_total_flow\"] = flows[\"total_flow\"]*flows[\"discount_factor\"]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
investmentFOMincometotal_flowdiscount_factordiscounted_total_flow
0-8000000.0-80000.01.000000-80000.000000
10-200010000.08000.00.9615387692.307692
20-200010000.08000.00.9245567396.449704
30-200010000.08000.00.8889967111.970869
40-200010000.08000.00.8548046838.433528
\n", "
" ], "text/plain": [ " investment FOM income total_flow discount_factor \\\n", "0 -80000 0 0.0 -80000.0 1.000000 \n", "1 0 -2000 10000.0 8000.0 0.961538 \n", "2 0 -2000 10000.0 8000.0 0.924556 \n", "3 0 -2000 10000.0 8000.0 0.888996 \n", "4 0 -2000 10000.0 8000.0 0.854804 \n", "\n", " discounted_total_flow \n", "0 -80000.000000 \n", "1 7692.307692 \n", "2 7396.449704 \n", "3 7111.970869 \n", "4 6838.433528 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "flows.head()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "investment -80000.000000\n", "FOM -40000.000000\n", "income 200000.000000\n", "total_flow 80000.000000\n", "discount_factor 14.590326\n", "discounted_total_flow 28722.610760\n", "dtype: float64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "flows.sum()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6650050203417118" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(size*specific_cost/(sum(flows[\"discount_factor\"])-1)+2500)/1e5" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "flows[\"discount_factor\"].plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Nuclear Example" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "lifetime = 40 #years\n", "discount_rate = 0.10 #per unit\n", "size = 3e6 #kW\n", "specific_cost = 5000 #EUR/kW\n", "decommissioning_cost = 0 #EUR/kW\n", "fom = 20 #EUR/kW/a\n", "fuel = 10 #EUR/MWh\n", "market_value = 50 #EUR/MWh\n", "flh = 8000 #h/a\n", "flows = pd.DataFrame(index=range(lifetime+1))\n", "flows[\"investment\"] = [-size*specific_cost] + [0]*(lifetime-1) + [-size*decommissioning_cost]\n", "flows[\"FOM\"] = [0] + [-size*fom]*lifetime\n", "flows[\"income\"] = [0] + [size*flh*market_value/1000]*lifetime\n", "flows[\"total_flow\"] = flows.sum(axis=1)\n", "flows[\"discount_factor\"] = [(1+discount_rate)**(-t) for t in range(lifetime+1)]\n", "flows[\"discounted_total_flow\"] = flows[\"total_flow\"]*flows[\"discount_factor\"]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
investmentFOMincometotal_flowdiscount_factordiscounted_total_flow
0-1.500000e+100.00.000000e+00-1.500000e+101.000000-1.500000e+10
10.000000e+00-60000000.01.200000e+091.140000e+090.9090911.036364e+09
20.000000e+00-60000000.01.200000e+091.140000e+090.8264469.421488e+08
30.000000e+00-60000000.01.200000e+091.140000e+090.7513158.564989e+08
40.000000e+00-60000000.01.200000e+091.140000e+090.6830137.786353e+08
\n", "
" ], "text/plain": [ " investment FOM income total_flow discount_factor \\\n", "0 -1.500000e+10 0.0 0.000000e+00 -1.500000e+10 1.000000 \n", "1 0.000000e+00 -60000000.0 1.200000e+09 1.140000e+09 0.909091 \n", "2 0.000000e+00 -60000000.0 1.200000e+09 1.140000e+09 0.826446 \n", "3 0.000000e+00 -60000000.0 1.200000e+09 1.140000e+09 0.751315 \n", "4 0.000000e+00 -60000000.0 1.200000e+09 1.140000e+09 0.683013 \n", "\n", " discounted_total_flow \n", "0 -1.500000e+10 \n", "1 1.036364e+09 \n", "2 9.421488e+08 \n", "3 8.564989e+08 \n", "4 7.786353e+08 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "flows.head()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "investment -1.500000e+10\n", "FOM -2.400000e+09\n", "income 4.800000e+10\n", "total_flow 3.060000e+10\n", "discount_factor 1.077905e+01\n", "discounted_total_flow -3.851882e+09\n", "dtype: float64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "flows.sum()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }