Metodologie
Jak Hedger počítá každé číslo — od surových dat brokera po daňový přehled
1. Přehled datového zpracování
Každé číslo v Hedgeru je odvozeno z exportů brokera přes přísný čtyřvrstvý proces. Každá vrstva slouží specifickému účelu a může být kontrolována nezávisle.
| Vrstva | Model | Účel |
|---|---|---|
| Trezor | UploadedFile |
Uchovává původní export brokera (CSV, XLSX) přesně tak, jak byl nahrán — neměnný zdroj pravdy. |
| Surová data | RawEvent |
Jeden řádek na řádek CSV brokera. Uchovává všechna původní pole plus parsovaný kanonický typ. Po importu se nikdy nemodifikuje. |
| Hlavní kniha | LedgerEntry |
Normalizované záznamy ve stylu podvojného účetnictví v kanonických jednotkách. Každý záznam odkazuje zpět na svůj RawEvent — úplný audit trail. |
| Odvozená | FifoPairing, UnpairedEntry, PositionDaily, CashPositionDaily |
Počítáno z účetní knihy na vyžádání: FIFO párování, otevřené pozice, denní snapshoty, hotovostní zůstatky. Plně obnovitelné. |
Odvozená vrstva je smazána a přestavěna při každé synchronizaci. To znamená, že jakákoli oprava dat na úrovni trezoru nebo účetní knihy se automaticky propaguje dopředu — neexistuje zastaralý odvozený stav.
2. Parsování a normalizace
Každý podporovaný broker má vlastní parser, který mapuje názvy sloupců a formáty specifické pro brokera na kanonické schéma Hedgeru. Parsery zpracovávají:
- Parsování data a času (včetně normalizace časových zón na UTC)
- Konvence znaménka měny a částky (někteří brokeři používají absolutní hodnoty se samostatným sloupcem debet/kredit)
- Mapování ISIN a tickerů
- Kódy typů transakcí specifické pro brokera mapované na kanonické typy
18 kanonických typů záznamů v účetní knize:
buy— nákup akcií nebo podílůsell— prodej akcií nebo podílůdividend— vyplacená peněžní dividendafee— provize brokera nebo poplatek platformydeposit— přijatá hotovostwithdrawal— odchozí hotovoststock_split— úprava počtu akcií (bez hotovosti)merger— akcie vyměněné při fúzispinoff— nové akcie přijaté od mateřské společnosti
bond_coupon— periodická úroková platba z dluhopisuinterest— úrok z nevyužitých prostředkůwithholding_tax— daň sražená u zdroje z příjmustock_grant— akcie přijaté jako kompenzace (RSU/ESPP)delisting— nucené uzavření při vyřazení cenného papíruisin_change— stejný cenný papír, nový ISIN (kontinuita zachována)exchange_offer— dobrovolná výměna za hotovost nebo nové cenné papíryrights_issue— uplatněné přednostní právocash_settlement— hotovost přijatá namísto zlomkových akcií
Původní surový řádek CSV je vždy zachován. Pokud parser Hedgeru udělá chybný předpoklad, surový řádek lze znovu parsovat bez opětovného nahrání souboru.
3. FIFO párování
Hedger používá párování First-In, First-Out (FIFO): při uzavření pozice se nejprve spotřebuje nejstarší otevřený lot. Toto je metoda vyžadovaná českou daňovou legislativou.
Otevírající vs. uzavírající typy
- Otevírající:
buy,stock_grant— vždy vytváří nový otevřený lot - Uzavírající:
sell,delisting— vždy spotřebovává otevřené loty (nejstarší první) - Korporátní akce:
spinoff,merger,isin_change,exchange_offer,rights_issue— určeno znaménkem množství (kladné = otevírající, záporné = uzavírající)
Režim cross-broker
Ve výchozím nastavení jsou pozice každého brokera sledovány nezávisle. V režimu cross-broker (volitelné pro uživatele) lze prodej u brokera B spárovat s nákupem u brokera A — užitečné při převodu pozic mezi brokery.
Alokace poplatků
Když prodej uzavírá více lotů (lot je rozdělen mezi několik uzavření), provize je alokována proporcionálně k množství uzavřenému z každého lotu. To dává přesný čistý P&L za lot.
Příklad s výpočtem
| Datum | Akce | Ks | Cena | Poznámky |
|---|---|---|---|---|
| Jan 1 | Nákup | 100 | $150 | Lot A — 100 akcií za $150 |
| Mar 1 | Nákup | 50 | $160 | Lot B — 50 akcií za $160 |
| Jun 1 | Prodej | 120 | $180 | Uzavře 100 z Lotu A, pak 20 z Lotu B |
Výsledek FIFO párování:
| Lot | Uzavřené množství | Náklad | Výnos | Zisk |
|---|---|---|---|---|
| Lot A (1. led.) | 100 | $150 | $180 | +$3,000 |
| Lot B (1. bře.) | 20 | $160 | $180 | +$400 |
| Zbývá otevřeno (Lot B) | 30 akcií @ $160 — nerealizováno | |||
4. TWR — časově vážený výnos
TWR měří výkonnost portfolia nezávisle na tom, kdy jste přidali nebo vybrali peníze. Je to standardní metrika v oboru pro porovnání výkonnosti správce s benchmarkem.
Denní dílčí výnosy
Pro každý den t s hodnotou portfolia V_t, hodnotou předchozího dne V_{t-1} a čistým peněžním tokem CF_t (kladný = vklad):
r_t = V_t / (V_{t-1} + CF_t) − 1
Peněžní toky se přidávají do jmenovatele, aby vklady nenadhodnocovaly denní výnos.
Zřetězení
Denní dílčí výnosy jsou geometricky zřetězeny (násobeny řetězově) za celé období:
TWR = ∏(1 + r_t) − 1
Anualizace
Pokud období přesahuje jeden rok:
TWR_annualized = (1 + TWR)^(1 / years) − 1
Ochrana kvality dat
Denní dílčí výnosy jsou omezeny na [−0,30; +0,30] (tj. poměr v [0,70; 1,30]) před zřetězením. To zabrání tomu, aby jediná chybná cena nebo chybějící datový bod poškodil celou řadu.
5. XIRR — rozšířené vnitřní výnosové procento
XIRR je peněžně vážený výnos. Na rozdíl od TWR odráží načasování vašich peněžních toků — pokud jste vložili velkou částku těsně před propadem trhu, XIRR bude za stejné období nižší než TWR.
Rovnice NPV
XIRR hledá sazbu r, která splňuje:
∑ CF_i / (1 + r)^(t_i / 365.25) = 0
Kde CF_i je každý peněžní tok (vklady záporné, výběry a konečná hodnota portfolia kladné) a t_i je počet dní od prvního peněžního toku.
Solver
Rovnice je řešena numericky Brentovou metodou (hledání kořenu v intervalu). Jedná se o stejný algoritmus, jaký používá funkce XIRR v Excelu, a garantuje konvergenci, pokud řešení existuje.
TWR vs. XIRR
Použijte TWR k vyhodnocení, jak dobré byly vaše výběry akcií. Použijte XIRR k vyhodnocení skutečného výnosu vašeho investovaného kapitálu. Tyto dvě metriky se rozcházejí, když provádíte velké vklady nebo výběry v nevhodný čas.
6. Model atribuce
Každá změna hodnoty portfolia je rozložena do šesti nezávislých kategorií, které se přesně sečtou na hrubou změnu za období:
Hrubá změna = Cena + FX + Příjmy + Daně − Poplatky + Vklady
Čistý P&L = Cena + FX + Příjmy + Daně − Poplatky (Hrubá změna minus vklady — váš skutečný výdělek)
Daně a poplatky jsou uloženy s přirozeným znaménkem (záporné pro srážky a provize), takže výše uvedený vzorec je čistý součet.
Proč žádná kategorie „Obchody“?
Nákup nebo prodej je SWAP mezi dvěma kategoriemi — hotovost klesne o stejnou částku, o kterou vzroste hodnota akcií (nebo naopak). Samotný obchod generuje nulový P&L. Veškerý skutečný P&L pochází z pohybů cen, měnových pohybů, příjmů a poplatků. Cenový/FX pohyb atribuujeme až do okamžiku provedení obchodu, takže nákup za 100 následovaný prodejem za 110 ve stejném období se zobrazí jako +10 v kategorii Cena, nikoli jako „Obchod“.
To je poctivější než oddělování řádku „Obchody“, který často dvojitě počítá: hotovostní strana nákupu skončí v jedné kategorii, zatímco odpovídající strana akcií v jiné, a jejich sladění vyžaduje zbytek, kterému nikdo nerozumí.
| Kategorie | Definice | Příklad |
|---|---|---|
| Cena | Změna mark-to-market na držených akciích (držených celé období, nakoupených nebo prodaných v průběhu). Dekompozice po lotech používá vstupní cenu každého lotu jako základ. | 100 ks AAPL vzrostlo o $5 → +$500 × FX na konci. Nakoupeno dalších 50 uprostřed období za $180; na konci jsou za $185 → +50 × $5 × FX. |
| FX | Dopad měnového kurzu na každou pozici v cizí měně (akcie I hotovost), počítáno lot po lotu od vstupního FX kurzu každého lotu ke kurzu na konci období. | USD oslabil o 2 % vůči CZK během období → −2 % aplikováno na hodnotu akcií denominovaných v USD A na hotovostní zůstatek v USD. |
| Příjem | Dividendy + úroky + kupóny dluhopisů + naběhlé úroky + granty + hotovostní vyrovnání + distribuce fondů + návrat kapitálu. Hrubé, před srážkovou daní. | AAPL vyplatil dividendu $0.24/akcii na 100 akcií → +$24 Příjmy a −$3.60 Daně (15% WHT) jako samostatný řádek. |
| Daně | Srážková daň sražená u zdroje z dividend a úroků. Sledována jako vlastní kategorie — na českém daňovém přiznání se vykazuje samostatně jako zahraniční daňový kredit proti české dani z příjmu. | Americký broker srazil $3.60 (15 %) z dividendy AAPL → −$3.60 v Daních. |
| Poplatky | Samostatné poplatky brokera, které nelze přiřadit ke konkrétnímu obchodu (burzovní poplatky, poplatky za neaktivitu, poplatky za půjčky, náklady na FX konverzi). Poplatky zahrnuté v řádku obchodu jsou absorbovány do efektivní ceny obchodu a zobrazí se v kategorii Cena — nákup za $100 s provizí $5 se stane efektivním záznamem za $100.50, takže $5 zátěž se zobrazí jako záporný příspěvek v kategorii Cena při ocenění na $100. | Měsíční poplatek za neaktivitu IBKR $10 → −$10 v Poplatcích. |
| Vklady | Externí příchod hotovosti (vklad) nebo odchod (výběr). NENÍ P&L — čistá realokace mezi vaší bankou a brokerem. Vyloučeno z čistého P&L, ale zahrnuto v hrubém. | Převedeno 50 000 CZK brokerovi → +50 000 ve Vkladech, žádný dopad na čistý P&L. |
Každá kategorie je počítána denně na úrovni pozice/hotovosti a agregována za libovolné období (denně, týdně, měsíčně, čtvrtletně, ročně). Součet je přesný z principu. Jakýkoli zbytek zobrazený v UI pochází z okrajových případů (granty bez hotovostní strany, FX zaokrouhlení) a je zaznamenán jako varování, pokud je významný.
Rozložení
Pod řádkem atribuce zobrazuje pruh Distribuce, kolik hodnoty je v jednotlivých třídách aktiv (Akcie — včetně ETF/fondů — Dluhopisy, Opce, Ostatní, Hotovost). Každý díl také zobrazuje změnu za období, takže můžete vidět přerozdělení mezi kategoriemi bez potřeby samostatného řádku „Obchody“: nákup akcií za 50 tis. se zobrazí jako +50 tis. Akcie / −50 tis. Hotovost.
7. Výpočet hotovostního zůstatku
Hotovostní zůstatek pro každou měnu je počítán přehráním každého záznamu v účetní knize ovlivňujícího hotovost v chronologickém pořadí, s udržováním průběžného zůstatku pro každou měnu a brokera.
Typy záznamů ovlivňující hotovost
buy— odchozí (záporné)sell— příchozí (kladné)dividend,bond_coupon,interest— příchozífee,withholding_tax— odchozídeposit— příchozíwithdrawal— odchozícash_settlement— příchozí nebo odchozí podle znaménka
Typy, které neovlivňují hotovost: stock_split, stock_grant (akcie přijaté bez platby v hotovosti) a čisté korporátní reorganizace (merger, spinoff, isin_change), kdy se nepohybuje hotovost.
Přístup průběžného zůstatku znamená, že hotovostní historii lze nezávisle ověřit: exportujte hotovostní účetní knihu z Hedgeru a porovnejte řádek po řádku s výpisem od brokera.
Poplatky v jiné měně
Poplatky denominované v jiné měně než obchod jsou sledovány samostatně pomocí pole fees_currency. To zajišťuje přesný hotovostní zůstatek pro každou měnu bez zavedení syntetických FX konverzí.
8. FX konverze
Všechny FX kurzy pochází z denního fixingu České národní banky (ČNB), zveřejňovaného každý pracovní den pro 30+ měn. Toto je autoritativní zdroj pro české daňové účely.
Výpočet křížového kurzu
ČNB zveřejňuje kurzy vůči CZK. Pro páry mimo CZK (např. USD/EUR) Hedger odvozuje křížový kurz:
USD/EUR = (USD/CZK) ÷ (EUR/CZK)
Konverze per-transakce vs. zobrazovací konverze
- Konverze per-transakce: každý obchod, dividenda a poplatek je převeden do CZK pomocí kurzu ČNB ke konkrétnímu datu. Takto se vykazuje na daňových formulářích.
- Zobrazovací konverze: součty portfolia zobrazené v CZK na dashboardu používají dnešní kurz. To se může lišit od součtu konverzí per-transakce.
Výběr daňového kurzu
Česká daňová pravidla umožňují použít buď denní kurz ČNB, nebo jednotný roční kurz pro každý kalendářní rok. Hedger počítá obě varianty a může automaticky vybrat tu, která dává nižší zdanitelný příjem.
9. Tržní ceny
Hedger používá Yahoo Finance jako primární zdroj denních OHLCV (otevírací, nejvyšší, nejnižší, uzavírací cena, objem) cenových dat. Ceny jsou synchronizovány podle plánu pro udržení aktuálnosti historických dat.
Odhad ceny dluhopisů
Když nejsou k dispozici tržní cenová data pro dluhopisy (běžné u OTC dluhopisů a některých ETF), Hedger odhaduje fair value pomocí výnosové křivky US Treasury jako referenční sazby. Toto je v rozhraní jasně označeno jako odhad.
Rozlišení cenového symbolu
ISIN kódy z exportů brokera jsou mapovány na tickerové symboly Yahoo Finance přes OpenFIGI. Pokud mapování není nalezeno automaticky, lze ho nastavit ručně pro každý instrument.
Garance úplnosti dat
Hedger garantuje, že každý instrument má cenu pro každý den v jeho platném rozsahu pokrytí — žádné mezery o víkendech nebo svátcích. To je nezbytné pro přesné grafy hodnoty portfolia, výpočty výkonnosti a daňové přehledy.
Rozsah pokrytí podle třídy aktiv:
- Akcie / ETF / indexy: Od nejstaršího data, pro které Yahoo Finance má data (nebo 2010-01-01, podle toho co je později) do dnešního dne.
- Dluhopisy: Od první známé ceny do splatnosti dluhopisu (nebo do dnešního dne, pokud dosud nesplatný). Ceny jsou počítány denně z US Treasury výnosové křivky a doplněny mark cenami z IBKR.
- Opce: Od první známé ceny do expirace kontraktu. Po expiraci je opce automaticky deaktivována a přestává vyžadovat cenové pokrytí.
Jak se vyplňují mezery:
- Skutečné ceny pochází z yfinance (akcie/opce) nebo treasury.gov (dluhopisy) v obchodní dny.
- Víkendy, svátky a jakékoli další chybějící dny jsou dopředně doplněny poslední známou uzavírací cenou (označeno jako „forward_fill“ ve sloupci zdroj).
- FX kurzy z České národní banky jsou podobně dopředně doplněny přes víkendy a svátky.
- Z těchto kompletních cenových + FX dat se pak sestaví denní snapshoty portfolia, jeden řádek na den od vašeho prvního vkladu/obchodu do dnešního dne.
Úplnost svých dat můžete ověřit na stránce Procházet → Ceny, která zobrazuje kompletní cenovou historii pro jakýkoli instrument a zvýrazňuje zjištěné mezery.
10. Korporátní akce
Akciové splity
Záznam stock_split obsahuje split_ratio (např. 4.0 pro split 4:1). Všechny následující záznamy nákupů/prodejů/grantů pro daný instrument používají množství × split_ratio pro výpočet upraveného množství. Samotný záznam stock_split se nikdy nepovažuje za obchod — jeho započítání by zdvojnásobilo změnu množství.
Fúze
Staré akcie jsou uzavřeny jako ekvivalent prodeje za cenu výměnného poměru; nové akcie jsou otevřeny jako ekvivalent nákupu se stejným upraveným nákladovým základem. Doba držení původních akcií se přenáší.
Spinoffy
Nákladový základ mateřských akcií je rozdělen proporcionálně mezi mateřskou společnost a odštěpenou entitu na základě relativní fair market hodnoty ke dni spinoffu. Oba loty si zachovávají původní datum pořízení mateřské společnosti pro účely doby držení.
Změny ISIN
Když se změní ISIN cenného papíru (časté při restrukturalizacích a opětovných kótacích), Hedger mapuje starý a nový ISIN na stejný instrument. Otevřené loty pod starým ISIN plynule pokračují pod novým ISIN bez umělé události uzavření/znovuotevření.
Nabídky výměny a úpisy práv
Zpracováno podobně jako fúze: znaménko množství určuje, zda záznam otevírá nebo uzavírá pozici. Hotovostní složky nabídek výměny procházejí hotovostním zůstatkem jako cash_settlement.
11. Česká daňová pravidla
Tato sekce shrnuje klíčová pravidla — úplné detaily s řešenými příklady jsou v Info k daním.
Osvobození při držení 3 roky
Zisky z akcií držených alespoň 3 roky jsou osvobozeny od české daně z příjmu, pokud roční příjmy ze všech prodejů cenných papírů nepřesáhnou 40 000 000 CZK (od roku 2025). Hedger sleduje data pořízení a označuje každé párování jako osvobozené nebo zdanitelné.
Roční limit příjmů 100 000 CZK
Pokud vaše celkové příjmy z prodeje cenných papírů v kalendářním roce nepřesáhnou 100 000 CZK, není nutné podávat přiznání. Hedger tento součet počítá a upozorní vás, pokud se blížíte limitu.
Optimalizace FX kurzu
Český zákon umožňuje poplatníkovi zvolit mezi (a) kurzem ČNB ke dni obchodu, nebo (b) jednotným ročním kurzem vyhlášeným pro daný kalendářní rok. Hedger počítá zdanitelný příjem oběma metodami a může automaticky vybrat nižší částku.
Export EPO XML
Daňový přehled lze exportovat jako podepsaný EPO XML soubor pro přímé nahrání na mojedane.cz (portál české daňové správy) s předvyplněnými relevantními řádky.
FX currency conversions (§10 F) — opt-in module
Hedger ships an optional module that treats explicit foreign-currency conversions (e.g. selling USD to buy EUR inside your broker account) as separate §10 F realizations. The module is opt-in via Settings and OFF by default — when off, no §10 F FX events are produced and the tax report output matches the effective behavior of mainstream Czech tax tools (including Taxomat).
- Only ledger entries with type
fx_conversiongenerate §10 F events. Stock buys and sells, margin moves, dividends, deposits and withdrawals are NEVER treated as FX realizations — their CZK conversion is already captured per leg inside §10 D stock P&L using daily CNB rates. - FIFO pairing of currency lots is cross-broker by default — currency is fungible across your accounts for §10 purposes. EUR at Degiro and EUR at IBKR sit in the same queue.
- The 3-year time test applies to FX pairings under the movable-property reading of §10(1)(b). Pairings where the matched acquisition is held longer than 3 years are flagged exempt.
- Each event is priced at the CNB rate matching the user's daily-vs-yearly selection on the tax report — switching the toggle reprices the FX pairings consistently with the rest of the report.
- Long-only lot model — there is no short side. A disposal with no matching acquisition is logged as data-quality noise and not surfaced in the UI.
This is one defensible reading of §10 for private-individual currency conversions. Most Czech tax tools default to ignoring private FX (either via the pre-2024 §4(1)(za) exemption that was repealed for 2024, or via the yearly jednotný kurz collapsing within-year FX to zero). Both approaches are defensible; professional consensus on the post-2024 interpretation is still forming. Consult a certified Czech tax advisor before filing with these numbers.
12. Známá omezení a prohlášení
- Výpočty jsou prováděny na základě nahraných dat s maximálním úsilím. Neúplné nebo chybné exporty od brokera povedou k neúplným výsledkům.
- Tržní ceny pochází z Yahoo Finance a mohou být zpožděné, upravené nebo nedostupné pro určité instrumenty (zejména OTC, warranty a vyřazené cenné papíry).
- FX kurzy jsou denní fixingy ČNB — intradenní kurzy se nepoužívají. U obchodů provedených v průběhu jednoho dne s různými intradenními FX kurzy je denní kurz aproximací.
- Zpracování korporátních akcí vyžaduje, aby export od brokera obsahoval odpovídající záznamy. Pokud váš broker neuvádí spinoffy nebo fúze jako samostatné řádky, možná je budete muset zadat ručně.
- Výpočet osvobození při 3letém držení používá data obchodů tak, jak je hlásí broker. Rozdíly mezi datem vypořádání a datem obchodu nejsou automaticky upravovány.
- Hedger není daňový poradce. Daňová legislativa se často mění. Vždy ověřte vypočtená čísla s výpisy od brokera a kvalifikovaným daňovým poradcem před podáním přiznání.