Pokazatelji isplativosti ulaganja

In [1]:
import platform
In [2]:
platform.platform()
Out[2]:
'Linux-4.19.2-1-MANJARO-x86_64-with-arch-Manjaro-Linux'
In [3]:
platform.python_version()
Out[3]:
'3.7.1'
In [4]:
import matplotlib
In [5]:
matplotlib.__version__
Out[5]:
'3.0.2'
In [6]:
%pylab inline
Populating the interactive namespace from numpy and matplotlib
In [7]:
from scipy.optimize import newton
In [8]:
from mpl_toolkits.mplot3d import Axes3D

1. zadatak

Investitoru su prezentirana dva projekta A i B s dobicima krajem godina danima u tablici. Pomoću NPV metode odaberite isplativiji projekt ako znamo da je cijena kapitala 8%.

projekt 0 1 2 3 4
A -600 000 180 000 160 000 170 000 210 000
B -600 000 100 000 140 000 215 000 300 000

Rješenje

In [9]:
projektA=[-600000,180000,160000,170000,210000]
projektB=[-600000,100000,140000,215000,300000]
NPV projekta A
In [10]:
npv(0.08,projektA)
Out[10]:
-6851.372024364042
NPV projekta B
In [11]:
npv(0.08,projektB)
Out[11]:
3802.9150931146287
NPV projekata A i B kao funkcija cijene kapitala
In [12]:
figure(figsize=(10,8))
p=arange(0,17,0.01)
fpA=list(map(lambda x: npv(x/100.0,projektA), p))
fpB=list(map(lambda x: npv(x/100.0,projektB), p))
plot(p,fpA,c='r',lw=3,label='projekt A')
plot(p,fpB,lw=3,label='projekt B')
xlabel('p',fontsize=16)
ylabel('NPV',fontsize=16)
legend()
xlim(0,18)
grid(True)

2. zadatak

Investitoru je ponuđen projekt u koji bi trebao uložiti 1800 kn odmah i 10 500 kn za dvije godine. Očekivani dobici na kraju prve tri godine dani su u tablici.

godina 1 2 3
očekivani dobici 6050 kn 3750 kn 2500 kn

  1. Radi li se o isplativom projektu ako je cijena kapitala 8%?
  2. Radi li se o isplativom projektu ako je cijena kapitala 12%?

Rješenje

In [13]:
projekt=[-1800,6050,3750-10500,2500]
Uz cijenu kapitala 8% projekt nije isplativ.
In [14]:
npv(0.08,projekt)
Out[14]:
-0.6045826347613001
Uz cijenu kapitala 12% projekt je isplativ.
In [15]:
npv(0.12,projekt)
Out[15]:
0.17766034985402257
NPV projekta kao funkcija cijene kapitala
In [16]:
figure(figsize(10,6))
p=arange(0,27.5,0.01)
fp=list(map(lambda x: npv(x/100.0,projekt), p))
plot(p,fp,lw=3)
xlabel('p',fontsize=16)
ylabel('NPV',fontsize=16)
xticks(arange(0,30,2))
yticks(arange(-1,1,0.25))
xlim(0,30)
grid(True)

3. zadatak

U projekt treba uložiti 9000 €. Očekivani dobici na kraju prve tri godine su dani u tablici.

godina 1 2 3
očekivani dobici 3000 € 3500 € 4000 €

  1. Ispitajte koja je od ponuđenih kamatnih stopa 4.5445% i 7.7285% bolja aproksimacija za IRR zadanog projekta.
  2. Uz koju cijenu kapitala je promatrani projekt isplativ?
  3. Ako je cijena kapitala 5%, do kojeg uloženog iznosa je investitoru projekt isplativ?

Rješenje

