PyMC-Marketing powered MMM
Enterprise marketing mix modeling built on PyMC-Marketing
PyMC-Marketing gives teams a transparent Bayesian modeling engine. SIMBA turns that engine into a practical platform for uploading data, fitting models, reviewing ROI, and optimizing budgets.
Milestone release
What's in 1.0
Two years of 0.x releases culminate in a stable API, multidimensional MMM as the default, faster sampling, and four new modelling workflows.
faster sampling via model freezing and a numba adstock kernel
multidimensional MMM is now the MMM
of 0.x releases behind the first stable API
plus ArviZ 1.2, PyTensor 3, and NumPy 2 under the hood
PIE: predicted incrementality
A BART model learns the campaign-to-incrementality map from your geo tests and ghost-ad holdouts, then predicts a full incrementality posterior for campaigns that never ran one.
Example notebookFunnel-aware MMM
Upper-funnel media creates demand that converts later through lower-funnel channels. Encode that mediation as a custom MuEffect instead of starving the upper funnel of credit.
Example notebookLong-term brand effects
A time-varying intercept plus a Bayesian VARX over awareness and consideration recovers the brand-built demand that standard MMMs let drift into the intercept.
Example notebookBayesian BLP
Structural demand estimation with own- and cross-price elasticities from aggregate market shares, with full Bayesian uncertainty.
Example notebookPyMC-Marketing pulse
A living, well-maintained open-source project
These numbers reflect public activity in the upstream PyMC-Marketing repository — not SIMBA customer data. We track it so you can see, at a glance, that the engine under SIMBA is moving forward every week.
snapshot Sep 9, 2026
Recent deployment activity
Every merged PR is effectively a deployment of the upstream library
docs(mmm): separate the markdown blocks in the time-varying notebook
@dchaudhari7177·2h ago·merged PR
fix(optimizer): forbid unknown kwargs on BudgetOptimizer
@PabloRoque·4h ago·merged PR
feat(r2d2): add non-centered parameterization
@TeemuSailynoja·5h ago·merged PR
docs(mmm): refine lift test uncertainty notebook
@TeemuSailynoja·5h ago·merged PR
Secure triage, duplicate detection and PR labeling; retire legacy coding agents
@twiecki·6h ago·merged PR
Preserve triage, duplicate detection and PR labeling with tool-free analysis
@twiecki·7h ago·commit on main
Retire all seven legacy Claude workflows instead of replacing them
@twiecki·7h ago·commit on main
Add required Apache license headers to workflow helpers
@twiecki·7h ago·commit on main
What's new
Releases & news
Stay current with upstream PyMC-Marketing releases and our own writing on PyMC-Marketing-powered MMM.
1.1.0
Major Changes 🛠: refactor(budget-optimizer): allocate_budget returns BudgetOptimizationResult. New Features 🎉: feat(mmm): parametrise GeometricAdstock by half-life · refactor(budget-optimizer): BudgetOptimizer accepts pm.Model + DataTree directly · Expand mmm.summary for front…
Read release notes
1.0.0
PyMC-Marketing v1.0.0 is out. After two years of 0.x releases, this is our stable API. Multidimensional MMM is now the MMM. Geo, product, and channel dimensions are first-class, with one xr.Dataset carrying all inputs. · ~1.5x faster sampling, thanks to model freezing and a stat…
Read release notes
0.19.4
New Features 🎉: Add Zarr save/load support to ModelIO (zarr>=3 shim) · Load models without fit data. Documentation 📖: Adding Consideration Sets Model to Mixed Logit · fix grammar in causal approach notebook · fix(docs): convert Resources section from raw HTML to markdown headi…
Read release notes
0.19.3
New Features 🎉: Update serialization process (#2379) · Support fixed/user-defined scaling factors for stable model refreshes. Bugfixes 🐛: Fix Serialization LogNormal from YAML · Fix: Latex rendering in new Adstock guide. Documentation 📖: Porting causal identification notebook…
Read release notes
0.19.2
Bugfixes 🐛: Fix MaskedPrior with non-scalar Prior parameters · Fix: IndexError in MultiDimensionalBudgetOptimizerWrapper. Documentation 📖: Adstock documentation - Guide to Adstock Transformations in PyMC-Marketing. Maintenance 🔧: Bump version to 0.19.2
Read release notes
Should You Build a Geo MMM When Media Is Bought Nationally?
Regional sales do not make national media regional. When a geo MMM adds causal information, why population-apportioned spend fails, and a quick diagnostic.
Aug 28, 2026·14 min read
Forecasting a Product Launch With No Sales History
A Bass model needs p, q and M before a new product has sold anything. Learn them from previous launches, then update as the first weeks of sales arrive.
Aug 28, 2026·17 min read
When Should Your Budget Optimiser Use LTV?
Budget optimisation has two sensible modes. Without a trusted value per acquisition, hold spend fixed and maximise acquisitions. With one, let the budget move.
Aug 28, 2026·10 min read
When Your MMM Won't Mix: Predict the Better Prior Before You Refit It
Compress a reference posterior into Gaussian likelihood messages, solve candidate priors analytically, and predict NUTS ESS before paying for the refit.
Aug 20, 2026·16 min read
Half-Life Is Still the Parameter: Extending the Idea to Delayed Adstock
Delayed adstock trades pure decay for build, peak and decay. Keep the half-life parameterisation, and the two questions it lets your team argue about.
Aug 18, 2026·12 min read
Who Gets the Credit? Decomposing Multiplicative Marketing Mix Models
Why channel removal effects overlap in a multiplicative MMM, how Shapley and Aumann-Shapley allocate that overlap, and what benchmark tests tell us about the trade-offs.
Aug 13, 2026·14 min read
Built on PyMC-Marketing
Open-source transparency, productionised
PyMC-Marketing gives you the modeling primitives. SIMBA wraps them in a workflow your whole team can use without leaving Bayesian rigour behind.
Configure Bayesian priors without writing PyMC code
PyMC-Marketing exposes priors for adstock, saturation, and every coefficient. SIMBA turns that into a typed UI: pick distributions, see live previews, and ship the same model PyMC-Marketing would fit from a notebook.
- Distribution previews update as you change parameters
- Smart defaults seeded from your historical spend
- Every prior is auditable and exportable
Prior builder
Each row maps 1:1 to a PyMC-Marketing prior — no translation layer.
Saturation & adstock
Saturation, adstock, and seasonality come built-in
PyMC-Marketing ships first-class transformations for diminishing returns and carry-over effects. SIMBA exposes them in your model spec so you never have to invent your own response curves.
- Tanh, logistic, and Hill saturation curves
- Geometric and Weibull adstock for memory decay
- Fourier seasonality and external regressors
DIY PyMC-Marketing vs SIMBA
| Area | DIY PyMC-Marketing | SIMBA |
|---|---|---|
| Modeling engine | Open-source PyMC-Marketing code | PyMC-Marketing powered models in a guided workflow |
| Users | Data scientists and Python users | Marketing science, analytics, and business teams |
| Outputs | Custom notebooks and charts | Reusable ROI, response curve, scenario, and optimization views |
Drive PyMC-Marketing through your AI assistant
The SIMBA MCP Server lets Claude, Cursor, and other MCP-compatible clients fit PyMC-Marketing models, inspect results, and run scenarios using natural language.
Frequently asked questions
Is SIMBA a replacement for PyMC-Marketing?
No. SIMBA is a platform built on PyMC-Marketing for teams that want the transparency of the open-source modeling approach with a product workflow around it.
Can technical teams still inspect assumptions?
Yes. The point of the SIMBA approach is to keep model assumptions visible while making the workflow easier for non-notebook users.
Which version of PyMC-Marketing does SIMBA run?
SIMBA tracks recent stable releases of PyMC-Marketing closely. The PyMC-Marketing pulse on this page shows the upstream version we are aligned with, and we expose the exact version used for any given model run inside the platform.
Is SIMBA a fork of PyMC-Marketing?
No. We use upstream PyMC-Marketing as a dependency — the same package you would install from PyPI. That means our model logic stays in lockstep with the open-source library and you can reproduce a SIMBA model in a Python notebook if you ever need to.
Does SIMBA contribute back to PyMC-Marketing?
Yes. We work closely with PyMC Labs and contribute fixes, examples, and documentation upstream. Building on a well-maintained open-source foundation only works if we help keep it healthy.
Explore related SIMBA resources
Build a more transparent MMM workflow
Talk through your current data, modeling process, and where SIMBA can help.
Book a Strategy Call