Problém: Klient se mě čtyřikrát do roka zeptá na dvě otázky, na které jsem dlouho neuměl pořádně odpovědět. „Kolik asi vyděláme příští kvartál?“ a „Kam mám dát víc rozpočtu, aby to nejvíc vydělalo?“ Poctivá odpověď zněla: „podle dojmu a ROASu v dashboardu.“ Jenže ROAS v dashboardu systematicky lže a dojem není plán.

Správná odpověď na obě otázky existuje — jmenuje se time-series forecasting (Prophet) a Marketing Mix Modeling (kauzální, bayesovské). Akorát je to práce datařů: Python, statistika, data engineering. Agentury s data týmem to mají, enterprise to mají. Sólo PPCčkař to neměl — protože k tomu nestačí umět PPC, musíš to umět i postavit. A já neumím napsat řádek Prophetu ani Meridianu (respektive Python).

Tohle se změnilo. S Claude Code jsem si forecast i MMM postavil přímo do svého reportingu. V tomhle článku ti ukážu, co to reálně umí, jak je to pod kapotou poskládané, a hlavně kde mě to chytlo za nohu — protože „AI předpovídá budoucnost“ je marketingová pohádka, a já píšu o tom, jak to je doopravdy.

Obsah

1. Co jsem vždycky chtěl umět — a proč jsem na to neměl

Dvě nejdražší rozhodnutí v PPC nejsou „jaký headline“ nebo „jaký bid“. Jsou to:

  1. Kolik to udělá — abys mohl plánovat sklad, cashflow, kapacitu, rozpočet.
  2. Kam ten rozpočet dát — abys za stejné peníze vytěžil maximum.

Na první se dá odpovědět predikcí tržeb. Na druhou měřením skutečného přínosu jednotlivých kanálů — ne toho, co si který systém připíše (o tom byl celý můj minulý článek), ale kolik tržeb by reálně nevzniklo, kdybych kanál vypnul.

Obojí je řešitelné. Obojí má zavedené nástroje. A obojí bylo roky mimo dosah jednotlivce, protože:

  • Forecasting není „protáhni čáru v Excelu“. Musíš rozložit tržby na trend, roční a týdenní sezónnost, vliv svátků a akcí, a ideálně i externí vlivy (počasí). To dělá knihovna jako Prophet od Meta — a postavit kolem ní validaci, backtest a interpretaci je projekt.
  • Marketing Mix Modeling je ještě o level výš: bayesovský model, který z historie spendu a tržeb odhadne kauzální přírůstkové ROI každého kanálu, jeho saturaci a optimální rozdělení rozpočtu. Google na to má open-source knihovnu Meridian (postavenou na TensorFlow Probability). To je doslova matematika, kterou na vysoké učí na statistice.

Já jsem PPCčkař. Tyhle věci umím přečíst a interpretovat, ale neuměl bych je naprogramovat ani za měsíc s dokumentací. A přesně tady byla ta bariéra — ne v nápadu, ale v implementaci.

2. Co se změnilo: bariéra nebyla nápad, ale kód

S Claude Code jsem za pár týdnů (po fázích: nejdřív infrastruktura workeru, pak Prophet forecast, pak Meridian MMM) postavil predikční vrstvu do svého reportingu. Ne prototyp v notebooku — produkční věc, která jede nad reálnými daty klientů.

Bariéra nikdy nebyla v tom, že bych nevěděl, co chci spočítat. Byla v tom, že jsem to neuměl napsat. AI tu druhou půlku odemkla — kód píše ona, doménu (co predikovat, jak to číst, kde to lže) dodávám já. A to druhé je pořád ta těžší a cennější část.

Stack ve zkratce: Prophet na predikci tržeb, Meridian na MMM, data tečou z GA4 + feedu objednávek → BigQuery, obohacená o počasí a kalendář svátků. Detail je v sekci 5, ale nejdřív to důležité — co z toho leze ven.

3. Revenue forecast: od dojmu k pravděpodobnosti

První věc je predikce tržeb na 13 týdnů dopředu (zhruba kvartál). A hned první poctivá věc: není to jedno číslo, je to pásmo.

