Telecom · Commercial analytics case study

Five questions, and the decomposition each one needs.

These are the questions a telecom commercial analyst gets asked — in a meeting, at short notice, with an answer expected before the numbers are complete. Each one below is worked through to the point where a decision can be made, and each ends by naming the single piece of data that decides it.

Case 1 — revenue grew while customers fell

decomposition

The question. Revenue is up 5%, the customer base is down 8%. The board wants to know whether that is a good quarter. The honest first answer is that the question cannot be answered from those two numbers — but the decomposition can be produced in a minute and narrows it to one missing fact.

Case 1 — revenue +5%, customers −8%. Good or bad?

Decompose before answering. The same headline can be a strong result or a warning depending entirely on which customers left.

worked example
400,000
MVR 330
-8.0%
+5.0%
70%
visible only in operator data
57%
ARPU after
MVR 376.63
+14.1%
Volume effect
−MVR 10.6m
customers lost, at the old ARPU
Price/mix effect
+MVR 18.7m
ARPU change, on the old base
Interaction
−MVR 1.5m
Contribution change
+MVR 3.8m
The answer. With 70% of the 32,000 lost customers coming from the low-value tail, the ARPU rise is largely composition: the average went up because the bottom left, not because anyone is paying more. That is an acceptable outcome — cheaper to serve, same revenue — but it is not monetisation, it cannot be repeated indefinitely, and it will look like a one-off in next year's numbers when there is no tail left to lose.

ΔRevenue = ARPU₀·ΔCustomers + Customers₀·ΔARPU + ΔCustomers·ΔARPU. The decomposition is arithmetic and always available. The one input that decides the verdict — the value mix of who left — is not in any public dataset, which is precisely why the aggregate ARPU line in a results presentation should never be read on its own.

Case 2 — the competitor cut price by 10%

decision tree

The question. Should we match? Matching is a decision about elasticity and about what the competitor is trying to buy. In a two-operator market a matched cut is usually the worst of the options: the market loses revenue and neither side gains share.

The decision tree, before any arithmetic
Q1 Is the cut on a product our customers actually compare against? A cut on a segment we barely serve is noise. Check overlap on price point, validity band and target segment first — the product data on this site is enough to answer it for any published pack. If no: monitor, do not respond.
Q2 Is it a permanent reprice or a promotion? A time-boxed promotion is answered with a time-boxed response, or with none at all. A permanent reprice resets the ladder and cannot be ignored indefinitely. If promotion: respond in kind, in a defined window, on a defined segment.
Q3 What is our elasticity on the affected packs? If demand is inelastic, matching destroys revenue for no volume. If it is elastic, not matching cedes volume. This is the number to estimate before the meeting, not during it. Move the elasticity slider below to see how sharply the answer changes.
Q4 Can we respond with value instead of price? More data, a longer validity, an entertainment allowance or a family voucher all defend the position at a lower revenue cost than a headline price cut, and none of them resets the published ladder. Usually the right answer in a duopoly.
Q5 If we match, what does the market look like afterwards? Both operators at the lower price, the same shares, and a smaller revenue pool. In a market where mobile revenue is already flat and revenue per subscription is already falling, that is a material decision — not a tactical one.
Pricing simulator — constant-elasticity demand

Q = Q₀ · (P/P₀)ε. Elasticity is an input here, not an estimate.

stated demand model
What this is and is not. No public Maldivian source pairs a prepaid product's price with the number of customers who bought it, so elasticity cannot be estimated from the public record. Estimating it needs operator data: ln(Qt) = α + β·ln(Pt) + controls + ε, fitted on product-level subscription counts across price changes, with promotions and seasonality controlled and the endogeneity of price addressed. β is the elasticity. Everything below is the consequence of assuming a value for it.
MVR 350
e.g. a 28-day data pack
40,000
buyers of this product per cycle
-1.40
elastic — volume responds more than price
MVR 60
incremental network, content and billing cost
MVR 350
0.06.312.518.825.0MVR 105MVR 438MVR 770
revenue gross contribution
Demand at test price
40,000
+0.0% vs today
Revenue
MVR 14m
+0.0% vs today
Gross contribution
MVR 11.6m
Contribution-maximising price
MVR 210
yields MVR 12.27m

With constant elasticity, revenue has no interior maximum — if |ε| > 1 revenue always rises as price falls, and if |ε| < 1 it always rises as price rises. That is a property of the functional form, not of the market, and it is exactly why the contribution optimum (which does exist, because variable cost bites) is the one a commercial team should be looking at.

Case 3 — should we launch a new prepaid pack?

business case

The question. Management proposes MVR 350 for 30 days and 50GB. The answer is not yes or no — it is a business case with a break-even take-up and a test design.

Case 3 — should we launch MVR 350 / 30 days / 50GB?

Management proposes a new prepaid pack. Answer with a business case, not an opinion.

