AMMM User Guide
This is the practical day-to-day guide for running AMMM V2 and reading outputs.
What This Guide Covers
Section titled “What This Guide Covers”- V2 architecture and preferred entrypoints
- CLI usage (
runme.py) and common run modes - Stage-based outputs and diagnostic gate checks
- Optimisation, multi-period planning, and reporting outputs
1. Architecture in Practice
Section titled “1. Architecture in Practice”AMMM uses MMMBaseDriverV2 as the active orchestrator.
Preferred import in repository execution contexts:
from driver import MMMBaseDriverV2Compatibility import (package-root contexts):
from src.driver import MMMBaseDriverV22. Quick Start Commands
Section titled “2. Quick Start Commands”# Default run (scenarios enabled)python runme.py
# Explicit file pathspython runme.py --config data-config/demo_config.yml --data data-config/demo_data.csv --holidays data-config/holidays.csv
# Fast iteration modepython runme.py --fast
# Single-period optimisation onlypython runme.py --no-scenarios
# Multi-period planningpython runme.py --multiperiod --multiperiod-weeks 133. Important CLI Flags
Section titled “3. Important CLI Flags”Input/output
Section titled “Input/output”--data--config--holidays--results-dir
Run mode
Section titled “Run mode”--no-scenarios--scenarios--multiperiod--multiperiod-weeks--no-seasonality--use-adstock(not compatible with--multiperiod)
Sampling and runtime
Section titled “Sampling and runtime”--fast--draws,--tune,--chains,--target-accept--jax,--gpu,--chain-method
Multi-period constraints
Section titled “Multi-period constraints”--ramp-abs--ramp-pct--ramp-config--strict-ramp-config--ramp-eps--round-increment--seasonality-clip-min,--seasonality-clip-max
4. Results Layout (V2)
Section titled “4. Results Layout (V2)”Each run writes stage folders under the results root:
results/├── 00_run_metadata/├── 10_pre_diagnostics/├── 20_model_fit/├── 30_model_assessment/├── 40_decomposition/├── 50_diagnostics/├── 60_response_curves/├── 70_optimisation/└── 80_interpretation/5. Diagnostic-First Review
Section titled “5. Diagnostic-First Review”Always inspect diagnostics before consuming business outputs.
Primary machine-readable checks:
50_diagnostics/convergence_report.json->converged50_diagnostics/calibration_report.json->well_calibrated50_diagnostics/pareto_k_summary.json->ok
diagnostics_gating policy in config:
strict: halt pipeline on failed convergence gatewarn: continue with warningsoff: non-strict behaviour in current implementation
6. Core Artefacts by Stage
Section titled “6. Core Artefacts by Stage”Model fit (20_model_fit/)
Section titled “Model fit (20_model_fit/)”model.ncmodel.dillmodel_summary.csvmodel_trace.pngposterior_forest.pngprior_posterior_comparison.png
Model assessment (30_model_assessment/)
Section titled “Model assessment (30_model_assessment/)”model_fit_predictions.pngmodel_fit_metrics.csvposterior_predictive_check.png
Decomposition (40_decomposition/)
Section titled “Decomposition (40_decomposition/)”all_decomp.csvwaterfall_plot_components_decomposition.pngmedia_contribution_per_spend.csv
Diagnostics (50_diagnostics/)
Section titled “Diagnostics (50_diagnostics/)”convergence_report.json/.csvrank_trace.pngenergy_diagnostic.pngcalibration_report.jsoncalibration_pit_histogram.pngpareto_k_summary.jsonpair_plot.pngresiduals_vs_{channel}.png
Response curves (60_response_curves/)
Section titled “Response curves (60_response_curves/)”response_curves.pngall_response_curves.csv
Optimisation (70_optimisation/)
Section titled “Optimisation (70_optimisation/)”optimization_results.csvbudget_optimisation.pngbudget_scenario_results.csvmultiperiod_optimization_results.csv(multi-period mode)
Interpretation (80_interpretation/)
Section titled “Interpretation (80_interpretation/)”ammm_report.mdbusiness_report.mdagentic_report.md(when available)llm_interpretations.json
7. Python Workflow Example
Section titled “7. Python Workflow Example”from driver import MMMBaseDriverV2
driver = MMMBaseDriverV2( config_filename="data-config/demo_config.yml", input_filename="data-config/demo_data.csv", holidays_filename="data-config/holidays.csv", results_filename="results",)
driver.main()8. Multi-Period Notes
Section titled “8. Multi-Period Notes”Enable from CLI:
python runme.py --multiperiod --multiperiod-weeks 13Outputs are written to 70_optimisation/, including:
multiperiod_optimization_results.csvmultiperiod_budget_heatmap.pngmultiperiod_contribution_over_time.pngmultiperiod_budget_vs_contribution.png
For details, see Multi-Period Optimisation.
9. LLM Reports (Optional)
Section titled “9. LLM Reports (Optional)”If LLM reporting is enabled, AMMM writes reports to 80_interpretation/.
Review diagnostics first, then use report outputs as a summary layer.
10. Caveats
Section titled “10. Caveats”- Good diagnostics indicate computational adequacy, not causal proof.
- Assisted baseline mode (
prophet.trend: true) can improve practical fit but introduces attribution leakage risk; run sensitivity checks. - Optimisation quality is limited by model specification quality.