Model vrací tři čáry — P10 / P50 / P90. P50 je nejpravděpodobnější scénář (medián), P10–P90 je 80% interval spolehlivosti. Takže místo „uděláme 1,4 milionu“ říkám „s 80% pravděpodobností mezi 1,2 a 1,6 milionu, nejpravděpodobněji kolem 1,4.“ To je rozdíl mezi věštbou a plánem — plánuješ na pásmo, ne na bod.

Druhá poctivá věc: počítám to z reálných objednávek, ne z GA4. GA4 je consent-zkreslené (cookie lišta sebere klidně 40 % dat), takže jako zdroj pravdy o tržbách neobstojí. Feed objednávek je pravda; GA4 je až fallback, když feed není.

Nejcennější na tom ale není ta čára. Je to rozklad, který říká PROČ. Model rozpadne predikci na drivery:

				
					Jak vstupy ovlivnuji predikci (prispevek za horizont):
  Trend ............. +4.7 %   (dlouhodoby rust uctu)
  Rocni sezonnost ... +18  %   (silne obdobi pred nami)
  Svatky a akce ..... -3.9 %   (po Black Friday utlum)
  Pocasi ............ -5.2 %   (teplotni vzorec kategorie)
				
			
prophet forecast example

To je věc, kterou klientovi nikdy předtím neukážu z dashboardu: „ten růst, co vidíš v predikci, je ze 2/3 sezónnost, ne tvoje zásluha — a po svátcích počítej s útlumem.“ Najednou nevedu debatu o dojmech.

A teď přesnost, protože bez ní je to k ničemu. Model si dělá sám na sobě rolling-origin backtest (predikuje minulost, kterou zná, a porovnává) a vrací dvě čísla:

  • WAPE (vážená procentuální chyba) — u týdenních tržeb se reálně pohybuju kolem 38 %. To není překlep. Tržby e-shopu jsou volatilní; na denní úrovni je chyba klidně 75 %, proto reportuju týdenní agregát, ne denní.
  • Pokrytí (kalibrace) — v kolika % týdnů skutečnost reálně padla do pásma P10–P90. Cíl je ~80–90 %, a tam se to drží.

Jinými slovy: přesné to není, ale poctivě kalibrované ano. Neslibuju ti přesné číslo. Slibuju ti pásmo, do kterého to s vysokou pravděpodobností spadne — a to je k plánování přesně to, co chceš.

4. Marketing Mix Model: kam dát rozpočet (a proč)

Tahle část je můj favorit, protože odpovídá na otázku, kterou ROAS v dashboardu zodpovědět neumí: kolik mi který kanál reálně přidává?

Připomenu pointu z minula: reklamní systémy si tu samou konverzi připíšou každý k sobě (duplikace), GA4 to čte last-clickem. Sečtený ROAS je fikce. MMM jde úplně jinou cestou — z historie spendu a tržeb statisticky odhadne, kolik tržeb přibylo díky každému kanálu (kauzálně, ne kdo si připsal kredit). Používám na to Meridian (bayesovský MMM od Googlu).

Co z toho leze, je tabulka, ze které jde mráz po zádech (ilustrativní čísla z jednoho účtu, ne reálný klient):

				
					KANAL        ROI (90% CI)     MROI    SPEND/tyd   DOPORUCENO   Delta
PPC Google   17.1x [14-20]    11.9x   9 800 Kc    11 700 Kc   +20 %
PPC Meta      2.2x [0.3-7]     1.0x   3 300 Kc     2 300 Kc   -30 %
PPC Sklik     1.6x [0.3-4]     0.7x   3 200 Kc     2 200 Kc   -30 %
--------------------------------------------------------------------
Pri STEJNEM celkovem rozpoctu -> presun do vynosnejsiho
kanalu -> +11 % trzeb za stejne naklady.
				
			
meridian mmm example

Dvě věci, které tam musíš umět přečíst:

  • ROI vs MROI. ROI je průměrné přírůstkové ROI kanálu. MROI (marginální ROI) je to důležitější číslo: kolik vrátí další investovaná koruna. Google má MROI skoro 12 — pořád je kam přilévat. Meta a Sklik mají MROI kolem 1 — jsou nasycené, další koruna se sotva vrátí.
  • Interval spolehlivosti. [0.3–7] u Mety není přesné číslo, je to „nevíme přesně, ale spíš málo.“ Bayesovský model přiznává nejistotu — to je feature, ne bug.

