platform_cat_parameter_ranges block: discrete candidate grids per platform category, and why they differ by platform.An ad's effect does not vanish when the flight ends - people remember. Geometric adstock encodes that memory as a running total that decays:
Each week the channel's effective pressure is this week's impressions plus a fraction α of everything carried from before. A burst of activity leaves a tail that fades geometrically: after one week a fraction α remains, after two weeks α², and so on. The natural way to read α is as a half-life - the number of periods for a burst's effect to halve:
| α | Half-life (weeks) | Reads as |
|---|---|---|
| 0.3 | ~0.6 | Effect nearly gone within the week - intent media |
| 0.5 | 1.0 | Halves every week |
| 0.7 | ~1.9 | Meaningful carry into a second and third week |
| 0.85 | ~4.3 | A month of memory - brand media territory |
| 0.9 | ~6.6 | Long tail - the TV end of the spectrum |
Higher α means slower decay and a longer memory. The KT heuristic follows directly: TV adstock is the highest, most traditional media decays slower than digital, and intent-driven channels (search, e-com) barely carry at all.
Doubling spend rarely doubles sales - audiences run out, frequency stops adding persuasion. The program applies a Hill transformation to the adstocked series to encode this:
Two parameters, two distinct jobs:
- γ (the half-saturation point) is the media level at which the response reaches exactly half its maximum - set x = γ and the formula returns 0.5. Moving γ slides the curve along the spend axis: a higher γ means the channel saturates later, so there is more headroom before returns flatten.
- β (the shape) controls steepness. β ≤ 1 gives a concave curve - diminishing returns from the very first impression. β > 1 gives an S-shape - a slow start, a steep middle, then a plateau, the signature of channels that need threshold weight before they work.
One symbol caution: the methodology workbook's transformation images write this same function with different letters (its "alpha" is the Hill steepness and "theta" the half-saturation). The production config's vocabulary - which this course uses throughout - reserves alpha for adstock decay and beta for the Hill shape, matching alpha_range / beta_range in the YAML. Order of operations, per the pipeline: adstock first, Hill on the adstocked series. Control and base variables get neither - they receive plain min-max scaling (except variables that are already normalised, like percentages and indexes, listed in exclude_Scaling).
Open a real production config and find platform_cat_parameter_ranges: one entry per platform category, each holding an alpha_range and a beta_range. The structural fact that surprises every new analyst: despite the name, these are not [low, high] ranges - they are discrete candidate grids. The search only ever tries the listed values; a value between two grid points is never fitted.
platform_cat_parameter_ranges:
tv:
alpha_range: [ ...many candidates, highest values, finest grid... ]
beta_range: [ ...common grid... ]
paid_social:
alpha_range: [ ...three coarse low values... ]
beta_range: [ ...same common grid... ]
The alpha grids cluster into bands that mirror the funnel:
| Band | Platform categories | Grid character |
|---|---|---|
Slowest decay (highest α) | tv | Extends higher than every other platform, roughly twice as many candidates - the finest grid, including previously-fitted optima pinned back in |
Upper-middle | digital_av, digital_video, digital_youtube, ooh | Tight 5-6 value clusters just above the midpoint |
Middle | radio, digital_display, digital_native, digital_partnerships, print | Tight ~5-value clusters straddling the midpoint |
Fastest decay (lowest α) | search, ecomm_search, ecomm_display, paid_social | Three coarse, evenly spaced low values |
The beta grid is identical for every platform in this config family - roughly 14 candidates spanning from below 1 to well above 1, so both concave and S-shaped saturation are searchable everywhere. All per-platform differentiation is carried by alpha; beta is left free on a common grid. Editing one platform's beta "to match TV" is a conceptual no-op and a red flag in review.
Why grids per platform category rather than one free parameter? Three reasons. First, business knowledge is real: TV genuinely carries longer than search, and letting search borrow a TV-like alpha invites the model to launder baseline into media. Second, the search is combinatorial - every alpha × beta combination per channel is transformed, fed to the model builder, and scored (the pipeline's stages: build on all possible combinations of transformed variables, then iterate parameter combinations until statistical and business KPIs are satisfied). Discrete grids keep that explosion affordable. Third, comparability: a header rule in the config states the alpha/beta chosen at L1 are retained for L2 and L3 - the grid search happens once per channel, not per level.
MathCo Methodology Understanding_UL.xlsxsheetMedia Data tranformation(the program's own adstock and Hill formulations, transcribed from the embedded images) and sheetConfig Creation(parameter dictionary, quick checks)Onboarding Docs\mmx_tool_config_UK_knorr_new_iteration-latest May12.yaml:platform_cat_parameter_rangesstructure - grid bands described directionally only, no numeric values reproducedUL_Rapid ROI_Pre-Read_Document 1.pptxslide 14, stages 2-3 (transformation parameter ranges from industry benchmarks, adstock then Hill, min-max scaling for control variables) and stages 5-6 (all-combinations build and tuning)UL - KT (1).docx(4 Jun session): TV adstock highest, traditional above digital heuristic;UL - KT (4).docx(25 Jun session): transformations applied outside the model, parameters searched via partial correlations