Built on PyMC, by the team behind PyMC-Marketing
Enterprise marketing mix modeling built on PyMC
PyMC gives teams a transparent Bayesian modeling engine, and PyMC-Marketing shows how to use it for MMM. SIMBA, built by the same team, turns that approach 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 PyMC-Marketing repository — not SIMBA customer data. We track it so you can see, at a glance, that the open-source project our team maintains is moving forward every week.
snapshot Oct 26, 2026
Recent deployment activity
Every merged PR is effectively a deployment of the upstream library
test(clv): make BG/BB #2919 regression test use distinct parameter draws
@daimon-pymclabs·1d ago·merged PR
fix(clv): broadcast x in BetaGeoBetaBinom.logp so short values don't truncate the scan
@Golopmoui3·1d ago·merged PR
Update certifi CA bundle to 2026.10.19
@twiecki·3d ago·merged PR
Bump version to 1.3.0
@juanitorduz·3d ago·merged PR
Add `ConditionedModel` as the one owner of posterior binding, and reuse compiled counterfactual evaluators in `Incrementality`
@mido-99·3d ago·merged PR
fix(mmm): keep the spend probe away from the end of the axis
@juanitorduz·4d ago·merged PR
perf: vectorize BetaGeoNBD rng_fn
@williambdean·4d ago·merged PR
Use extend_dataset instead of the deprecated merge_dataset when recomputing deterministics
@G26karthik·4d ago·merged PR
What's new
Releases & news
Stay current with PyMC-Marketing releases and our own writing on Bayesian MMM.
1.3.0
Major Changes 🛠: fix(mmm): correct Weibull CDF kernel length · Use signed Normal likelihood for lift test calibration · fix(mmm): one meaning for y_original_scale; the log-link median becomes mu_original_scale. New Features 🎉: feat: add Named/Ref terms, and use terms (with cov…
Read release notes
1.2.0
Major Changes 🛠: refactor(bass): migrate dim handling to pymc.dims. New Features 🎉: feat: allow for Transformation call after apply method · feat: add pymc_marketing.terms · feat(mmm): reject target values outside the likelihood support at build time · fix(mlflow): log constra…
Read release notes
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
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, by the team behind 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 is a PyMC prior, stated the same way PyMC-Marketing states it — 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 by the team behind PyMC-Marketing, for teams that want the transparency of the open-source modeling approach with a product workflow around it. Its engine is its own PyMC code; it does not import PyMC-Marketing.
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 does SIMBA run?
SIMBA pins a recent stable release of PyMC and records the engine version with every model run. The PyMC-Marketing pulse on this page shows activity in the open-source project the same team maintains.
Is SIMBA a fork of PyMC-Marketing?
No. SIMBA's engine is its own PyMC code, written by the team that maintains PyMC-Marketing. It shares the same conventions — adstock before saturation, lift tests as likelihood observations, full posterior inference — so a SIMBA model can be reproduced in a PyMC-Marketing notebook, and the tutorial notebooks in our public docs show how.
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