worked example
MVR 350
50 GB
35,000
60%
MVR 300 / month
70%
MVR 1.5m
MVR 2m
Headline annual revenue
MVR 147m
Cannibalised
MVR 75.6m
Incremental revenue
MVR 71.4m
Net of all costs
MVR 46.5m
clears its costs
Break-even take-up
2,451
subscriptions needed
Implied price per GB
MVR 7
4 of 17 comparable published packs are cheaper per GB
Comparable published monthly data packs
Comparable published pack (21–31 days)OperatorPriceDataMVR / GB
PREPAIDDhiraaguMVR 500.5 GBMVR 102.4
PrepaidOoredooMVR 500.5 GBMVR 102.4
500MBDhiraaguMVR 990.5 GBMVR 202.75
MONTHLY 125DhiraaguMVR 1251.5 GBMVR 83.33
MONTHLY 150DhiraaguMVR 1503.0 GBMVR 50
THREE WEEKS 275DhiraaguMVR 27515 GBMVR 18.33
THREE WEEKS 300DhiraaguMVR 30025 GBMVR 12
MONTHLY 350DhiraaguMVR 35015 GBMVR 23.33
MONTHLY 450DhiraaguMVR 45030 GBMVR 15
SALHI MONTHLYDhiraaguMVR 49556 GBMVR 8.84
MONTHLY 500DhiraaguMVR 50035 GBMVR 14.29
100GB (21 days)DhiraaguMVR 550100 GBMVR 5.5
Proposed packMVR 35050 GBMVR 7

The decision turns on two numbers management will not have: how many buyers are genuinely new, and what the switchers were spending before. Both are knowable from the operator's own pre-period data and neither can be inferred after launch without a control group. The recommendation that follows from this structure is procedural: launch it as a controlled test in a defined region or customer cohort, hold a matched control group out, and measure incremental revenue against them — not against last month. Comparable packs are real products from the published catalogue.

Case 4 — high-value customers are recharging less

value × probability

The question. Who gets the retention offer? The instinct is to target the highest churn risk. The instinct is wrong: the customers most likely to leave are usually the ones worth least, and a fixed budget spent on them protects very little. Switch the targeting policy below and watch the value protected fall.

Retention targeting — churn probability × customer value

A synthetic base of 4,000 prepaid customers, scored by an interpretable logistic model. Choose which customers a fixed retention budget should buy.

simulated data — not observed customers
Simulated, and deliberately so. Every figure in this panel comes from a generated base, not from Ooredoo or Dhiraagu — no operator publishes customer-level records, and inventing a finding from them would be the one thing this project must not do. What is real is the method: the features, the scoring form, and the targeting rule are what an operator would apply to its own CDR, recharge and billing data. To run it for real you would need per-subscriber recharge history, data and voice usage by month, product holdings, tenure, and a defined churn event — 90 days without a revenue-generating event is the usual prepaid definition.
57%
12 months
500
MVR 60
25% of risk removed
the share of at-risk value the offer actually saves
Value protected
MVR 128.6k
expected, before cost
Campaign cost
MVR 30k
Return on the campaign
+329%
Mean churn probability of those contacted
54.2%
Mean monthly spend of those contacted
MVR 294
Top ten customers under the selected targeting policy
CustomerSpend / monthRecharges / monthDays since rechargeTenureData trendChurn probabilityValue at risk
C-2365MVR 4861.04511m65%80%MVR 2,653
C-0765MVR 4190.65225m65%85%MVR 2,442
C-0264MVR 4060.85113m59%85%MVR 2,362
C-0862MVR 4230.55437m52%80%MVR 2,321
C-1281MVR 4161.0514m31%77%MVR 2,201
C-2134MVR 3891.2488m59%83%MVR 2,197
C-1857MVR 4372.05142m65%71%MVR 2,116
C-2382MVR 4070.54721m41%75%MVR 2,087
C-1880MVR 4200.85843m30%72%MVR 2,073
C-1142MVR 4270.75350m43%70%MVR 2,044

Scoring model: logit(p) = -1.15 + 0.055·days-since-recharge − 0.34·recharges-per-month − 0.021·data-trend − 0.018·tenure − 0.0016·spend. Coefficients are stated, not fitted. Switching the policy from value at risk to churn probability raises the average churn probability of the contacted group and lowers the value protected — which is the result the panel exists to show.

Case 5 — the new bundle grew subscriptions and revenue fell

incremental vs cannibalised

The question. Did the launch work? Subscriptions are up, so the campaign report says yes. Revenue on the existing packs is down by more. The bridge below is how to show that in one table — and why a control group at design time is worth more than any amount of analysis afterwards.

Promotion: incremental or merely cannibalised?

Two existing products and one promotional price between them. The question is not how many customers took the promotion — it is what they were worth before they took it.

worked example
MVR 300
MVR 400
MVR 350
20,000
45%
30%
70%
MVR 400k
Headline revenue
MVR 7m
what the campaign report would say
Cannibalised
MVR 5.1m
15,000 switchers
Incremental revenue
MVR 1.9m
Incremental contribution
MVR 0.93m
after margin and campaign cost
Genuinely new buyers
5,000
25% of take-up
New buyers needed to break even
1,633
Revenue bridge from headline to incremental contribution
Revenue bridgeCustomersWas worthNow worthEffect
Switched from product A at MVR 3009,000MVR 2.7mMVR 3.15m+MVR 0.45m
Switched from product B at MVR 4006,000MVR 2.4mMVR 2.1mMVR 0.3m
New to the category5,000MVR 1.75m+MVR 1.75m
Incremental revenue20,000MVR 5.1mMVR 7m+MVR 1.9m

Set the promotion below product A's price with most take-up coming from A's existing customers and the incremental line turns negative while the headline stays large. That is the case worth being able to spot before launch, not after: a campaign can grow subscriptions, be reported as a success, and reduce revenue. The one input that decides it — what switchers were spending before — is knowable only from the operator's own pre-period data, which is why a promotion needs a defined control group at design time.

What these five have in common

Every one of them is a headline number that cannot be interpreted until it is decomposed, and every one turns on a fact the aggregate does not contain: who left, what switchers were spending, how demand responds to price. The analytical work is not the arithmetic — the arithmetic is a few lines. It is knowing which missing fact decides the answer, and designing the measurement that produces it before the decision is taken rather than after.