In [17]:
projekt=[-9000,3000,3500,4000]
p1=4.5445/100
p2=7.7285/100
Kako je za cijenu kapitala 7.7285% NPV projekta bliže nuli, zaključujemo da je kamatna stopa 7.7285% bolja aproksimacija za IRR danog projekta. Kako je ta aproksimacija jako dobra, možemo reći da je projekt isplativ ako je cijena kapitala manja od 7.7285%.
In [18]:
npv(p1,projekt)
Out[18]:
572.6306356862078
In [19]:
npv(p2,projekt)
Out[19]:
0.00527970106304565
Ako je cijena kapitala 5%, investitoru je isplativo uložiti u projekt maksimalno 9487.10 €.
In [20]:
f=lambda x: -x+3000.0/1.05+3500.0/1.05**2+4000.0/1.05**3
newton(f,5000)
Out[20]:
9487.096425871936
NPV projekta kao funkcija cijene kapitala
In [21]:
figure(figsize=(10,8))
p=arange(0,30,0.01)
fp=list(map(lambda x: npv(x/100.0,projekt), p))
plot(p,fp,lw=3)
xlabel('p',fontsize=16)
ylabel('NPV',fontsize=16)
xticks(arange(0,33,2))
yticks(arange(-3000,1510,500))
xlim(0,32)
grid(True)
NPV projekta kao funkcija ulaganja uz p=5%
In [22]:
figure(figsize=(10,8))
F0=arange(0,15000,1)
fp=list(map(lambda x: npv(0.05,[-x,3000,3500,4000]), F0))
plot(F0,fp,lw=3,c='red')
xlabel('F0',fontsize=16)
ylabel('NPV',fontsize=16)
xlim(0,16000)
grid(True)
NPV kao funkcija ulaganja i cijene kapitala
In [23]:
#ploha
y = arange(0, 30, 1)              
x = arange(0, 15500, 400)              
X, Y = meshgrid(x,y)           
Z = -X+3000/(1+Y/100)+3500/(1+Y/100)**2+4000/(1+Y/100)**3 
#plava krivulja
y1 = linspace(0, 29, 60)
x1 = 0*y1 + 9000
z1 = -9000 + 3000/(1+y1/100)+3500/(1+y1/100)**2+4000/(1+y1/100)**3
#krivulja NPV=0
z2 = 0*y1
x2 = z1 + 9000
#slika
figsize(13,10)
ax = axes(projection='3d')
ax.plot_surface(X, Y, Z, cmap=cm.Spectral,rstride=2,cstride=2, linewidth=0.6,alpha=0.4,edgecolors='k')
ax.plot(x1, y1, z1, c='b',lw=4,alpha=0.5,zorder=10)
ax.plot(x2, y1, z2, c='k',lw=4,alpha=0.5,zorder=10)
ax.plot([0,15000],[5,5],[9487.1,-5512.9],c='r',lw=4,alpha=0.5,zorder=10)
ax.plot([9487.1], [5], [0], markerfacecolor='w', markeredgecolor='r', 
        marker='o', markersize=7, alpha=0.9,zorder=10)
ax.plot([9000], [7.7285], [0], markerfacecolor='w', markeredgecolor='b', 
        marker='o', markersize=7, alpha=0.9,zorder=10)
ax.text(4500,1.5,-3000, "F0=9000", color='blue',
        bbox=dict(facecolor='#FCF3CF', edgecolor='blue', boxstyle='round,pad=0.6'))
ax.text(15000,5,-8000, "p=5", color='red',
        bbox=dict(facecolor='#FCF3CF', edgecolor='red', boxstyle='round,pad=0.6'))
ax.text(8000,0,-3500, "NPV=0", color='black',
        bbox=dict(facecolor='#FCF3CF', edgecolor='black', boxstyle='round,pad=0.6'))
ax.set_xlabel('\nF0', linespacing=3.2,fontsize=16)
ax.set_ylabel('\np', linespacing=3.2,fontsize=16)
ax.set_zlabel('\nNPV', linespacing=3.2,fontsize=16)
ax.view_init(elev=30,azim=-45)
ax.dist = 10

4. zadatak

Koliki prihod je na kraju druge godine ostvarila investicija visine 200 000 kn uz cijenu kapitala 7% ako je NPV jednak 14 559.82 kn, a prihodi na kraju prve i treće godine su redom 50 000 kn i 120 000 kn?

Rješenje

Na kraju druge godine ostvaren je prihod od 80 000.01 kn.

In [24]:
f=lambda x: 14559.82 + 200000 - 50000.0/1.07 - x/1.07**2 - 120000.0/1.07**3
newton(f,5000)
Out[24]:
80000.00520771963

5. zadatak

NPV i IRR metodom ocijenite je li isplativ projekt u koji treba uložiti 200 000 kn, a koji na kraju prve godine donosi 50 000 kn, a na kraju druge godine 180 000 kn dobiti. Investitor sredstva za ulaganje u projekt posuđuje po godišnjoj kamatnoj stopi od 7%.

Rješenje

In [25]:
projekt=[-200000,50000,180000]
Projekt je isplativ jer je NPV veći od nule.
In [26]:
npv(0.07,projekt)
Out[26]:
3947.943051794922
Kako je IRR=8.188% i cijena kapitala je manja od IRR-a, zaključujemo da je projekt isplativ.
In [27]:
irr(projekt)
Out[27]:
0.0818829604502318

Možemo unaprijed zaokružiti vrijednosti na željeni broj decimala.

In [28]:
round(irr(projekt),5)
Out[28]:
0.08188
In [29]:
round(npv(0.07,projekt),2)
Out[29]:
3947.94
Slika
In [30]:
figure(figsize=(10,8))
p=arange(0,20,0.01)
fp=list(map(lambda x: npv(x/100.0,projekt), p))
plot(p,fp,lw=3)
plot([8.188], [0], markerfacecolor='w', markeredgecolor='b', 
        marker='o', ms=8, mew=1.5)
