Mad Tea Party Development ← Back to the Software Shop
Mobile Game Revenue Simulator
▮▮▮ How it works

A short chain of arithmetic

No hidden adjustments: the same inputs always give the same outputs, including the range analysis, whose random draws are seeded.

The Steps, in Plain Words

  1. Every install wave (launch, recurring free, paid, cross-promo) becomes a cohort that starts on its install day at 100% active.
  2. Each cohort shrinks along the retention curve. Free cohorts use the main curve; paid cohorts use the paid curve if you turned it on, scaled by their channel's retention scale. Between your eight points the curve is smoothed on a log scale; after day 180 it stays flat.
  3. Daily active users on any day is the sum of every cohort's size times its retention at that cohort's age.
  4. Revenue per user on a day is your ad ARPDAU, adjusted for ad-network warm-up, monthly drift and that calendar month's seasonality, plus purchase and subscription revenue per user. What you keep is the ad part after your revenue cut plus the purchase and subscription part after the store fee. Net revenue is DAU times that.
  5. Every 30 days after a game launches, any recurring free installs arrive, and the game spends its reinvestment share of the previous 30 days' net revenue on a new paid wave: the push percentage for the first N months, then the sustain percentage.
  6. The paid budget is split across channels by share. Each channel's cost per install is its market CPI, adjusted for that month's seasonality and for the size of that channel's wave (CPI scaling). Installs = channel budget ÷ that CPI.
  7. Cross-promo runs in passes. First every game is simulated alone. Then, at each 30-day mark, a share of each game's average DAU over the previous 30 days is divided among the other games in proportion to their share-received weights (games that haven't launched get nothing), and each game's total is limited by its cap. Every game is simulated again with those installs. With chaining on, this repeats six times so received installs also promote the others; the effect fades quickly, and in testing six passes matched fifteen.
  8. Costs: the paid spend, the one-time dev cost on launch day, the running cost spread evenly across each 30 days from launch, and studio overhead spread evenly from day 0. Profit before tax is net revenue minus all of them.
  9. Tax. With the flat method, tax is your rate times total profit if it's positive. With the month-by-month method, each 30-day month's profit or loss is worked out, losses are carried forward against later profitable months, and the rate applies to what's left. Neither method is tax advice.
  10. The monthly take-home table subtracts from each 30-day period's net revenue the money committed from it to the next paid wave (and the first wave's upfront spend in month 1), plus that period's dev and running costs. The last period shows no commitment because the window ends before the next wave would be bought, so it often looks higher.
  11. Range analysis. 200 times, every uncertain input (retention, revenue per user, CPI, free installs) is multiplied by a number drawn uniformly within its spread, the whole portfolio is re-run, and the results are sorted. The low and high figures are the 10th and 90th percentiles. The draws come from a fixed seed, so pressing Run twice gives the same answer.

The Equations

DAU(d) = sum over cohorts c of N_c × R_c(d − s_c) Ad revenue/user = ARPDAU × warm-up(d) × (1 + drift)^((d − launch) / 30) × season(month) Other revenue/user = purchases per user + (subscriber share × monthly price ÷ 30) Net revenue(d) = DAU(d) × [ ad × (1 − revenue cut) + other × (1 − store fee) ] Paid budget = reinvestment % × net revenue of the previous 30 days Paid installs = sum over channels i of budget × share_i ÷ CPI_i CPI_i = market CPI × season_cpi(month) × (1 + k × log2(spend_i ÷ reference)) [only when spend_i > reference] Cross-promo i→j = min( cap_j , rate_i × average DAU_i over previous 30 days × weight_j ÷ sum of other weights ) Profit = total net revenue − paid spend − dev − running − overhead Tax (flat) = tax rate × max(0, profit) Tax (carry-fwd) = tax rate × taxable profit after losses carried forward month to month

N is cohort size, s is its start day, R is that cohort's retention curve, k is the CPI rise per doubling.

What these equations leave out →