End vs. Mid-Year diskontiranje

O razlikama između end i mid-year konvencije.
valuation
lang-cro
python
Author

Josip Kovač

Published

March 14, 2022

Osnovni DCF model (kako je prezentiran u teoriji) zahtijeva izračun sadašnje vrijednosti očekivanih novčanih tijekova, kroz sljedeću jednadžbu:

\[ PV = \sum_{i=1}^{n} \frac{CF_{i}}{(1 + r)^{i}} \]

To jest (pustimo na stranu Gordonov model, for now):

\[ PV = \frac{CF_{1}}{(1 + r)^{1}} + \frac{CF_{2}}{(1 + r)^{2}} + \ldots{} + \frac{CF_{n}}{(1 + r)^{n}} \]

Gdje je: * \(PV\) = sadašnja vrijednost. * \(CF\) = novčani tijek (FCFF ili FCFE). * \(n\) = zadnje razdoblje za koje se očekuje slobodan novčani tijek. * \(r\) = zahtijevani povrat. * \(i\) = razdoblje, gdje u proširenoj jednadžbi poprima vrijednosti 1, 2, …, n.

Predmetna formula je valjana, pod pretpostavkom da se očekuju novčani tijekovi striktno krajem svake godine.

No, za društva s ograničenom odgovornošću (sve poznato u praksi pod terminom closely held company), takva pretpostavka nije realna. Korištenjem end-year konvencije diskontiranja, kako je prikazano gore, u biti podcjenjuje vrijednost samog društva.

U stvarnosti, novčani tijekovi dostupni su vlasnicima za isplatu kroz godinu (stoga je i moguća isplata prije kraja godine). Kako bi to odrazili, koristimo mid-year konveciju diskontiranja, gdje svaki eskponent u nazivniku proširene jednaždbe umanjujemo za 0.5.

\[ PV = \frac{CF_{1}}{(1 + r)^{1 - 0.5}} + \frac{CF_{2}}{(1 + r)^{2 - 0.5}} + \ldots{} + \frac{CF_{n}}{(1 + r)^{n - 0.5}} \]

U nastavku je i Python primjer koji pokazuje razliku između end-year i mid-year diskontiranja:

  1. Prvo, definirajmo rizik i novčane tijekove:
import numpy as np
import pyval.procjena as procjena # private package
discount_rate = 0.3
cf = np.arange(100, 1000, 100)

cf
array([100, 200, 300, 400, 500, 600, 700, 800, 900])
  1. Definirajmo vrijeme i faktore sadašnje vrijednosti pod end i mid-year konvencijom:
time_index = np.arange(len(cf)) + 1
discount_end = procjena.pvf(r=discount_rate, n=time_index, mid=False)
discount_mid = procjena.pvf(r=discount_rate, n=time_index, mid=True)

Relativna razlika sadašnjih vrijednosti trebala bi biti \(\sqrt{1 + r}\). Idemo provjeriti:

for end, mid, time in zip(discount_end, discount_mid, time_index):
    message = f"Godina {time}: END = {end:.2f}, MID = {mid:.2f}, MID / END = {mid/end:.5f}"
    print(message)
Godina 1: END = 0.77, MID = 0.88, MID / END = 1.14018
Godina 2: END = 0.59, MID = 0.67, MID / END = 1.14018
Godina 3: END = 0.46, MID = 0.52, MID / END = 1.14018
Godina 4: END = 0.35, MID = 0.40, MID / END = 1.14018
Godina 5: END = 0.27, MID = 0.31, MID / END = 1.14018
Godina 6: END = 0.21, MID = 0.24, MID / END = 1.14018
Godina 7: END = 0.16, MID = 0.18, MID / END = 1.14018
Godina 8: END = 0.12, MID = 0.14, MID / END = 1.14018
Godina 9: END = 0.09, MID = 0.11, MID / END = 1.14018

Dakle, relativna razlika je konstantna. Drugim riječima, pod pretpostavkom da smo ispravno procijenili rizičnost društva (\(r = 30\\%\)), korištenjem end-year konvencije umjesto mid-year konvencije podcijenili bi društvo za 12.30%1 u odnosu na mid-year vrijednost.

Idemo provjeriti osnovanost naših zaključaka kroz izračun sadašnje vrijednosti ovog društva:

pv_end = np.sum(cf * discount_end)
pv_mid = np.sum(cf * discount_mid)

def print_res(convention: str, pv_vector: np.array) -> None:
    total = np.sum(pv_vector)
    message = f"PV with {convention}-year convention: {total:,.2f}"
    print(message)

_data = {"end": pv_end, "mid": pv_mid}

for key, value in _data.items():
    print_res(key, value)
PV with end-year convention: 1,025.34
PV with mid-year convention: 1,169.06

Dakle, i ovaj izračun pokazuje da bi podcijenili društvo za 12.30% kada bi koristili end-year umjesto mid-year konvenciju.

Procjena vrijednosti društva zahtijeva poznavanje ne samo gore prezentirane matematike, već i razloge zbog čega su formule sastavljene na način kako je prikazano. Koliko god je sam postupak procjene diskontiranja u samoj svojoj biti jednostavan, za sobom povlači određeni set pretpostavki koji možda u pojedinim slučajevima nisu primjenjivi.

Footnotes

  1. \(1 - (\frac{1}{1.140175}).\)↩︎