annotate('NPV=0', xy=(8,0), xycoords='data',
         xytext=(4,0), textcoords='data', size=15, ha="center", va="center",
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3"),
         bbox=dict(facecolor='#FCF3CF', edgecolor='black', boxstyle='sawtooth,pad=0.6')
        )
annotate('IRR', xy=(8.188, -40000), xycoords='data',
         xytext=(8.188, -33000), textcoords='data', size=15, ha="center",
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3"),
         bbox=dict(facecolor='#FCF3CF', edgecolor='black', boxstyle='sawtooth,pad=0.6')
        )
xlabel('p',fontsize=16)
ylabel('NPV',fontsize=16)
xlim(0,20)
ylim(-40000,30000)
xticks(arange(0,21,2))
grid(True)

6. zadatak

Banka mora odlučiti između dviju investicija u iznosu od 200 000 € čiji novčani tokovi su procijenjeni u sljedećoj tablici.

projekt 0 1 2 3 4 5
A -200 000 80 000 60 000 70 000 100 000 100 000
B -200 000 30 000 85 000 95 000 90 000 85 000

  1. Odredite NPV oba projekta uz cijenu kapitala 7%.
  2. Odredite IRR oba projekta.

Rješenje

In [31]:
projektA=[-200000,80000,60000,70000,100000,100000]
projektB=[-200000,30000,85000,95000,90000,85000]
NPV projekta A
In [32]:
npv(0.07,projektA)
Out[32]:
131901.6693720586
NPV projekta B
In [33]:
npv(0.07,projektB)
Out[33]:
109092.36772581308
IRR projekta A jednak je približno 27.72535%.
In [34]:
irr(projektA)
Out[34]:
0.27725347981585635
IRR projekta B jednak je približno 23.23503%.
In [35]:
irr(projektB)
Out[35]:
0.2323503285880535
NPV projekata A i B kao funkcija cijene kapitala
In [36]:
figure(figsize=(10,8))
p=arange(0,55,0.01)
fpA=list(map(lambda x: npv(x/100.0,projektA), p))
fpB=list(map(lambda x: npv(x/100.0,projektB), p))
plot(p,fpA,c='r',lw=3,label='projekt A')
plot(p,fpB,lw=3,label='projekt B')
plot([7,7],[-100000,250000],lw=1,ls='--',c='g')
plot([23.235,7], [0,109092.37], markerfacecolor='w', markeredgecolor='b', 
        marker='o', ms=8, mew=1.5,ls='')
plot([27.725,7], [0,131901.67], markerfacecolor='w', markeredgecolor='r', 
        marker='o', ms=8, mew=1.5,ls='')
annotate('IRR(A)', xy=(27.725, -100000), xycoords='data',
         xytext=(27.725, -65000), textcoords='data', size=15,
         arrowprops=dict(arrowstyle="->,head_length=0.3,head_width=0.35", 
                         connectionstyle="arc3,rad=0.3",relpos=(0.5,0)),
         bbox=dict(facecolor='#FCF3CF', edgecolor='red',boxstyle='roundtooth,pad=0.6')
        )
annotate('IRR(B)', xy=(23.235, -100000), xycoords='data',ha="right",
         xytext=(23.235, -65000), textcoords='data', size=15,
         arrowprops=dict(arrowstyle="->,head_length=0.3,head_width=0.35", 
                         connectionstyle="arc3,rad=-0.3",relpos=(0.5,0)),
         bbox=dict(facecolor='#FCF3CF', edgecolor='blue', boxstyle='roundtooth,pad=0.6')
         )
annotate('NPV(B)=0', xy=(23,0), xycoords='data',
         xytext=(10,-15000), textcoords='data', size=15, ha="center", va="center",
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=0.2",relpos=(1,0.5)),
         bbox=dict(facecolor='#FCF3CF', edgecolor='blue', boxstyle='roundtooth,pad=0.6')
        )
annotate('NPV(A)=0', xy=(28.2,0), xycoords='data',
         xytext=(35,30000), textcoords='data', size=15, ha="center", va="center",
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=-0.2",relpos=(0.5,0)),
         bbox=dict(facecolor='#FCF3CF', edgecolor='red', boxstyle='roundtooth,pad=0.6')
        )
annotate('p=7%', xy=(7.2,175000), xycoords='data',
         xytext=(12,175000), textcoords='data', size=15, ha="left", va="center",
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3",relpos=(0,0.5)),
         bbox=dict(facecolor='#FCF3CF', edgecolor='black', boxstyle='roundtooth,pad=0.6')
        )
xlabel('p',fontsize=16)
ylabel('NPV',fontsize=16)
xlim(0,57)
ylim(-100000,250000)
xticks(arange(0,56,5))
legend()
grid(True)
In [ ]: