Calculation guide
Media planning software: what it actually has to compute
A polished interface can hide weak arithmetic. The useful comparison is the calculation chain between a rating target and a contract-ready budget.
Media planning software is not a spreadsheet with a nicer sidebar. It turns a rating target into a number a buyer can defend, and there are seven places where that conversion can change. Run the same brief through every tool you evaluate and inspect the chain, not just the final cell.
1. Raw TRP becomes weighted TRP
A rating point from a 15-second spot is not the same commercial unit as one from a 30-second spot. The engine applies the seller's duration ladder, with 30 seconds as the 1.0 reference and shorter spots weighted lower. Because the ladder is a market input, it should never be buried as a hardcoded assumption.
wTRP = 600 × 1.0 + 400 × 0.6 = 840.
The audit test is simple: can you see 1,000 raw TRP and 840 wTRP side by side? If only one survives, the duration conversion cannot be checked.
2. Affinity bridges target and total audiences
TRP is measured against the target group; GRP is measured against the whole universe. Affinity connects them.
Affinity 200 means the target watches the inventory twice as densely as the average person. Affinity 100 is neutral. At affinity 125, our 840 wTRP becomes 840 ÷ 1.25 = 672 wGRP.
The quiet failure here is mixing a target numerator with a total-population denominator. Both inputs look plausible; the answer is wrong by exactly the affinity factor.
3. Prime and off-prime start as money shares
Off-prime is negotiated as a share of budget, not ratings. The engine must convert that money split using the off-prime discount and the dayparts' affinity.
Off-prime volume: 0.30 ÷ 0.75 = 0.40.
Prime volume: 0.70 ÷ 1.00 = 0.70.
Off-prime rating share: 0.40 ÷ (0.40 + 0.70) = 36.4%.
Thirty percent of the money buys about 36% of the ratings before affinity moves the target result again. Treating money share and rating share as equal models a different deal.
4. CPP is an ordered multiplier chain
Seasonality is a period-specific coefficient on the base CPP. Seller discounts are sequential, so they multiply: 20% followed by 10% gives 1 − (0.80 × 0.90) = 28%, not 30%. The second discount applies to what remains after the first.
Prime-time uplift commonly reprices the whole deal, not only prime spots. The contract wording governs, but the tool must show where the coefficient is applied.
100 × 1.15 × 0.72 × 1.10 = 91.08.
CPP here is a proxy. It behaves like price for planning, but it is not a feed of contracted rates. It cannot establish real spending, money saved, or ROI.
5. Ratings turn into budget
The visible arithmetic is the easiest part: budget = rating points × CPP. In the running example, 672 × 91.08 ≈ 61,206. A demo that begins and ends here has skipped the assumptions that determine both inputs.
6. Budget and discount tier must converge
Discount tiers are triggered by budget volume, yet the discount changes that same budget. This circular dependency requires iteration.
Suppose the 60,000 tier grants 20%. Applying it drops the computed budget to about 58,900, below the threshold. Returning to 15% pushes the budget above 60,000. The result oscillates between adjacent tiers.
The calculation needs an explicit boundary rule. We take the larger budget, a conservative choice for the buyer: reserve the amount that can be defended instead of presenting the more flattering outcome.
7. Shop List and Execution are different money layers
The budget declared to the seller—the Shop List—sets the discount tier. Execution is what actually runs. Flights move, channels drop out, and spot lengths change, but those movements should not erase the link between the declared volume and the tier it unlocked.
A usable engine carries both layers separately. Otherwise every execution change forces a rebuild and obscures why the commercial terms were granted.
What the engine owes you beyond arithmetic
Missing inputs should stop the calculation. A silent default for seasonality can make an incomplete plan look finished. Active months should be derived from delivered TRP, not copied from a month selector.
Flighting should be structured. Templates such as Flat, Front-Loaded, Mid-Peak, and Crescendo turn 52 hand-entered weeks into a small number of defensible choices. Broadbent's adstock work places FMCG advertising-memory decay at roughly 2.5 weeks; that mechanism is why continuity suits some categories while bursts suit others. Jones's STAS and Binet & Field extend the argument around proximity to purchase and long-term allocation.
Accuracy should be reproducible. The meaningful test is the buyer's own reconciled reference plan. TV Budgeting runs the seven steps in both directions on one frozen core. Against an agency reference Excel model, parity is under 0.01%; roughly 750 backend and 2,100 frontend tests guard the formulas, including money-share conversion, whole-deal uplift, and tier iteration.
A product comparison should therefore be a line-by-line reconciliation, not a tour of screens.
FAQ
What should media planning software compute?
At minimum: duration weighting, affinity, prime/off-prime conversion, the CPP chain, ratings-to-budget arithmetic, discount-tier iteration, and separate Shop List and Execution layers.
Does prime-time uplift apply only to prime spots?
Commonly it reprices the whole deal, but the agreement controls. The software should expose the application point so the buyer can verify it.
Can a planning engine report real ROI?
No. Its CPP is a calibrated planning proxy, not real contracted price data, so it cannot prove actual cost, savings, or ROI.
How should a vendor's accuracy claim be tested?
Use a plan already reconciled against a trusted reference and demand a cell-level comparison. Every gap should resolve to a named coefficient or rounding rule.
This is exactly the maths TV Budgeting runs for you — both directions, TRP → budget and budget → TRP, with discount tiers resolved by iteration.
Request a demo →