Závěr modelu: při stejném celkovém rozpočtu (s limitem ±30 % na kanál, ať to není divoké) přesuň peníze z nasycených kanálů do Googlu → +11 % tržeb za stejné náklady. To je rozhodnutí, které jsem dřív dělal citem. Teď ho mám podložené.

Doplňuje to saturační křivka každého kanálu — graf přírůstkových tržeb podle spendu. Křivka Googlu pořád stoupá (nedospendováno), křivka Mety/Skliku se zploštila (saturace, každá další koruna přináší míň). Vizuálně okamžitě vidíš, kde je strop.

5. Jak je to postavené (pod kapotou)

 

Data pipeline:

				
					GA4 Data API  --+
Feed objednavek (zdroj pravdy) --+--> BigQuery -> Dataform marty -> tydenni agregaty
Naklady per kanal --+              + pocasi (Open-Meteo) + kalendar svatku/akci
                  --+
				
			

Forecast (Prophet):

  • Multiplikativní sezónnost pro e-shop (aditivní pro B2B/leady), týdenní + roční sezónnost.
  • Svátky a akce jako regresory (Black Friday a spol. mají vlastní okno vlivu).
  • Teplota jako regresor — a tady jeden poctivý fígl: počasí se dá předpovědět tak na 14 dní. Dál do budoucna model nepoužívá meteo predikci (neexistuje), ale klimatologický normál (dlouhodobý průměr pro daný den v roce). Žádné kouzlo, jen poctivý odhad.
  • Validace rolling-origin backtestem → WAPE + pokrytí.

MMM (Meridian):

  • Bayesovský model (TensorFlow Probability, MCMC sampling) — proto ty intervaly spolehlivosti.
  • Adstock (doznívání efektu reklamy v čase, carryover) + Hill saturace (klesající výnosy).
  • Optimalizátor rozpočtu s limitem ±30 % na kanál, fixní celkový rozpočet.
  • Kontrola konvergence (r-hat — jestli se model „dopočítal“; nad 1,2 hlásí varování).

Provoz: běží to jako samostatný Python 3.12 worker (Prophet ani Meridian zatím nemají wheels pro 3.14), jako noční dávka — ne real-time. Job se zařadí do fronty, worker ho zpracuje a uloží výsledek.

Pointa téhle sekce: každé to slovo — adstock, Hill saturace, MCMC, r-hat — bych ti před rokem nevysvětlil a rozhodně nenaprogramoval. Doménu jsem měl, implementaci ne. AI dodala to druhé.

6. Kde mě to chytlo za nohu (poctivá část)

Nic z toho není věštecká koule. Konkrétní limity, které musíš znát, než to někomu prodáš:

  • Forecast je pásmo, ne číslo. WAPE 38 % znamená, že přesnost na jeden týden je mizerná — hodnota je v kalibrovaném pásmu a v rozkladu na drivery, ne v jednom magickém čísle. Kdo ti slibuje přesnou predikci tržeb, lže nebo neměřil.
  • Denní granularita nedává smysl. Denní tržby jsou moc volatilní (WAPE ~75 %). Reportuju jen týdně.
  • MMM potřebuje data. Spolehlivě až od ~1 roku týdenní historie. Pod tím model přepnu na jednodušší response křivky.
  • Je to korelace povýšená na kauzalitu, ne důkaz. MMM je observační model — kontroluje počasí a svátky, ale neví o konkurenci, makru, ani o tom, co jsem nezměřil. Bayesovsky odhaduje kauzalitu, ale nedokáže ji. Skutečné potvrzení = experiment (geo holdout, blackout test — psal jsem o nich). To je můj další krok: napárovat MMM na reálné experimenty.
  • Strukturální zlomy nevidí. Nový produkt, rebranding, velká nová kampaň — model předpokládá, že minulé vzorce platí. Budoucnost, kterou nikdy neviděl, nepředpoví.
  • Spend-only zjednodušení. Meridian ideálně chce data na úrovni impresí; já mu dávám čistý spend. Pro český trh s omezenými exposure daty přijatelný kompromis, ale je to aproximace.

