CLV Calculation by Modeling Lifetime Function

LTV calculator using simple CLV formula instead of a full model of the retention function

This is the 2nd part in a series of 6 posts. Here is a summary post explaining all the different calculators.

The naive calculator explained in the previous post requires you to know how long users will stay in your game. If you only have limited retention data, this calculator implements a simple CLV formula and takes a few seconds to use.

Detailed Explanation


  • 2nd day, 7 day, 14 day, 30 day retention – ratios of how many users still use the app in day x out of the users that started
  • ARPDAU (first 30 days) – the average revenue per user


  • Expected lifespan in user days – this is the sum of all the retention of all users in a cohort (users x days)
  • Estimated CLV/LTV presented as a number and in Gauge


The model assumes that the retention function is a power function of the type y=a*x^b where “x” is the day and “a” and “b” are coefficients of the model. This method first estimates the retention for the 180 day. It then uses weighted sum between 2nd day, 7 day, 14 day, 30 day and 180 day with the following weights: 2.5, 7, 12, 57.5, 100 (applied in the same order). The weighted sum based CLV formula is much simpler than doing an integral on the power function and the accuracy impact is not that big. Once the user lifetime is calculated, the CLV is easy to figure out by multiplying the lifetime with the ARPDAU.


  • Simple
  • Almost as accurate as much more complex models


  • The prediction overweights the day-30 retention
  • The model assumes a constent ARPDAU

More options for CLV formula

Here is a more advanced method to calculate the CLV by modeling user lifetime with a spreadsheet

You can also model out LTV in one segment based on data from other segments


If you want to also analyze and predict the LTV for your advertising revenue – now there is a solution. Check out SOOMLA Traceback – Ad LTV as a Service.

Learn More

Feel free to share:
Previous articleTop 5 Secrets of Mobile Ad Network Payout
Next articleLTV Calculator – The Naive method
Raised in the Kibbutz and reborn in the city, Yaniv is a certified entre-parent-neur. When he’s not busy doing SEO, content marketing, administration, QA, fund raising, customer support… [stop to breathe], you can find Yaniv snowboarding down the slopes of France and hiking with his kids. Yaniv holds a B.Sc. in Computer Science and Management from Tel Aviv University. He is also an avid blogger and a speaker at industry events. Before SOOMLA, Yaniv co-founded EyeView


  1. Hi, Thanks for the share. It helps me a lot.
    I have read all methods, but I think here is a mistake.
    It then uses weighted average between 2nd day, 7 day, 14 day, ….
    It is not weighted average, right? It is weighted sum. The weighted sum value equals the integral value.
    That means 2.5*2ND DAY RETENTION + 7*7 DAY RETENTION + … + 100*180 DAY RETENTION = A
    NOT A / 5


    Am I right?

    Please answer my question. Thank you a lot!

  2. The reason why D30 retention and MtoM retention are different is this:
    30% on D30 retention means that in the first month you average user played at least 10 days and most likely 15 and in the 2nd month he is likely to play at least 5. It’s likely that your total lifetime of the user in usage days is over 20 so ARPDAU of $0.1 translates to $2 LTV.
    30% MtoM retention could mean that the user played once in the first month, and 30% chance he played on the 2nd month so his total usage days could be a lot worse maybe 2 days and $0.2 LTV based on the same ARPU.

    To your 2nd question – if you have 365 days of data you should be able to extract the real answer and not use a predictive model. You need to find a group of 1,000 users who joined early and than look at their cohorted revenue in the first 365 days of their lifetime. This will give you 2 outputs – one is the true answer of the 365d LTV and the other one is the revenue accumulation curve which can power a better LTV prediction model.


Please enter your comment!
Please enter your name here