How we estimate value
*Everything below describes what the system actually does; where something is only planned, it says so.*
What this is — and what it is not
Burzovni list is an analytics platform: for every covered Zagreb Stock Exchange stock we show public data, financials from official filings and our fair-value estimate together with an explanation of how it was produced. None of it is a recommendation to buy or sell, nor investment advice. We show the numbers, the methods and the assumptions — the conclusion is always the reader's.
Three approaches to value — and why every company has its own anchor
In practice, company value is measured in three ways:
- Income approach: what the company's future cash is worth (DCF), the dividends it pays (DDM), or the return earned on its own equity above the required return (justified P/B, residual income).
- Market approach: what the market pays for similar companies — a single "peer comparison" method that looks at the company through several lenses (P/E, EV/EBITDA, EV/EBIT, P/B) against comparables. The lenses are inputs to that method, not separate methods.
- Asset approach: the sum of the parts (SOTP) — for holdings and groups with separable businesses.
No single approach is universally best — which is why every type of company has its own anchor (primary method), while the others serve as cross-checks:
- Holding company (e.g. Adris, Končar): value consists of stakes in other companies → the anchor is the sum of the parts. Subsidiaries with their own reliable analysis enter at our estimate, the rest at market price — both figures are always shown.
- Bank / insurer: the business is earning a return on capital → the anchor is return on equity (justified P/B, residual income).
- Industrial with contracted business (backlog, guidance): the anchor is a DCF with growth derived from that signal.
- Industrial without a forward signal: the anchor is the **peer comparison**.
- Cyclical company (low return on capital, leverage): caution — guidance-based DCF when management publishes numbers, otherwise book equity; EV/EBITDA is avoided because it flatters leveraged companies with high depreciation.
- Tourism: the sector is compared on EV/EBITDA (with a note on leases).
The fair-value zone = anchor ± sensitivity to the key assumption (e.g. cost of equity ±1 percentage point) — not the range of all methods, because a single weak method would stretch the zone into uselessness.
How we choose parameters
- Cost of equity (r) — full breakdown (v3): r = rf + β × ERP + CRP (+ illiquidity premium). Components: rf is the euro risk-free yield (10-year German Bund) — deliberately NOT the Croatian curve, which already carries the Croatian spread; ERP is Damodaran's mature-market premium (without a country premium); CRP is a small, separate premium for Croatian risk appropriate to an investment-grade eurozone member ('A-'/A3), capped at ≤ 1.5 percentage points and added exactly once (it is not multiplied by beta). Country risk is thus charged in ONE place — it used to be inadvertently counted twice (in the risk-free rate and inside the market premium), which systematically depressed our estimates; see "Lessons learned" below. Each component carries its own source and entry date on the stock page. *Planned, not yet active: exporters earning most of their revenue in developed markets deserve a lower CRP — we will weight the premium by revenue geography.*
- Beta discipline (v2.2) — a regression beta from the exchange series (weekly returns vs CROBEX) is used only above a liquidity threshold (≥60% of days traded and ≥ €1,000 average daily turnover), because thin trading statistically depresses beta and artificially flatters the estimate (stale-price bias). Above the threshold the Blume adjustment applies (0.67·β + 0.33·1); below it, or without a series, a **sector beta** is used (Damodaran, Europe), relevered with the company's leverage where debt is known. The final beta is bounded to [0.7, 1.8]. The beta's origin (regression / sector / clamp) is visible next to every estimate.
- Illiquidity premium (v2.2) — stocks below the liquidity threshold get +1.0 to +2.0 percentage points added to the cost of equity (graded by liquidity): exiting a thinly traded position carries a real cost. It is shown as a separate component in the assumptions.
- Input freshness — TTM (v3): where a company publishes quarterly reports, earnings, revenue and ROE are computed over the **trailing 12 months** (last annual + this year's quarters − last year's quarters; quarterly reports are cumulative and unaudited). Strict gates: if the quarterly series is inconsistent with the audited annual report (deviation > 5%) or there is no prior-year comparison, TTM is NOT built — the annual figure is used with a visible `annual data` tag and a reason. Balance-sheet items (equity, debt) are taken as of the last published date.
- Growth phase (g1) — a composite of three signals (v3.1): g1 is the median of three signals, all derived exclusively from published numbers: (1) series — the three-year revenue CAGR (or earnings CAGR where no revenue series exists) from our database, computed only with at least three annual reports; (2) sustainable growth — ROE × the share of profit not paid out as dividends (payout after the regulatory cap; a company without dividends retains all profit); (3) the **terminal anchor (2.5% or 4%, by method type). The cap is applied after** the median: 10% when a series exists, 8% without one (tagged `short series`). **A single year-on-year comparison (TTM vs last year) is never a standalone source of a growth rate** — one year measures one-off effects and base effects, so it is shown only as context. g1 cannot be negative unless a ≥3-year series proves a multi-year contraction, and it is always at least 0.5 percentage points below the cost of equity r (valuation formulas break when growth approaches the discount rate). After g1 comes a linear fade to terminal g over 5 years, with no jumps. All three signals, which one decided, and any caps are spelled out in the Assumptions on each stock's page. Manual "forward estimates" (backlog, guidance, management expectations) are not used for the growth rate — numeric guidance may only serve as a substitute cash-flow input where the cash-flow statement has not been published, and is then clearly tagged.
- ROE for equity methods (v3): we use the **higher of (three-year median of annual ROE, TTM ROE × 0.9)** — the median stabilizes one atypical year (e.g. COVID or a one-off gain), while the 0.9 factor keeps caution toward a fresh, unaudited figure. Without quarterly data: annual ROE.
- Long-run growth (g) — tied to the economy, not to wishes: 4% nominal for the DCF terminal (real growth + inflation), a more conservative 2.5% for equity methods. No company can grow faster than its economy "forever".
- Fair-value zone = median of qualified methods (v3): the zone is no longer the range of one "primary" method. Every method with a positive value, sufficient input confidence and stable sensitivity qualifies; the zone midpoint is the median of their values, and the width comes from the sensitivity of the primary anchor (r ± 1 percentage point). If two methods agree with each other (±20%) while the incumbent anchor deviates materially (>30%), the anchor loses primacy — visibly recorded next to the estimate.
- Sustainable-dividend test → dividend floor (v3.1): for dividend payers the zone passes an internal check — the yield of the sustainable dividend at the zone's lower bound must not exceed r − g (the Gordon lower bound: if the dividend alone earns more at some price than an investor demands for the risk, that price is too low to be fair). The threshold uses the same growth rate the zone was computed with (2.5% for equity methods, 4% for DCF/DDM anchors) — a threshold with a different rate would falsely refute the zone merely through the difference in our own assumptions. When the zone fails the test, the test is no longer a veto but an input: the Gordon value of the sustainable dividend V_div = D_sust ÷ (r − g) joins the qualified methods (high confidence — the dividend is the hardest publicly available evidence), the zone is recomputed and its lower bound raised at least to V_div (the dividend floor), and the test is re-run on the new zone. The full walkthrough with that stock's numbers is on its page. The mirror test also exists (a too-high zone with payout ~100%) — then V_div enters the median and pulls the zone down. Zone suspension ("recalibrating") as an outcome does not exist: every stock with data has a published fair-value zone; where methods disagree strongly, the zone is wider and clearly tagged.
- Negligible free float (v3): when the top-10 shareholders hold >90% (e.g. INA), the price forms in negligible turnover under dominant owners — the gap between price and zone is then NOT informative, carries a prominent note and is excluded from the aggregate "market temperature".
- Parents with their own business — SOTP rules (v3): a parent's sum-of-the-parts has a documented rule for EVERY component. Listed subsidiaries enter at our fair estimate (or market capitalization where our estimate does not qualify); the **parent's own operating business (standalone) is valued exclusively from the parent's separate (unconsolidated) financial statements**, with dividend income from subsidiaries mandatorily excluded (otherwise a subsidiary would be counted twice) — until the separate statements are in our database the component carries an "in progress" status and stays out of the sum (it is not approximated from consolidated figures). **Unlisted stakes and joint ventures** are valued at the share of book value from the report's notes (equity method), and only absent that figure at a conservative multiple of published profit — always tagged as an assumption, with a source. Zone recomputation follows the dependency order (subsidiaries first, then parents), so a parent never inherits a subsidiary's stale zone; a cycle in the ownership graph is reported as an error. Coverage of a parent's announced dividend includes the expected dividend inflows from subsidiaries (factually from their last approved payouts × our stake).
- Share classes — one company value (v3): for companies with two classes (ordinary and preferred: ADRS/ADRS2, KODT/KODT2, CROS/CROS2, PLAG/PLAG2) the fair-value zone is computed for the COMPANY and then apportioned to the classes by the market-observed class price ratio — the median daily ratio over the last 5 years, using only days when both classes actually traded (at least 30 observations; otherwise the dividend-rights ratio, tagged `theoretical ratio`). The ordinary share's premium exists because it carries a vote and the preferred does not — how much that vote is worth we do not derive theoretically (it depends on takeover probability, ownership concentration and liquidity); we take what the market has HISTORICALLY paid for it. Both classes thus have zones derived from the same company value: one cannot be "in zone" while the other is deep above it, unless today's class ratio deviates from the historical median — and then exactly THAT difference is the fact we show.
- Dividends — payout classification and the sustainable dividend (v3): every historical payout carries a factual type tag — regular; extraordinary (amount above 150% of the median of that class's prior regular payouts); from retained earnings (the company's total payout above the net profit of the fiscal year it is paid from); the wording of the announcement itself (e.g. "extraordinary dividend") takes precedence over these rules. The payout percentage is computed strictly against the profit of the matching fiscal year — if that year is not in the database, the field stays empty (never the wrong year). **Expected sustainable dividend**: D_sust = sustainable payout × normalized profit (trailing 12 months) / share count; the sustainable payout is the company's published policy (where it exists and is covered by current profit), otherwise the median of historical payout ratios computed ONLY over regular payouts — one-offs never enter the base. For banks, payout above 80% carries a regulatory-approval note, and at most 70% is used for the sustainable base. Announcement coverage = normalized profit / announced payout; below 1.2 the payout is tagged "tightly covered", below 1.0 the announcement is not used in the estimate. The dividend discount model runs on D_sust — never on the raw last payout.
- Peers — the median of actual multiples of comparable ZSE companies in the same sector (auto parts are not compared with food); where no sector peers exist on the ZSE, the method carries low confidence and does NOT anchor the zone. *Planned: European sector medians with size and liquidity adjustments.*
- Discounts are measured, not assumed — the lesson of Berkshire (trades at no discount or a premium) and European holdings (20–40%): the discount depends on the company. For Adris we measured its own historical price-to-parts relationship — it shows a premium, so we apply no discount; an integrated parent like Končar (control + same business) gets 0–5%; the default 15–25% is used only where measurement is impossible, clearly tagged.
Growth: three signals from the numbers, never one year
The growth rate is the most sensitive input of any valuation, so the strictest rules apply to it. Explicit-phase growth (g1) is a **composite — the median of three signals**, each derived exclusively from published numbers: the multi-year series (three-year CAGR, only with ≥3 annual reports), sustainable growth from retained earnings (ROE × the share of profit not paid out) and the conservative terminal anchor. The median means no single signal can drag the estimate on its own — an extreme on either side drops out.
Why one year is not a growth rate: comparing the trailing 12 months with last year measures one-off effects (asset sales, state aid, one large contract) and the base effect (a bad prior year "inflates" the percentage). Such a number is legitimate context — and that is how we show it — but never a standalone source of g1. Growing "forever" off one good year would be making things up, and that violates this project's first rule.
The composite is capped from above (10% with a series, 8% without), cannot be negative without multi-year evidence of contraction, and is always at least 0.5 percentage points below the cost of equity. Manual "forward estimates" (backlog, guidance, management expectations) are not used for the growth rate; the historical average and the TTM comparison remain on the page as context.
How we guard against errors
- Input validations: the balance sheet must balance, parent profit + minorities must equal total profit, EBITDA = EBIT + depreciation — a report that fails does not enter the analysis.
- Parent = sum-of-parts identity: for holdings, every line (stake × value, cash, debt, discount) must be visible in the table and sum to the anchor; an impossible sum = red flag and the analysis is held back.
- QA flags: methods that disagree, a wide zone, a large deviation from the market — all logged and displayed, never hidden.
- "What the price implies": when our zone is far from the market price, we compute the growth or multiple the price implies and compare it with our composite growth (series / sustainable / terminal) — an implied growth within 2 percentage points of the composite we call plausible, a larger deviation questionable. It is a comparison of implications, not a verdict on the market.
- Conservatism once: caution is applied in one place, not stacked in layers (e.g. a discount is not added on top of already conservative subsidiary estimates).
Lessons learned — currently effective assumptions
We develop the methodology publicly and iteratively. Instead of a revision chronology, here are the conclusions those iterations left behind — the assumptions fair-value zones are computed with TODAY:
- **The fair-value zone is the median of qualified methods, not one method's range.** The single-anchor dogma proved brittle: confirmations converging elsewhere must influence the zone, and an anchor change must not flip a stock from "above" to "below" overnight. The anchor still shapes the sensitivity; an anchor whose own range exceeds 100% of its base loses primacy (visibly, with a reason).
- **Growth is derived exclusively from published numbers, as a composite.** The historical average alone is a poor forecaster, manual forward estimates are invention, and a single year-on-year comparison measures one-off and base effects — hence g1 is the median of three signals (multi-year series, sustainable growth from retained earnings, terminal anchor), capped from above and always below the cost of equity.
- Every risk is charged exactly once. The cost of equity is a visible breakdown: rf (German Bund) + β×ERP (mature market) + CRP (a small, separate Croatian premium) + an illiquidity premium only below the liquidity threshold; betas of illiquid series never enter raw (sector betas, bounds). Conservatism is likewise applied once, not in layers.
- **Dividends: we compute on the SUSTAINABLE dividend, and the hardest evidence enters the estimate.** Payouts are classified (regular/extraordinary/from retained earnings); one-offs never enter the base. When the Gordon value of the sustainable dividend exceeds the zone's lower bound, it ENTERS the zone (the dividend floor) — the estimate is not suspended, because the reader would be left without information exactly where the evidence is firmest.
- Freshness before audit, with strict gates. Where quarterly data exist, earnings/revenue/ROE are computed on the trailing 12 months (TTM) with consistency checks; where they do not, an `annual data` tag stands. Better an empty field with a reason than a wrong number.
- Every share class has its own zone. Company value is apportioned to classes by the market price ratio — one zone for two classes told two stories about the same company.
- Parents: the parts are valued from the right sources. The standalone business exclusively from separate statements (never approximated from consolidated ones), joint ventures at book value from the notes, recomputation in dependency order (subsidiaries before parents).
- **The distribution versus the market is a diagnostic, never a calibration target.** When too many liquid names end up on the same side of their zones, an automatic alarm demands a review of OUR inputs — zones are reviewed, not fitted to prices.
We are not infallible now either — which is why every stock has a visible history of its zone changes with reasons, and we continuously measure the distribution of our zones against the market.
Bonds
For bonds we compute no fair-value zone — the display is a **deterministic yield analysis** from public inputs (clean price from the ZSE, coupon and maturity from the listing data). There are no growth or discount-rate assumptions; every number follows from a formula:
- Prices are clean, in % of par — as quoted on the ZSE. Bonds trade rarely, so the price is often stale: such a price carries an ILLIQ. tag and is indicative, as with stocks.
- Current yield = annual coupon / clean price.
- Accrued interest (ACT/ACT ICMA): coupon/frequency × days since the last coupon / days in the coupon period. The day-count convention and coupon frequency live in the prospectus — until we confirm them from the prospectus, we use ACT/ACT and an annual coupon and TAG that as an assumption.
- YTM (yield to maturity): the rate y at which the dirty price (clean + accrued interest) equals the sum of discounted future payments: Σ CF/(1+y)^t, where t are times to payment in years (ACT/365.25) and the payment schedule is derived backwards from maturity. We solve by bisection (deterministic, no local minima); the settlement date for the calculation is the date of the last price.
- Duration: Macaulay = Σ t·PV(CF)/Σ PV(CF); modified = Macaulay / (1+y). A measure of price sensitivity to yield changes.
- Issuers without a deterministic name source carry the status **"master data in progress"** — nothing is invented; YTM is not shown without complete inputs (coupon + maturity + price).
Where the data comes from
A summary of sources — every data type on the site has a known origin and a declared freshness (verified 15 July 2026):
- Prices: the official ZSE price list (end-of-day JSON); updated on business days after the close of trading (16:00 CET), and every price carries the actual data date. Per-security history from the ZSE archive. Illiquid stocks carry a tag next to the price.
- Financial reports: the EHO register of regulated information (issuers' official filings, PDF/XLSX). Standardized forms (TFI-POD, the banks' supervisory form, FINREP, insurers' ISD) are read by deterministic parsers that verify the AOP code and row label; whatever fails validation does not enter the analysis. Every number carries a document and page.
- Dividends: the ZSE security page (amount, ex-date, record date, payment) + official proposal announcements. A proposal is not a payment — the status is always visible.
- Share count / ISIN: the ZSE security page (listed quantity, classes); treasury shares from annual-report notes.
- Shareholders (top 10): the ZSE security page (source SKDD; the list has no published as-of date — we track it by fetch date) + largest- shareholder tables from annual reports (with a page citation). Custodian and omnibus accounts are tagged — they are not ultimate beneficial owners. Changes are shown only when two snapshots exist; names strictly as published.
- Risk-free rate and risk premium: the yield of the Croatian 10-year government bond + Damodaran's premium for Croatia; manually calibrated with a citation in every valuation, revised at each recalibration.
- Peer multiples: computed from our own database (ZSE companies with validated financials), peer-set criteria publicly documented; a sector without a comparable peer gets no peer method.
The detailed source register (how each source is read, its known weaknesses, verification dates) is maintained in internal project documentation and revised regularly.
Frequently asked questions
What is the fair-value zone? A per-stock value range produced by our valuation methods (the anchor method for the company's archetype ± sensitivity to key assumptions). It is not a target price — it is a factual display of what the fundamentals say under publicly stated assumptions.
How is the fair-value zone computed? Each company gets an archetype (bank, industrial, holding…) which determines the anchor method (e.g. residual income for banks, DCF for operating companies, SOTP for holdings). Zone = anchor ± sensitivity to the key assumption; the other methods serve as confirmation. All parameters (cost of equity, growth, peer multiples) carry a cited source on the stock page itself.
Are these buy or sell recommendations? No. The service publishes no recommendations, ratings or target prices. A price above or below the zone is a fact from the data, not a signal — the conclusion is always the reader's. For investment decisions, consult a licensed adviser.
Why does a stock have no fair-value zone? A zone is published only when the data passes validation. If reports are missing or fail the checks, we show only the market profile — fields stay empty (n/a), nothing is estimated.
How fresh is the data? Prices are official Zagreb Stock Exchange end-of-day closes; they update on business days after the close of trading (16:00 CET), and every price carries the actual data date. Financials update when the issuer publishes a report (EHO register). A date stands next to every number.
Automation
The analyses are generated by an automated system under human oversight: data comes from official sources (ZSE, the EHO register of filings), every number carries a source (document + page), and reports that fail validation stay out of the analysis until we review them. The system writes no recommendations — by design.