Takže to neberu jako autopilota, ale jako podklad pro rozhodnutí. Čísla čtu s PPC úsudkem — protože i nejlepší model je jen tak dobrý, jak dobrý je ten, kdo ho čte.

7. Proč to píšu: posunula se laťka, ne jen můj stack

Tohle byla donedávna výsada agentur s data týmem a enterprise s rozpočtem na datového vědce. Sólo freelancer si forecast a MMM nemohl dovolit — ne penězi, ale dovednostmi.

To padlo. Ne proto, že bych se přes noc naučil bayesovskou statistiku, ale proto, že kód už není ta bariéra. AI ho napíše. Co zůstává — a co se naopak stává cennější — je vědět co postavit, jak to číst a kde to lže. To je doména, a tu z promptu nevyčteš.

Je to stejná věta, kterou opakuju v každém článku o AI: nenahradí PPCčkaře. Nahradí PPCčkaře, kteří ji neumějí použít. Akorát teď platí i o věcech, které byly ještě před rokem mimo dosah kohokoli bez data týmu.

Závěr

Před rokem jsem na otázku „kolik vyděláme příští kvartál a kam dát rozpočet“ odpovídal citem a ROASem z dashboardu. Dnes odpovídám kalibrovaným pásmem tržeb rozloženým na drivery a kauzálním přírůstkovým ROI per kanál s doporučenou realokací rozpočtu. Pořád to není věštecká koule — je to poctivý, pravděpodobnostní podklad. Ale je to o tři patra výš než dojem.

A nejdůležitější věc: nepostavil to datař. Postavil to PPCčkař, který měl nápad a nástroj (Claude Code), co mu dopsal kód. Bariéra implementace spadla — zůstal úsudek.

Jestli tě zajímá, co by forecast a MMM ukázaly na tvých datech — nebo jestli zvažuješ něco podobného postavit a chceš probrat, kde jsou háčky — ozvi se. Rád si o tom popovídám, hlavně s kolegy z oboru. Čím víc z nás tohle používá, tím rychleji se laťka posune pro všechny.

Co by forecast a MMM ukázaly na tvých datech?

Rád ti ukážu, kde má tvůj účet strop, kam přesunout rozpočet a jak vypadá pravděpodobnostní výhled tržeb. Na rovinu, bez hype.

FAQ

  • Co je Marketing Mix Model (MMM)? Statistický (u mě bayesovský) model, který z historie spendu a tržeb odhadne kauzální přírůstkové ROI každého kanálu — kolik tržeb by nevzniklo, kdybys kanál vypnul. Na rozdíl od last-click atribuce neřeší, kdo si připíše kredit, ale kdo reálně přidal hodnotu.
  • Jak přesná je predikce tržeb? Na týdenní úrovni se WAPE drží kolem 38 %, denně je to ještě horší. Proto to nepodávám jako přesné číslo, ale jako pásmo P10–P90 s ~80–90% pokrytím. Cenná je hlavně dekompozice na drivery (trend / sezónnost / svátky / počasí).
  • Potřebuju na MMM hodně dat? Ano. Spolehlivě od zhruba roku týdenní historie spendu a tržeb per kanál. Míň dat → jednodušší response křivky místo plného MMM.
  • Nahradí MMM experimenty (A/B, geo holdouty)? Ne. MMM je observační — odhaduje kauzalitu, ale nedokazuje ji. Zlatý standard je pořád experiment; MMM a experimenty se doplňují.
  • Nemusíš na to umět programovat? Já neumím napsat Prophet ani Meridian. Postavil jsem to s Claude Code — doménu (co predikovat, jak číst, kde jsou limity) jsem dodal já, kód dopsala AI. Přesně proto o tom píšu: bariéra se přesunula z „umíš to naprogramovat“ na „víš, co a proč“.
  • Běží to v reálném čase? Ne, je to noční dávka. Forecasting a MMM jsou nástroje na plánování a alokaci rozpočtu (týdny/kvartály), ne na hodinová rozhodnutí.